aboutsummaryrefslogtreecommitdiff
path: root/public/js/hmd.min.js
blob: 547393f0464e86fc1f412af53feb0ac3b02407a4 (plain)
1
2
var hmd=function(){"use strict";var e=function(){for(var e={},n=0;n<arguments.length;n++){var r=arguments[n];for(var a in r)t.call(r,a)&&(e[a]=r[a])}return e},t=Object.prototype.hasOwnProperty;var n=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;var i=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var i,o,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l<arguments.length;l++){for(var c in i=Object(arguments[l]))r.call(i,c)&&(s[c]=i[c]);if(n){o=n(i);for(var d=0;d<o.length;d++)a.call(i,o[d])&&(s[o[d]]=i[o[d]])}}return s},o=function(e,t,n){var r;null!==n&&void 0!==n||"object"==typeof t&&!Array.isArray(t)||(n=t,t={});r=i({type:String(e)},t),Array.isArray(n)?r.children=n:null!==n&&void 0!==n&&(r.value=String(n));return r};var s=l;function l(e){if("string"==typeof e)return function(e){return function(t){return Boolean(t&&t.type===e)}}(e);if(null===e||void 0===e)return c;if("object"==typeof e)return("length"in e?function(e){var t=function(e){var t=[],n=e.length,r=-1;for(;++r<n;)t[r]=l(e[r]);return t}(e),n=t.length;return function(){var e=-1;for(;++e<n;)if(t[e].apply(this,arguments))return!0;return!1}}:function(e){return function(t){var n;for(n in e)if(t[n]!==e[n])return!1;return!0}})(e);if("function"==typeof e)return e;throw new Error("Expected function, string, or object as test")}function c(){return!0}var d=p,_=!0,u="skip",m=!1;function p(e,t,n,r){var a;function i(e,o,s){var l,c=[];return(t&&!a(e,o,s[s.length-1]||null)||(c=g(n(e,s)))[0]!==m)&&e.children&&c[0]!==u&&(l=g(function(e,t){var n,a=r?-1:1,o=(r?e.length:-1)+a;for(;o>-1&&o<e.length;){if((n=i(e[o],o,t))[0]===m)return n;o="number"==typeof n[1]?n[1]:o+a}}(e.children,s.concat(e))))[0]===m?l:c}"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),a=s(t),i(e,null,[])}function g(e){return null!==e&&"object"==typeof e&&"length"in e?e:"number"==typeof e?[_,e]:[e]}p.CONTINUE=_,p.SKIP=u,p.EXIT=m;var E=T,h=d.CONTINUE,S=d.SKIP,f=d.EXIT;function T(e,t,n,r){"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),d(e,t,function(e,t){var r=t[t.length-1],a=r?r.children.indexOf(e):null;return n(e,a,r)},r)}T.CONTINUE=h,T.SKIP=S,T.EXIT=f;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function b(e,t){return e(t={exports:{}},t.exports),t.exports}function C(e){return e&&e.default||e}var N=b(function(e,t){var n=t;function r(e){return t.displayName=e,t;function t(t){var n=t&&t.position&&t.position[e]||{};return{line:n.line||null,column:n.column||null,offset:isNaN(n.offset)?null:n.offset}}}n.start=r("start"),n.end=r("end")}),v=function(e){var t=R(R(e).position),n=R(t.start),r=R(t.end);return!(n.line&&n.column&&r.line&&r.column)};function R(e){return e&&"object"==typeof e?e:{}}var A=function(e,t){return function(e){return function(t){var n=t&&y(t);return n&&O.call(e,n)?e[n]:null}}(function(e,t){var n={};if(!e||!e.type)throw new Error("mdast-util-definitions expected node");return E(e,"definition",t&&t.commonmark?function(e){var t=y(e.identifier);O.call(n,t)||(n[t]=e)}:function(e){n[y(e.identifier)]=e}),n}(e,t))},O={}.hasOwnProperty;function y(e){return e.toUpperCase()}var I=b(function(e,t){(t=e.exports=function(e){return e.replace(/^\s*|\s*$/g,"")}).left=function(e){return e.replace(/^\s*/,"")},t.right=function(e){return e.replace(/\s*$/,"")}}),D=(I.left,I.right,function(e,t){var n,r,a=t.children||[],i=a.length,o=[],s=-1;for(;++s<i;)(n=x(e,a[s],t))&&(s&&"break"===a[s-1].type&&(n.value&&(n.value=I.left(n.value)),(r=n.children&&n.children[0])&&r.value&&(r.value=I.left(r.value))),o=o.concat(n));return o});var x=function(e,t,n){var r=t&&t.type,a=M.call(e.handlers,r)?e.handlers[r]:null;if(!r)throw new Error("Expected node, got `"+t+"`");return("function"==typeof a?a:function(e,t){if(function(e){var t=e.data||{};if(M.call(t,"hName")||M.call(t,"hProperties")||M.call(t,"hChildren"))return!1;return"value"in e}(t))return e.augment(t,o("text",t.value));return e(t,"div",D(e,t))})(e,t,n)},M={}.hasOwnProperty;var w=function(e,t){return e(t,"hr")};var L=function(e,t){var n=[],r=-1,a=e.length;t&&n.push(o("text","\n"));for(;++r<a;)r&&n.push(o("text","\n")),n.push(e[r]);t&&0!==e.length&&n.push(o("text","\n"));return n};var P=function(e,t){var n,r,a={},i=t.ordered?"ol":"ul",o=-1;"number"==typeof t.start&&1!==t.start&&(a.start=t.start);n=D(e,t),r=n.length;for(;++o<r;)if(n[o].properties.className&&-1!==n[o].properties.className.indexOf("task-list-item")){a.className=["contains-task-list"];break}return e(t,i,a,L(n,!0))};var k=function(e){var t,n,r,a,i=e.footnoteById,o=e.footnoteOrder,s=o.length,l=-1,c=[];for(;++l<s;)(t=i[o[l].toUpperCase()])&&(r=t.children.concat(),a=r[r.length-1],n={type:"link",url:"#fnref-"+t.identifier,data:{hProperties:{className:["footnote-backref"]}},children:[{type:"text",value:"↩"}]},a&&"paragraph"===a.type||(a={type:"paragraph",children:[]},r.push(a)),a.children.push(n),c.push({type:"listItem",data:{hProperties:{id:"fn-"+t.identifier}},children:r,position:t.position}));if(0===c.length)return null;return e(null,"div",{className:["footnotes"]},L([w(e),P(e,{type:"list",ordered:!0,children:c})],!0))};var U=function(e,t){return e(t,"blockquote",L(D(e,t),!0))};var F=function(e,t){return[e(t,"br"),o("text","\n")]};var B,G="",H=function(e,t){if("string"!=typeof e)throw new TypeError("expected a string");if(1===t)return e;if(2===t)return e+e;var n=e.length*t;if(B!==e||void 0===B)B=e,G="";else if(G.length>=n)return G.substr(0,n);for(;n>G.length&&t>1;)1&t&&(G+=e),t>>=1,e+=e;return G=(G+=e).substr(0,n)};var Y=function(e,t){var n,r,a="string"==typeof e,i=a&&e.length,o=0,s=-1,l=-1,c=t||4,d=[];if(!a)throw new Error("detab expected string");for(;++s<i;)(n=e.charCodeAt(s))===V?(l+=r=c-(l+1)%c,d.push(e.slice(o,s)+H(" ",r)),o=s+1):n===z||n===q?l=-1:l++;return d.push(e.slice(o)),d.join("")},V=9,z=10,q=13;var K=function(e,t){var n=t.value?Y(t.value+"\n"):"",r=t.lang&&t.lang.match(/^[^ \t]+(?=[ \t]|$)/),a={};r&&(a.className=["language-"+r]);return e(t.position,"pre",[e(t,"code",a,[o("text",n)])])};var W=function(e,t){return e(t,"del",D(e,t))};var Q=function(e,t){return e(t,"em",D(e,t))};var $=function(e,t){var n=e.footnoteOrder,r=String(t.identifier);-1===n.indexOf(r)&&n.push(r);return e(t.position,"sup",{id:"fnref-"+r},[e(t,"a",{href:"#fn-"+r,className:["footnote-ref"]},[o("text",t.label||r)])])};var j=function(e,t){var n=e.footnoteById,r=e.footnoteOrder,a=1;for(;a in n;)a++;return a=String(a),r.push(a),n[a]={type:"footnoteDefinition",identifier:a,children:[{type:"paragraph",children:t.children}],position:t.position},$(e,{type:"footnoteReference",identifier:a,position:t.position})};var X=function(e,t){return e(t,"h"+t.depth,D(e,t))};var Z=function(e,t){return e.dangerous?e.augment(t,o("raw",t.value)):null};var J={};function ee(e,t,n){var r,a,i,o,s,l="";for("string"!=typeof t&&(n=t,t=ee.defaultChars),void 0===n&&(n=!0),s=function(e){var t,n,r=J[e];if(r)return r;for(r=J[e]=[],t=0;t<128;t++)n=String.fromCharCode(t),/^[0-9a-z]$/i.test(n)?r.push(n):r.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t<e.length;t++)r[e.charCodeAt(t)]=e[t];return r}(t),r=0,a=e.length;r<a;r++)if(i=e.charCodeAt(r),n&&37===i&&r+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(r+1,r+3)))l+=e.slice(r,r+3),r+=2;else if(i<128)l+=s[i];else if(i>=55296&&i<=57343){if(i>=55296&&i<=56319&&r+1<a&&(o=e.charCodeAt(r+1))>=56320&&o<=57343){l+=encodeURIComponent(e[r]+e[r+1]),r++;continue}l+="%EF%BF%BD"}else l+=encodeURIComponent(e[r]);return l}ee.defaultChars=";/?:@&=+$,-_.!~*'()#",ee.componentChars="-_.!~*'()";var te=ee,ne=function(e,t){var n,r,a,i=t.referenceType,s="]";"collapsed"===i?s+="[]":"full"===i&&(s+="["+(t.label||t.identifier)+"]");if("imageReference"===t.type)return o("text","!["+t.alt+s);n=D(e,t),(r=n[0])&&"text"===r.type?r.value="["+r.value:n.unshift(o("text","["));(a=n[n.length-1])&&"text"===a.type?a.value+=s:n.push(o("text",s));return n};var re=function(e){return String(e).replace(/\s+/g," ")};function ae(e){var t=e.spread;return void 0===t||null===t?e.children.length>1:t}var ie=function(e){return String(e).replace(oe,se)},oe=/[ \t]*\n+[ \t]*/g,se="\n";var le={blockquote:U,break:F,code:K,delete:W,emphasis:Q,footnoteReference:$,footnote:j,heading:X,html:Z,imageReference:function(e,t){var n,r=e.definition(t.identifier);if(!r)return ne(e,t);n={src:te(r.url||""),alt:t.alt},null!==r.title&&void 0!==r.title&&(n.title=r.title);return e(t,"img",n)},image:function(e,t){var n={src:te(t.url),alt:t.alt};null!==t.title&&void 0!==t.title&&(n.title=t.title);return e(t,"img",n)},inlineCode:function(e,t){return e(t,"code",[o("text",re(t.value))])},linkReference:function(e,t){var n,r=e.definition(t.identifier);if(!r)return ne(e,t);n={href:te(r.url||"")},null!==r.title&&void 0!==r.title&&(n.title=r.title);return e(t,"a",n,D(e,t))},link:function(e,t){var n={href:te(t.url)};null!==t.title&&void 0!==t.title&&(n.title=t.title);return e(t,"a",n,D(e,t))},listItem:function(e,t,n){var r,a,i,s,l,c=t.children[0],d=D(e,t),_=n?function(e){var t=e.spread,n=e.children,r=n.length,a=-1;for(;!t&&++a<r;)t=ae(n[a]);return t}(n):ae(t),u={};if(_)r=d;else for(r=[],s=d.length,i=-1;++i<s;)"p"===(l=d[i]).tagName?r=r.concat(l.children):r.push(l);"boolean"==typeof t.checked&&(!_||c&&"paragraph"===c.type||r.unshift(e(null,"p",[])),0!==(a=_?r[0].children:r).length&&a.unshift(o("text"," ")),a.unshift(e(null,"input",{type:"checkbox",checked:t.checked,disabled:!0})),u.className=["task-list-item"]);_&&0!==r.length&&(r=L(r,!0));return e(t,"li",u,r)},list:P,paragraph:function(e,t){return e(t,"p",D(e,t))},root:function(e,t){return e.augment(t,o("root",L(D(e,t))))},strong:function(e,t){return e(t,"strong",D(e,t))},table:function(e,t){var n,r,a,i,o,s=t.children,l=s.length,c=t.align,d=c.length,_=[];for(;l--;){for(r=s[l].children,i=0===l?"th":"td",n=d,a=[];n--;)o=r[n],a[n]=e(o,i,{align:c[n]},o?D(e,o):[]);_[l]=e(s[l],"tr",L(a,!0))}return e(t,"table",L([e(_[0].position,"thead",L([_[0]],!0)),e({start:N.start(_[1]),end:N.end(_[_.length-1])},"tbody",L(_.slice(1),!0))],!0))},text:function(e,t){return e.augment(t,o("text",ie(t.value)))},thematicBreak:w,toml:ce,yaml:ce,definition:ce,footnoteDefinition:ce};function ce(){return null}var de=function(t,n){var r=function(t,n){var r=n||{},a=r.allowDangerousHTML,i={};return s.dangerous=a,s.definition=A(t,r),s.footnoteById=i,s.footnoteOrder=[],s.augment=o,s.handlers=e(le,r.handlers||{}),E(t,"footnoteDefinition",function(e){var t=String(e.identifier).toUpperCase();_e.call(i,t)||(i[t]=e)}),s;function o(t,n){var r,a;return t&&"data"in t&&(r=t.data,"element"===n.type&&r.hName&&(n.tagName=r.hName),"element"===n.type&&r.hProperties&&(n.properties=e(n.properties,r.hProperties)),n.children&&r.hChildren&&(n.children=r.hChildren)),a=t&&t.position?t:{position:t},v(a)||(n.position={start:N.start(a),end:N.end(a)}),n}function s(e,t,n,r){return(void 0===r||null===r)&&"object"==typeof n&&"length"in n&&(r=n,n={}),o(e,{type:"element",tagName:t,properties:n||{},children:r||[]})}}(t,n),a=x(r,t),i=k(r);i&&(a.children=a.children.concat(o("text","\n"),i));return a},_e={}.hasOwnProperty;var ue=de,me=function(e,t){e&&!e.process&&(t=e,e=null);return e?function(e,t){return function(n,r,a){e.run(ue(n,t),r,function(e){a(e)})}}(e,t):function(e){return function(t){return ue(t,e)}}(t)};var pe=function(e){return Ee.test("number"==typeof e?ge(e):e.charAt(0))},ge=String.fromCharCode,Ee=/\s/;var he="|",Se="||";function fe(e,t){return e.indexOf(Se,t)}var Te=function(){function e(e,t,n){if(this.options.gfm&&t.substr(0,2)===Se&&t.substr(0,4)!==Se+Se&&!pe(t.charAt(2))){var r="",a="",i="",o="",s=1,l=t.length,c=e.now();for(c.column+=2,c.offset+=2;++s<l;){if(!((r=t.charAt(s))!==he||a!==he||i&&pe(i)))return!!n||e(Se+o+Se)({type:"kbd",children:this.tokenizeInline(o,c),data:{hName:"kbd"}});o+=a,i=a,a=r}}}e.locator=fe;var t=this.Parser,n=t.prototype.inlineTokenizers,r=t.prototype.inlineMethods;n.kbd=e,r.splice(r.indexOf("text"),0,"kbd");var a=this.Compiler;a&&(a.prototype.visitors.kbd=function(e){return"||".concat(this.all(e).join(""),"||")})};var be={isRemarkParser:function(e){return Boolean(e&&e.prototype&&e.prototype.blockTokenizers)},isRemarkCompiler:function(e){return Boolean(e&&e.prototype&&e.prototype.visitors)}},Ce=function(e){const t=this.Parser,n=this.Compiler;be.isRemarkParser(t)&&function(e,t){const n=e.prototype,r=n.inlineMethods;function a(e,n,r){const a=n.length;let i,o,s,l,c,d,_,u=!1,m=!1,p=0;if(n.charCodeAt(p)===ye&&(m=!0,p++),n.charCodeAt(p)===Re){if(p++,m)return!!r||e(n.slice(0,p))({type:"text",value:"$"});if(n.charCodeAt(p)===Re&&(u=!0,p++),(s=n.charCodeAt(p))!==ve&&s!==Ne){for(l=p;p<a;){if(o=s,s=n.charCodeAt(p+1),o===Re){if((i=n.charCodeAt(p-1))!==ve&&i!==Ne&&(s!=s||s<Ae||s>Oe)&&(!u||s===Re)){c=p-1,p++,u&&p++,d=p;break}}else o===ye&&(p++,s=n.charCodeAt(p+1));p++}if(void 0!==d)return!!r||(_=n.slice(l,c+1),e(n.slice(0,d))({type:"inlineMath",value:_,data:{hName:"span",hProperties:{className:Ie.concat(u&&t.inlineMathDouble?[De]:[])},hChildren:[{type:"text",value:_}]}}))}}}a.locator=function(e,t){return e.indexOf("$",t)},n.inlineTokenizers.math=a,r.splice(r.indexOf("text"),0,"math")}(t,e);be.isRemarkCompiler(n)&&function(e){e.prototype.visitors.inlineMath=function(e){let t="$";(e.data&&e.data.hProperties&&e.data.hProperties.className||[]).includes(De)&&(t="$$");return t+e.value+t}}(n)};const Ne=9,ve=32,Re=36,Ae=48,Oe=57,ye=92,Ie=["math","math-inline"],De="math-display";var xe=function(){const e=this.Parser,t=this.Compiler;be.isRemarkParser(e)&&function(e){const t=e.prototype,n=t.blockMethods,r=t.interruptParagraph,a=t.interruptList,i=t.interruptBlockquote;t.blockTokenizers.math=function(e,t,n){var r=t.length,a=0;let i,o,s,l,c,d,_,u,m,p,g;for(;a<r&&t.charCodeAt(a)===we;)a++;c=a;for(;a<r&&t.charCodeAt(a)===Le;)a++;if((d=a-c)<Ue)return;for(;a<r&&t.charCodeAt(a)===we;)a++;_=a;for(;a<r;){if((i=t.charCodeAt(a))===Le)return;if(i===Me)break;a++}if(t.charCodeAt(a)!==Me)return;if(n)return!0;o=[],_!==a&&o.push(t.slice(_,a));a++,s=-1===(s=t.indexOf(Pe,a+1))?r:s;for(;a<r;){for(u=!1,p=a,g=s,l=s,m=0;l>p&&t.charCodeAt(l-1)===we;)l--;for(;l>p&&t.charCodeAt(l-1)===Le;)m++,l--;for(d<=m&&t.indexOf(ke,p)===l&&(u=!0,g=l);p<=g&&p-a<c&&t.charCodeAt(p)===we;)p++;if(u)for(;g>p&&t.charCodeAt(g-1)===we;)g--;if(u&&p===g||o.push(t.slice(p,g)),u)break;a=s+1,s=-1===(s=t.indexOf(Pe,a+1))?r:s}return o=o.join("\n"),e(t.slice(0,s))({type:"math",value:o,data:{hName:"div",hProperties:{className:Fe.concat()},hChildren:[{type:"text",value:o}]}})},n.splice(n.indexOf("fencedCode")+1,0,"math"),r.splice(r.indexOf("fencedCode")+1,0,["math"]),a.splice(a.indexOf("fencedCode")+1,0,["math"]),i.splice(i.indexOf("fencedCode")+1,0,["math"])}(e);be.isRemarkCompiler(t)&&function(e){e.prototype.visitors.math=function(e){return"$$\n"+e.value+"\n$$"}}(t)};const Me=10,we=32,Le=36,Pe="\n",ke="$",Ue=2,Fe=["math","math-display"];var Be=function(e){null==e&&(e={});xe.call(this,e),Ce.call(this,e)};var Ge=b(function(e,t){var n,r;n=function(e){var t,n=[],r=Object.keys,a={},i={},o=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,l=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,c="</span>",d={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},_="of and for in not or if then".split(" ");function u(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function m(e){return e.nodeName.toLowerCase()}function p(e){return o.test(e)}function g(e){var t,n={},r=Array.prototype.slice.call(arguments,1);for(t in e)n[t]=e[t];return r.forEach(function(e){for(t in e)n[t]=e[t]}),n}function E(e){var t=[];return function e(n,r){for(var a=n.firstChild;a;a=a.nextSibling)3===a.nodeType?r+=a.nodeValue.length:1===a.nodeType&&(t.push({event:"start",offset:r,node:a}),r=e(a,r),m(a).match(/br|hr|img|input/)||t.push({event:"stop",offset:r,node:a}));return r}(e,0),t}function h(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return g(e,{variants:null},t)})),e.cached_variants?e.cached_variants:function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(e)?[g(e,{starts:e.starts?g(e.starts):null})]:[e]}function S(e){if(t&&!e.langApiRestored){for(var n in e.langApiRestored=!0,t)e[n]&&(e[t[n]]=e[n]);(e.contains||[]).concat(e.variants||[]).forEach(S)}}function f(e,t){var n={};return"string"==typeof e?a("keyword",e):r(e).forEach(function(t){a(t,e[t])}),n;function a(e,r){t&&(r=r.toLowerCase()),r.split(" ").forEach(function(t){var r=t.split("|");n[r[0]]=[e,function(e,t){return t?Number(t):(n=e,-1!=_.indexOf(n.toLowerCase())?0:1);var n}(r[0],r[1])]})}}function T(e){function t(e){return e&&e.source||e}function n(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}function r(e){var r,a,i={},o=[],s={},l=1;function c(e,t){i[l]=e,o.push([e,t]),l+=new RegExp(t.toString()+"|").exec("").length-1+1}for(var d=0;d<e.contains.length;d++){c(a=e.contains[d],a.beginKeywords?"\\.?(?:"+a.begin+")\\.?":a.begin)}e.terminator_end&&c("end",e.terminator_end),e.illegal&&c("illegal",e.illegal);var _=o.map(function(e){return e[1]});return r=n(function(e,n){for(var r=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,a=0,i="",o=0;o<e.length;o++){var s=a+=1,l=t(e[o]);for(o>0&&(i+=n),i+="(";l.length>0;){var c=r.exec(l);if(null==c){i+=l;break}i+=l.substring(0,c.index),l=l.substring(c.index+c[0].length),"\\"==c[0][0]&&c[1]?i+="\\"+String(Number(c[1])+s):(i+=c[0],"("==c[0]&&a++)}i+=")"}return i}(_,"|"),!0),s.lastIndex=0,s.exec=function(t){var n;if(0===o.length)return null;r.lastIndex=s.lastIndex;var a=r.exec(t);if(!a)return null;for(var l=0;l<a.length;l++)if(void 0!=a[l]&&void 0!=i[""+l]){n=i[""+l];break}return"string"==typeof n?(a.type=n,a.extra=[e.illegal,e.terminator_end]):(a.type="begin",a.rule=n),a},s}!function a(i,o){i.compiled||(i.compiled=!0,i.keywords=i.keywords||i.beginKeywords,i.keywords&&(i.keywords=f(i.keywords,e.case_insensitive)),i.lexemesRe=n(i.lexemes||/\w+/,!0),o&&(i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")\\b"),i.begin||(i.begin=/\B|\b/),i.beginRe=n(i.begin),i.endSameAsBegin&&(i.end=i.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),i.end&&(i.endRe=n(i.end)),i.terminator_end=t(i.end)||"",i.endsWithParent&&o.terminator_end&&(i.terminator_end+=(i.end?"|":"")+o.terminator_end)),i.illegal&&(i.illegalRe=n(i.illegal)),null==i.relevance&&(i.relevance=1),i.contains||(i.contains=[]),i.contains=Array.prototype.concat.apply([],i.contains.map(function(e){return h("self"===e?i:e)})),i.contains.forEach(function(e){a(e,i)}),i.starts&&a(i.starts,o),i.terminators=r(i))}(e)}function b(e,t,n,r){function i(e,t){var n=E.case_insensitive?t[0].toLowerCase():t[0];return e.keywords.hasOwnProperty(n)&&e.keywords[n]}function o(e,t,n,r){if(!n&&""===t)return"";if(!e)return t;var a='<span class="'+(r?"":d.classPrefix);return(a+=e+'">')+t+(n?"":c)}function s(){N+=null!=S.subLanguage?function(){var e="string"==typeof S.subLanguage;if(e&&!a[S.subLanguage])return u(v);var t=e?b(S.subLanguage,v,!0,f[S.subLanguage]):C(v,S.subLanguage.length?S.subLanguage:void 0);return S.relevance>0&&(R+=t.relevance),e&&(f[S.subLanguage]=t.top),o(t.language,t.value,!1,!0)}():function(){var e,t,n,r;if(!S.keywords)return u(v);for(r="",t=0,S.lexemesRe.lastIndex=0,n=S.lexemesRe.exec(v);n;)r+=u(v.substring(t,n.index)),(e=i(S,n))?(R+=e[1],r+=o(e[0],u(n[0]))):r+=u(n[0]),t=S.lexemesRe.lastIndex,n=S.lexemesRe.exec(v);return r+u(v.substr(t))}(),v=""}function l(e){N+=e.className?o(e.className,"",!0):"",S=Object.create(e,{parent:{value:S}})}function _(e){var t=e[0],n=e.rule;return n&&n.endSameAsBegin&&(n.endRe=new RegExp(t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),n.skip?v+=t:(n.excludeBegin&&(v+=t),s(),n.returnBegin||n.excludeBegin||(v=t)),l(n),n.returnBegin?0:t.length}function m(e){var t=e[0],n=function e(t,n){if(function(e,t){var n=e&&e.exec(t);return n&&0===n.index}(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(S,t);if(n){var r=S;r.skip?v+=t:(r.returnEnd||r.excludeEnd||(v+=t),s(),r.excludeEnd&&(v=t));do{S.className&&(N+=c),S.skip||S.subLanguage||(R+=S.relevance),S=S.parent}while(S!==n.parent);return n.starts&&(n.endSameAsBegin&&(n.starts.endRe=n.endRe),l(n.starts)),r.returnEnd?0:t.length}}var p={};function g(e,r){var a=r&&r[0];if(v+=e,null==a)return s(),0;if("begin"==p.type&&"end"==r.type&&p.index==r.index&&""===a)return v+=t.slice(r.index,r.index+1),1;if(p=r,"begin"===r.type)return _(r);if("illegal"===r.type&&!n)throw new Error('Illegal lexeme "'+a+'" for mode "'+(S.className||"<unnamed>")+'"');if("end"===r.type){var i=m(r);if(void 0!=i)return i}return v+=a,a.length}var E=A(e);if(!E)throw new Error('Unknown language: "'+e+'"');T(E);var h,S=r||E,f={},N="";for(h=S;h!==E;h=h.parent)h.className&&(N=o(h.className,"",!0)+N);var v="",R=0;try{for(var O,y,I=0;S.terminators.lastIndex=I,O=S.terminators.exec(t);)y=g(t.substring(I,O.index),O),I=O.index+y;for(g(t.substr(I)),h=S;h.parent;h=h.parent)h.className&&(N+=c);return{relevance:R,value:N,illegal:!1,language:e,top:S}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{illegal:!0,relevance:0,value:u(t)};throw e}}function C(e,t){t=t||d.languages||r(a);var n={relevance:0,value:u(e)},i=n;return t.filter(A).filter(O).forEach(function(t){var r=b(t,e,!1);r.language=t,r.relevance>i.relevance&&(i=r),r.relevance>n.relevance&&(i=n,n=r)}),i.language&&(n.second_best=i),n}function N(e){return d.tabReplace||d.useBR?e.replace(l,function(e,t){return d.useBR&&"\n"===e?"<br>":d.tabReplace?t.replace(/\t/g,d.tabReplace):""}):e}function v(e){var t,r,a,o,l,c=function(e){var t,n,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",n=s.exec(i))return A(n[1])?n[1]:"no-highlight";for(t=0,r=(i=i.split(/\s+/)).length;t<r;t++)if(p(a=i[t])||A(a))return a}(e);p(c)||(d.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):t=e,l=t.textContent,a=c?b(c,l,!0):C(l),(r=E(t)).length&&((o=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=a.value,a.value=function(e,t,r){var a=0,i="",o=[];function s(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset<t[0].offset?e:t:"start"===t[0].event?e:t:e.length?e:t}function l(e){i+="<"+m(e)+n.map.call(e.attributes,function(e){return" "+e.nodeName+'="'+u(e.value).replace('"',"&quot;")+'"'}).join("")+">"}function c(e){i+="</"+m(e)+">"}function d(e){("start"===e.event?l:c)(e.node)}for(;e.length||t.length;){var _=s();if(i+=u(r.substring(a,_[0].offset)),a=_[0].offset,_===e){o.reverse().forEach(c);do{d(_.splice(0,1)[0]),_=s()}while(_===e&&_.length&&_[0].offset===a);o.reverse().forEach(l)}else"start"===_[0].event?o.push(_[0].node):o.pop(),d(_.splice(0,1)[0])}return i+u(r.substr(a))}(r,E(o),l)),a.value=N(a.value),e.innerHTML=a.value,e.className=function(e,t,n){var r=t?i[t]:n,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,c,a.language),e.result={language:a.language,re:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance}))}function R(){if(!R.called){R.called=!0;var e=document.querySelectorAll("pre code");n.forEach.call(e,v)}}function A(e){return e=(e||"").toLowerCase(),a[e]||a[i[e]]}function O(e){var t=A(e);return t&&!t.disableAutodetect}return e.highlight=b,e.highlightAuto=C,e.fixMarkup=N,e.highlightBlock=v,e.configure=function(e){d=g(d,e)},e.initHighlighting=R,e.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",R,!1),addEventListener("load",R,!1)},e.registerLanguage=function(t,n){var r=a[t]=n(e);S(r),r.rawDefinition=n.bind(null,e),r.aliases&&r.aliases.forEach(function(e){i[e]=t})},e.listLanguages=function(){return r(a)},e.getLanguage=A,e.autoDetection=O,e.inherit=g,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var a=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return a.contains.push(e.PHRASAL_WORDS_MODE),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),a},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e},r="object"==typeof window&&window||"object"==typeof self&&self,t.nodeType?r&&(r.hljs=n({})):n(t)}),He=b(function(e){!function(){var t;function n(e){for(var t,n,r,a,i=1,o=[].slice.call(arguments),s=0,l=e.length,c="",d=!1,_=!1,u=function(){return o[i++]},m=function(){for(var n="";/\d/.test(e[s]);)n+=e[s++],t=e[s];return n.length>0?parseInt(n):null};s<l;++s)if(t=e[s],d)switch(d=!1,"."==t?(_=!1,t=e[++s]):"0"==t&&"."==e[s+1]?(_=!0,t=e[s+=2]):_=!0,a=m(),t){case"b":c+=parseInt(u(),10).toString(2);break;case"c":"string"==typeof(n=u())||n instanceof String?c+=n:c+=String.fromCharCode(parseInt(n,10));break;case"d":c+=parseInt(u(),10);break;case"f":r=String(parseFloat(u()).toFixed(a||6)),c+=_?r:r.replace(/^0/,"");break;case"j":c+=JSON.stringify(u());break;case"o":c+="0"+parseInt(u(),10).toString(8);break;case"s":c+=u();break;case"x":c+="0x"+parseInt(u(),10).toString(16);break;case"X":c+="0x"+parseInt(u(),10).toString(16).toUpperCase();break;default:c+=t}else"%"===t?d=!0:c+=t;return c}(t=e.exports=n).format=n,t.vsprintf=function(e,t){return n.apply(null,[e].concat(t))},"undefined"!=typeof console&&"function"==typeof console.log&&(t.printf=function(){console.log(n.apply(null,arguments))})}()}),Ye=ze(Error),Ve=Ye;function ze(e){return t.displayName=e.displayName||e.name,t;function t(t){return t&&(t=He.apply(null,arguments)),new e(t)}}function qe(){}Ye.eval=ze(EvalError),Ye.range=ze(RangeError),Ye.reference=ze(ReferenceError),Ye.syntax=ze(SyntaxError),Ye.type=ze(TypeError),Ye.uri=ze(URIError),Ye.create=ze,qe.prototype=Ge;var Ke=new qe,We=Ke;Ke.highlight=function(e,t,n){var r=(n||{}).prefix;null!==r&&void 0!==r||(r=je);return mt(_t(e,t,!0,r))},Ke.highlightAuto=ct,Ke.registerLanguage=function(e,t){var n=t(Ke);n.rawDefinition=t.bind(null,Ke),st[e]=n,ot.push(e),n.aliases&&dt(e,n.aliases)},Ke.listLanguages=function(){return ot.concat()},Ke.registerAlias=dt,Ke.getLanguage=pt;var Qe=Ge.inherit,$e={}.hasOwnProperty,je="hljs-",Xe="case_insensitive",Ze="cached_variants",Je="terminator_end",et=" ",tt="|",nt="(",rt=")",at="\\",it=["of","and","for","in","not","or","if","then"],ot=[],st={},lt={};function ct(e,t){var n,r,a,i,o=t||{},s=o.subset||ot,l=o.prefix,c=s.length,d=-1;if(null!==l&&void 0!==l||(l=je),"string"!=typeof e)throw Ve("Expected `string` for value, got `%s`",e);for(r=mt({}),n=mt({});++d<c;)pt(i=s[d])&&((a=mt(_t(i,e,!1,l))).language=i,a.relevance>r.relevance&&(r=a),a.relevance>n.relevance&&(r=n,n=a));return r.language&&(n.secondBest=r),n}function dt(e,t){var n,r,a,i,o=e;for(n in t&&((o={})[e]=t),o)for(a=(r="string"==typeof(r=o[n])?[r]:r).length,i=-1;++i<a;)lt[r[i]]=n}function _t(e,t,n,r,a){var i,o,s,l,c,d,_,u,m={},p={},g=[],E="",h=0;if("string"!=typeof e)throw Ve("Expected `string` for name, got `%s`",e);if("string"!=typeof t)throw Ve("Expected `string` for value, got `%s`",t);if(i=pt(e),s=o=a||i,l=u=[],!i)throw Ve("Unknown language: `%s` is not registered",e);!function(e){function t(a,i){a.compiled||(a.compiled=!0,a.keywords=a.keywords||a.beginKeywords,a.keywords&&(a.keywords=function(e,t){var n,r={};if("string"==typeof e)a("keyword",e);else for(n in e)a(n,e[n]);return r;function a(e,n){var a=t?n.toLowerCase():n;!function(e,t){var n,a=t.length,i=-1;for(;++i<a;)n=t[i].split(tt),r[n[0]]=[e,Number(n[1])||(o=n[0],-1!==it.indexOf(o.toLowerCase()))?0:1];var o}(e,a.split(et))}}(a.keywords,e[Xe])),a.lexemesRe=n(a.lexemes||/\w+/,!0),i&&(a.beginKeywords&&(a.begin="\\b("+a.beginKeywords.split(et).join(tt)+")\\b"),a.begin||(a.begin=/\B|\b/),a.beginRe=n(a.begin),a.endSameAsBegin&&(a.end=a.begin),a.end||a.endsWithParent||(a.end=/\B|\b/),a.end&&(a.endRe=n(a.end)),a[Je]=r(a.end)||"",a.endsWithParent&&i[Je]&&(a[Je]+=(a.end?tt:"")+i[Je])),a.illegal&&(a.illegalRe=n(a.illegal)),void 0===a.relevance&&(a.relevance=1),a.contains=function(e,n){var r,a=[],i=e.length,o=-1;for(;++o<i;)r=e[o],a=a.concat(ut("self"===r?n:r));i=a.length,o=-1;for(;++o<i;)t(a[o],n);return a}(a.contains||[],a),a.starts&&t(a.starts,i),a.terminators=function(e){var t,a,i={},o=[],s={},l=1,c=e.contains,d=c.length,_=-1,u=[];for(;++_<d;)m(a=c[_],a.beginKeywords?"\\.?(?:"+a.begin+")\\.?":a.begin);e[Je]&&m("end",e[Je]);e.illegal&&m("illegal",e.illegal);d=o.length,_=-1;for(;++_<d;)u[_]=o[_][1];return t=n(function(e,t){for(var n,a,i,o,s=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9]\d*)|\\./,l=0,c="",d=e.length,_=-1;++_<d;){for(n=e[_],i=r(n),a=l+=1,0!==_&&(c+=t),c+=nt;i.length>0;){if(null===(o=s.exec(i))){c+=i;break}c+=i.slice(0,o.index),i=i.slice(o.index+o[0].length),o[0][0]===at&&o[1]?c+=at+String(Number(o[1])+a):(c+=o[0],o[0]===nt&&l++)}c+=rt}return c}(u,tt),!0),s={lastIndex:0,exec:function(n){var r,a,l,c;if(0===o.length)return null;if(t.lastIndex=s.lastIndex,!(c=t.exec(n)))return null;for(r=c.length,a=-1;++a<r;)if(void 0!==c[a]&&void 0!==i[a]){l=i[a];break}return"string"==typeof l?(c.type=l,c.extra=[e.illegal,e.terminator_end]):(c.type="begin",c.rule=l),c}};function m(e,t){i[l]=e,o.push([e,t]),l+=new RegExp(t.toString()+tt).exec("").length}}(a))}function n(t,n){return new RegExp(r(t),"m"+(e[Xe]?"i":"")+(n?"g":""))}function r(e){return e&&e.source||e}t(e)}(i);try{for(o.terminators.lastIndex=0,c=0,_=o.terminators.exec(t);_;)d=T(t.slice(c,_.index),_),c=_.index+d,o.terminators.lastIndex=c,_=o.terminators.exec(t);for(T(t.slice(c)),s=o;s.parent;)s.className&&y(),s=s.parent;return{relevance:h,value:l,illegal:!1,language:e,top:o}}catch(e){if(-1===e.message.indexOf("Illegal"))throw e;return{relevance:0,illegal:!0,value:v(t,[])}}function S(e){var t=e[0],n=e.rule;return n&&n.endSameAsBegin&&(n.endRe=new RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),n.skip?E+=t:(n.excludeBegin&&(E+=t),N(C(),l),n.returnBegin||n.excludeBegin||(E=t)),b(n),n.returnBegin?0:t.length}function f(e){var n=e[0],r=t.slice(e.index),a=function e(t,n){if(function(e,t){var n=e&&e.exec(t);return n&&0===n.index}(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(o,r);if(a){var i=o;i.skip?E+=n:(i.returnEnd||i.excludeEnd||(E+=n),N(C(),l),i.excludeEnd&&(E=n));do{o.className&&y(),o.skip||o.subLanguage||(h+=o.relevance),o=o.parent}while(o!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.endRe=a.endRe),b(a.starts)),i.returnEnd?0:n.length}}function T(e,r){var a,i=r&&r[0];if(E+=e,void 0===i)return N(C(),l),0;if("begin"===m.type&&"end"===r.type&&m.index===r.index&&""===i)return E+=t.slice(r.index,r.index+1),1;if(m=r,"begin"===r.type)return S(r);if("end"===r.type&&void 0!==(a=f(r)))return a;if("illegal"===r.type&&!n)throw Ve('Illegal lexeme "%s" for mode "%s"',i,o.className||"<unnamed>");return E+=i,i.length}function b(e){var t;e.className&&(t=A(e.className,[])),t&&(l.push(t),g.push(l),l=t.children),o=Object.create(e,{parent:{value:o}})}function C(){var e=o.subLanguage?function(){var e,t="string"==typeof o.subLanguage;if(t&&!st[o.subLanguage])return v(E,[]);e=t?_t(o.subLanguage,E,!0,r,p[o.subLanguage]):ct(E,{subset:0===o.subLanguage.length?void 0:o.subLanguage,prefix:r});if(!e.language)return[R(E)];o.relevance>0&&(h+=e.relevance);t&&(p[o.subLanguage]=e.top);return[A(e.language,e.value,!0)]}():function(){var e,t,n,r,a=[];if(!o.keywords)return v(E,a);e=0,o.lexemesRe.lastIndex=0,t=o.lexemesRe.exec(E);for(;t;)v(E.slice(e,t.index),a),(r=O(o,t))?(h+=r[1],n=A(r[0],[]),a.push(n),v(t[0],n.children)):v(t[0],a),e=o.lexemesRe.lastIndex,t=o.lexemesRe.exec(E);return v(E.slice(e),a),a}();return E="",e}function N(e,t){for(var n,r=e.length,a=-1;++a<r;)"text"===(n=e[a]).type?v(n.value,t):t.push(n)}function v(e,t){var n;return e&&((n=t[t.length-1])&&"text"===n.type?n.value+=e:t.push(R(e))),t}function R(e){return{type:"text",value:e}}function A(e,t,n){return{type:"element",tagName:"span",properties:{className:[(n?"":r)+e]},children:t}}function O(e,t){var n=t[0];return i[Xe]&&(n=n.toLowerCase()),$e.call(e.keywords,n)&&e.keywords[n]}function y(){l=g.pop()||u}}function ut(e){var t,n,r,a;if(e.variants&&!e[Ze]){for(t=(r=e.variants).length,n=-1,a=[];++n<t;)a[n]=Qe(e,{variants:null},r[n]);e[Ze]=a}return e.cached_variants?e.cached_variants:function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(e)?[Qe(e,{starts:e.starts?Qe(e.starts):null})]:[e]}function mt(e){return{relevance:e.relevance||0,language:e.language||null,value:e.value||[]}}function pt(e){return e=e.toLowerCase(),st[e]||st[lt[e]]}var gt=We;function Et({include:e,exclude:t}={}){return e=>E(e,"code",n);function n(n){let{lang:r,data:a}=n;!r||e&&-1===e.indexOf(r)||t&&-1!==t.indexOf(r)||(a||(a={},n.data=a),a.hProperties||(a.hProperties={}),a.hChildren=gt.highlight(r,n.value).value,a.hProperties.className=["hljs",...a.hProperties.className||[],"language-"+r])}}We.registerLanguage("1c",function(e){var t="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+",n="далее возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ",r="null истина ложь неопределено",a=e.inherit(e.NUMBER_MODE),i={className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},o={begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},s=e.inherit(e.C_LINE_COMMENT_MODE);return{case_insensitive:!0,lexemes:t,keywords:{keyword:n,built_in:"разделительстраниц разделительстрок символтабуляции ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ",class:"webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц отображениевремениэлементовпланировщика типфайлаформатированногодокумента обходрезультатазапроса типзаписизапроса видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов доступкфайлу режимдиалогавыборафайла режимоткрытияфайла типизмеренияпостроителязапроса видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты",type:"comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив ",literal:r},contains:[{className:"meta",lexemes:t,begin:"#|&",end:"$",keywords:{"meta-keyword":n+"загрузитьизфайла вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент "},contains:[s]},{className:"function",lexemes:t,variants:[{begin:"процедура|функция",end:"\\)",keywords:"процедура функция"},{begin:"конецпроцедуры|конецфункции",keywords:"конецпроцедуры конецфункции"}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",lexemes:t,begin:t,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{keyword:"знач",literal:r},contains:[a,i,o]},s]},e.inherit(e.TITLE_MODE,{begin:t})]},s,{className:"symbol",begin:"~",end:";|:",excludeEnd:!0},a,i,o]}}),We.registerLanguage("abnf",function(e){var t="^[a-zA-Z][a-zA-Z0-9-]*",n="[!@#$^&',?+~`|:]",r=e.COMMENT(";","$"),a={className:"attribute",begin:t+"(?=\\s*=)"};return{illegal:n,keywords:["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"].join(" "),contains:[a,r,{className:"symbol",begin:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/},{className:"symbol",begin:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/},{className:"symbol",begin:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/},{className:"symbol",begin:/%[si]/},e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}),We.registerLanguage("accesslog",function(e){var t=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"];return{contains:[{className:"number",begin:"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b",relevance:5},{className:"number",begin:"\\b\\d+\\b",relevance:0},{className:"string",begin:'"('+t.join("|")+")",end:'"',keywords:t.join(" "),illegal:"\\n",relevance:5,contains:[{begin:"HTTP/[12]\\.\\d",relevance:5}]},{className:"string",begin:/\[\d[^\]\n]{8,}\]/,illegal:"\\n",relevance:1},{className:"string",begin:/\[/,end:/\]/,illegal:"\\n",relevance:0},{className:"string",begin:'"Mozilla/\\d\\.\\d \\(',end:'"',illegal:"\\n",relevance:3},{className:"string",begin:'"',end:'"',illegal:"\\n",relevance:0}]}}),We.registerLanguage("actionscript",function(e){var t={className:"rest_arg",begin:"[.]{3}",end:"[a-zA-Z_$][a-zA-Z0-9_$]*",relevance:10};return{aliases:["as"],keywords:{keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with",literal:"true false null undefined"},contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"class",beginKeywords:"package",end:"{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.TITLE_MODE]},{className:"meta",beginKeywords:"import include",end:";",keywords:{"meta-keyword":"import include"}},{className:"function",beginKeywords:"function",end:"[{;]",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t]},{begin:":\\s*([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)"}]},e.METHOD_GUARD],illegal:/#/}}),We.registerLanguage("ada",function(e){var t="[A-Za-z](_?[A-Za-z0-9.])*",n=e.COMMENT("--","$"),r={begin:"\\s+:\\s+",end:"\\s*(:=|;|\\)|=>|$)",illegal:"[]{}%#'\"",contains:[{beginKeywords:"loop for declare others",endsParent:!0},{className:"keyword",beginKeywords:"not null constant access function procedure in out aliased exception"},{className:"type",begin:t,endsParent:!0,relevance:0}]};return{case_insensitive:!0,keywords:{keyword:"abort else new return abs elsif not reverse abstract end accept entry select access exception of separate aliased exit or some all others subtype and for out synchronized array function overriding at tagged generic package task begin goto pragma terminate body private then if procedure type case in protected constant interface is raise use declare range delay limited record when delta loop rem while digits renames with do mod requeue xor",literal:"True False"},contains:[n,{className:"string",begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{className:"string",begin:/'.'/},{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"symbol",begin:"'"+t},{className:"title",begin:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?",end:"(is|$)",keywords:"package body",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},{begin:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+",end:"(\\bis|\\bwith|\\brenames|\\)\\s*;)",keywords:"overriding function procedure with is renames return",returnBegin:!0,contains:[n,{className:"title",begin:"(\\bwith\\s+)?\\b(function|procedure)\\s+",end:"(\\(|\\s+|$)",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},r,{className:"type",begin:"\\breturn\\s+",end:"(\\s+|;|$)",keywords:"return",excludeBegin:!0,excludeEnd:!0,endsParent:!0,illegal:"[]{}%#'\""}]},{className:"type",begin:"\\b(sub)?type\\s+",end:"\\s+",keywords:"type",excludeBegin:!0,illegal:"[]{}%#'\""},r]}}),We.registerLanguage("angelscript",function(e){var t={className:"built_in",begin:"\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)"},n={className:"symbol",begin:"[a-zA-Z0-9_]+@"},r={className:"keyword",begin:"<",end:">",contains:[t,n]};return t.contains=[r],n.contains=[r],{aliases:["asc"],keywords:"for in|0 break continue while do|0 return if else case switch namespace is cast or and xor not get|0 in inout|10 out override set|0 private public const default|0 final shared external mixin|10 enum typedef funcdef this super import from interface abstract|0 try catch protected explicit property",illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunctions*[^\\(])",contains:[{className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""',end:'"""'},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{beginKeywords:"interface namespace",end:"{",illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{beginKeywords:"class",end:"{",illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]}]}]},t,n,{className:"literal",begin:"\\b(null|true|false)"},{className:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"}]}}),We.registerLanguage("apache",function(e){var t={className:"number",begin:"[\\$%]\\d+"};return{aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:"</?",end:">"},{className:"attribute",begin:/\w+/,relevance:0,keywords:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{end:/$/,relevance:0,keywords:{literal:"on off all"},contains:[{className:"meta",begin:"\\s\\[",end:"\\]$"},{className:"variable",begin:"[\\$%]\\{",end:"\\}",contains:["self",t]},t,e.QUOTE_STRING_MODE]}}],illegal:/\S/}}),We.registerLanguage("applescript",function(e){var t=e.inherit(e.QUOTE_STRING_MODE,{illegal:""}),n={className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_NUMBER_MODE,t]},r=e.COMMENT("--","$"),a=[r,e.COMMENT("\\(\\*","\\*\\)",{contains:["self",r]}),e.HASH_COMMENT_MODE];return{aliases:["osascript"],keywords:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"},contains:[t,e.C_NUMBER_MODE,{className:"built_in",begin:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{className:"literal",begin:"\\b(text item delimiters|current application|missing value)\\b"},{className:"keyword",begin:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference)|POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{beginKeywords:"on",illegal:"[${=;\\n]",contains:[e.UNDERSCORE_TITLE_MODE,n]}].concat(a),illegal:"//|->|=>|\\[\\["}}),We.registerLanguage("arcade",function(e){var t="[A-Za-z_][0-9A-Za-z_]*",n={keyword:"if for while var new function do return void else break",literal:"BackSlash DoubleQuote false ForwardSlash Infinity NaN NewLine null PI SingleQuote Tab TextFormatting true undefined",built_in:"Abs Acos Angle Attachments Area AreaGeodetic Asin Atan Atan2 Average Bearing Boolean Buffer BufferGeodetic Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance DistanceGeodetic Distinct DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetByAssociation FeatureSetById FeatureSetByPortalItem FeatureSetByRelationshipName FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry GroupBy Guid HasKey Hour IIf IndexOf Intersection Intersects IsEmpty IsNan IsSelfIntersecting Length LengthGeodetic Log Max Mean Millisecond Min Minute Month MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon Polyline Portal Pow Random Relate Reverse RingIsClockWise Round Second SetGeometry Sin Sort Sqrt Stdev Sum SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TrackCurrentTime TrackGeometryWindow TrackIndex TrackStartTime TrackWindow TypeOf Union UrlEncode Variance Weekday When Within Year "},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,a]};a.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,r,e.REGEXP_MODE];var o=a.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["arcade"],keywords:n,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"symbol",begin:"\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+"},r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(return)\\b)\\s*",keywords:"return",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:o}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o}],illegal:/\[|%/},{begin:/\$[(.]/}],illegal:/#(?!!)/}}),We.registerLanguage("cpp",function(e){var t={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},n={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},{begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/}]},r={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},a={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(n,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},i=e.IDENT_RE+"\\s*\\(",o={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},s=[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,n];return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:o,illegal:"</",contains:s.concat([a,{begin:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",end:">",keywords:o,contains:["self",t]},{begin:e.IDENT_RE+"::",keywords:o},{variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:o,contains:s.concat([{begin:/\(/,end:/\)/,keywords:o,contains:s.concat(["self"]),relevance:0}]),relevance:0},{className:"function",begin:"("+e.IDENT_RE+"[\\*&\\s]+)+"+i,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:o,illegal:/[^\w\s\*&]/,contains:[{begin:i,returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t,{begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a]},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin:/</,end:/>/,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:a,strings:n,keywords:o}}}),We.registerLanguage("arduino",function(e){var t="boolean byte word String",n="setup loopKeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put",r="DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW",a=e.getLanguage("cpp").rawDefinition(),i=a.keywords;return i.keyword+=" "+t,i.literal+=" "+r,i.built_in+=" "+n,a}),We.registerLanguage("armasm",function(e){return{case_insensitive:!0,aliases:["arm"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?",end:"\\s"},e.COMMENT("[;@]","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"[=#]\\w+"}],relevance:0}]}}),We.registerLanguage("xml",function(e){var t={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:"[A-Za-z0-9\\._:-]+",relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/},{begin:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"<!DOCTYPE",end:">",relevance:10,contains:[{begin:"\\[",end:"\\]"}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]},{className:"tag",begin:"<style(?=\\s|>)",end:">",keywords:{name:"style"},contains:[t],starts:{end:"</style>",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:"<script(?=\\s|>)",end:">",keywords:{name:"script"},contains:[t],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml"]}},{className:"tag",begin:"</?",end:"/?>",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},t]}]}}),We.registerLanguage("asciidoc",function(e){return{aliases:["adoc"],contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,5}) .+?( \\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{className:"bullet",begin:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol",begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{className:"strong",begin:"\\B\\*(?![\\*\\s])",end:"(\\n{2}|\\*)",contains:[{begin:"\\\\*\\w",relevance:0}]},{className:"emphasis",begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0}],relevance:0},{className:"emphasis",begin:"_(?![_\\s])",end:"(\\n{2}|_)",relevance:0},{className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{className:"code",begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]}}),We.registerLanguage("aspectj",function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance";return{keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"aspect",end:/[{;=]/,excludeEnd:!0,illegal:/[:;"\[\]]/,contains:[{beginKeywords:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"},e.UNDERSCORE_TITLE_MODE,{begin:/\([^\)]*/,end:/[)]+/,keywords:t+" get set args call",excludeEnd:!1}]},{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,relevance:0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"pointcut after before around throwing returning",end:/[)]/,excludeEnd:!1,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE]}]},{begin:/[:]/,returnBegin:!0,end:/[{;]/,relevance:0,excludeEnd:!1,keywords:t,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",keywords:t+" get set args call",relevance:0},e.QUOTE_STRING_MODE]},{beginKeywords:"new throw",relevance:0},{className:"function",begin:/\w+ +\w+(\.)?\w+\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,returnBegin:!0,end:/[{;=]/,keywords:t,excludeEnd:!0,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,relevance:0,keywords:t,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("autohotkey",function(e){var t={begin:"`[\\s\\S]"};return{case_insensitive:!0,aliases:["ahk"],keywords:{keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group",literal:"true false NOT AND OR",built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},contains:[t,e.inherit(e.QUOTE_STRING_MODE,{contains:[t]}),e.COMMENT(";","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,{className:"number",begin:e.NUMBER_RE,relevance:0},{className:"variable",begin:"%[a-zA-Z0-9#_$@]+%"},{className:"built_in",begin:"^\\s*\\w+\\s*(,|%)"},{className:"title",variants:[{begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{className:"meta",begin:"^\\s*#\\w+",end:"$",relevance:0},{className:"built_in",begin:"A_[a-zA-Z0-9]+"},{begin:",\\s*,"}]}}),We.registerLanguage("autoit",function(e){var t={variants:[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#cs","#ce"),e.COMMENT("#comments-start","#comments-end")]},n={begin:"\\$[A-z0-9_]+"},r={className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"ByRef Case Const ContinueCase ContinueLoop Default Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With",built_in:"Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait",literal:"True False And Null Not Or"},contains:[t,n,r,a,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",keywords:{"meta-keyword":"include"},end:"$",contains:[r,{className:"meta-string",variants:[{begin:"<",end:">"},{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]}]},r,t]},{className:"symbol",begin:"@[A-z0-9_]+"},{className:"function",beginKeywords:"Func",end:"$",illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[n,r,a]}]}]}}),We.registerLanguage("avrasm",function(e){return{case_insensitive:!0,lexemes:"\\.?"+e.IDENT_RE,keywords:{keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf",meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set"},contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),e.C_NUMBER_MODE,e.BINARY_NUMBER_MODE,{className:"number",begin:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"},{className:"symbol",begin:"^[A-Za-z0-9_.$]+:"},{className:"meta",begin:"#",end:"$"},{className:"subst",begin:"@[0-9]+"}]}}),We.registerLanguage("awk",function(e){return{keywords:{keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10"},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]}}),We.registerLanguage("axapta",function(e){return{keywords:"false int abstract private char boolean static null if for true while long throw finally protected final return void enum else break new catch byte super case short default double public try this switch continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count order group by asc desc index hint like dispaly edit client server ttsbegin ttscommit str real date container anytype common div mod",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]}]}}),We.registerLanguage("bash",function(e){var t={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]};return{aliases:["sh","zsh"],lexemes:/\b-?[a-z\._]+\b/,keywords:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[{className:"meta",begin:/^#![^\n]+sh\s*$/,relevance:10},{className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},e.HASH_COMMENT_MODE,n,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}),We.registerLanguage("basic",function(e){return{case_insensitive:!0,illegal:"^.",lexemes:"[a-zA-Z][a-zA-Z0-9_$%!#]*",keywords:{keyword:"ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO HEX$ IF THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE WEND WIDTH WINDOW WRITE XOR"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("REM","$",{relevance:10}),e.COMMENT("'","$",{relevance:0}),{className:"symbol",begin:"^[0-9]+ ",relevance:10},{className:"number",begin:"\\b([0-9]+[0-9edED.]*[#!]?)",relevance:0},{className:"number",begin:"(&[hH][0-9a-fA-F]{1,4})"},{className:"number",begin:"(&[oO][0-7]{1,6})"}]}}),We.registerLanguage("bnf",function(e){return{contains:[{className:"attribute",begin:/</,end:/>/},{begin:/::=/,starts:{end:/$/,contains:[{begin:/</,end:/>/},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}}]}}),We.registerLanguage("brainfuck",function(e){var t={className:"literal",begin:"[\\+\\-]",relevance:0};return{aliases:["bf"],contains:[e.COMMENT("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{returnEnd:!0,relevance:0}),{className:"title",begin:"[\\[\\]]",relevance:0},{className:"string",begin:"[\\.,]",relevance:0},{begin:/(?:\+\+|\-\-)/,contains:[t]},t]}}),We.registerLanguage("cal",function(e){var t="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},a={className:"string",begin:/(#\d+)+/},i={className:"function",beginKeywords:"procedure",end:/[:;]/,keywords:"procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[r,a]}].concat(n)},o={className:"class",begin:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)",returnBegin:!0,contains:[e.TITLE_MODE,i]};return{case_insensitive:!0,keywords:{keyword:t,literal:"false true"},illegal:/\/\*/,contains:[r,a,{className:"number",begin:"\\b\\d+(\\.\\d+)?(DT|D|T)",relevance:0},{className:"string",begin:'"',end:'"'},e.NUMBER_MODE,o,i]}}),We.registerLanguage("capnproto",function(e){return{aliases:["capnp"],keywords:{keyword:"struct enum interface union group import using const annotation extends in of on as with from fixed",built_in:"Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.HASH_COMMENT_MODE,{className:"meta",begin:/@0x[\w\d]{16};/,illegal:/\n/},{className:"symbol",begin:/@\d+\b/},{className:"class",beginKeywords:"struct enum",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"class",beginKeywords:"interface",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]}]}}),We.registerLanguage("ceylon",function(e){var t="assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty",n={className:"subst",excludeBegin:!0,excludeEnd:!0,begin:/``/,end:/``/,keywords:t,relevance:10},r=[{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[n]},{className:"string",begin:"'",end:"'"},{className:"number",begin:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?",relevance:0}];return n.contains=r,{keywords:{keyword:t+" shared abstract formal default actual variable late native deprecatedfinal sealed annotation suppressWarnings small",meta:"doc by license see throws tagged"},illegal:"\\$[^01]|#[^0-9a-fA-F]",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),{className:"meta",begin:'@[a-z]\\w*(?:\\:"[^"]*")?'}].concat(r)}}),We.registerLanguage("clean",function(e){return{aliases:["clean","icl","dcl"],keywords:{keyword:"if let in with where case of class instance otherwise implementation definition system module from import qualified as special code inline foreign export ccall stdcall generic derive infix infixl infixr",built_in:"Int Real Char Bool",literal:"True False"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{begin:"->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>"}]}}),We.registerLanguage("clojure",function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),o={className:"literal",begin:/\b(true|false|nil)\b/},s={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+t},c=e.COMMENT("\\^\\{","\\}"),d={className:"symbol",begin:"[:]{1,2}"+t},_={begin:"\\(",end:"\\)"},u={endsWithParent:!0,relevance:0},m={keywords:{"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},lexemes:t,className:"name",begin:t,starts:u},p=[_,a,l,c,i,d,s,r,o,n];return _.contains=[e.COMMENT("comment",""),m,u],u.contains=p,s.contains=p,c.contains=[s],{aliases:["clj"],illegal:/\S/,contains:[_,a,l,c,i,d,s,r,o]}}),We.registerLanguage("clojure-repl",function(e){return{contains:[{className:"meta",begin:/^([\w.-]+|\s*#_)?=>/,starts:{end:/$/,subLanguage:"clojure"}}]}}),We.registerLanguage("cmake",function(e){return{aliases:["cmake.in"],case_insensitive:!0,keywords:{keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined"},contains:[{className:"variable",begin:"\\${",end:"}"},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}),We.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},a=[e.BINARY_NUMBER_MODE,e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,r]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[r,e.HASH_COMMENT_MODE]},{begin:"//[gim]*",relevance:0},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W)/}]},{begin:"@"+n},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];r.contains=a;var i=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("###","###"),e.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,o]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[o]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}),We.registerLanguage("coq",function(e){return{keywords:{keyword:"_|0 as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies DependentDerive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with",built_in:"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("\\(\\*","\\*\\)"),e.C_NUMBER_MODE,{className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]}}),We.registerLanguage("cos",function(e){return{case_insensitive:!0,aliases:["cos","cls"],keywords:"property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii",contains:[{className:"number",begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",relevance:0},{className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"comment",begin:/;/,end:"$",relevance:0},{className:"built_in",begin:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{className:"built_in",begin:/\$\$\$[a-zA-Z]+/},{className:"built_in",begin:/%[a-z]+(?:\.[a-z]+)*/},{className:"symbol",begin:/\^%?[a-zA-Z][\w]*/},{className:"keyword",begin:/##class|##super|#define|#dim/},{begin:/&sql\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,subLanguage:"sql"},{begin:/&(js|jscript|javascript)</,end:/>/,excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"},{begin:/&html<\s*</,end:/>\s*>/,subLanguage:"xml"}]}}),We.registerLanguage("crmsh",function(e){var t="group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml";return{aliases:["crm","pcmk"],case_insensitive:!0,keywords:{keyword:"params meta operations op rule attributes utilization read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\ number string",literal:"Master Started Slave Stopped start promote demote stop monitor true false"},contains:[e.HASH_COMMENT_MODE,{beginKeywords:"node",starts:{end:"\\s*([\\w_-]+:)?",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*"}}},{beginKeywords:"primitive rsc_template",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*",starts:{end:"\\s*@?[\\w_][\\w_\\.:-]*"}}},{begin:"\\b("+t.split(" ").join("|")+")\\s+",keywords:t,starts:{className:"title",end:"[\\$\\w_][\\w_-]*"}},{beginKeywords:"property rsc_defaults op_defaults",starts:{className:"title",end:"\\s*([\\w_-]+:)?"}},e.QUOTE_STRING_MODE,{className:"meta",begin:"(ocf|systemd|service|lsb):[\\w_:-]+",relevance:0},{className:"number",begin:"\\b\\d+(\\.\\d+)?(ms|s|h|m)?",relevance:0},{className:"literal",begin:"[-]?(infinity|inf)",relevance:0},{className:"attr",begin:/([A-Za-z\$_\#][\w_-]+)=/,relevance:0},{className:"tag",begin:"</?",end:"/?>",relevance:0}]}}),We.registerLanguage("crystal",function(e){var t="(_*[ui](8|16|32|64|128))?",n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?",r="[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",a={keyword:"abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield __DIR__ __END_LINE__ __FILE__ __LINE__",literal:"false nil true"},i={className:"subst",begin:"#{",end:"}",keywords:a},o={className:"template-variable",variants:[{begin:"\\{\\{",end:"\\}\\}"},{begin:"\\{%",end:"%\\}"}],keywords:a};function s(e,t){var n=[{begin:e,end:t}];return n[0].contains=n,n}var l={className:"string",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[Qwi]?\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%[Qwi]?\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%[Qwi]?{",end:"}",contains:s("{","}")},{begin:"%[Qwi]?<",end:">",contains:s("<",">")},{begin:"%[Qwi]?\\|",end:"\\|"},{begin:/<<-\w+$/,end:/^\s*\w+$/}],relevance:0},c={className:"string",variants:[{begin:"%q\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%q\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%q{",end:"}",contains:s("{","}")},{begin:"%q<",end:">",contains:s("<",">")},{begin:"%q\\|",end:"\\|"},{begin:/<<-'\w+'$/,end:/^\s*\w+$/}],relevance:0},d={begin:"(?!%})("+e.RE_STARTERS_RE+"|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*",keywords:"case if select unless until when while",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:"//[a-z]*",relevance:0},{begin:"/(?!\\/)",end:"/[a-z]*"}]}],relevance:0},_=[o,l,c,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:"%r\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%r\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%r{",end:"}",contains:s("{","}")},{begin:"%r<",end:">",contains:s("<",">")},{begin:"%r\\|",end:"\\|"}],relevance:0},d,{className:"meta",begin:"@\\[",end:"\\]",contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"})]},e.HASH_COMMENT_MODE,{className:"class",beginKeywords:"class module struct",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r}),{begin:"<"}]},{className:"class",beginKeywords:"lib enum union",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r})],relevance:10},{beginKeywords:"annotation",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r})],relevance:10},{className:"function",beginKeywords:"def",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})]},{className:"function",beginKeywords:"fun macro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})],relevance:5},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":",contains:[l,{begin:n}],relevance:0},{className:"number",variants:[{begin:"\\b0b([01_]+)"+t},{begin:"\\b0o([0-7_]+)"+t},{begin:"\\b0x([A-Fa-f0-9_]+)"+t},{begin:"\\b([1-9][0-9_]*[0-9]|[0-9])(\\.[0-9][0-9_]*)?([eE]_*[-+]?[0-9_]*)?(_*f(32|64))?(?!_)"},{begin:"\\b([1-9][0-9_]*|0)"+t}],relevance:0}];return i.contains=_,o.contains=_.slice(1),{aliases:["cr"],lexemes:"[a-zA-Z_]\\w*[!?=]?",keywords:a,contains:_}}),We.registerLanguage("cs",function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},n={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},r={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},a=e.inherit(r,{illegal:/\n/}),i={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(i,{illegal:/\n/}),s={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},l={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},i]},c=e.inherit(l,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});i.contains=[l,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE],o.contains=[c,s,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var d={variants:[l,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},d,n,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[d,n,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}),We.registerLanguage("csp",function(e){return{case_insensitive:!1,lexemes:"[a-zA-Z][a-zA-Z0-9_-]*",keywords:{keyword:"base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src"},contains:[{className:"string",begin:"'",end:"'"},{className:"attribute",begin:"^Content",end:":",excludeEnd:!0}]}}),We.registerLanguage("css",function(e){var t={begin:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(font-face|page)",lexemes:"[a-z-]+",keywords:"font-face page"},{begin:"@",end:"[{;]",illegal:/:/,contains:[{className:"keyword",begin:/\w+/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,t]}]}}),We.registerLanguage("d",function(e){var t="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",r={className:"number",begin:"\\b"+t+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},a={className:"number",begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+t+"(i|[fF]i|Li))",relevance:0},i={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},o={className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},o,{className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},a,r,i,{className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",begin:"#(line)",end:"$",relevance:5},{className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}}),We.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^\\s*([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```\\w*\\s*$",end:"^```[ ]*$"},{begin:"`.+?`"},{begin:"^( {4}|\\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}),We.registerLanguage("dart",function(e){var t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"}]},n={className:"subst",variants:[{begin:"\\${",end:"}"}],keywords:"true false null this is new super"},r={className:"string",variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'",illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''",contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:'"""',end:'"""',contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t,n]}]};n.contains=[e.C_NUMBER_MODE,r];return{keywords:{keyword:"abstract as assert async await break case catch class const continue covariant default deferred do dynamic else enum export extends extension external factory false final finally for Function get hide if implements import in inferface is library mixin new null on operator part rethrow return set show static super switch sync this throw true try typedef var void while with yield",built_in:"Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set Stopwatch String StringBuffer StringSink Symbol Type Uri bool double dynamic int num print Element ElementList document querySelector querySelectorAll window"},contains:[r,e.COMMENT("/\\*\\*","\\*/",{subLanguage:"markdown"}),e.COMMENT("///+\\s*","$",{contains:[{subLanguage:"markdown",begin:".",end:"$"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}),We.registerLanguage("delphi",function(e){var t="exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs ",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"meta",variants:[{begin:/\{\$/,end:/\}/},{begin:/\(\*\$/,end:/\*\)/}]},a={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},i={className:"string",begin:/(#\d+)+/},o={begin:e.IDENT_RE+"\\s*=\\s*class\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE]},s={className:"function",beginKeywords:"function constructor destructor procedure",end:/[:;]/,keywords:"function constructor|10 destructor|10 procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[a,i,r].concat(n)},r].concat(n)};return{aliases:["dpr","dfm","pas","pascal","freepascal","lazarus","lpr","lfm"],case_insensitive:!0,keywords:t,illegal:/"|\$[G-Zg-z]|\/\*|<\/|\|/,contains:[a,i,e.NUMBER_MODE,o,s,r].concat(n)}}),We.registerLanguage("diff",function(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}),We.registerLanguage("django",function(e){var t={begin:/\|[A-Za-z]+:?/,keywords:{name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{aliases:["jinja"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{%\s*comment\s*%}/,/\{%\s*endcomment\s*%}/),e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:{name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:[t]}]}}),We.registerLanguage("dns",function(e){return{aliases:["bind","zone"],keywords:{keyword:"IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:/^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/},{className:"number",begin:"((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b"},{className:"number",begin:"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b"},e.inherit(e.NUMBER_MODE,{begin:/\b\d+[dhwm]?/})]}}),We.registerLanguage("dockerfile",function(e){return{aliases:["docker"],case_insensitive:!0,keywords:"from maintainer expose env arg user onbuild stopsignal",contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}),We.registerLanguage("dos",function(e){var t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{aliases:["bat","cmd"],case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shiftsort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{className:"number",begin:"\\b\\d+",relevance:0},t]}}),We.registerLanguage("dsconfig",function(e){return{keywords:"dsconfig",contains:[{className:"keyword",begin:"^dsconfig",end:"\\s",excludeEnd:!0,relevance:10},{className:"built_in",begin:"(list|create|get|set|delete)-(\\w+)",end:"\\s",excludeEnd:!0,illegal:"!@#$%^&*()",relevance:10},{className:"built_in",begin:"--(\\w+)",end:"\\s",excludeEnd:!0},{className:"string",begin:/"/,end:/"/},{className:"string",begin:/'/,end:/'/},{className:"string",begin:"[\\w-?]+:\\w+",end:"\\W",relevance:0},{className:"string",begin:"\\w+-?\\w+",end:"\\W",relevance:0},e.HASH_COMMENT_MODE]}}),We.registerLanguage("dts",function(e){var t={className:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{begin:'((u8?|U)|L)?"'}),{begin:'(u8?|U)?R"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{begin:"'\\\\?.",end:"'",illegal:"."}]},n={className:"number",variants:[{begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef ifdef ifndef"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[e.inherit(t,{className:"meta-string"}),{className:"meta-string",begin:"<",end:">",illegal:"\\n"}]},t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},a={className:"variable",begin:"\\&[a-z\\d_]*\\b"},i={className:"meta-keyword",begin:"/[a-z][a-z\\d-]*/"},o={className:"symbol",begin:"^\\s*[a-zA-Z_][a-zA-Z\\d_]*:"},s={className:"params",begin:"<",end:">",contains:[n,a]},l={className:"class",begin:/[a-zA-Z_][a-zA-Z\d_@]*\s{/,end:/[{;=]/,returnBegin:!0,excludeEnd:!0};return{keywords:"",contains:[{className:"class",begin:"/\\s*{",end:"};",relevance:10,contains:[a,i,o,l,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t]},a,i,o,l,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t,r,{begin:e.IDENT_RE+"::",keywords:""}]}}),We.registerLanguage("dust",function(e){return{aliases:["dst"],case_insensitive:!0,subLanguage:"xml",contains:[{className:"template-tag",begin:/\{[#\/]/,end:/\}/,illegal:/;/,contains:[{className:"name",begin:/[a-zA-Z\.-]+/,starts:{endsWithParent:!0,relevance:0,contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{/,end:/\}/,illegal:/;/,keywords:"if eq ne lt lte gt gte select default math sep"}]}}),We.registerLanguage("ebnf",function(e){var t=e.COMMENT(/\(\*/,/\*\)/);return{illegal:/\S/,contains:[t,{className:"attribute",begin:/^[ ]*[a-zA-Z][a-zA-Z-]*([\s-]+[a-zA-Z][a-zA-Z]*)*/},{begin:/=/,end:/;/,contains:[t,{className:"meta",begin:/\?.*\?/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]}}),We.registerLanguage("elixir",function(e){var t="[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?",n="and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0",r={className:"subst",begin:"#\\{",end:"}",lexemes:t,keywords:n},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},i={className:"function",beginKeywords:"def defp defmacro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:t,endsParent:!0})]},o=e.inherit(i,{className:"class",beginKeywords:"defimpl defmodule defprotocol defrecord",end:/\bdo\b|$|;/}),s=[a,e.HASH_COMMENT_MODE,o,i,{begin:"::"},{className:"symbol",begin:":(?![\\s:])",contains:[a,{begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"}],relevance:0},{className:"symbol",begin:t+":(?!:)",relevance:0},{className:"number",begin:"(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)",relevance:0},{className:"variable",begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{begin:"->"},{begin:"("+e.RE_STARTERS_RE+")\\s*",contains:[e.HASH_COMMENT_MODE,{className:"regexp",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}],relevance:0}];return r.contains=s,{lexemes:t,keywords:n,contains:s}}),We.registerLanguage("elm",function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},r={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},t]};return{keywords:"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription",contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,r,{begin:"{",end:"}",contains:r.contains},t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"port",end:"$",keywords:"port",contains:[t]},{className:"string",begin:"'\\\\?.",end:"'",illegal:"."},e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,n,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}],illegal:/;/}}),We.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},r={className:"doctag",begin:"@[A-Za-z]+"},a={begin:"#<",end:">"},i=[e.COMMENT("#","$",{contains:[r]}),e.COMMENT("^\\=begin","^\\=end",{contains:[r],relevance:10}),e.COMMENT("^__END__","\\n$")],o={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,o],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},{begin:/\w+/,endSameAsBegin:!0,contains:[e.BACKSLASH_ESCAPE,o]}]}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,a,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(i)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(i)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[a,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(i),relevance:0}].concat(i);o.contains=c,l.contains=c;var d=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:i.concat(d).concat(c)}}),We.registerLanguage("erb",function(e){return{subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]}}),We.registerLanguage("erlang-repl",function(e){return{keywords:{built_in:"spawn spawn_link self",keyword:"after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor"},contains:[{className:"meta",begin:"^[0-9]+> ",relevance:10},e.COMMENT("%","$"),{className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\?(::)?([A-Z]\\w*(::)?)+"},{begin:"->"},{begin:"ok"},{begin:"!"},{begin:"(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)",relevance:0},{begin:"[A-Z][a-zA-Z0-9_']*",relevance:0}]}}),We.registerLanguage("erlang",function(e){var t="[a-z'][a-zA-Z0-9_']*",n="("+t+":"+t+"|"+t+")",r={keyword:"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor",literal:"false true"},a=e.COMMENT("%","$"),i={className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},o={begin:"fun\\s+"+t+"/\\d+"},s={begin:n+"\\(",end:"\\)",returnBegin:!0,relevance:0,contains:[{begin:n,relevance:0},{begin:"\\(",end:"\\)",endsWithParent:!0,returnEnd:!0,relevance:0}]},l={begin:"{",end:"}",relevance:0},c={begin:"\\b_([A-Z][A-Za-z0-9_]*)?",relevance:0},d={begin:"[A-Z][a-zA-Z0-9_]*",relevance:0},_={begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0,returnBegin:!0,contains:[{begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0},{begin:"{",end:"}",relevance:0}]},u={beginKeywords:"fun receive if try case",end:"end",keywords:r};u.contains=[a,o,e.inherit(e.APOS_STRING_MODE,{className:""}),u,s,e.QUOTE_STRING_MODE,i,l,c,d,_];var m=[a,o,u,s,e.QUOTE_STRING_MODE,i,l,c,d,_];s.contains[1].contains=m,l.contains=m,_.contains[1].contains=m;var p={className:"params",begin:"\\(",end:"\\)",contains:m};return{aliases:["erl"],keywords:r,illegal:"(</|\\*=|\\+=|-=|/\\*|\\*/|\\(\\*|\\*\\))",contains:[{className:"function",begin:"^"+t+"\\s*\\(",end:"->",returnBegin:!0,illegal:"\\(|#|//|/\\*|\\\\|:|;",contains:[p,e.inherit(e.TITLE_MODE,{begin:t})],starts:{end:";|\\.",keywords:r,contains:m}},a,{begin:"^-",end:"\\.",relevance:0,excludeEnd:!0,returnBegin:!0,lexemes:"-"+e.IDENT_RE,keywords:"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",contains:[p]},i,e.QUOTE_STRING_MODE,_,c,d,l,{begin:/\.$/}]}}),We.registerLanguage("excel",function(e){return{aliases:["xlsx","xls"],case_insensitive:!0,lexemes:/[a-zA-Z][\w\.]*/,keywords:{built_in:"ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST"},contains:[{begin:/^=/,end:/[^=]/,returnEnd:!0,illegal:/=/,relevance:10},{className:"symbol",begin:/\b[A-Z]{1,2}\d+\b/,end:/[^\d]/,excludeEnd:!0,relevance:0},{className:"symbol",begin:/[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,relevance:0},e.BACKSLASH_ESCAPE,e.QUOTE_STRING_MODE,{className:"number",begin:e.NUMBER_RE+"(%)?",relevance:0},e.COMMENT(/\bN\(/,/\)/,{excludeBegin:!0,excludeEnd:!0,illegal:/\n/})]}}),We.registerLanguage("fix",function(e){return{contains:[{begin:/[^\u2401\u0001]+/,end:/[\u2401\u0001]/,excludeEnd:!0,returnBegin:!0,returnEnd:!1,contains:[{begin:/([^\u2401\u0001=]+)/,end:/=([^\u2401\u0001=]+)/,returnEnd:!0,returnBegin:!1,className:"attr"},{begin:/=/,end:/([\u2401\u0001])/,excludeEnd:!0,excludeBegin:!0,className:"string"}]}],case_insensitive:!0}}),We.registerLanguage("flix",function(e){var t={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[{className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/}]};return{keywords:{literal:"true false",keyword:"case class def else enum if impl import in lat rel index let match namespace switch type yield with"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},{className:"string",variants:[{begin:'"',end:'"'}]},t,e.C_NUMBER_MODE]}}),We.registerLanguage("fortran",function(e){return{case_insensitive:!0,aliases:["f90","f95"],keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated  c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}}),We.registerLanguage("fsharp",function(e){var t={begin:"<",end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{aliases:["fs"],keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield",illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*","\\*\\)"),{className:"class",beginKeywords:"type",end:"\\(|=|$",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,t]},{className:"meta",begin:"\\[<",end:">\\]",relevance:10},{className:"symbol",begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE]},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),e.C_NUMBER_MODE]}}),We.registerLanguage("gams",function(e){var t={keyword:"abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes",literal:"eps inf na","built-in":"abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart"},n={className:"symbol",variants:[{begin:/\=[lgenxc]=/},{begin:/\$/}]},r={className:"comment",variants:[{begin:"'",end:"'"},{begin:'"',end:'"'}],illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},a={begin:"/",end:"/",keywords:t,contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},i={begin:/[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,excludeBegin:!0,end:"$",endsWithParent:!0,contains:[r,a,{className:"comment",begin:/([ ]*[a-z0-9&#*=?@>\\<:\-,()$\[\]_.{}!+%^]+)+/,relevance:0}]};return{aliases:["gms"],case_insensitive:!0,keywords:t,contains:[e.COMMENT(/^\$ontext/,/^\$offtext/),{className:"meta",begin:"^\\$[a-z0-9]+",end:"$",returnBegin:!0,contains:[{className:"meta-keyword",begin:"^\\$[a-z0-9]+"}]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{beginKeywords:"set sets parameter parameters variable variables scalar scalars equation equations",end:";",contains:[e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,a,i]},{beginKeywords:"table",end:";",returnBegin:!0,contains:[{beginKeywords:"table",end:"$",contains:[i]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},{className:"function",begin:/^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,returnBegin:!0,contains:[{className:"title",begin:/^[a-z0-9_]+/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0},n]},e.C_NUMBER_MODE,n]}}),We.registerLanguage("gauss",function(e){var t={keyword:"bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint ne ge le gt lt and xor or not eq eqv",built_in:"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester strtrim",literal:"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR"},n=e.COMMENT("@","@"),r={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[{className:"meta-string",begin:'"',end:'"',illegal:"\\n"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n]},a={begin:/\bstruct\s+/,end:/\s/,keywords:"struct",contains:[{className:"type",begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},i=[{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,endsWithParent:!0,relevance:0,contains:[{className:"literal",begin:/\.\.\./},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,a]}],o={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},s=function(t,r,a){var s=e.inherit({className:"function",beginKeywords:t,end:r,excludeEnd:!0,contains:[].concat(i)},a||{});return s.contains.push(o),s.contains.push(e.C_NUMBER_MODE),s.contains.push(e.C_BLOCK_COMMENT_MODE),s.contains.push(n),s},l={className:"built_in",begin:"\\b("+t.built_in.split(" ").join("|")+")\\b"},c={className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0},d={begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,keywords:t,relevance:0,contains:[{beginKeywords:t.keyword},l,{className:"built_in",begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},_={begin:/\(/,end:/\)/,relevance:0,keywords:{built_in:t.built_in,literal:t.literal},contains:[e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,l,d,c,"self"]};return d.contains.push(_),{aliases:["gss"],case_insensitive:!0,keywords:t,illegal:/(\{[%#]|[%#]\}| <- )/,contains:[e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,c,r,{className:"keyword",begin:/\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/},s("proc keyword",";"),s("fn","="),{beginKeywords:"for threadfor",end:/;/,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE,n,_]},{variants:[{begin:e.UNDERSCORE_IDENT_RE+"\\."+e.UNDERSCORE_IDENT_RE},{begin:e.UNDERSCORE_IDENT_RE+"\\s*="}],relevance:0},d,a]}}),We.registerLanguage("gcode",function(e){var t=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(/\(/,/\)/),e.inherit(e.C_NUMBER_MODE,{begin:"([-+]?([0-9]*\\.?[0-9]+\\.?))|"+e.C_NUMBER_RE}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"name",begin:"([G])([0-9]+\\.?[0-9]?)"},{className:"name",begin:"([M])([0-9]+\\.?[0-9]?)"},{className:"attr",begin:"(VC|VS|#)",end:"(\\d+)"},{className:"attr",begin:"(VZOFX|VZOFY|VZOFZ)"},{className:"built_in",begin:"(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)",end:"([-+]?([0-9]*\\.?[0-9]+\\.?))(\\])"},{className:"symbol",variants:[{begin:"N",end:"\\d+",illegal:"\\W"}]}];return{aliases:["nc"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:"IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR",contains:[{className:"meta",begin:"\\%"},{className:"meta",begin:"([O])([0-9]+)"}].concat(t)}}),We.registerLanguage("gherkin",function(e){return{aliases:["feature"],keywords:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When",contains:[{className:"symbol",begin:"\\*",relevance:0},{className:"meta",begin:"@[^@\\s]+"},{begin:"\\|",end:"\\|\\w*$",contains:[{className:"string",begin:"[^|]+"}]},{className:"variable",begin:"<",end:">"},e.HASH_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},e.QUOTE_STRING_MODE]}}),We.registerLanguage("glsl",function(e){return{keywords:{keyword:"break continue discard do else for if return while switch case default attribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly",type:"atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBufferiimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void",built_in:"gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow",literal:"true false"},illegal:'"',contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"}]}}),We.registerLanguage("gml",function(e){return{aliases:["gml","GML"],case_insensitive:!1,keywords:{keywords:"begin end if then else while do for break continue with until repeat exit and or xor not return mod div switch case default var globalvar enum #macro #region #endregion",built_in:"is_real is_string is_array is_undefined is_int32 is_int64 is_ptr is_vec3 is_vec4 is_matrix is_bool typeof variable_global_exists variable_global_get variable_global_set variable_instance_exists variable_instance_get variable_instance_set variable_instance_get_names array_length_1d array_length_2d array_height_2d array_equals array_create array_copy random random_range irandom irandom_range random_set_seed random_get_seed randomize randomise choose abs round floor ceil sign frac sqrt sqr exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn min max mean median clamp lerp dot_product dot_product_3d dot_product_normalised dot_product_3d_normalised dot_product_normalized dot_product_3d_normalized math_set_epsilon math_get_epsilon angle_difference point_distance_3d point_distance point_direction lengthdir_x lengthdir_y real string int64 ptr string_format chr ansi_char ord string_length string_byte_length string_pos string_copy string_char_at string_ord_at string_byte_at string_set_byte_at string_delete string_insert string_lower string_upper string_repeat string_letters string_digits string_lettersdigits string_replace string_replace_all string_count string_hash_to_newline clipboard_has_text clipboard_set_text clipboard_get_text date_current_datetime date_create_datetime date_valid_datetime date_inc_year date_inc_month date_inc_week date_inc_day date_inc_hour date_inc_minute date_inc_second date_get_year date_get_month date_get_week date_get_day date_get_hour date_get_minute date_get_second date_get_weekday date_get_day_of_year date_get_hour_of_year date_get_minute_of_year date_get_second_of_year date_year_span date_month_span date_week_span date_day_span date_hour_span date_minute_span date_second_span date_compare_datetime date_compare_date date_compare_time date_date_of date_time_of date_datetime_string date_date_string date_time_string date_days_in_month date_days_in_year date_leap_year date_is_today date_set_timezone date_get_timezone game_set_speed game_get_speed motion_set motion_add place_free place_empty place_meeting place_snapped move_random move_snap move_towards_point move_contact_solid move_contact_all move_outside_solid move_outside_all move_bounce_solid move_bounce_all move_wrap distance_to_point distance_to_object position_empty position_meeting path_start path_end mp_linear_step mp_potential_step mp_linear_step_object mp_potential_step_object mp_potential_settings mp_linear_path mp_potential_path mp_linear_path_object mp_potential_path_object mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell mp_grid_add_rectangle mp_grid_add_instances mp_grid_path mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle collision_circle collision_ellipse collision_line collision_point_list collision_rectangle_list collision_circle_list collision_ellipse_list collision_line_list instance_position_list instance_place_list point_in_rectangle point_in_triangle point_in_circle rectangle_in_rectangle rectangle_in_triangle rectangle_in_circle instance_find instance_exists instance_number instance_position instance_nearest instance_furthest instance_place instance_create_depth instance_create_layer instance_copy instance_change instance_destroy position_destroy position_change instance_id_get instance_deactivate_all instance_deactivate_object instance_deactivate_region instance_activate_all instance_activate_object instance_activate_region room_goto room_goto_previous room_goto_next room_previous room_next room_restart game_end game_restart game_load game_save game_save_buffer game_load_buffer event_perform event_user event_perform_object event_inherited show_debug_message show_debug_overlay debug_event debug_get_callstack alarm_get alarm_set font_texture_page_size keyboard_set_map keyboard_get_map keyboard_unset_map keyboard_check keyboard_check_pressed keyboard_check_released keyboard_check_direct keyboard_get_numlock keyboard_set_numlock keyboard_key_press keyboard_key_release keyboard_clear io_clear mouse_check_button mouse_check_button_pressed mouse_check_button_released mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite draw_sprite_pos draw_sprite_ext draw_sprite_stretched draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle draw_roundrect draw_roundrect_ext draw_triangle draw_circle draw_ellipse draw_set_circle_precision draw_arrow draw_button draw_path draw_healthbar draw_getpixel draw_getpixel_ext draw_set_colour draw_set_color draw_set_alpha draw_get_colour draw_get_color draw_get_alpha merge_colour make_colour_rgb make_colour_hsv colour_get_red colour_get_green colour_get_blue colour_get_hue colour_get_saturation colour_get_value merge_color make_color_rgb make_color_hsv color_get_red color_get_green color_get_blue color_get_hue color_get_saturation color_get_value merge_color screen_save screen_save_part draw_set_font draw_set_halign draw_set_valign draw_text draw_text_ext string_width string_height string_width_ext string_height_ext draw_text_transformed draw_text_ext_transformed draw_text_colour draw_text_ext_colour draw_text_transformed_colour draw_text_ext_transformed_colour draw_text_color draw_text_ext_color draw_text_transformed_color draw_text_ext_transformed_color draw_point_colour draw_line_colour draw_line_width_colour draw_rectangle_colour draw_roundrect_colour draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour draw_ellipse_colour draw_point_color draw_line_color draw_line_width_color draw_rectangle_color draw_roundrect_color draw_roundrect_color_ext draw_triangle_color draw_circle_color draw_ellipse_color draw_primitive_begin draw_vertex draw_vertex_colour draw_vertex_color draw_primitive_end sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture texture_get_width texture_get_height texture_get_uvs draw_primitive_begin_texture draw_vertex_texture draw_vertex_texture_colour draw_vertex_texture_color texture_global_scale surface_create surface_create_ext surface_resize surface_free surface_exists surface_get_width surface_get_height surface_get_texture surface_set_target surface_set_target_ext surface_reset_target surface_depth_disable surface_get_depth_disable draw_surface draw_surface_stretched draw_surface_tiled draw_surface_part draw_surface_ext draw_surface_stretched_ext draw_surface_tiled_ext draw_surface_part_ext draw_surface_general surface_getpixel surface_getpixel_ext surface_save surface_save_part surface_copy surface_copy_part application_surface_draw_enable application_get_position application_surface_enable application_surface_is_enabled display_get_width display_get_height display_get_orientation display_get_gui_width display_get_gui_height display_reset display_mouse_get_x display_mouse_get_y display_mouse_set display_set_ui_visibility window_set_fullscreen window_get_fullscreen window_set_caption window_set_min_width window_set_max_width window_set_min_height window_set_max_height window_get_visible_rects window_get_caption window_set_cursor window_get_cursor window_set_colour window_get_colour window_set_color window_get_color window_set_position window_set_size window_set_rectangle window_center window_get_x window_get_y window_get_width window_get_height window_mouse_get_x window_mouse_get_y window_mouse_set window_view_mouse_get_x window_view_mouse_get_y window_views_mouse_get_x window_views_mouse_get_y audio_listener_position audio_listener_velocity audio_listener_orientation audio_emitter_position audio_emitter_create audio_emitter_free audio_emitter_exists audio_emitter_pitch audio_emitter_velocity audio_emitter_falloff audio_emitter_gain audio_play_sound audio_play_sound_on audio_play_sound_at audio_stop_sound audio_resume_music audio_music_is_playing audio_resume_sound audio_pause_sound audio_pause_music audio_channel_num audio_sound_length audio_get_type audio_falloff_set_model audio_play_music audio_stop_music audio_master_gain audio_music_gain audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all audio_pause_all audio_is_playing audio_is_paused audio_exists audio_sound_set_track_position audio_sound_get_track_position audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx audio_emitter_get_vy audio_emitter_get_vz audio_listener_set_position audio_listener_set_velocity audio_listener_set_orientation audio_listener_get_data audio_set_master_gain audio_get_master_gain audio_sound_get_gain audio_sound_get_pitch audio_get_name audio_sound_set_track_position audio_sound_get_track_position audio_create_stream audio_destroy_stream audio_create_sync_group audio_destroy_sync_group audio_play_in_sync_group audio_start_sync_group audio_stop_sync_group audio_pause_sync_group audio_resume_sync_group audio_sync_group_get_track_pos audio_sync_group_debug audio_sync_group_is_playing audio_debug audio_group_load audio_group_unload audio_group_is_loaded audio_group_load_progress audio_group_name audio_group_stop_all audio_group_set_gain audio_create_buffer_sound audio_free_buffer_sound audio_create_play_queue audio_free_play_queue audio_queue_sound audio_get_recorder_count audio_get_recorder_info audio_start_recording audio_stop_recording audio_sound_get_listener_mask audio_emitter_get_listener_mask audio_get_listener_mask audio_sound_set_listener_mask audio_emitter_set_listener_mask audio_set_listener_mask audio_get_listener_count audio_get_listener_info audio_system show_message show_message_async clickable_add clickable_add_ext clickable_change clickable_change_ext clickable_delete clickable_exists clickable_set_style show_question show_question_async get_integer get_string get_integer_async get_string_async get_login_async get_open_filename get_save_filename get_open_filename_ext get_save_filename_ext show_error highscore_clear highscore_add highscore_value highscore_name draw_highscore sprite_exists sprite_get_name sprite_get_number sprite_get_width sprite_get_height sprite_get_xoffset sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right sprite_get_bbox_top sprite_get_bbox_bottom sprite_save sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush sprite_flush_multi sprite_set_speed sprite_get_speed_type sprite_get_speed font_exists font_get_name font_get_fontname font_get_bold font_get_italic font_get_first font_get_last font_get_size font_set_cache_size path_exists path_get_name path_get_length path_get_time path_get_kind path_get_closed path_get_precision path_get_number path_get_point_x path_get_point_y path_get_point_speed path_get_x path_get_y path_get_speed script_exists script_get_name timeline_add timeline_delete timeline_clear timeline_exists timeline_get_name timeline_moment_clear timeline_moment_add_script timeline_size timeline_max_moment object_exists object_get_name object_get_sprite object_get_solid object_get_visible object_get_persistent object_get_mask object_get_parent object_get_physics object_is_ancestor room_exists room_get_name sprite_set_offset sprite_duplicate sprite_assign sprite_merge sprite_add sprite_replace sprite_create_from_surface sprite_add_from_surface sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite font_add_sprite_ext font_replace font_replace_sprite font_replace_sprite_ext font_delete path_set_kind path_set_closed path_set_precision path_add path_assign path_duplicate path_append path_delete path_add_point path_insert_point path_change_point path_delete_point path_clear_points path_reverse path_mirror path_flip path_rotate path_rescale path_shift script_execute object_set_sprite object_set_solid object_set_visible object_set_persistent object_set_mask room_set_width room_set_height room_set_persistent room_set_background_colour room_set_background_color room_set_view room_set_viewport room_get_viewport room_set_view_enabled room_add room_duplicate room_assign room_instance_add room_instance_clear room_get_camera room_set_camera asset_get_index asset_get_type file_text_open_from_string file_text_open_read file_text_open_write file_text_open_append file_text_close file_text_write_string file_text_write_real file_text_writeln file_text_read_string file_text_read_real file_text_readln file_text_eof file_text_eoln file_exists file_delete file_rename file_copy directory_exists directory_create directory_destroy file_find_first file_find_next file_find_close file_attributes filename_name filename_path filename_dir filename_drive filename_ext filename_change_ext file_bin_open file_bin_rewrite file_bin_close file_bin_position file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte parameter_count parameter_string environment_get_variable ini_open_from_string ini_open ini_close ini_read_string ini_read_real ini_write_string ini_write_real ini_key_exists ini_section_exists ini_key_delete ini_section_delete ds_set_precision ds_exists ds_stack_create ds_stack_destroy ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ds_list_create ds_list_destroy ds_list_clear ds_list_copy ds_list_size ds_list_empty ds_list_add ds_list_insert ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ds_map_find_value ds_map_find_previous ds_map_find_next ds_map_find_first ds_map_find_last ds_map_write ds_map_read ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ds_map_secure_save_buffer ds_map_set ds_priority_create ds_priority_destroy ds_priority_clear ds_priority_copy ds_priority_size ds_priority_empty ds_priority_add ds_priority_change_priority ds_priority_find_priority ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ds_priority_delete_max ds_priority_find_max ds_priority_write ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ds_grid_sort ds_grid_set ds_grid_get effect_create_below effect_create_above effect_clear part_type_create part_type_destroy part_type_exists part_type_clear part_type_shape part_type_sprite part_type_size part_type_scale part_type_orientation part_type_life part_type_step part_type_death part_type_speed part_type_direction part_type_gravity part_type_colour1 part_type_colour2 part_type_colour3 part_type_colour_mix part_type_colour_rgb part_type_colour_hsv part_type_color1 part_type_color2 part_type_color3 part_type_color_mix part_type_color_rgb part_type_color_hsv part_type_alpha1 part_type_alpha2 part_type_alpha3 part_type_blend part_system_create part_system_create_layer part_system_destroy part_system_exists part_system_clear part_system_draw_order part_system_depth part_system_position part_system_automatic_update part_system_automatic_draw part_system_update part_system_drawit part_system_get_layer part_system_layer part_particles_create part_particles_create_colour part_particles_create_color part_particles_clear part_particles_count part_emitter_create part_emitter_destroy part_emitter_destroy_all part_emitter_exists part_emitter_clear part_emitter_region part_emitter_burst part_emitter_stream external_call external_define external_free window_handle window_device matrix_get matrix_set matrix_build_identity matrix_build matrix_build_lookat matrix_build_projection_ortho matrix_build_projection_perspective matrix_build_projection_perspective_fov matrix_multiply matrix_transform_vertex matrix_stack_push matrix_stack_pop matrix_stack_multiply matrix_stack_set matrix_stack_clear matrix_stack_top matrix_stack_is_empty browser_input_capture os_get_config os_get_info os_get_language os_get_region os_lock_orientation display_get_dpi_x display_get_dpi_y display_set_gui_size display_set_gui_maximise display_set_gui_maximize device_mouse_dbclick_enable display_set_timing_method display_get_timing_method display_set_sleep_margin display_get_sleep_margin virtual_key_add virtual_key_hide virtual_key_delete virtual_key_show draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level draw_get_swf_aa_level draw_texture_flush draw_flush gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable gpu_set_colourwriteenable gpu_set_alphatestenable gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat gpu_set_tex_repeat_ext gpu_set_tex_mip_filter gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src gpu_get_blendmode_dest gpu_get_blendmode_srcalpha gpu_get_blendmode_destalpha gpu_get_colorwriteenable gpu_get_colourwriteenable gpu_get_alphatestenable gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat gpu_get_tex_repeat_ext gpu_get_tex_mip_filter gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state gpu_get_state gpu_set_state draw_light_define_ambient draw_light_define_direction draw_light_define_point draw_light_enable draw_set_lighting draw_light_get_ambient draw_light_get draw_get_lighting shop_leave_rating url_get_domain url_open url_open_ext url_open_full get_timer achievement_login achievement_logout achievement_post achievement_increment achievement_post_score achievement_available achievement_show_achievements achievement_show_leaderboards achievement_load_friends achievement_load_leaderboard achievement_send_challenge achievement_load_progress achievement_reset achievement_login_status achievement_get_pic achievement_show_challenge_notifications achievement_get_challenges achievement_event achievement_show achievement_get_info cloud_file_save cloud_string_save cloud_synchronise ads_enable ads_disable ads_setup ads_engagement_launch ads_engagement_available ads_engagement_active ads_event ads_event_preload ads_set_reward_callback ads_get_display_height ads_get_display_width ads_move ads_interstitial_available ads_interstitial_display device_get_tilt_x device_get_tilt_y device_get_tilt_z device_is_keypad_open device_mouse_check_button device_mouse_check_button_pressed device_mouse_check_button_released device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status iap_enumerate_products iap_restore_all iap_acquire iap_consume iap_product_details iap_purchase_details facebook_init facebook_login facebook_status facebook_graph_request facebook_dialog facebook_logout facebook_launch_offerwall facebook_post_message facebook_send_invite facebook_user_id facebook_accesstoken facebook_check_permission facebook_request_read_permissions facebook_request_publish_permissions gamepad_is_supported gamepad_get_device_count gamepad_is_connected gamepad_get_description gamepad_get_button_threshold gamepad_set_button_threshold gamepad_get_axis_deadzone gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check gamepad_button_check_pressed gamepad_button_check_released gamepad_button_value gamepad_axis_count gamepad_axis_value gamepad_set_vibration gamepad_set_colour gamepad_set_color os_is_paused window_has_focus code_is_compiled http_get http_get_file http_post_string http_request json_encode json_decode zip_unzip load_csv base64_encode base64_decode md5_string_unicode md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode sha1_string_utf8 sha1_file os_powersave_enable analytics_event analytics_event_ext win8_livetile_tile_notification win8_livetile_tile_clear win8_livetile_badge_notification win8_livetile_badge_clear win8_livetile_queue_enable win8_secondarytile_pin win8_secondarytile_badge_notification win8_secondarytile_delete win8_livetile_notification_begin win8_livetile_notification_secondary_begin win8_livetile_notification_expiry win8_livetile_notification_tag win8_livetile_notification_text_add win8_livetile_notification_image_add win8_livetile_notification_end win8_appbar_enable win8_appbar_add_element win8_appbar_remove_element win8_settingscharm_add_entry win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry win8_settingscharm_set_xaml_property win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry win8_share_image win8_share_screenshot win8_share_file win8_share_url win8_share_text win8_search_enable win8_search_disable win8_search_add_suggestions win8_device_touchscreen_available win8_license_initialize_sandbox win8_license_trial_version winphone_license_trial_version winphone_tile_title winphone_tile_count winphone_tile_back_title winphone_tile_back_content winphone_tile_back_content_wide winphone_tile_front_image winphone_tile_front_image_small winphone_tile_front_image_wide winphone_tile_back_image winphone_tile_back_image_wide winphone_tile_background_colour winphone_tile_background_color winphone_tile_icon_image winphone_tile_small_icon_image winphone_tile_wide_content winphone_tile_cycle_images winphone_tile_small_background_image physics_world_create physics_world_gravity physics_world_update_speed physics_world_update_iterations physics_world_draw_debug physics_pause_enable physics_fixture_create physics_fixture_set_kinematic physics_fixture_set_density physics_fixture_set_awake physics_fixture_set_restitution physics_fixture_set_friction physics_fixture_set_collision_group physics_fixture_set_sensor physics_fixture_set_linear_damping physics_fixture_set_angular_damping physics_fixture_set_circle_shape physics_fixture_set_box_shape physics_fixture_set_edge_shape physics_fixture_set_polygon_shape physics_fixture_set_chain_shape physics_fixture_add_point physics_fixture_bind physics_fixture_bind_ext physics_fixture_delete physics_apply_force physics_apply_impulse physics_apply_angular_impulse physics_apply_local_force physics_apply_local_impulse physics_apply_torque physics_mass_properties physics_draw_debug physics_test_overlap physics_remove_fixture physics_set_friction physics_set_density physics_set_restitution physics_get_friction physics_get_density physics_get_restitution physics_joint_distance_create physics_joint_rope_create physics_joint_revolute_create physics_joint_prismatic_create physics_joint_pulley_create physics_joint_wheel_create physics_joint_weld_create physics_joint_friction_create physics_joint_gear_create physics_joint_enable_motor physics_joint_get_value physics_joint_set_value physics_joint_delete physics_particle_create physics_particle_delete physics_particle_delete_region_circle physics_particle_delete_region_box physics_particle_delete_region_poly physics_particle_set_flags physics_particle_set_category_flags physics_particle_draw physics_particle_draw_ext physics_particle_count physics_particle_get_data physics_particle_get_data_particle physics_particle_group_begin physics_particle_group_circle physics_particle_group_box physics_particle_group_polygon physics_particle_group_add_point physics_particle_group_end physics_particle_group_join physics_particle_group_delete physics_particle_group_count physics_particle_group_get_data physics_particle_group_get_mass physics_particle_group_get_inertia physics_particle_group_get_centre_x physics_particle_group_get_centre_y physics_particle_group_get_vel_x physics_particle_group_get_vel_y physics_particle_group_get_ang_vel physics_particle_group_get_x physics_particle_group_get_y physics_particle_group_get_angle physics_particle_set_group_flags physics_particle_get_group_flags physics_particle_get_max_count physics_particle_get_radius physics_particle_get_density physics_particle_get_damping physics_particle_get_gravity_scale physics_particle_set_max_count physics_particle_set_radius physics_particle_set_density physics_particle_set_damping physics_particle_set_gravity_scale network_create_socket network_create_socket_ext network_create_server network_create_server_raw network_connect network_connect_raw network_send_packet network_send_raw network_send_broadcast network_send_udp network_send_udp_raw network_set_timeout network_set_config network_resolve network_destroy buffer_create buffer_write buffer_read buffer_seek buffer_get_surface buffer_set_surface buffer_delete buffer_exists buffer_get_type buffer_get_alignment buffer_poke buffer_peek buffer_save buffer_save_ext buffer_load buffer_load_ext buffer_load_partial buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode buffer_base64_decode_ext buffer_sizeof buffer_get_address buffer_create_from_vertex_buffer buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer buffer_async_group_begin buffer_async_group_option buffer_async_group_end buffer_load_async buffer_save_async gml_release_mode gml_pragma steam_activate_overlay steam_is_overlay_enabled steam_is_overlay_activated steam_get_persona_name steam_initialised steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account steam_file_persisted steam_get_quota_total steam_get_quota_free steam_file_write steam_file_write_file steam_file_read steam_file_delete steam_file_exists steam_file_size steam_file_share steam_is_screenshot_requested steam_send_screenshot steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc steam_user_installed_dlc steam_set_achievement steam_get_achievement steam_clear_achievement steam_set_stat_int steam_set_stat_float steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float steam_get_stat_avg_rate steam_reset_all_stats steam_reset_all_stats_achievements steam_stats_ready steam_create_leaderboard steam_upload_score steam_upload_score_ext steam_download_scores_around_user steam_download_scores steam_download_friends_scores steam_upload_score_buffer steam_upload_score_buffer_ext steam_current_game_language steam_available_languages steam_activate_overlay_browser steam_activate_overlay_user steam_activate_overlay_store steam_get_user_persona_name steam_get_app_id steam_get_user_account_id steam_ugc_download steam_ugc_create_item steam_ugc_start_item_update steam_ugc_set_item_title steam_ugc_set_item_description steam_ugc_set_item_visibility steam_ugc_set_item_tags steam_ugc_set_item_content steam_ugc_set_item_preview steam_ugc_submit_item_update steam_ugc_get_item_update_progress steam_ugc_subscribe_item steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items steam_ugc_get_subscribed_items steam_ugc_get_item_install_info steam_ugc_get_item_update_info steam_ugc_request_item_details steam_ugc_create_query_user steam_ugc_create_query_user_ex steam_ugc_create_query_all steam_ugc_create_query_all_ex steam_ugc_query_set_cloud_filename_filter steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text steam_ugc_query_set_ranked_by_trend_days steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag steam_ugc_query_set_return_long_description steam_ugc_query_set_return_total_only steam_ugc_query_set_allow_cached_response steam_ugc_send_query shader_set shader_get_name shader_reset shader_current shader_is_compiled shader_get_sampler_index shader_get_uniform shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f shader_set_uniform_f_array shader_set_uniform_matrix shader_set_uniform_matrix_array shader_enable_corner_id texture_set_stage texture_get_texel_width texture_get_texel_height shaders_are_supported vertex_format_begin vertex_format_end vertex_format_delete vertex_format_add_position vertex_format_add_position_3d vertex_format_add_colour vertex_format_add_color vertex_format_add_normal vertex_format_add_texcoord vertex_format_add_textcoord vertex_format_add_custom vertex_create_buffer vertex_create_buffer_ext vertex_delete_buffer vertex_begin vertex_end vertex_position vertex_position_3d vertex_colour vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size vertex_create_buffer_from_buffer vertex_create_buffer_from_buffer_ext push_local_notification push_get_first_local_notification push_get_next_local_notification push_cancel_local_notification skeleton_animation_set skeleton_animation_get skeleton_animation_mix skeleton_animation_set_ext skeleton_animation_get_ext skeleton_animation_get_duration skeleton_animation_get_frames skeleton_animation_clear skeleton_skin_set skeleton_skin_get skeleton_attachment_set skeleton_attachment_get skeleton_attachment_create skeleton_collision_draw_set skeleton_bone_data_get skeleton_bone_data_set skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax skeleton_get_num_bounds skeleton_get_bounds skeleton_animation_get_frame skeleton_animation_set_frame draw_skeleton draw_skeleton_time draw_skeleton_instance draw_skeleton_collision skeleton_animation_list skeleton_skin_list skeleton_slot_data layer_get_id layer_get_id_at_depth layer_get_depth layer_create layer_destroy layer_destroy_instances layer_add_instance layer_has_instance layer_set_visible layer_get_visible layer_exists layer_x layer_y layer_get_x layer_get_y layer_hspeed layer_vspeed layer_get_hspeed layer_get_vspeed layer_script_begin layer_script_end layer_shader layer_get_script_begin layer_get_script_end layer_get_shader layer_set_target_room layer_get_target_room layer_reset_target_room layer_get_all layer_get_all_elements layer_get_name layer_depth layer_get_element_layer layer_get_element_type layer_element_move layer_force_draw_depth layer_is_draw_depth_forced layer_get_forced_depth layer_background_get_id layer_background_exists layer_background_create layer_background_destroy layer_background_visible layer_background_change layer_background_sprite layer_background_htiled layer_background_vtiled layer_background_stretch layer_background_yscale layer_background_xscale layer_background_blend layer_background_alpha layer_background_index layer_background_speed layer_background_get_visible layer_background_get_sprite layer_background_get_htiled layer_background_get_vtiled layer_background_get_stretch layer_background_get_yscale layer_background_get_xscale layer_background_get_blend layer_background_get_alpha layer_background_get_index layer_background_get_speed layer_sprite_get_id layer_sprite_exists layer_sprite_create layer_sprite_destroy layer_sprite_change layer_sprite_index layer_sprite_speed layer_sprite_xscale layer_sprite_yscale layer_sprite_angle layer_sprite_blend layer_sprite_alpha layer_sprite_x layer_sprite_y layer_sprite_get_sprite layer_sprite_get_index layer_sprite_get_speed layer_sprite_get_xscale layer_sprite_get_yscale layer_sprite_get_angle layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get tilemap_get_at_pixel tilemap_get_cell_x_at_pixel tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty tile_get_index tile_get_flip tile_get_mirror tile_get_rotate layer_tile_exists layer_tile_create layer_tile_destroy layer_tile_change layer_tile_xscale layer_tile_yscale layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y layer_tile_region layer_tile_visible layer_tile_get_sprite layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend layer_tile_get_alpha layer_tile_get_x layer_tile_get_y layer_tile_get_region layer_tile_get_visible layer_instance_get_instance instance_activate_layer instance_deactivate_layer camera_create camera_create_view camera_destroy camera_apply camera_get_active camera_get_default camera_set_default camera_set_view_mat camera_set_proj_mat camera_set_update_script camera_set_begin_script camera_set_end_script camera_set_view_pos camera_set_view_size camera_set_view_speed camera_set_view_border camera_set_view_angle camera_set_view_target camera_get_view_mat camera_get_proj_mat camera_get_update_script camera_get_begin_script camera_get_end_script camera_get_view_x camera_get_view_y camera_get_view_width camera_get_view_height camera_get_view_speed_x camera_get_view_speed_y camera_get_view_border_x camera_get_view_border_y camera_get_view_angle camera_get_view_target view_get_camera view_get_visible view_get_xport view_get_yport view_get_wport view_get_hport view_get_surface_id view_set_camera view_set_visible view_set_xport view_set_yport view_set_wport view_set_hport view_set_surface_id gesture_drag_time gesture_drag_distance gesture_flick_speed gesture_double_tap_time gesture_double_tap_distance gesture_pinch_distance gesture_pinch_angle_towards gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle gesture_tap_count gesture_get_drag_time gesture_get_drag_distance gesture_get_flick_speed gesture_get_double_tap_time gesture_get_double_tap_distance gesture_get_pinch_distance gesture_get_pinch_angle_towards gesture_get_pinch_angle_away gesture_get_rotate_time gesture_get_rotate_angle gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide keyboard_virtual_status keyboard_virtual_height",literal:"self other all noone global local undefined pointer_invalid pointer_null path_action_stop path_action_restart path_action_continue path_action_reverse true false pi GM_build_date GM_version GM_runtime_version  timezone_local timezone_utc gamespeed_fps gamespeed_microseconds  ev_create ev_destroy ev_step ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ev_keyrelease ev_trigger ev_left_button ev_right_button ev_middle_button ev_no_button ev_left_press ev_right_press ev_middle_press ev_left_release ev_right_release ev_middle_release ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ev_global_left_button ev_global_right_button ev_global_middle_button ev_global_left_press ev_global_right_press ev_global_middle_press ev_global_left_release ev_global_right_release ev_global_middle_release ev_joystick1_left ev_joystick1_right ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ev_joystick2_button8 ev_outside ev_boundary ev_game_start ev_game_end ev_room_start ev_room_end ev_no_more_lives ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ev_global_gesture_tap ev_global_gesture_double_tap ev_global_gesture_drag_start ev_global_gesture_dragging ev_global_gesture_drag_end ev_global_gesture_flick ev_global_gesture_pinch_start ev_global_gesture_pinch_in ev_global_gesture_pinch_out ev_global_gesture_pinch_end ev_global_gesture_rotate_start ev_global_gesture_rotating ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift vk_rcontrol vk_ralt  mb_any mb_none mb_left mb_right mb_middle c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal c_white c_yellow c_orange fa_left fa_center fa_right fa_top fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly audio_falloff_none audio_falloff_inverse_distance audio_falloff_inverse_distance_clamped audio_falloff_linear_distance audio_falloff_linear_distance_clamped audio_falloff_exponent_distance audio_falloff_exponent_distance_clamped audio_old_system audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint cr_size_all spritespeed_framespersecond spritespeed_framespergameframe asset_object asset_unknown asset_sprite asset_sound asset_room asset_path asset_script asset_font asset_timeline asset_tiles asset_shader fa_readonly fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive  ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl dll_stdcall matrix_view matrix_projection matrix_world os_win32 os_windows os_macosx os_ios os_android os_symbian os_linux os_unknown os_winphone os_tizen os_win8native os_wiiu os_3ds  os_psvita os_bb10 os_ps4 os_xboxone os_ps3 os_xbox360 os_uwp os_tvos os_switch browser_not_a_browser browser_unknown browser_ie browser_firefox browser_chrome browser_safari browser_safari_mobile browser_opera browser_tizen browser_edge browser_windows_store browser_ie_mobile  device_ios_unknown device_ios_iphone device_ios_iphone_retina device_ios_ipad device_ios_ipad_retina device_ios_iphone5 device_ios_iphone6 device_ios_iphone6plus device_emulator device_tablet display_landscape display_landscape_flipped display_portrait display_portrait_flipped tm_sleep tm_countvsyncs of_challenge_win of_challen ge_lose of_challenge_tie leaderboard_type_number leaderboard_type_time_mins_secs cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always cull_noculling cull_clockwise cull_counterclockwise lighttype_dir lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed iap_status_uninitialised iap_status_unavailable iap_status_loading iap_status_available iap_status_processing iap_status_restoring iap_failed iap_unavailable iap_available iap_purchased iap_canceled iap_refunded fb_login_default fb_login_fallback_to_webview fb_login_no_fallback_to_webview fb_login_forcing_webview fb_login_use_system_account fb_login_forcing_safari  phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x phy_joint_anchor_2_y phy_joint_reaction_force_x phy_joint_reaction_force_y phy_joint_reaction_torque phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque phy_joint_max_motor_torque phy_joint_translation phy_joint_speed phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency phy_joint_lower_angle_limit phy_joint_upper_angle_limit phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque phy_joint_max_force phy_debug_render_aabb phy_debug_render_collision_pairs phy_debug_render_coms phy_debug_render_core_shapes phy_debug_render_joints phy_debug_render_obb phy_debug_render_shapes  phy_particle_flag_water phy_particle_flag_zombie phy_particle_flag_wall phy_particle_flag_spring phy_particle_flag_elastic phy_particle_flag_viscous phy_particle_flag_powder phy_particle_flag_tensile phy_particle_flag_colourmixing phy_particle_flag_colormixing phy_particle_group_flag_solid phy_particle_group_flag_rigid phy_particle_data_flag_typeflags phy_particle_data_flag_position phy_particle_data_flag_velocity phy_particle_data_flag_colour phy_particle_data_flag_color phy_particle_data_flag_category  achievement_our_info achievement_friends_info achievement_leaderboard_info achievement_achievement_info achievement_filter_all_players achievement_filter_friends_only achievement_filter_favorites_only achievement_type_achievement_challenge achievement_type_score_challenge achievement_pic_loaded  achievement_show_ui achievement_show_profile achievement_show_leaderboard achievement_show_achievement achievement_show_bank achievement_show_friend_picker achievement_show_purchase_prompt network_socket_tcp network_socket_udp network_socket_bluetooth network_type_connect network_type_disconnect network_type_data network_type_non_blocking_connect network_config_connect_timeout network_config_use_non_blocking_socket network_config_enable_reliable_udp network_config_disable_reliable_udp buffer_fixed buffer_grow buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text buffer_string buffer_surface_copy buffer_seek_start buffer_seek_relative buffer_seek_end buffer_generalerror buffer_outofspace buffer_outofbounds buffer_invalidtype  text_type button_type input_type ANSI_CHARSET DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET BALTIC_CHARSET OEM_CHARSET  gp_face1 gp_face2 gp_face3 gp_face4 gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric lb_disp_time_sec lb_disp_time_ms ugc_result_success ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ugc_visibility_friends_only ugc_visibility_private ugc_query_RankedByVote ugc_query_RankedByPublicationDate ugc_query_AcceptedForGameRankedByAcceptanceDate ugc_query_RankedByTrend ugc_query_FavoritedByFriendsRankedByPublicationDate ugc_query_CreatedByFriendsRankedByPublicationDate ugc_query_RankedByNumTimesReported ugc_query_CreatedByFollowedUsersRankedByPublicationDate ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ugc_match_WebGuides ugc_match_IntegratedGuides ugc_match_UsableInGame ugc_match_ControllerBindings  vertex_usage_position vertex_usage_colour vertex_usage_color vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord vertex_usage_blendweight vertex_usage_blendindices vertex_usage_psize vertex_usage_tangent vertex_usage_binormal vertex_usage_fog vertex_usage_depth vertex_usage_sample vertex_type_float1 vertex_type_float2 vertex_type_float3 vertex_type_float4 vertex_type_colour vertex_type_color vertex_type_ubyte4 layerelementtype_undefined layerelementtype_background layerelementtype_instance layerelementtype_oldtilemap layerelementtype_sprite layerelementtype_tilemap layerelementtype_particlesystem layerelementtype_tile tile_rotate tile_flip tile_mirror tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency kbv_autocapitalize_none kbv_autocapitalize_words kbv_autocapitalize_sentences kbv_autocapitalize_characters",symbol:"argument_relative argument argument0 argument1 argument2 argument3 argument4 argument5 argument6 argument7 argument8 argument9 argument10 argument11 argument12 argument13 argument14 argument15 argument_count x y xprevious yprevious xstart ystart hspeed vspeed direction speed friction gravity gravity_direction path_index path_position path_positionprevious path_speed path_scale path_orientation path_endaction object_index id solid persistent mask_index instance_count instance_id room_speed fps fps_real current_time current_year current_month current_day current_weekday current_hour current_minute current_second alarm timeline_index timeline_position timeline_speed timeline_running timeline_loop room room_first room_last room_width room_height room_caption room_persistent score lives health show_score show_lives show_health caption_score caption_lives caption_health event_type event_number event_object event_action application_surface gamemaker_pro gamemaker_registered gamemaker_version error_occurred error_last debug_mode keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite visible sprite_index sprite_width sprite_height sprite_xoffset sprite_yoffset image_number image_index image_speed depth image_xscale image_yscale image_angle image_alpha image_blend bbox_left bbox_right bbox_top bbox_bottom layer background_colour  background_showcolour background_color background_showcolor view_enabled view_current view_visible view_xview view_yview view_wview view_hview view_xport view_yport view_wport view_hport view_angle view_hborder view_vborder view_hspeed view_vspeed view_object view_surface_id view_camera game_id game_display_name game_project_name game_save_id working_directory temp_directory program_directory browser_width browser_height os_type os_device os_browser os_version display_aa async_load delta_time webgl_enabled event_data iap_data phy_rotation phy_position_x phy_position_y phy_angular_velocity phy_linear_velocity_x phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed phy_angular_damping phy_linear_damping phy_bullet phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x phy_com_y phy_dynamic phy_kinematic phy_sleeping phy_collision_points phy_collision_x phy_collision_y phy_col_normal_x phy_col_normal_y phy_position_xprevious phy_position_yprevious"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("go",function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],keywords:t,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"`"}]},{className:"number",variants:[{begin:e.C_NUMBER_RE+"[i]",relevance:1},e.C_NUMBER_MODE]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,illegal:/["']/}]}]}}),We.registerLanguage("golo",function(e){return{keywords:{keyword:"println readln print import module function local return let var while for foreach times in case when match with break continue augment augmentation each find filter reduce if then else otherwise try catch finally raise throw orIfNull DynamicObject|10 DynamicVariable struct Observable map set vector list array",literal:"true false null"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("gradle",function(e){return{case_insensitive:!0,keywords:{keyword:"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.REGEXP_MODE]}}),We.registerLanguage("groovy",function(e){return{keywords:{literal:"true false null",keyword:"byte short char int long boolean float double void def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof"},contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},{className:"string",begin:"'''",end:"'''"},{className:"string",begin:"\\$/",end:"/\\$",relevance:10},e.APOS_STRING_MODE,{className:"regexp",begin:/~?\/[^\/\n]+\//,contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},e.BINARY_NUMBER_MODE,{className:"class",beginKeywords:"class interface trait enum",end:"{",illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{className:"string",begin:/[^\?]{0}[A-Za-z0-9_$]+ *:/},{begin:/\?/,end:/\:/},{className:"symbol",begin:"^\\s*[A-Za-z0-9_$]+:",relevance:0}],illegal:/#|<\//}}),We.registerLanguage("haml",function(e){return{case_insensitive:!0,contains:[{className:"meta",begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+"},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class",begin:"\\.[\\w-]+"},{begin:"{\\s*",end:"\\s*}",contains:[{begin:":\\w+\\s*=>",end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=",end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:"#{",starts:{end:"}",subLanguage:"ruby"}}]}}),We.registerLanguage("handlebars",function(e){var t={"builtin-name":"each in with if else unless bindattr action collection debugger log outlet template unbound view yield lookup"},n={begin:/".*?"|'.*?'|\[.*?\]|\w+/},r=e.inherit(n,{keywords:t,starts:{endsWithParent:!0,relevance:0,contains:[e.inherit(n,{relevance:0})]}}),a=e.inherit(r,{className:"name"}),i=e.inherit(r,{relevance:0});return{aliases:["hbs","html.hbs","html.handlebars"],case_insensitive:!0,subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,skip:!0},e.COMMENT(/\{\{!--/,/--\}\}/),e.COMMENT(/\{\{!/,/\}\}/),{className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[a],starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[a]},{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[a]},{className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,keywords:t,contains:[i]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,keywords:t,contains:[i]}]}}),We.registerLanguage("haskell",function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"meta",begin:"{-#",end:"#-}"},r={className:"meta",begin:"^#",end:"$"},a={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},i={begin:"\\(",end:"\\)",illegal:'"',contains:[n,r,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),t]};return{aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[i,t],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[i,t],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[a,i,t]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[n,a,i,{begin:"{",end:"}",contains:i.contains},t]},{beginKeywords:"default",end:"$",contains:[a,i,t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[a,e.QUOTE_STRING_MODE,t]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},n,r,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,a,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}]}}),We.registerLanguage("haxe",function(e){return{aliases:["hx"],keywords:{keyword:"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while Int Float String Bool Dynamic Void Array ",built_in:"trace this",literal:"true false null _"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"},{className:"subst",begin:"\\$",end:"\\W}"}]},e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@:",end:"$"},{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end error"}},{className:"type",begin:":[ \t]*",end:"[^A-Za-z0-9_ \t\\->]",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:":[ \t]*",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"new *",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"class",beginKeywords:"enum",end:"\\{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"abstract",end:"[\\{$]",contains:[{className:"type",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"from +",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"to +",end:"\\W",excludeBegin:!0,excludeEnd:!0},e.TITLE_MODE],keywords:{keyword:"abstract from to"}},{className:"class",begin:"\\b(class|interface) +",end:"[\\{$]",excludeEnd:!0,keywords:"class interface",contains:[{className:"keyword",begin:"\\b(extends|implements) +",keywords:"extends implements",contains:[{className:"type",begin:e.IDENT_RE,relevance:0}]},e.TITLE_MODE]},{className:"function",beginKeywords:"function",end:"\\(",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE]}],illegal:/<\//}}),We.registerLanguage("hsp",function(e){return{case_insensitive:!0,lexemes:/[\w\._]+/,keywords:"goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",begin:'{"',end:'"}',contains:[e.BACKSLASH_ESCAPE]},e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib"},contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),e.NUMBER_MODE,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"symbol",begin:"^\\*(\\w+|@)"},e.NUMBER_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("htmlbars",function(e){var t="action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view",n=(e.QUOTE_STRING_MODE,{endsWithParent:!0,relevance:0,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE,{illegal:/\}\}/,begin:/[a-zA-Z0-9_]+=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[a-zA-Z0-9_]+/}]},e.NUMBER_MODE]});return{case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT("{{!(--)?","(--)?}}"),{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[{className:"name",begin:/[a-zA-Z\.\-]+/,keywords:{"builtin-name":t},starts:n}]},{className:"template-variable",begin:/\{\{[a-zA-Z][a-zA-Z\-]+/,end:/\}\}/,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE]}]}}),We.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],illegal:"\\S",contains:[{begin:"^"+t,end:"$",contains:[{className:"number",begin:"\\b\\d{3}\\b"}]},{begin:"^[A-Z]+ (.*?) "+t+"$",returnBegin:!0,end:"$",contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{begin:t},{className:"keyword",begin:"[A-Z]+"}]},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,illegal:"\\n|\\s|=",starts:{end:"$",relevance:0}},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}]}}),We.registerLanguage("hy",function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),o={className:"literal",begin:/\b([Tt]rue|[Ff]alse|nil|None)\b/},s={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+t},c=e.COMMENT("\\^\\{","\\}"),d={className:"symbol",begin:"[:]{1,2}"+t},_={begin:"\\(",end:"\\)"},u={endsWithParent:!0,relevance:0},m={keywords:{"builtin-name":"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . / // //= /= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile/calls profile/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~"},lexemes:t,className:"name",begin:t,starts:u},p=[_,a,l,c,i,d,s,r,o,n];return _.contains=[e.COMMENT("comment",""),m,u],u.contains=p,s.contains=p,{aliases:["hylang"],illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},_,a,l,c,i,d,s,r,o]}}),We.registerLanguage("inform7",function(e){return{aliases:["i7"],case_insensitive:!0,keywords:{keyword:"thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule"},contains:[{className:"string",begin:'"',end:'"',relevance:0,contains:[{className:"subst",begin:"\\[",end:"\\]"}]},{className:"section",begin:/^(Volume|Book|Part|Chapter|Section|Table)\b/,end:"$"},{begin:/^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,end:":",contains:[{begin:"\\(This",end:"\\)"}]},{className:"comment",begin:"\\[",end:"\\]",contains:["self"]}]}}),We.registerLanguage("ini",function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]};return{aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT(";","$"),e.HASH_COMMENT_MODE,{className:"section",begin:/^\s*\[+/,end:/\]+/},{begin:/^[a-z0-9\[\]_\.-]+\s*=\s*/,end:"$",returnBegin:!0,contains:[{className:"attr",begin:/[a-z0-9\[\]_\.-]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[e.COMMENT(";","$"),e.HASH_COMMENT_MODE,{className:"literal",begin:/\bon|off|true|false|yes|no\b/},{className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)}/}]},t,{className:"number",begin:/([\+\-]+)?[\d]+_[\d_]+/},e.NUMBER_MODE]}]}]}}),We.registerLanguage("irpf90",function(e){return{case_insensitive:!0,keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated  c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),e.COMMENT("begin_doc","end_doc",{relevance:10}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}}),We.registerLanguage("isbl",function(e){var t="[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*",n={className:"number",begin:e.NUMBER_RE,relevance:0},r={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]},a={className:"doctag",begin:"\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b",relevance:0},i={variants:[{className:"comment",begin:"//",end:"$",relevance:0,contains:[e.PHRASAL_WORDS_MODE,a]},{className:"comment",begin:"/\\*",end:"\\*/",relevance:0,contains:[e.PHRASAL_WORDS_MODE,a]}]},o={keyword:"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока except exitfor finally foreach все if если in в not не or или try while пока ",built_in:"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING  SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE smHidden smMaximized smMinimized smNormal wmNo wmYes COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STATЕ SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID RESULT_VAR_NAME RESULT_VAR_NAME_ENG AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ISBL_SYNTAX NO_SYNTAX XML_SYNTAX WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP atUser atGroup atRole aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty apBegin apEnd alLeft alRight asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways cirCommon cirRevoked ctSignature ctEncode ctSignatureEncode clbUnchecked clbChecked clbGrayed ceISB ceAlways ceNever ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob cfInternal cfDisplay ciUnspecified ciWrite ciRead ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton cctDate cctInteger cctNumeric cctPick cctReference cctString cctText cltInternal cltPrimary cltGUI dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange dssEdit dssInsert dssBrowse dssInActive dftDate dftShortDate dftDateTime dftTimeStamp dotDays dotHours dotMinutes dotSeconds dtkndLocal dtkndUTC arNone arView arEdit arFull ddaView ddaEdit emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ecotFile ecotProcess eaGet eaCopy eaCreate eaCreateStandardRoute edltAll edltNothing edltQuery essmText essmCard esvtLast esvtLastActive esvtSpecified edsfExecutive edsfArchive edstSQLServer edstFile edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile vsDefault vsDesign vsActive vsObsolete etNone etCertificate etPassword etCertificatePassword ecException ecWarning ecInformation estAll estApprovingOnly evtLast evtLastActive evtQuery fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch grhAuto grhX1 grhX2 grhX3 hltText hltRTF hltHTML iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG im8bGrayscale im24bRGB im1bMonochrome itBMP itJPEG itWMF itPNG ikhInformation ikhWarning ikhError ikhNoIcon icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler isShow isHide isByUserSettings jkJob jkNotice jkControlJob jtInner jtLeft jtRight jtFull jtCross lbpAbove lbpBelow lbpLeft lbpRight eltPerConnection eltPerUser sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac sfsItalic sfsStrikeout sfsNormal ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom vtEqual vtGreaterOrEqual vtLessOrEqual vtRange rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth rdWindow rdFile rdPrinter rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument reOnChange reOnChangeValues ttGlobal ttLocal ttUser ttSystem ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal smSelect smLike smCard stNone stAuthenticating stApproving sctString sctStream sstAnsiSort sstNaturalSort svtEqual svtContain soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown tarAbortByUser tarAbortByWorkflowException tvtAllWords tvtExactPhrase tvtAnyWord usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected btAnd btDetailAnd btOr btNotOr btOnly vmView vmSelect vmNavigation vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection wfatPrevious wfatNext wfatCancel wfatFinish wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 wfetQueryParameter wfetText wfetDelimiter wfetLabel wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal waAll waPerformers waManual wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection wiLow wiNormal wiHigh wrtSoft wrtHard wsInit wsRunning wsDone wsControlled wsAborted wsContinued wtmFull wtmFromCurrent wtmOnlyCurrent ",class:"AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work ВызовСпособ ИмяОтчета РеквЗнач ",literal:"null true false nil "},s={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,keywords:o,relevance:0},l={className:"type",begin:":[ \\t]*("+"IApplication IAccessRights IAccountRepository IAccountSelectionRestrictions IAction IActionList IAdministrationHistoryDescription IAnchors IApplication IArchiveInfo IAttachment IAttachmentList ICheckListBox ICheckPointedList IColumn IComponent IComponentDescription IComponentToken IComponentTokenFactory IComponentTokenInfo ICompRecordInfo IConnection IContents IControl IControlJob IControlJobInfo IControlList ICrypto ICrypto2 ICustomJob ICustomJobInfo ICustomListBox ICustomObjectWizardStep ICustomWork ICustomWorkInfo IDataSet IDataSetAccessInfo IDataSigner IDateCriterion IDateRequisite IDateRequisiteDescription IDateValue IDeaAccessRights IDeaObjectInfo IDevelopmentComponentLock IDialog IDialogFactory IDialogPickRequisiteItems IDialogsFactory IDICSFactory IDocRequisite IDocumentInfo IDualListDialog IECertificate IECertificateInfo IECertificates IEditControl IEditorForm IEdmsExplorer IEdmsObject IEdmsObjectDescription IEdmsObjectFactory IEdmsObjectInfo IEDocument IEDocumentAccessRights IEDocumentDescription IEDocumentEditor IEDocumentFactory IEDocumentInfo IEDocumentStorage IEDocumentVersion IEDocumentVersionListDialog IEDocumentVersionSource IEDocumentWizardStep IEDocVerSignature IEDocVersionState IEnabledMode IEncodeProvider IEncrypter IEvent IEventList IException IExternalEvents IExternalHandler IFactory IField IFileDialog IFolder IFolderDescription IFolderDialog IFolderFactory IFolderInfo IForEach IForm IFormTitle IFormWizardStep IGlobalIDFactory IGlobalIDInfo IGrid IHasher IHistoryDescription IHyperLinkControl IImageButton IImageControl IInnerPanel IInplaceHint IIntegerCriterion IIntegerList IIntegerRequisite IIntegerValue IISBLEditorForm IJob IJobDescription IJobFactory IJobForm IJobInfo ILabelControl ILargeIntegerCriterion ILargeIntegerRequisite ILargeIntegerValue ILicenseInfo ILifeCycleStage IList IListBox ILocalIDInfo ILocalization ILock IMemoryDataSet IMessagingFactory IMetadataRepository INotice INoticeInfo INumericCriterion INumericRequisite INumericValue IObject IObjectDescription IObjectImporter IObjectInfo IObserver IPanelGroup IPickCriterion IPickProperty IPickRequisite IPickRequisiteDescription IPickRequisiteItem IPickRequisiteItems IPickValue IPrivilege IPrivilegeList IProcess IProcessFactory IProcessMessage IProgress IProperty IPropertyChangeEvent IQuery IReference IReferenceCriterion IReferenceEnabledMode IReferenceFactory IReferenceHistoryDescription IReferenceInfo IReferenceRecordCardWizardStep IReferenceRequisiteDescription IReferencesFactory IReferenceValue IRefRequisite IReport IReportFactory IRequisite IRequisiteDescription IRequisiteDescriptionList IRequisiteFactory IRichEdit IRouteStep IRule IRuleList ISchemeBlock IScript IScriptFactory ISearchCriteria ISearchCriterion ISearchDescription ISearchFactory ISearchFolderInfo ISearchForObjectDescription ISearchResultRestrictions ISecuredContext ISelectDialog IServerEvent IServerEventFactory IServiceDialog IServiceFactory ISignature ISignProvider ISignProvider2 ISignProvider3 ISimpleCriterion IStringCriterion IStringList IStringRequisite IStringRequisiteDescription IStringValue ISystemDialogsFactory ISystemInfo ITabSheet ITask ITaskAbortReasonInfo ITaskCardWizardStep ITaskDescription ITaskFactory ITaskInfo ITaskRoute ITextCriterion ITextRequisite ITextValue ITreeListSelectDialog IUser IUserList IValue IView IWebBrowserControl IWizard IWizardAction IWizardFactory IWizardFormElement IWizardParam IWizardPickParam IWizardReferenceParam IWizardStep IWorkAccessRights IWorkDescription IWorkflowAskableParam IWorkflowAskableParams IWorkflowBlock IWorkflowBlockResult IWorkflowEnabledMode IWorkflowParam IWorkflowPickParam IWorkflowReferenceParam IWorkState IWorkTreeCustomNode IWorkTreeJobNode IWorkTreeTaskNode IXMLEditorForm SBCrypto ".trim().replace(/\s/g,"|")+")",end:"[ \\t]*=",excludeEnd:!0},c={className:"variable",lexemes:t,keywords:o,begin:t,relevance:0,contains:[l,s]};return{aliases:["isbl"],case_insensitive:!0,lexemes:t,keywords:o,illegal:"\\$|\\?|%|,|;$|~|#|@|</",contains:[{className:"function",begin:"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\\(",end:"\\)$",returnBegin:!0,lexemes:t,keywords:o,illegal:"[\\[\\]\\|\\$\\?%,~#@]",contains:[{className:"title",lexemes:t,keywords:{built_in:"AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory Анализ БазаДанных БлокЕсть БлокЕстьРасш БлокИнфо БлокСнять БлокСнятьРасш БлокУстановить Ввод ВводМеню ВедС ВедСпр ВерхняяГраницаМассива ВнешПрогр Восст ВременнаяПапка Время ВыборSQL ВыбратьЗапись ВыделитьСтр Вызвать Выполнить ВыпПрогр ГрафическийФайл ГруппаДополнительно ДатаВремяСерв ДеньНедели ДиалогДаНет ДлинаСтр ДобПодстр ЕПусто ЕслиТо ЕЧисло ЗамПодстр ЗаписьСправочника ЗначПоляСпр ИДТипСпр ИзвлечьДиск ИзвлечьИмяФайла ИзвлечьПуть ИзвлечьРасширение ИзмДат ИзменитьРазмерМассива ИзмеренийМассива ИмяОрг ИмяПоляСпр Индекс ИндикаторЗакрыть ИндикаторОткрыть ИндикаторШаг ИнтерактивныйРежим ИтогТблСпр КодВидВедСпр КодВидСпрПоИД КодПоAnalit КодСимвола КодСпр КолПодстр КолПроп КонМес Конст КонстЕсть КонстЗнач КонТран КопироватьФайл КопияСтр КПериод КСтрТблСпр Макс МаксСтрТблСпр Массив Меню МенюРасш Мин НаборДанныхНайтиРасш НаимВидСпр НаимПоAnalit НаимСпр НастроитьПереводыСтрок НачМес НачТран НижняяГраницаМассива НомерСпр НПериод Окно Окр Окружение ОтлИнфДобавить ОтлИнфУдалить Отчет ОтчетАнал ОтчетИнт ПапкаСуществует Пауза ПВыборSQL ПереименоватьФайл Переменные ПереместитьФайл Подстр ПоискПодстр ПоискСтр ПолучитьИДТаблицы ПользовательДополнительно ПользовательИД ПользовательИмя ПользовательСтатус Прервать ПроверитьПараметр ПроверитьПараметрЗнач ПроверитьУсловие РазбСтр РазнВремя РазнДат РазнДатаВремя РазнРабВремя РегУстВрем РегУстДат РегУстЧсл РедТекст РеестрЗапись РеестрСписокИменПарам РеестрЧтение РеквСпр РеквСпрПр Сегодня Сейчас Сервер СерверПроцессИД СертификатФайлСчитать СжПроб Символ СистемаДиректумКод СистемаИнформация СистемаКод Содержит СоединениеЗакрыть СоединениеОткрыть СоздатьДиалог СоздатьДиалогВыбораИзДвухСписков СоздатьДиалогВыбораПапки СоздатьДиалогОткрытияФайла СоздатьДиалогСохраненияФайла СоздатьЗапрос СоздатьИндикатор СоздатьИсключение СоздатьКэшированныйСправочник СоздатьМассив СоздатьНаборДанных СоздатьОбъект СоздатьОтчет СоздатьПапку СоздатьРедактор СоздатьСоединение СоздатьСписок СоздатьСписокСтрок СоздатьСправочник СоздатьСценарий СоздСпр СостСпр Сохр СохрСпр СписокСистем Спр Справочник СпрБлокЕсть СпрБлокСнять СпрБлокСнятьРасш СпрБлокУстановить СпрИзмНабДан СпрКод СпрНомер СпрОбновить СпрОткрыть СпрОтменить СпрПарам СпрПолеЗнач СпрПолеИмя СпрРекв СпрРеквВведЗн СпрРеквНовые СпрРеквПр СпрРеквПредЗн СпрРеквРежим СпрРеквТипТекст СпрСоздать СпрСост СпрСохранить СпрТблИтог СпрТблСтр СпрТблСтрКол СпрТблСтрМакс СпрТблСтрМин СпрТблСтрПред СпрТблСтрСлед СпрТблСтрСозд СпрТблСтрУд СпрТекПредст СпрУдалить СравнитьСтр СтрВерхРегистр СтрНижнРегистр СтрТблСпр СумПроп Сценарий СценарийПарам ТекВерсия ТекОрг Точн Тран Транслитерация УдалитьТаблицу УдалитьФайл УдСпр УдСтрТблСпр Уст УстановкиКонстант ФайлАтрибутСчитать ФайлАтрибутУстановить ФайлВремя ФайлВремяУстановить ФайлВыбрать ФайлЗанят ФайлЗаписать ФайлИскать ФайлКопировать ФайлМожноЧитать ФайлОткрыть ФайлПереименовать ФайлПерекодировать ФайлПереместить ФайлПросмотреть ФайлРазмер ФайлСоздать ФайлСсылкаСоздать ФайлСуществует ФайлСчитать ФайлУдалить ФмтSQLДат ФмтДат ФмтСтр ФмтЧсл Формат ЦМассивЭлемент ЦНаборДанныхРеквизит ЦПодстр "},begin:"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\\(",end:"\\(",returnBegin:!0,excludeEnd:!0},s,c,r,n,i]},l,s,c,r,n,i]}}),We.registerLanguage("java",function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("javascript",function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"xml"}},o={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"css"}},s={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,a]};a.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,o,s,r,e.REGEXP_MODE];var l=a.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,o,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,\n]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:l}]}]},{className:"",begin:/\s/,end:/\s*/,skip:!0},{begin:/</,end:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,subLanguage:"xml",contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},{begin:/<[A-Za-z0-9\\._:-]+/,end:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,skip:!0,contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:l}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor get set",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}),We.registerLanguage("jboss-cli",function(e){var t={className:"params",begin:/\(/,end:/\)/,contains:[{begin:/[\w-]+ *=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[\w-]+/}]}],relevance:0};return{aliases:["wildfly-cli"],lexemes:"[a-z-]+",keywords:{keyword:"alias batch cd clear command connect connection-factory connection-info data-source deploy deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias undeploy unset version xa-data-source",literal:"true false"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"params",begin:/--[\w\-=\/]+/},{className:"function",begin:/:[\w\-.]+/,relevance:0},{className:"string",begin:/\B(([\/.])[\w\-.\/=]+)+/},t]}}),We.registerLanguage("json",function(e){var t={literal:"true false null"},n=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],r=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],a={end:",",endsWithParent:!0,excludeEnd:!0,contains:r,keywords:t},i={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(a,{begin:/:/})].concat(n),illegal:"\\S"},o={begin:"\\[",end:"\\]",contains:[e.inherit(a)],illegal:"\\S"};return r.push(i,o),n.forEach(function(e){r.push(e)}),{contains:r,keywords:t,illegal:"\\S"}}),We.registerLanguage("julia",function(e){var t={keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},n="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",r={lexemes:n,keywords:t,illegal:/<\//},a={className:"subst",begin:/\$\(/,end:/\)/,keywords:t},i={className:"variable",begin:"\\$"+n},o={className:"string",contains:[e.BACKSLASH_ESCAPE,a,i],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a,i],begin:"`",end:"`"},l={className:"meta",begin:"@"+n};return r.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},o,s,l,{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],a.contains=r.contains,r}),We.registerLanguage("julia-repl",function(e){return{contains:[{className:"meta",begin:/^julia>/,relevance:10,starts:{end:/^(?![ ]{6})/,subLanguage:"julia"},aliases:["jldoctest"]}]}}),We.registerLanguage("kotlin",function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},a={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},i={className:"string",variants:[{begin:'"""',end:'"""',contains:[a,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,a,r]}]};r.contains.push(i);var o={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},s={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(i,{className:"meta-string"})]}]},l={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0},c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},_=d;return _.variants[1].contains=[d],d.variants[1].contains=[_],{aliases:["kt"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},n,o,s,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,o,s,i,e.C_NUMBER_MODE]},c]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},o,s]},i,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},l]}}),We.registerLanguage("lasso",function(e){var t="\\]|\\?>",n={literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"},r=e.COMMENT("\x3c!--","--\x3e",{relevance:0}),a={className:"meta",begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[r]}},i={className:"meta",begin:"\\[/noprocess|<\\?(lasso(script)?|=)"},o={className:"symbol",begin:"'[a-zA-Z_][\\w.]*'"},s=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(e.C_NUMBER_MODE,{begin:e.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$][a-zA-Z_][\\w.]*"},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*",end:"[a-zA-Z_][\\w.]*",illegal:"\\W"},{className:"params",variants:[{begin:"-(?!infinity)[a-zA-Z_][\\w.]*",relevance:0},{begin:"(\\.\\.\\.)"}]},{begin:/(->|\.)\s*/,relevance:0,contains:[o]},{className:"class",beginKeywords:"define",returnEnd:!0,end:"\\(|=>",contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z_][\\w.]*(=(?!>))?|[-+*/%](?!>)"})]}];return{aliases:["ls","lassoscript"],case_insensitive:!0,lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[|<\\?(lasso(script)?|=)",returnEnd:!0,relevance:0,contains:[r]}},a,i,{className:"meta",begin:"\\[no_square_brackets",starts:{end:"\\[/no_square_brackets\\]",lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[noprocess\\]|<\\?(lasso(script)?|=)",returnEnd:!0,contains:[r]}},a,i].concat(s)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta",begin:"^#!",end:"lasso9$",relevance:10}].concat(s)}}),We.registerLanguage("ldif",function(e){return{contains:[{className:"attribute",begin:"^dn",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0},relevance:10},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0}},{className:"literal",begin:"^-",end:"$"},e.HASH_COMMENT_MODE]}}),We.registerLanguage("leaf",function(e){return{contains:[{className:"function",begin:"#+[A-Za-z_0-9]*\\(",end:" {",returnBegin:!0,excludeEnd:!0,contains:[{className:"keyword",begin:"#+"},{className:"title",begin:"[A-Za-z_][A-Za-z_0-9]*"},{className:"params",begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"string",begin:'"',end:'"'},{className:"variable",begin:"[A-Za-z_][A-Za-z_0-9]*"}]}]}]}}),We.registerLanguage("less",function(e){var t="([\\w-]+|@{[\\w-]+})",n=[],r=[],a=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},i=function(e,t,n){return{className:e,begin:t,relevance:n}},o={begin:"\\(",end:"\\)",contains:r,relevance:0};r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a("'"),a('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},i("number","#[0-9A-Fa-f]+\\b"),o,i("variable","@@?[\\w-]+",10),i("variable","@{[\\w-]+}"),i("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var s=r.concat({begin:"{",end:"}",contains:n}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(r)},c={begin:t+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:t,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:r}}]},d={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:r,relevance:0}},_={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:s}},u={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:t,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,i("keyword","all\\b"),i("variable","@{[\\w-]+}"),i("selector-tag",t+"%?",0),i("selector-id","#"+t),i("selector-class","\\."+t,0),i("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:s},{begin:"!important"}]};return n.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,d,_,c,u),{case_insensitive:!0,illegal:"[=>'/<($\"]",contains:n}}),We.registerLanguage("lisp",function(e){var t="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",n="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",r={className:"literal",begin:"\\b(t{1}|nil)\\b"},a={className:"number",variants:[{begin:n,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{begin:"#(c|C)\\("+n+" +"+n,end:"\\)"}]},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),o=e.COMMENT(";","$",{relevance:0}),s={begin:"\\*",end:"\\*"},l={className:"symbol",begin:"[:&]"+t},c={begin:t,relevance:0},d={begin:"\\|[^]*?\\|"},_={contains:[a,i,s,l,{begin:"\\(",end:"\\)",contains:["self",r,i,a,c]},c],variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{name:"quote"}},{begin:"'\\|[^]*?\\|"}]},u={variants:[{begin:"'"+t},{begin:"#'"+t+"(::"+t+")*"}]},m={begin:"\\(\\s*",end:"\\)"},p={endsWithParent:!0,relevance:0};return m.contains=[{className:"name",variants:[{begin:t},{begin:"\\|[^]*?\\|"}]},p],p.contains=[_,u,m,r,a,i,o,s,l,d,c],{illegal:/\S/,contains:[a,{className:"meta",begin:"^#!",end:"$"},r,i,o,_,u,m,c]}}),We.registerLanguage("livecodeserver",function(e){var t={className:"variable",variants:[{begin:"\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)"},{begin:"\\$_[A-Z]+"}],relevance:0},n=[e.C_BLOCK_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("--","$"),e.COMMENT("[^:]//","$")],r=e.inherit(e.TITLE_MODE,{variants:[{begin:"\\b_*rig[A-Z]+[A-Za-z0-9_\\-]*"},{begin:"\\b_[a-z0-9\\-]+"}]}),a=e.inherit(e.TITLE_MODE,{begin:"\\b([A-Za-z0-9_\\-]+)\\b"});return{case_insensitive:!1,keywords:{keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress difference directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract symmetric union unload vectorDotProduct wait write"},contains:[t,{className:"keyword",begin:"\\bend\\sif\\b"},{className:"function",beginKeywords:"function",end:"$",contains:[t,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"function",begin:"\\bend\\s+",end:"$",keywords:"end",contains:[a,r],relevance:0},{beginKeywords:"command on",end:"$",contains:[t,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"meta",variants:[{begin:"<\\?(rev|lc|livecode)",relevance:10},{begin:"<\\?"},{begin:"\\?>"}]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r].concat(n),illegal:";$|^\\[|^=|&|{"}}),We.registerLanguage("livescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger case default function var with then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super case default function var void const let enum export import native list map __hasProp __extends __slice __bind __indexOf",literal:"true false null undefined yes no on off it that void",built_in:"npm require console print module global window document"},n="[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*",r=e.inherit(e.TITLE_MODE,{begin:n}),a={className:"subst",begin:/#\{/,end:/}/,keywords:t},i={className:"subst",begin:/#[A-Za-z$_]/,end:/(?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,keywords:t},o=[e.BINARY_NUMBER_MODE,{className:"number",begin:"(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)",relevance:0,starts:{end:"(\\s*/)?",relevance:0}},{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,a,i]},{begin:/\\/,end:/(\s|$)/,excludeEnd:!0}]},{className:"regexp",variants:[{begin:"//",end:"//[gim]*",contains:[a,e.HASH_COMMENT_MODE]},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W)/}]},{begin:"@"+n},{begin:"``",end:"``",excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"}];a.contains=o;var s={className:"params",begin:"\\(",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{aliases:["ls"],keywords:t,illegal:/\/\*/,contains:o.concat([e.COMMENT("\\/\\*","\\*\\/"),e.HASH_COMMENT_MODE,{begin:"(#=>|=>|\\|>>|-?->|\\!->)"},{className:"function",contains:[r,s],returnBegin:!0,variants:[{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B\\->\\*?",end:"\\->\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?!?(\\(.*\\))?\\s*\\B[-~]{1,2}>\\*?",end:"[-~]{1,2}>\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B!?[-~]{1,2}>\\*?",end:"!?[-~]{1,2}>\\*?"}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[r]},r]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}),We.registerLanguage("llvm",function(e){var t="([-a-zA-Z$._][\\w\\-$.]*)";return{keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[{className:"keyword",begin:"i\\d+"},e.COMMENT(";","\\n",{relevance:0}),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'"',end:'[^\\\\]"'}],relevance:0},{className:"title",variants:[{begin:"@"+t},{begin:"@\\d+"},{begin:"!"+t},{begin:"!\\d+"+t}]},{className:"symbol",variants:[{begin:"%"+t},{begin:"%\\d+"},{begin:"#\\d+"}]},{className:"number",variants:[{begin:"0[xX][a-fA-F0-9]+"},{begin:"-?\\d+(?:[.]\\d+)?(?:[eE][-+]?\\d+(?:[.]\\d+)?)?"}],relevance:0}]}}),We.registerLanguage("lsl",function(e){var t={className:"string",begin:'"',end:'"',contains:[{className:"subst",begin:/\\[tn"\\]/}]},n={className:"number",begin:e.C_NUMBER_RE};return{illegal:":",contains:[t,{className:"comment",variants:[e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/")],relevance:0},n,{className:"section",variants:[{begin:"\\b(?:state|default)\\b"},{begin:"\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\b"}]},{className:"built_in",begin:"\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|SitOnLink|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b"},{className:"literal",variants:[{begin:"\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b"},{begin:"\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(?:ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(?:_TAG)?|CREATOR|ATTACHED_(?:POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALLOW_UNSIT|ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(?:INVALID_(?:AGENT|LINK_OBJECT)|NO(?:T_EXPERIENCE|_(?:ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b"},{begin:"\\b(?:FALSE|TRUE)\\b"},{begin:"\\b(?:ZERO_ROTATION)\\b"},{begin:"\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\b"},{begin:"\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\b"}]},{className:"type",begin:"\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\b"}]}}),We.registerLanguage("lua",function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},n=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:n.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:n}].concat(n)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}}),We.registerLanguage("makefile",function(e){var t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t]},r={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[t]},a={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*[:+?]?=",illegal:"\\n",returnBegin:!0,contains:[{begin:"^"+e.UNDERSCORE_IDENT_RE,end:"[:+?]?=",excludeEnd:!0}]},i={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[t]};return{aliases:["mk","mak"],keywords:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",lexemes:/[\w-]+/,contains:[e.HASH_COMMENT_MODE,t,n,r,a,{className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{"meta-keyword":".PHONY"},lexemes:/[\.\w]+/},i]}}),We.registerLanguage("mathematica",function(e){return{aliases:["mma","wl"],lexemes:"(\\$|\\b)"+e.IDENT_RE+"\\b",keywords:"AASTriangle AbelianGroup Abort AbortKernels AbortProtect AbortScheduledTask Above Abs AbsArg AbsArgPlot Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AcceptanceThreshold AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Activate Active ActiveClassification ActiveClassificationObject ActiveItem ActivePrediction ActivePredictionObject ActiveStyle AcyclicGraphQ AddOnHelpPath AddSides AddTo AddToSearchIndex AddUsers AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AdministrativeDivisionData AffineHalfSpace AffineSpace AffineStateSpaceModel AffineTransform After AggregatedEntityClass AggregationLayer AircraftData AirportData AirPressureData AirTemperatureData AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowAdultContent AllowedCloudExtraParameters AllowedCloudParameterExtensions AllowedDimensions AllowedFrequencyRange AllowedHeads AllowGroupClose AllowIncomplete AllowInlineCells AllowKernelInitialization AllowLooseGrammar AllowReverseGroupClose AllowScriptLevelChange AllTrue Alphabet AlphabeticOrder AlphabeticSort AlphaChannel AlternateImage AlternatingFactorial AlternatingGroup AlternativeHypothesis Alternatives AltitudeMethod AmbientLight AmbiguityFunction AmbiguityList Analytic AnatomyData AnatomyForm AnatomyPlot3D AnatomySkinStyle AnatomyStyling AnchoredSearch And AndersonDarlingTest AngerJ AngleBisector AngleBracket AnglePath AnglePath3D AngleVector AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning AnimationRunTime AnimationTimeIndex Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotate Annotation AnnotationDelete AnnotationNames AnnotationRules AnnotationValue Annuity AnnuityDue Annulus AnomalyDetection AnomalyDetectorFunction Anonymous Antialiasing AntihermitianMatrixQ Antisymmetric AntisymmetricMatrixQ Antonyms AnyOrder AnySubset AnyTrue Apart ApartSquareFree APIFunction Appearance AppearanceElements AppearanceRules AppellF1 Append AppendCheck AppendLayer AppendTo ApplicationIdentificationKey Apply ApplySides ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcCurvature ARCHProcess ArcLength ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Area Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess Around AroundReplace ARProcess Array ArrayComponents ArrayDepth ArrayFilter ArrayFlatten ArrayMesh ArrayPad ArrayPlot ArrayQ ArrayResample ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads ASATriangle Ask AskAppend AskConfirm AskDisplay AskedQ AskedValue AskFunction AskState AskTemplateDisplay AspectRatio AspectRatioFixed Assert AssociateTo Association AssociationFormat AssociationMap AssociationQ AssociationThread AssumeDeterministic Assuming Assumptions AstronomicalData AsymptoticDSolveValue AsymptoticEqual AsymptoticEquivalent AsymptoticGreater AsymptoticGreaterEqual AsymptoticIntegrate AsymptoticLess AsymptoticLessEqual AsymptoticOutputTracker AsymptoticRSolveValue AsymptoticSolve AsymptoticSum Asynchronous AsynchronousTaskObject AsynchronousTasks Atom AtomCoordinates AtomCount AtomDiagramCoordinates AtomList AtomQ AttentionLayer Attributes Audio AudioAmplify AudioAnnotate AudioAnnotationLookup AudioBlockMap AudioCapture AudioChannelAssignment AudioChannelCombine AudioChannelMix AudioChannels AudioChannelSeparate AudioData AudioDelay AudioDelete AudioDevice AudioDistance AudioFade AudioFrequencyShift AudioGenerator AudioIdentify AudioInputDevice AudioInsert AudioIntervals AudioJoin AudioLabel AudioLength AudioLocalMeasurements AudioLooping AudioLoudness AudioMeasurements AudioNormalize AudioOutputDevice AudioOverlay AudioPad AudioPan AudioPartition AudioPause AudioPitchShift AudioPlay AudioPlot AudioQ AudioRecord AudioReplace AudioResample AudioReverb AudioSampleRate AudioSpectralMap AudioSpectralTransformation AudioSplit AudioStop AudioStream AudioStreams AudioTimeStretch AudioTrim AudioType AugmentedPolyhedron AugmentedSymmetricPolynomial Authenticate Authentication AuthenticationDialog AutoAction Autocomplete AutocompletionFunction AutoCopy AutocorrelationTest AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutoQuoteCharacters AutoRefreshed AutoRemove AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords AutoSubmitting Axes AxesEdge AxesLabel AxesOrigin AxesStyle AxiomaticTheory AxisBabyMonsterGroupB Back Background BackgroundAppearance BackgroundTasksSettings Backslash Backsubstitution Backward Ball Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarcodeImage BarcodeRecognize BaringhausHenzeTest BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseDecode BaseEncode BaseForm Baseline BaselinePosition BaseStyle BasicRecurrentLayer BatchNormalizationLayer BatchSize BatesDistribution BattleLemarieWavelet BayesianMaximization BayesianMaximizationObject BayesianMinimization BayesianMinimizationObject Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized Between BetweennessCentrality BeveledPolyhedron BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryDeserialize BinaryDistance BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinarySerialize BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BiquadraticFilterModel BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor BiweightLocation BiweightMidvariance Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockchainAddressData BlockchainBase BlockchainBlockData BlockchainContractValue BlockchainData BlockchainGet BlockchainKeyEncode BlockchainPut BlockchainTokenData BlockchainTransaction BlockchainTransactionData BlockchainTransactionSign BlockchainTransactionSubmit BlockMap BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bond BondCount BondList BondQ Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms BooleanQ BooleanRegion Booleans BooleanStrings BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryDiscretizeGraphics BoundaryDiscretizeRegion BoundaryMesh BoundaryMeshRegion BoundaryMeshRegionQ BoundaryStyle BoundedRegionQ BoundingRegion Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxObject BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break BridgeData BrightnessEqualize BroadcastStationData Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurve3DBoxOptions BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BSplineSurface3DBoxOptions BubbleChart BubbleChart3D BubbleScale BubbleSizes BuildingData BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteArray ByteArrayFormat ByteArrayQ ByteArrayToString ByteCount ByteOrderingC CachedValue CacheGraphics CachePersistence CalendarConvert CalendarData CalendarType Callout CalloutMarker CalloutStyle CallPacket CanberraDistance Cancel CancelButton CandlestickChart CanonicalGraph CanonicalizePolygon CanonicalizePolyhedron CanonicalName CanonicalWarpingCorrespondence CanonicalWarpingDistance CantorMesh CantorStaircase Cap CapForm CapitalDifferentialD Capitalize CapsuleShape CaptureRunning CardinalBSplineBasis CarlemanLinearize CarmichaelLambda CaseOrdering Cases CaseSensitive Cashflow Casoratian Catalan CatalanNumber Catch Catenate CatenateLayer CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling CelestialSystem Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEvaluationLanguage CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellLabelStyle CellLabelTemplate CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterArray CenterDot CentralFeature CentralMoment CentralMomentGeneratingFunction Cepstrogram CepstrogramArray CepstrumArray CForm ChampernowneNumber ChangeOptions ChannelBase ChannelBrokerAction ChannelDatabin ChannelHistoryLength ChannelListen ChannelListener ChannelListeners ChannelListenerWait ChannelObject ChannelPreSendFunction ChannelReceiverFunction ChannelSend ChannelSubscribers ChanVeseBinarize Character CharacterCounts CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterName CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop ChromaticityPlot ChromaticityPlot3D ChromaticPolynomial Circle CircleBox CircleDot CircleMinus CirclePlus CirclePoints CircleThrough CircleTimes CirculantGraph CircularOrthogonalMatrixDistribution CircularQuaternionMatrixDistribution CircularRealMatrixDistribution CircularSymplecticMatrixDistribution CircularUnitaryMatrixDistribution Circumsphere CityData ClassifierFunction ClassifierInformation ClassifierMeasurements ClassifierMeasurementsObject Classify ClassPriors Clear ClearAll ClearAttributes ClearCookies ClearPermissions ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipPlanesStyle ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent CloudAccountData CloudBase CloudConnect CloudDeploy CloudDirectory CloudDisconnect CloudEvaluate CloudExport CloudExpression CloudExpressions CloudFunction CloudGet CloudImport CloudLoggingData CloudObject CloudObjectInformation CloudObjectInformationData CloudObjectNameFormat CloudObjects CloudObjectURLType CloudPublish CloudPut CloudRenderingMethod CloudSave CloudShare CloudSubmit CloudSymbol CloudUnshare ClusterClassify ClusterDissimilarityFunction ClusteringComponents ClusteringTree CMYKColor Coarse CodeAssistOptions Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorBalance ColorCombine ColorConvert ColorCoverage ColorData ColorDataFunction ColorDetect ColorDistance ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQ ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorsNear ColorSpace ColorToneMapping Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CombinedEntityClass CombinerFunction CometData CommonDefaultFormatTypes Commonest CommonestFilter CommonName CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompanyData CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledCodeFunction CompiledFunction CompilerOptions Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComplexListPlot ComplexPlot ComplexPlot3D ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries CompositeQ Composition CompoundElement CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData ComputeUncertainty Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath ConformAudio ConformImages Congruent ConicHullRegion ConicHullRegion3DBox ConicHullRegionBox ConicOptimization Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphComponents ConnectedGraphQ ConnectedMeshComponents ConnectedMoleculeComponents ConnectedMoleculeQ ConnectionSettings ConnectLibraryCallbackFunction ConnectSystemModelComponents ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray ConstantArrayLayer ConstantImage ConstantPlusLayer ConstantRegionQ Constants ConstantTimesLayer ConstellationData ConstrainedMax ConstrainedMin Construct Containing ContainsAll ContainsAny ContainsExactly ContainsNone ContainsOnly ContentFieldOptions ContentLocationFunction ContentObject ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTask ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean ContrastiveLossLayer Control ControlActive ControlAlignment ControlGroupContentsBox ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket ConvexHullMesh ConvexPolygonQ ConvexPolyhedronQ ConvolutionLayer Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CookieFunction Cookies CoordinateBoundingBox CoordinateBoundingBoxArray CoordinateBounds CoordinateBoundsArray CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDatabin CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CountDistinct CountDistinctBy CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Counts CountsBy Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateCellID CreateChannel CreateCloudExpression CreateDatabin CreateDataSystemModel CreateDialog CreateDirectory CreateDocument CreateFile CreateIntermediateDirectories CreateManagedLibraryExpression CreateNotebook CreatePalette CreatePalettePacket CreatePermissionsGroup CreateScheduledTask CreateSearchIndex CreateSystemModel CreateTemporary CreateUUID CreateWindow CriterionFunction CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossEntropyLossLayer CrossingCount CrossingDetect CrossingPolygon CrossMatrix Csc Csch CTCLossLayer Cube CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrencyConvert CurrentDate CurrentImage CurrentlySpeakingPacket CurrentNotebookImage CurrentScreenImage CurrentValue Curry CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecompositionD DagumDistribution DamData DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DatabaseConnect DatabaseDisconnect DatabaseReference Databin DatabinAdd DatabinRemove Databins DatabinUpload DataCompression DataDistribution DataRange DataReversed Dataset Date DateBounds Dated DateDelimiters DateDifference DatedUnit DateFormat DateFunction DateHistogram DateList DateListLogPlot DateListPlot DateListStepPlot DateObject DateObjectQ DateOverlapsQ DatePattern DatePlus DateRange DateReduction DateString DateTicksFormat DateValue DateWithinQ DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayHemisphere DaylightQ DayMatchQ DayName DayNightTerminator DayPlus DayRange DayRound DeBruijnGraph DeBruijnSequence Debug DebugTag Decapitalize Decimal DecimalForm DeclareKnownSymbols DeclarePackage Decompose DeconvolutionLayer Decrement Decrypt DecryptFile DedekindEta DeepSpaceProbeData Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultPrintPrecision DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValue DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod DefineResourceFunction Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic DEigensystem DEigenvalues Deinitialization Del DelaunayMesh Delayed Deletable Delete DeleteAnomalies DeleteBorderComponents DeleteCases DeleteChannel DeleteCloudExpression DeleteContents DeleteDirectory DeleteDuplicates DeleteDuplicatesBy DeleteFile DeleteMissing DeleteObject DeletePermissionsKey DeleteSearchIndex DeleteSmallComponents DeleteStopwords DeleteWithContents DeletionWarning DelimitedArray DelimitedSequence Delimiter DelimiterFlashTime DelimiterMatching Delimiters DeliveryFunction Dendrogram Denominator DensityGraphics DensityHistogram DensityPlot DensityPlot3D DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DerivedKey DescriptorStateSpace DesignMatrix DestroyAfterEvaluation Det DeviceClose DeviceConfigure DeviceExecute DeviceExecuteAsynchronous DeviceObject DeviceOpen DeviceOpenQ DeviceRead DeviceReadBuffer DeviceReadLatest DeviceReadList DeviceReadTimeSeries Devices DeviceStreams DeviceWrite DeviceWriteBuffer DGaussianWavelet DiacriticalPositioning Diagonal DiagonalizableMatrixQ DiagonalMatrix DiagonalMatrixQ Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DictionaryWordQ DifferenceDelta DifferenceOrder DifferenceQuotient DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitalSignature DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralAngle DihedralGroup Dilation DimensionalCombinations DimensionalMeshComponents DimensionReduce DimensionReducerFunction DimensionReduction Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletBeta DirichletCharacter DirichletCondition DirichletConvolve DirichletDistribution DirichletEta DirichletL DirichletLambda DirichletTransform DirichletWindow DisableConsolePrintPacket DisableFormatting DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLimit DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscreteMaxLimit DiscreteMinLimit DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform DiscretizeGraphics DiscretizeRegion Discriminant DisjointQ Disjunction Disk DiskBox DiskMatrix DiskSegment Dispatch DispatchQ DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceMatrix DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers DivideSides Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentGenerator DocumentGeneratorInformation DocumentGeneratorInformationData DocumentGenerators DocumentNotebook DocumentWeightingRules Dodecahedron DomainRegistrationInformation DominantColors DOSTextFormat Dot DotDashed DotEqual DotLayer DotPlusLayer Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DropoutLayer DSolve DSolveValue Dt DualLinearProgramming DualPolyhedron DualSystemsModel DumpGet DumpSave DuplicateFreeQ Duration Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicGeoGraphics DynamicImage DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptionsE EarthImpactData EarthquakeData EccentricityCentrality Echo EchoFunction EclipseType EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeContract EdgeCost EdgeCount EdgeCoverQ EdgeCycleMatrix EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight EdgeWeightedGraphQ Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData ElementwiseLayer ElidedForms Eliminate EliminationOrder Ellipsoid EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmbedCode EmbeddedHTML EmbeddedService EmbeddingLayer EmbeddingObject EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EmptyRegion EnableConsolePrintPacket Enabled Encode Encrypt EncryptedObject EncryptFile End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfBuffer EndOfFile EndOfLine EndOfString EndPackage EngineEnvironment EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entity EntityClass EntityClassList EntityCopies EntityFunction EntityGroup EntityInstance EntityList EntityPrefetch EntityProperties EntityProperty EntityPropertyClass EntityRegister EntityStore EntityStores EntityTypeName EntityUnregister EntityValue Entropy EntropyFilter Environment Epilog EpilogFunction Equal EqualColumns EqualRows EqualTilde EqualTo EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EscapeRadius EstimatedBackground EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerAngles EulerCharacteristic EulerE EulerGamma EulerianGraphQ EulerMatrix EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluateScheduledTask EvaluationBox EvaluationCell EvaluationCompletionAction EvaluationData EvaluationElements EvaluationEnvironment EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels EventSeries ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludedLines ExcludedPhysicalQuantities ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog ExoplanetData Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi ExpirationDate Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportByteArray ExportForm ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpressionUUID ExpToTrig ExtendedEntityClass ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalBundle ExternalCall ExternalDataCharacterEncoding ExternalEvaluate ExternalFunction ExternalFunctionName ExternalObject ExternalOptions ExternalSessionObject ExternalSessions ExternalTypeSignature ExternalValue Extract ExtractArchive ExtractLayer ExtremeValueDistributionFaceForm FaceGrids FaceGridsStyle FacialFeatures Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail Failure FailureAction FailureDistribution FailureQ False FareySequence FARIMAProcess FeatureDistance FeatureExtract FeatureExtraction FeatureExtractor FeatureExtractorFunction FeatureNames FeatureNearest FeatureSpacePlot FeatureSpacePlot3D FeatureTypes FEDisableConsolePrintPacket FeedbackLinearize FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket FetalGrowthData Fibonacci Fibonorial FieldCompletionFunction FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileConvert FileDate FileExistsQ FileExtension FileFormat FileHandler FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameForms FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileSize FileSystemMap FileSystemScan FileTemplate FileTemplateApply FileType FilledCurve FilledCurveBox FilledCurveBoxOptions Filling FillingStyle FillingTransform FilteredEntityClass FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindAnomalies FindArgMax FindArgMin FindChannels FindClique FindClusters FindCookies FindCurvePath FindCycle FindDevices FindDistribution FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEdgeIndependentPaths FindEquationalProof FindEulerianCycle FindExternalEvaluators FindFaces FindFile FindFit FindFormula FindFundamentalCycles FindGeneratingFunction FindGeoLocation FindGeometricConjectures FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindHamiltonianPath FindHiddenMarkovStates FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMatchingColor FindMaximum FindMaximumFlow FindMaxValue FindMeshDefects FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindMoleculeSubstructure FindPath FindPeaks FindPermutation FindPostmanTour FindProcessParameters FindRepeat FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindSpanningTree FindSystemModelEquilibrium FindTextualAnswer FindThreshold FindTransientRepeat FindVertexCover FindVertexCut FindVertexIndependentPaths Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstCase FirstPassageTimeDistribution FirstPosition FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FitRegularization FittedModel FixedOrder FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlattenLayer FlatTopWindow FlipView Floor FlowPolynomial FlushPrintOutputPacket Fold FoldList FoldPair FoldPairList FollowRedirects Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FormControl FormFunction FormLayoutFunction FormObject FormPage FormTheme FormulaData FormulaLookup FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalGaussianNoiseProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameRate FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrenetSerretSystem FrequencySamplingFilterKernel FresnelC FresnelF FresnelG FresnelS Friday FrobeniusNumber FrobeniusSolve FromAbsoluteTime FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS FromEntity FromJulianDate FromLetterNumber FromPolarCoordinates FromRomanNumeral FromSphericalCoordinates FromUnixTime Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullInformationOutputRegulator FullOptions FullRegion FullSimplify Function FunctionCompile FunctionCompileExport FunctionCompileExportByteArray FunctionCompileExportLibrary FunctionCompileExportString FunctionDomain FunctionExpand FunctionInterpolation FunctionPeriod FunctionRange FunctionSpace FussellVeselyImportanceGaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins GalaxyData GalleryView Gamma GammaDistribution GammaRegularized GapPenalty GARCHProcess GatedRecurrentLayer Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianOrthogonalMatrixDistribution GaussianSymplecticMatrixDistribution GaussianUnitaryMatrixDistribution GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateAsymmetricKeyPair GenerateConditions GeneratedCell GeneratedDocumentBinding GenerateDerivedKey GenerateDigitalSignature GenerateDocument GeneratedParameters GeneratedQuantityMagnitudes GenerateHTTPResponse GenerateSecuredAuthenticationKey GenerateSymmetricKey GeneratingFunction GeneratorDescription GeneratorHistoryLength GeneratorOutputType Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeoAntipode GeoArea GeoArraySize GeoBackground GeoBoundingBox GeoBounds GeoBoundsRegion GeoBubbleChart GeoCenter GeoCircle GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDisk GeoDisplacement GeoDistance GeoDistanceList GeoElevationData GeoEntities GeoGraphics GeogravityModelData GeoGridDirectionDifference GeoGridLines GeoGridLinesStyle GeoGridPosition GeoGridRange GeoGridRangePadding GeoGridUnitArea GeoGridUnitDistance GeoGridVector GeoGroup GeoHemisphere GeoHemisphereBoundary GeoHistogram GeoIdentify GeoImage GeoLabels GeoLength GeoListPlot GeoLocation GeologicalPeriodData GeomagneticModelData GeoMarker GeometricAssertion GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricScene GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoModel GeoNearest GeoPath GeoPosition GeoPositionENU GeoPositionXYZ GeoProjection GeoProjectionData GeoRange GeoRangePadding GeoRegionValuePlot GeoResolution GeoScaleBar GeoServer GeoSmoothHistogram GeoStreamPlot GeoStyling GeoStylingImageFunction GeoVariant GeoVector GeoVectorENU GeoVectorPlot GeoVectorXYZ GeoVisibleRegion GeoVisibleRegionBoundary GeoWithinQ GeoZoomLevel GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenAngle GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter GrammarApply GrammarRules GrammarToken Graph Graph3D GraphAssortativity GraphAutomorphismGroup GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel Greater GreaterEqual GreaterEqualLess GreaterEqualThan GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterThan GreaterTilde Green GreenFunction Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupBy GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators Groupings GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain GroupTogetherGrouping GroupTogetherNestedGrouping GrowCutComponents Gudermannian GuidedFilter GumbelDistributionHaarWavelet HadamardMatrix HalfLine HalfNormalDistribution HalfPlane HalfSpace HamiltonianGraphQ HammingDistance HammingWindow HandlerFunctions HandlerFunctionsKeys HankelH1 HankelH2 HankelMatrix HankelTransform HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash Haversine HazardFunction Head HeadCompose HeaderLines Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings Here HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenMarkovProcess HiddenSurface Highlighted HighlightGraph HighlightImage HighlightMesh HighpassFilter HigmanSimsGroupHS HilbertCurve HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HistoricalPeriodData HitMissTransform HITSCentrality HjorthDistribution HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HostLookup HotellingTSquareDistribution HoytDistribution HTMLSave HTTPErrorResponse HTTPRedirect HTTPRequest HTTPRequestData HTTPResponse Hue HumanGrowthData HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyperplane Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestDataI IconData Iconize IconizedObject IconRules Icosahedron Identity IdentityMatrix If IgnoreCase IgnoreDiacritics IgnorePunctuation IgnoreSpellCheck IgnoringInactive Im Image Image3D Image3DProjection Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageApplyIndexed ImageAspectRatio ImageAssemble ImageAugmentationLayer ImageBoundingBoxes ImageCache ImageCacheValid ImageCapture ImageCaptureFunction ImageCases ImageChannels ImageClip ImageCollage ImageColorSpace ImageCompose ImageContainsQ ImageContents ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDisplacements ImageDistance ImageEffect ImageExposureCombine ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageFocusCombine ImageForestingComponents ImageFormattingWidth ImageForwardTransformation ImageGraphics ImageHistogram ImageIdentify ImageInstanceQ ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarker ImageMarkers ImageMeasurements ImageMesh ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImagePosition ImagePreviewFunction ImagePyramid ImagePyramidApply ImageQ ImageRangeCache ImageRecolor ImageReflect ImageRegion ImageResize ImageResolution ImageRestyle ImageRotate ImageRotated ImageSaliencyFilter ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions ImagingDevice ImplicitRegion Implies Import ImportAutoReplacements ImportByteArray ImportOptions ImportString ImprovementImportance In Inactivate Inactive IncidenceGraph IncidenceList IncidenceMatrix IncludeAromaticBonds IncludeConstantBasis IncludeDefinitions IncludeDirectories IncludeFileExtension IncludeGeneratorTasks IncludeHydrogens IncludeInflections IncludeMetaInformation IncludePods IncludeQuantities IncludeRelatedTables IncludeSingularTerm IncludeWindowTimes Increment IndefiniteMatrixQ Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentPhysicalQuantity IndependentUnit IndependentUnitDimension IndependentVertexSetQ Indeterminate IndeterminateThreshold IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers InfiniteLine InfinitePlane Infinity Infix InflationAdjust InflationMethod Information InformationData InformationDataGrid Inherited InheritScope InhomogeneousPoissonProcess InitialEvaluationHistory Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InitializationObjects InitializationValue Initialize InitialSeeding InlineCounterAssignments InlineCounterIncrements InlineRules Inner InnerPolygon InnerPolyhedron Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionFunction InsertionPointObject InsertLinebreaks InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Insphere Install InstallService InstanceNormalizationLayer InString Integer IntegerDigits IntegerExponent IntegerLength IntegerName IntegerPart IntegerPartitions IntegerQ IntegerReverse Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction Interpreter InterpretTemplate InterquartileRange Interrupt InterruptSettings IntersectingQ Intersection Interval IntervalIntersection IntervalMarkers IntervalMarkersStyle IntervalMemberQ IntervalSlider IntervalUnion Into Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHankelTransform InverseHaversine InverseImagePyramid InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InverseMellinTransform InversePermutation InverseRadon InverseRadonTransform InverseSeries InverseShortTimeFourier InverseSpectrogram InverseSurvivalFunction InverseTransformedRegion InverseWaveletTransform InverseWeierstrassP InverseWishartMatrixDistribution InverseZTransform Invisible InvisibleApplication InvisibleTimes IPAddress IrreduciblePolynomialQ IslandData IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemAspectRatio ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcessJaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join JoinAcross Joined JoinedCurve JoinedCurveBox JoinedCurveBoxOptions JoinForm JordanDecomposition JordanModelDecomposition JulianDate JuliaSetBoettcher JuliaSetIterationCount JuliaSetPlot JuliaSetPointsK KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KEdgeConnectedComponents KEdgeConnectedGraphQ KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelFunction KernelMixtureDistribution Kernels Ket Key KeyCollisionFunction KeyComplement KeyDrop KeyDropFrom KeyExistsQ KeyFreeQ KeyIntersection KeyMap KeyMemberQ KeypointStrength Keys KeySelect KeySort KeySortBy KeyTake KeyUnion KeyValueMap KeyValuePattern Khinchin KillProcess KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnapsackSolve KnightTourGraph KnotData KnownUnitQ KochCurve KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter KVertexConnectedComponents KVertexConnectedGraphQLABColor Label Labeled LabeledSlider LabelingFunction LabelingSize LabelStyle LabelVisibility LaguerreL LakeData LambdaComponents LambertW LaminaData LanczosWindow LandauDistribution Language LanguageCategory LanguageData LanguageIdentify LanguageOptions LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCHColor LCM LeaderSize LeafCount LeapYearQ LearnDistribution LearnedDistribution LearningRate LearningRateMultipliers LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessEqualThan LessFullEqual LessGreater LessLess LessSlantEqual LessThan LessTilde LetterCharacter LetterCounts LetterNumber LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryDataType LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox Line3DBoxOptions LinearFilter LinearFractionalOptimization LinearFractionalTransform LinearGradientImage LinearizingTransformationData LinearLayer LinearModelFit LinearOffsetFunction LinearOptimization LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBoxOptions LineBreak LinebreakAdjustments LineBreakChart LinebreakSemicolonWeighting LineBreakWithin LineColor LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRankCentrality LinkRead LinkReadHeld LinkReadyQ Links LinkService LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot ListDensityPlot3D Listen ListFormat ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListSliceContourPlot3D ListSliceDensityPlot3D ListSliceVectorPlot3D ListStepPlot ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalAdaptiveBinarize LocalCache LocalClusteringCoefficient LocalizeDefinitions LocalizeVariables LocalObject LocalObjects LocalResponseNormalizationLayer LocalSubmit LocalSymbol LocalTime LocalTimeZone LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogisticSigmoid LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongestOrderedSequence LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow LongShortTermMemoryLayer Lookup Loopback LoopFreeGraphQ LossFunction LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowerTriangularMatrixQ LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LunarEclipse LUVColor LyapunovSolve LyonsGroupLyMachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MailAddressValidation MailExecute MailFolder MailItem MailReceiverFunction MailResponseFunction MailSearch MailServerConnect MailServerConnection MailSettings MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules ManagedLibraryExpressionID ManagedLibraryExpressionQ MandelbrotSetBoettcher MandelbrotSetDistance MandelbrotSetIterationCount MandelbrotSetMemberQ MandelbrotSetPlot MangoldtLambda ManhattanDistance Manipulate Manipulator MannedSpaceMissionData MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarchenkoPasturDistribution MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicalFunctionData MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixNormalDistribution MatrixPlot MatrixPower MatrixPropertyDistribution MatrixQ MatrixRank MatrixTDistribution Max MaxBend MaxCellMeasure MaxColorDistance MaxDetect MaxDuration MaxExtraBandwidths MaxExtraConditions MaxFeatureDisplacement MaxFeatures MaxFilter MaximalBy Maximize MaxItems MaxIterations MaxLimit MaxMemoryUsed MaxMixtureKernels MaxOverlapFraction MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxTrainingRounds MaxValue MaxwellDistribution MaxWordGap McLaughlinGroupMcL Mean MeanAbsoluteLossLayer MeanAround MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter MeanSquaredLossLayer Median MedianDeviation MedianFilter MedicalTestData Medium MeijerG MeijerGReduce MeixnerDistribution MellinConvolve MellinTransform MemberQ MemoryAvailable MemoryConstrained MemoryConstraint MemoryInUse MengerMesh Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuList MenuPacket MenuSortingValue MenuStyle MenuView Merge MergeDifferences MergingFunction MersennePrimeExponent MersennePrimeExponentQ Mesh MeshCellCentroid MeshCellCount MeshCellHighlight MeshCellIndex MeshCellLabel MeshCellMarker MeshCellMeasure MeshCellQuality MeshCells MeshCellShapeFunction MeshCellStyle MeshCoordinates MeshFunctions MeshPrimitives MeshQualityGoal MeshRange MeshRefinementFunction MeshRegion MeshRegionQ MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageObject MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation MeteorShowerData Method MethodOptions MexicanHatWavelet MeyerWavelet Midpoint Min MinColorDistance MinDetect MineralData MinFilter MinimalBy MinimalPolynomial MinimalStateSpaceModel Minimize MinimumTimeIncrement MinIntervalSize MinkowskiQuestionMark MinLimit MinMax MinorPlanetData Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingBehavior MissingDataMethod MissingDataRules MissingQ MissingString MissingStyle MissingValuePattern MittagLefflerE MixedFractionParts MixedGraphQ MixedMagnitude MixedRadix MixedRadixQuantity MixedUnit MixtureDistribution Mod Modal Mode Modular ModularInverse ModularLambda Module Modulus MoebiusMu Molecule MoleculeContainsQ MoleculeEquivalentQ MoleculeGraph MoleculeModify MoleculePattern MoleculePlot MoleculePlot3D MoleculeProperty MoleculeQ MoleculeValue Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction MomentOfInertia Monday Monitor MonomialList MonomialOrder MonsterGroupM MoonPhase MoonPosition MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform MortalityData Most MountainData MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovieData MovingAverage MovingMap MovingMedian MoyalDistribution Multicolumn MultiedgeStyle MultigraphQ MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity MultiplySides Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistributionN NakagamiDistribution NameQ Names NamespaceBox NamespaceBoxOptions Nand NArgMax NArgMin NBernoulliB NBodySimulation NBodySimulationData NCache NDEigensystem NDEigenvalues NDSolve NDSolveValue Nearest NearestFunction NearestNeighborGraph NearestTo NebulaData NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeDefiniteMatrixQ NegativeIntegers NegativeMultinomialDistribution NegativeRationals NegativeReals NegativeSemidefiniteMatrixQ NeighborhoodData NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestGraph NestList NestWhile NestWhileList NetAppend NetBidirectionalOperator NetChain NetDecoder NetDelete NetDrop NetEncoder NetEvaluationMode NetExtract NetFlatten NetFoldOperator NetGraph NetInformation NetInitialize NetInsert NetInsertSharedArrays NetJoin NetMapOperator NetMapThreadOperator NetMeasurements NetModel NetNestOperator NetPairEmbeddingOperator NetPort NetPortGradient NetPrepend NetRename NetReplace NetReplacePart NetSharedArray NetStateObject NetTake NetTrain NetTrainResultsObject NetworkPacketCapture NetworkPacketRecording NetworkPacketRecordingDuring NetworkPacketTrace NeumannValue NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextCell NextDate NextPrime NextScheduledTaskTime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NightHemisphere NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants NondimensionalizationTransform None NoneTrue NonlinearModelFit NonlinearStateSpaceModel NonlocalMeansFilter NonNegative NonNegativeIntegers NonNegativeRationals NonNegativeReals NonPositive NonPositiveIntegers NonPositiveRationals NonPositiveReals Nor NorlundB Norm Normal NormalDistribution NormalGrouping NormalizationLayer Normalize Normalized NormalizedSquaredEuclideanDistance NormalMatrixQ NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookImport NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookTemplate NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde Nothing NotHumpDownHump NotHumpEqual NotificationFunction NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar Now NoWhitespace NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms NuclearExplosionData NuclearReactorData Null NullRecords NullSpace NullWords Number NumberCompose NumberDecompose NumberExpand NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberLinePlot NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumeratorDenominator NumericalOrder NumericalSort NumericArray NumericArrayQ NumericArrayType NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlotO ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OceanData Octahedron OddQ Off Offset OLEData On ONanGroupON Once OneIdentity Opacity OpacityFunction OpacityFunctionScaling Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionalElement OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering OrderingBy OrderingLayer Orderless OrderlessPatternSequence OrnsteinUhlenbeckProcess Orthogonalize OrthogonalMatrixQ Out Outer OuterPolygon OuterPolyhedron OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OverwriteTarget OwenT OwnValuesPackage PackingMethod PaddedForm Padding PaddingLayer PaddingSize PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageTheme PageWidth Pagination PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath PalindromeQ Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo Parallelepiped ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds Parallelogram ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParametricRegion ParentBox ParentCell ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParentNotebook ParetoDistribution ParetoPickandsDistribution ParkData Part PartBehavior PartialCorrelationFunction PartialD ParticleAcceleratorData ParticleData Partition PartitionGranularity PartitionsP PartitionsQ PartLayer PartOfSpeech PartProtection ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteAutoQuoteCharacters PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PeakDetect PeanoCurve PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PercentForm PerfectNumber PerfectNumberQ PerformanceGoal Perimeter PeriodicBoundaryCondition PeriodicInterpolation Periodogram PeriodogramArray Permanent Permissions PermissionsGroup PermissionsGroupMemberQ PermissionsGroups PermissionsKey PermissionsKeys PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PerpendicularBisector PersistenceLocation PersistenceTime PersistentObject PersistentObjects PersistentValue PersonData PERTDistribution PetersenGraph PhaseMargins PhaseRange PhysicalSystemData Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest PingTime Pink PitchRecognize Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarAngle PlanarGraph PlanarGraphQ PlanckRadiationLaw PlaneCurveData PlanetaryMoonData PlanetData PlantData Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLabels PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangeClipPlanesStyle PlotRangePadding PlotRegion PlotStyle PlotTheme Pluralize Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox Point3DBoxOptions PointBox PointBoxOptions PointFigureChart PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonalNumber PolygonAngle PolygonBox PolygonBoxOptions PolygonCoordinates PolygonDecomposition PolygonHoleScale PolygonIntersections PolygonScale Polyhedron PolyhedronAngle PolyhedronCoordinates PolyhedronData PolyhedronDecomposition PolyhedronGenus PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PoolingLayer PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position PositionIndex Positive PositiveDefiniteMatrixQ PositiveIntegers PositiveRationals PositiveReals PositiveSemidefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerRange PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement Predict PredictionRoot PredictorFunction PredictorInformation PredictorMeasurements PredictorMeasurementsObject PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependLayer PrependTo PreprocessingRules PreserveColor PreserveImageOptions Previous PreviousCell PreviousDate PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitivePolynomialQ PrimitiveRoot PrimitiveRootList PrincipalComponents PrincipalValue Print PrintableASCIIQ PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment Printout3D Printout3DPreviewer PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateKey PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessConnection ProcessDirectory ProcessEnvironment Processes ProcessEstimator ProcessInformation ProcessObject ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessStatus ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm ProofObject Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse PsychrometricPropertyData PublicKey PublisherID PulsarData PunctuationCharacter Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptionsQBinomial QFactorial QGamma QHypergeometricPFQ QnDispersion QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ QuadraticOptimization Quantile QuantilePlot Quantity QuantityArray QuantityDistribution QuantityForm QuantityMagnitude QuantityQ QuantityUnit QuantityVariable QuantityVariableCanonicalUnit QuantityVariableDimensions QuantityVariableIdentifier QuantityVariablePhysicalQuantity Quartics QuartileDeviation Quartiles QuartileSkewness Query QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainderRadialGradientImage RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RadonTransform RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Ramp Random RandomChoice RandomColor RandomComplex RandomEntity RandomFunction RandomGeoPosition RandomGraph RandomImage RandomInstance RandomInteger RandomPermutation RandomPoint RandomPolygon RandomPolyhedron RandomPrime RandomReal RandomSample RandomSeed RandomSeeding RandomVariate RandomWalkProcess RandomWord Range RangeFilter RangeSpecification RankedMax RankedMin RarerProbability Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadByteArray ReadLine ReadList ReadProtected ReadString Real RealAbs RealBlockDiagonalForm RealDigits RealExponent Reals RealSign Reap RecognitionPrior RecognitionThreshold Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RectangularRepeatingElement RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate Region RegionBinarize RegionBoundary RegionBounds RegionCentroid RegionDifference RegionDimension RegionDisjoint RegionDistance RegionDistanceFunction RegionEmbeddingDimension RegionEqual RegionFunction RegionImage RegionIntersection RegionMeasure RegionMember RegionMemberFunction RegionMoment RegionNearest RegionNearestFunction RegionPlot RegionPlot3D RegionProduct RegionQ RegionResize RegionSize RegionSymmetricDifference RegionUnion RegionWithin RegisterExternalEvaluator RegularExpression Regularization RegularlySampledQ RegularPolygon ReIm ReImLabels ReImPlot ReImStyle Reinstall RelationalDatabase RelationGraph Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot RemoteAuthorizationCaching RemoteConnect RemoteConnectionObject RemoteFile RemoteRun RemoteRunProcess Remove RemoveAlphaChannel RemoveAsynchronousTask RemoveAudioStream RemoveBackground RemoveChannelListener RemoveChannelSubscribers Removed RemoveDiacritics RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RemoveUsers RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart RepairMesh Repeated RepeatedNull RepeatedString RepeatedTiming RepeatingElement Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated ReplicateLayer RequiredPhysicalQuantities Resampling ResamplingAlgorithmData ResamplingMethod Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask ReshapeLayer Residue ResizeLayer Resolve ResourceAcquire ResourceData ResourceFunction ResourceObject ResourceRegister ResourceRemove ResourceSearch ResourceSubmissionObject ResourceSubmit ResourceSystemBase ResourceUpdate ResponseForm Rest RestartInterval Restricted Resultant ResumePacket Return ReturnEntersInput ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnReceiptFunction ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseSort ReverseSortBy ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ RiemannXi Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightComposition RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity RollPitchYawAngles RollPitchYawMatrix RomanNumeral Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RSolveValue RudinShapiro RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulePlot RulerUnits Run RunProcess RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilaritySameQ SameTest SampledEntityClass SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SASTriangle SatelliteData SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveConnection SaveDefinitions SavitzkyGolayMatrix SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTask ScheduledTaskActiveQ ScheduledTaskInformation ScheduledTaskInformationData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScientificNotationThreshold ScorerGi ScorerGiPrime ScorerHi ScorerHiPrime ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptForm ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition SearchAdjustment SearchIndexObject SearchIndices SearchQueryString SearchResultObject Sec Sech SechDistribution SecondOrderConeOptimization SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SecuredAuthenticationKey SecuredAuthenticationKeys SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook SelectFirst Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemanticImport SemanticImportString SemanticInterpretation SemialgebraicComponentInstances SemidefiniteOptimization SendMail SendMessage Sequence SequenceAlignment SequenceAttentionLayer SequenceCases SequenceCount SequenceFold SequenceFoldList SequenceForm SequenceHold SequenceLastLayer SequenceMostLayer SequencePosition SequencePredict SequencePredictorFunction SequenceReplace SequenceRestLayer SequenceReverseLayer SequenceSplit Series SeriesCoefficient SeriesData ServiceConnect ServiceDisconnect ServiceExecute ServiceObject ServiceRequest ServiceResponse ServiceSubmit SessionSubmit SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetCloudDirectory SetCookies SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPermissions SetPrecision SetProperty SetSecuredAuthenticationKey SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemModel SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetUsers SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share SharingList Sharpen ShearingMatrix ShearingTransform ShellRegion ShenCastanMatrix ShiftedGompertzDistribution ShiftRegisterSequence Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortTimeFourier ShortTimeFourierData ShortUpArrow Show ShowAutoConvert ShowAutoSpellCheck ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowCodeAssist ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiderealTime SiegelTheta SiegelTukeyTest SierpinskiCurve SierpinskiMesh Sign Signature SignedRankTest SignedRegionDistance SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ SimplePolygonQ SimplePolyhedronQ Simplex Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution SkinStyle Skip SliceContourPlot3D SliceDensityPlot3D SliceDistribution SliceVectorPlot3D Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDecomposition SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SnDispersion Snippet SnubPolyhedron SocialMediaData Socket SocketConnect SocketListen SocketListener SocketObject SocketOpen SocketReadMessage SocketReadyQ Sockets SocketWaitAll SocketWaitNext SoftmaxLayer SokalSneathDissimilarity SolarEclipse SolarSystemFeatureData SolidAngle SolidData SolidRegionQ Solve SolveAlways SolveDelayed Sort SortBy SortedBy SortedEntityClass Sound SoundAndGraphics SoundNote SoundVolume SourceLink Sow Space SpaceCurveData SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution SpatialMedian SpatialTransformationLayer Speak SpeakTextPacket SpearmanRankTest SpearmanRho SpeciesData SpecificityGoal SpectralLineData Spectrogram SpectrogramArray Specularity SpeechRecognize SpeechSynthesize SpellingCorrection SpellingCorrectionList SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SpherePoints SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SphericalShell SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquareMatrixQ SquareRepeatingElement SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave SSSTriangle StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackedDateListPlot StackedListPlot StackInhibit StadiumShape StandardAtmosphereData StandardDeviation StandardDeviationFilter StandardForm Standardize Standardized StandardOceanData StandbyDistribution Star StarClusterData StarData StarGraph StartAsynchronousTask StartExternalSession StartingStepSize StartOfLine StartOfString StartProcess StartScheduledTask StartupSound StartWebSession StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StateTransformationLinearize StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StereochemistryElements StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StoppingPowerData StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamMarkers StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringContainsQ StringCount StringDelete StringDrop StringEndsQ StringExpression StringExtract StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPadLeft StringPadRight StringPart StringPartition StringPosition StringQ StringRepeat StringReplace StringReplaceList StringReplacePart StringReverse StringRiffle StringRotateLeft StringRotateRight StringSkeleton StringSplit StringStartsQ StringTake StringTemplate StringToByteArray StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleData StyleDefinitions StyleForm StyleHints StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subdivide Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subsequences Subset SubsetEqual SubsetMap SubsetQ Subsets SubStar SubstitutionSystem Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubtractSides SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde Success SuchThat Sum SumConvergence SummationLayer Sunday SunPosition Sunrise Sunset SuperDagger SuperMinus SupernovaData SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceArea SurfaceColor SurfaceData SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricKey SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Synonyms Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SynthesizeMissingValues SystemDialogInput SystemException SystemGet SystemHelpPath SystemInformation SystemInformationData SystemInstall SystemModel SystemModeler SystemModelExamples SystemModelLinearize SystemModelParametricSimulate SystemModelPlot SystemModelProgressReporting SystemModelReliability SystemModels SystemModelSimulate SystemModelSimulateSensitivity SystemModelSimulationData SystemOpen SystemOptions SystemProcessData SystemProcesses SystemsConnectionsModel SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelLinearity SystemsModelMerge SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemsModelVectorRelativeOrders SystemStub SystemTestTab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TableViewBoxBackground TableViewBoxOptions TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeDrop TakeLargest TakeLargestBy TakeList TakeSmallest TakeSmallestBy TakeWhile Tally Tan Tanh TargetDevice TargetFunctions TargetSystem TargetUnits TaskAbort TaskExecute TaskObject TaskRemove TaskResume Tasks TaskSuspend TaskWait TautologyQ TelegraphProcess TemplateApply TemplateArgBox TemplateBox TemplateBoxOptions TemplateEvaluate TemplateExpression TemplateIf TemplateObject TemplateSequence TemplateSlot TemplateSlotSequence TemplateUnevaluated TemplateVerbatim TemplateWith TemporalData TemporalRegularity Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge TestID TestReport TestReportObject TestResultObject Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCases TextCell TextClipboardType TextContents TextData TextElement TextForm TextGrid TextJustification TextLine TextPacket TextParagraph TextPosition TextRecognize TextSearch TextSearchReport TextSentences TextString TextStructure TextStyle TextTranslation Texture TextureCoordinateFunction TextureCoordinateScaling TextWords Therefore ThermodynamicData ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreadingLayer ThreeJSymbol Threshold Through Throw ThueMorse Thumbnail Thursday Ticks TicksStyle TideData Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint TimeDirection TimeFormat TimeGoal TimelinePlot TimeObject TimeObjectQ Times TimesBy TimeSeries TimeSeriesAggregate TimeSeriesForecast TimeSeriesInsert TimeSeriesInvertibility TimeSeriesMap TimeSeriesMapThread TimeSeriesModel TimeSeriesModelFit TimeSeriesResample TimeSeriesRescale TimeSeriesShift TimeSeriesThread TimeSeriesWindow TimeUsed TimeValue TimeWarpingCorrespondence TimeWarpingDistance TimeZone TimeZoneConvert TimeZoneOffset Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate Today ToDiscreteTimeModel ToEntity ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase Tomorrow ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform ToPolarCoordinates TopologicalSort ToRadicals ToRules ToSphericalCoordinates ToString Total TotalHeight TotalLayer TotalVariationFilter TotalWidth TouchPosition TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TrackingFunction TracyWidomDistribution TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TrainingProgressCheckpointing TrainingProgressFunction TrainingProgressMeasurements TrainingProgressReporting TrainingStoppingCriterion TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationClass TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField TransformedProcess TransformedRegion TransitionDirection TransitionDuration TransitionEffect TransitiveClosureGraph TransitiveReductionGraph Translate TranslationOptions TranslationTransform Transliterate Transparent TransparentColor Transpose TransposeLayer TrapSelection TravelDirections TravelDirectionsData TravelDistance TravelDistanceList TravelMethod TravelTime TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle Triangle TriangleCenter TriangleConstruct TriangleMeasurement TriangleWave TriangularDistribution TriangulateMesh Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean TrimmedVariance TropicalStormData True TrueQ TruncatedDistribution TruncatedPolyhedron TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBoxOptions TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow TunnelData Tuples TuranGraph TuringMachine TuttePolynomial TwoWayRule Typed TypeSpecifierUnateQ Uncompress UnconstrainedParameters Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UnderseaFeatureData UndirectedEdge UndirectedGraph UndirectedGraphQ UndoOptions UndoTrackedVariables Unequal UnequalTo Unevaluated UniformDistribution UniformGraphDistribution UniformPolyhedron UniformSumDistribution Uninstall Union UnionPlus Unique UnitaryMatrixQ UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitSystem UnitTriangle UnitVector UnitVectorLayer UnityDimensions UniverseModelData UniversityData UnixTime Unprotect UnregisterExternalEvaluator UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpdateSearchIndex UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize UpperTriangularMatrixQ Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpTo UpValues URL URLBuild URLDecode URLDispatcher URLDownload URLDownloadSubmit URLEncode URLExecute URLExpand URLFetch URLFetchAsynchronous URLParse URLQueryDecode URLQueryEncode URLRead URLResponseTime URLSave URLSaveAsynchronous URLShorten URLSubmit UseGraphicsRange UserDefinedWavelet Using UsingFrontEnd UtilityFunctionV2Get ValenceErrorHandling ValidationLength ValidationSet Value ValueBox ValueBoxOptions ValueDimensions ValueForm ValuePreprocessingFunction ValueQ Values ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorAround VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorGreater VectorGreaterEqual VectorLess VectorLessEqual VectorMarkers VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerificationTest VerifyConvergence VerifyDerivedKey VerifyDigitalSignature VerifyInterpretation VerifySecurityCertificates VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexContract VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight VertexWeightedGraphQ Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewProjection ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoiceStyleData VoigtDistribution VolcanoData Volume VonMisesDistribution VoronoiMeshWaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WarpingCorrespondence WarpingDistance WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeatherForecastData WebAudioSearch WebElementObject WeberE WebExecute WebImage WebImageSearch WebSearch WebSessionObject WebSessions WebWindowObject Wedge Wednesday WeibullDistribution WeierstrassE1 WeierstrassE2 WeierstrassE3 WeierstrassEta1 WeierstrassEta2 WeierstrassEta3 WeierstrassHalfPeriods WeierstrassHalfPeriodW1 WeierstrassHalfPeriodW2 WeierstrassHalfPeriodW3 WeierstrassInvariantG2 WeierstrassInvariantG3 WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White WhiteNoiseProcess WhitePoint Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WikipediaData WikipediaSearch WilksW WilksWTest WindDirectionData WindingCount WindingPolygon WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowPersistentStyles WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth WindSpeedData WindVectorData WinsorizedMean WinsorizedVariance WishartMatrixDistribution With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult WolframLanguageData Word WordBoundary WordCharacter WordCloud WordCount WordCounts WordData WordDefinition WordFrequency WordFrequencyData WordList WordOrientation WordSearch WordSelectionFunction WordSeparators WordSpacings WordStem WordTranslation WorkingPrecision WrapAround Write WriteLine WriteString WronskianXMLElement XMLObject XMLTemplate Xnor Xor XYZColorYellow Yesterday YuleDissimilarityZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZIPCodeData ZipfDistribution ZoomCenter ZoomFactor ZTest ZTransform$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AllowExternalChannelFunctions $AssertFunction $Assumptions $AsynchronousTask $AudioInputDevices $AudioOutputDevices $BaseDirectory $BatchInput $BatchOutput $BlockchainBase $BoxForms $ByteOrdering $CacheBaseDirectory $Canceled $ChannelBase $CharacterEncoding $CharacterEncodings $CloudBase $CloudConnected $CloudCreditsAvailable $CloudEvaluation $CloudExpressionBase $CloudObjectNameFormat $CloudObjectURLType $CloudRootDirectory $CloudSymbolBase $CloudUserID $CloudUserUUID $CloudVersion $CloudVersionNumber $CloudWolframEngineVersionNumber $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $Cookies $CookieStore $CreationDate $CurrentLink $CurrentTask $CurrentWebSession $DateStringFormat $DefaultAudioInputDevice $DefaultAudioOutputDevice $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultLocalBase $DefaultMailbox $DefaultNetworkInterface $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $EmbedCodeEnvironments $EmbeddableServices $EntityStores $Epilog $EvaluationCloudBase $EvaluationCloudObject $EvaluationEnvironment $ExportFormats $Failed $FinancialDataSource $FontFamilies $FormatType $FrontEnd $FrontEndSession $GeoEntityTypes $GeoLocation $GeoLocationCity $GeoLocationCountry $GeoLocationPrecision $GeoLocationSource $HistoryLength $HomeDirectory $HTMLExportRules $HTTPCookies $HTTPRequest $IgnoreEOF $ImageFormattingWidth $ImagingDevice $ImagingDevices $ImportFormats $IncomingMailSettings $InitialDirectory $Initialization $InitializationContexts $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $InterpreterTypes $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $LocalBase $LocalSymbolBase $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $MobilePhone $ModuleNumber $NetworkConnected $NetworkInterfaces $NetworkLicense $NewMessage $NewSymbol $Notebooks $NoValue $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $Permissions $PermissionsGroupBase $PersistenceBase $PersistencePath $PipeSupported $PlotTheme $Post $Pre $PreferencesDirectory $PreInitialization $PrePrint $PreRead $PrintForms $PrintLiteral $Printout3DPreviewer $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $PublisherID $RandomState $RecursionLimit $RegisteredDeviceClasses $RegisteredUserName $ReleaseNumber $RequesterAddress $RequesterWolframID $RequesterWolframUUID $ResourceSystemBase $RootDirectory $ScheduledTask $ScriptCommandLine $ScriptInputString $SecuredAuthenticationKeyTokens $ServiceCreditsAvailable $Services $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SourceLink $SSHAuthentication $SummaryBoxDataSizeLimit $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemMemory $SystemShell $SystemTimeZone $SystemWordLength $TemplatePath $TemporaryDirectory $TemporaryPrefix $TestFileName $TextStyle $TimedOut $TimeUnit $TimeZone $TimeZoneEntity $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $UnitSystem $Urgent $UserAddOnsDirectory $UserAgentLanguages $UserAgentMachine $UserAgentName $UserAgentOperatingSystem $UserAgentString $UserAgentVersion $UserBaseDirectory $UserDocumentsDirectory $Username $UserName $UserURLBase $Version $VersionNumber $VoiceStyles $WolframID $WolframUUID",contains:[e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("matlab",function(e){var t={relevance:0,contains:[{begin:"('|\\.')+"}]};return{keywords:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell "},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}]},{className:"built_in",begin:/true|false/,relevance:0,starts:t},{begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number",begin:e.C_NUMBER_RE,relevance:0,starts:t},{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|}|\)/,relevance:0,starts:t},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}],starts:t},e.COMMENT("^\\s*\\%\\{\\s*$","^\\s*\\%\\}\\s*$"),e.COMMENT("\\%","$")]}}),We.registerLanguage("maxima",function(e){return{lexemes:"[A-Za-z_%][0-9A-Za-z_%]*",keywords:{keyword:"if then else elseif for thru do while unless step in and or not",literal:"true false unknown inf minf ind und %e %i %pi %phi %gamma",built_in:" abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest",symbol:"_ __ %|0 %%|0"},contains:[{className:"comment",begin:"/\\*",end:"\\*/",contains:["self"]},e.QUOTE_STRING_MODE,{className:"number",relevance:0,variants:[{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b"},{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b",relevance:10},{begin:"\\b(\\.\\d+|\\d+\\.\\d+)\\b"},{begin:"\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b"}]}],illegal:/@/}}),We.registerLanguage("mel",function(e){return{keywords:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",illegal:"</",contains:[e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"[\\$\\%\\@](\\^\\w\\b|#\\w+|[^\\s\\w{]|{\\w+}|\\w+)"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("mercury",function(e){var t=e.COMMENT("%","$"),n=e.inherit(e.APOS_STRING_MODE,{relevance:0}),r=e.inherit(e.QUOTE_STRING_MODE,{relevance:0});r.contains.push({className:"subst",begin:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",relevance:0});return{aliases:["m","moo"],keywords:{keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure",meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing",built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure"},contains:[{className:"built_in",variants:[{begin:"<=>"},{begin:"<=",relevance:0},{begin:"=>",relevance:0},{begin:"/\\\\"},{begin:"\\\\/"}]},{className:"built_in",variants:[{begin:":-\\|--\x3e"},{begin:"=",relevance:0}]},t,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"0'.\\|0[box][0-9a-fA-F]*"},e.NUMBER_MODE,n,r,{begin:/:-/},{begin:/\.$/}]}}),We.registerLanguage("mipsasm",function(e){return{case_insensitive:!0,aliases:["mips"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ",built_in:"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt "},contains:[{className:"keyword",begin:"\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(.hb)?|jr(.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs.[sd]|add.[sd]|alnv.ps|bc1[ft]l?|c.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et]).[sd]|(ceil|floor|round|trunc).[lw].[sd]|cfc1|cvt.d.[lsw]|cvt.l.[dsw]|cvt.ps.s|cvt.s.[dlw]|cvt.s.p[lu]|cvt.w.[dls]|div.[ds]|ldx?c1|luxc1|lwx?c1|madd.[sd]|mfc1|mov[fntz]?.[ds]|msub.[sd]|mth?c1|mul.[ds]|neg.[ds]|nmadd.[ds]|nmsub.[ds]|p[lu][lu].ps|recip.fmt|r?sqrt.[ds]|sdx?c1|sub.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)",end:"\\s"},e.COMMENT("[;#](?!s*$)","$"),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"0x[0-9a-f]+"},{begin:"\\b-?\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^\\s*[0-9]+:"},{begin:"[0-9]+[bf]"}],relevance:0}],illegal:"/"}}),We.registerLanguage("mizar",function(e){return{keywords:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity",contains:[e.COMMENT("::","$")]}}),We.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",n={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:t},r={begin:"->{",end:"}"},a={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,n,a],o=[a,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),r,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return n.contains=o,r.contains=o,{aliases:["pl","pm"],lexemes:/[\w\.]+/,keywords:t,contains:o}}),We.registerLanguage("mojolicious",function(e){return{subLanguage:"xml",contains:[{className:"meta",begin:"^__(END|DATA)__$"},{begin:"^\\s*%{1,2}={0,2}",end:"$",subLanguage:"perl"},{begin:"<%{1,2}={0,2}",end:"={0,1}%>",subLanguage:"perl",excludeBegin:!0,excludeEnd:!0}]}}),We.registerLanguage("monkey",function(e){var t={className:"number",relevance:0,variants:[{begin:"[$][a-fA-F0-9]+"},e.NUMBER_MODE]};return{case_insensitive:!0,keywords:{keyword:"public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import",built_in:"DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI",literal:"true false null and or shl shr mod"},illegal:/\/\*/,contains:[e.COMMENT("#rem","#end"),e.COMMENT("'","$",{relevance:0}),{className:"function",beginKeywords:"function method",end:"[(=:]|$",illegal:/\n/,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"$",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{className:"built_in",begin:"\\b(self|super)\\b"},{className:"meta",begin:"\\s*#",end:"$",keywords:{"meta-keyword":"if else elseif endif end then"}},{className:"meta",begin:"^\\s*strict\\b"},{beginKeywords:"alias",end:"=",contains:[e.UNDERSCORE_TITLE_MODE]},e.QUOTE_STRING_MODE,t]}}),We.registerLanguage("moonscript",function(e){var t={keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",literal:"true false nil",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},a=[e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"built_in",begin:"@__"+e.IDENT_RE},{begin:"@"+e.IDENT_RE},{begin:e.IDENT_RE+"\\\\"+e.IDENT_RE}];r.contains=a;var i=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["moon"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("--","$"),{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,o]},{begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[o]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{className:"name",begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}),We.registerLanguage("n1ql",function(e){return{case_insensitive:!0,contains:[{beginKeywords:"build create index delete drop explain infer|10 insert merge prepare select update upsert|10",end:/;/,endsWithParent:!0,keywords:{keyword:"all alter analyze and any array as asc begin between binary boolean break bucket build by call case cast cluster collate collection commit connect continue correlate cover create database dataset datastore declare decrement delete derived desc describe distinct do drop each element else end every except exclude execute exists explain fetch first flatten for force from function grant group gsi having if ignore ilike in include increment index infer inline inner insert intersect into is join key keys keyspace known last left let letting like limit lsm map mapping matched materialized merge minus namespace nest not number object offset on option or order outer over parse partition password path pool prepare primary private privilege procedure public raw realm reduce rename return returning revoke right role rollback satisfies schema select self semi set show some start statistics string system then to transaction trigger truncate under union unique unknown unnest unset update upsert use user using validate value valued values via view when where while with within work xor",literal:"true false null missing|5",built_in:"array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"symbol",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE],relevance:2},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("nginx",function(e){var t={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},n={endsWithParent:!0,lexemes:"[a-z/_]+",keywords:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[t]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},t]};return{aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:n}],relevance:0}],illegal:"[^\\s\\}]"}}),We.registerLanguage("nimrod",function(e){return{aliases:["nim"],keywords:{keyword:"addr and as asm bind block break case cast const continue converter discard distinct div do elif else end enum except export finally for from generic if import in include interface is isnot iterator let macro method mixin mod nil not notin object of or out proc ptr raise ref return shl shr static template try tuple type using var when while with without xor yield",literal:"shared guarded stdin stdout stderr result true false",built_in:"int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool char string cstring pointer expr stmt void auto any range array openarray varargs seq set clong culong cchar cschar cshort cint csize clonglong cfloat cdouble clongdouble cuchar cushort cuint culonglong cstringarray semistatic"},contains:[{className:"meta",begin:/{\./,end:/\.}/,relevance:10},{className:"string",begin:/[a-zA-Z]\w*"/,end:/"/,contains:[{begin:/""/}]},{className:"string",begin:/([a-zA-Z]\w*)?"""/,end:/"""/},e.QUOTE_STRING_MODE,{className:"type",begin:/\b[A-Z]\w+\b/,relevance:0},{className:"number",relevance:0,variants:[{begin:/\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},{begin:/\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/}]},e.HASH_COMMENT_MODE]}}),We.registerLanguage("nix",function(e){var t={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},n={className:"subst",begin:/\$\{/,end:/}/,keywords:t},r={className:"string",contains:[n],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}]},a=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/\S+/}]}];return n.contains=a,{aliases:["nixos"],keywords:t,contains:a}}),We.registerLanguage("nsis",function(e){var t={className:"variable",begin:/\$+{[\w\.:-]+}/},n={className:"variable",begin:/\$+\w+/,illegal:/\(\){}/},r={className:"variable",begin:/\$+\([\w\^\.:-]+\)/},a={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"},{begin:"`",end:"`"}],illegal:/\n/,contains:[{className:"meta",begin:/\$(\\[nrt]|\$)/},{className:"variable",begin:/\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/},t,n,r]};return{case_insensitive:!1,keywords:{keyword:"Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle",literal:"admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib"},contains:[e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),{className:"function",beginKeywords:"Function PageEx Section SectionGroup",end:"$"},a,{className:"keyword",begin:/\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/},t,n,r,{className:"params",begin:"(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)"},{className:"class",begin:/\w+\:\:\w+/},e.NUMBER_MODE]}}),We.registerLanguage("objectivec",function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],keywords:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},lexemes:t,illegal:"</",contains:[{className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"}]},{className:"meta",begin:"#",end:"$",contains:[{className:"meta-string",variants:[{begin:'"',end:'"'},{begin:"<",end:">"}]}]},{className:"class",begin:"("+n.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:n,lexemes:t,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}),We.registerLanguage("ocaml",function(e){return{aliases:["ml"],keywords:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}}),We.registerLanguage("openscad",function(e){var t={className:"keyword",begin:"\\$(f[asn]|t|vp[rtd]|children)"},n={className:"number",begin:"\\b\\d+(\\.\\d+)?(e-?\\d+)?",relevance:0},r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),a={className:"function",beginKeywords:"module function",end:"\\=|\\{",contains:[{className:"params",begin:"\\(",end:"\\)",contains:["self",n,r,t,{className:"literal",begin:"false|true|PI|undef"}]},e.UNDERSCORE_TITLE_MODE]};return{aliases:["scad"],keywords:{keyword:"function module include use for intersection_for if else \\%",literal:"false true PI undef",built_in:"circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"meta",keywords:{"meta-keyword":"include use"},begin:"include|use <",end:">"},r,t,{begin:"[*!#%]",relevance:0},a]}}),We.registerLanguage("oxygene",function(e){var t="abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained",n=e.COMMENT("{","}",{relevance:0}),r=e.COMMENT("\\(\\*","\\*\\)",{relevance:10}),a={className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},i={className:"string",begin:"(#\\d+)+"},o={className:"function",beginKeywords:"function constructor destructor procedure method",end:"[:;]",keywords:"function constructor|10 destructor|10 procedure|10 method|10",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",keywords:t,contains:[a,i]},n,r]};return{case_insensitive:!0,lexemes:/\.?\w+/,keywords:t,illegal:'("|\\$[G-Zg-z]|\\/\\*|</|=>|->)',contains:[n,r,e.C_LINE_COMMENT_MODE,a,i,e.NUMBER_MODE,o,{className:"class",begin:"=\\bclass\\b",end:"end;",keywords:t,contains:[a,i,n,r,e.C_LINE_COMMENT_MODE,o]}]}}),We.registerLanguage("parser3",function(e){var t=e.COMMENT("{","}",{contains:["self"]});return{subLanguage:"xml",relevance:0,contains:[e.COMMENT("^#","$"),e.COMMENT("\\^rem{","}",{relevance:10,contains:[t]}),{className:"meta",begin:"^@(?:BASE|USE|CLASS|OPTIONS)$",relevance:10},{className:"title",begin:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{className:"variable",begin:"\\$\\{?[\\w\\-\\.\\:]+\\}?"},{className:"keyword",begin:"\\^[\\w\\-\\.\\:]+"},{className:"number",begin:"\\^#[0-9a-fA-F]+"},e.C_NUMBER_MODE]}}),We.registerLanguage("pf",function(e){return{aliases:["pf.conf"],lexemes:/[a-z0-9_<>-]+/,keywords:{built_in:"block match pass load anchor|5 antispoof|10 set table",keyword:"in out log quick on rdomain inet inet6 proto from port os to routeallow-opts divert-packet divert-reply divert-to flags group icmp-typeicmp6-type label once probability recieved-on rtable prio queuetos tag tagged user keep fragment for os dropaf-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robinsource-hash static-portdup-to reply-to route-toparent bandwidth default min max qlimitblock-policy debug fingerprints hostid limit loginterface optimizationreassemble ruleset-optimization basic none profile skip state-defaultsstate-policy timeoutconst counters persistno modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppysource-track global rule max-src-nodes max-src-states max-src-connmax-src-conn-rate overload flushscrub|5 max-mss min-ttl no-df|10 random-id",literal:"all any no-route self urpf-failed egress|5 unknown"},contains:[e.HASH_COMMENT_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"variable",begin:/\$[\w\d#@][\w\d_]*/},{className:"variable",begin:/<(?!\/)/,end:/>/}]}}),We.registerLanguage("pgsql",function(e){var t=e.COMMENT("--","$"),n="BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ",r=n.trim().split(" ").map(function(e){return e.split("|")[0]}).join("|"),a="ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAPLEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILYINET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST ".trim().split(" ").map(function(e){return e.split("|")[0]}).join("|");return{aliases:["postgres","postgresql"],case_insensitive:!0,keywords:{keyword:"ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ",built_in:"CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED "},illegal:/:==|\W\s*\(\*|(^|\s)\$[a-z]|{{|[a-z]:\s*$|\.\.\.|TO:|DO:/,contains:[{className:"keyword",variants:[{begin:/\bTEXT\s*SEARCH\b/},{begin:/\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/},{begin:/\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/},{begin:/\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/},{begin:/\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/},{begin:/\bNULLS\s+(FIRST|LAST)\b/},{begin:/\bEVENT\s+TRIGGER\b/},{begin:/\b(MAPPING|OR)\s+REPLACE\b/},{begin:/\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/},{begin:/\b(SHARE|EXCLUSIVE)\s+MODE\b/},{begin:/\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/},{begin:/\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/},{begin:/\bPRESERVE\s+ROWS\b/},{begin:/\bDISCARD\s+PLANS\b/},{begin:/\bREFERENCING\s+(OLD|NEW)\b/},{begin:/\bSKIP\s+LOCKED\b/},{begin:/\bGROUPING\s+SETS\b/},{begin:/\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/},{begin:/\b(WITH|WITHOUT)\s+HOLD\b/},{begin:/\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/},{begin:/\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/},{begin:/\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/},{begin:/\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/},{begin:/\bIS\s+(NOT\s+)?UNKNOWN\b/},{begin:/\bSECURITY\s+LABEL\b/},{begin:/\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/},{begin:/\bWITH\s+(NO\s+)?DATA\b/},{begin:/\b(FOREIGN|SET)\s+DATA\b/},{begin:/\bSET\s+(CATALOG|CONSTRAINTS)\b/},{begin:/\b(WITH|FOR)\s+ORDINALITY\b/},{begin:/\bIS\s+(NOT\s+)?DOCUMENT\b/},{begin:/\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/},{begin:/\b(STRIP|PRESERVE)\s+WHITESPACE\b/},{begin:/\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/},{begin:/\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/},{begin:/\bAT\s+TIME\s+ZONE\b/},{begin:/\bGRANTED\s+BY\b/},{begin:/\bRETURN\s+(QUERY|NEXT)\b/},{begin:/\b(ATTACH|DETACH)\s+PARTITION\b/},{begin:/\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/},{begin:/\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/},{begin:/\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/}]},{begin:/\b(FORMAT|FAMILY|VERSION)\s*\(/},{begin:/\bINCLUDE\s*\(/,keywords:"INCLUDE"},{begin:/\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/},{begin:/\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/},{begin:/\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,relevance:10},{begin:/\bEXTRACT\s*\(/,end:/\bFROM\b/,returnEnd:!0,keywords:{type:"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR"}},{begin:/\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,keywords:{keyword:"NAME"}},{begin:/\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,keywords:{keyword:"DOCUMENT CONTENT"}},{beginKeywords:"CACHE INCREMENT MAXVALUE MINVALUE",end:e.C_NUMBER_RE,returnEnd:!0,keywords:"BY CACHE INCREMENT MAXVALUE MINVALUE"},{className:"type",begin:/\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/},{className:"type",begin:/\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/},{begin:/\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/,keywords:{keyword:"RETURNS",type:"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER"}},{begin:"\\b("+a+")\\s*\\("},{begin:"\\.("+r+")\\b"},{begin:"\\b("+r+")\\s+PATH\\b",keywords:{keyword:"PATH",type:n.replace("PATH ","")}},{className:"type",begin:"\\b("+r+")\\b"},{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:"(e|E|u&|U&)'",end:"'",contains:[{begin:"\\\\."}],relevance:10},{begin:"\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$",endSameAsBegin:!0,contains:[{subLanguage:["pgsql","perl","python","tcl","r","lua","java","php","ruby","bash","scheme","xml","json"],endsWithParent:!0}]},{begin:'"',end:'"',contains:[{begin:'""'}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"meta",variants:[{begin:"%(ROW)?TYPE",relevance:10},{begin:"\\$\\d+"},{begin:"^#\\w",end:"$"}]},{className:"symbol",begin:"<<\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\s*>>",relevance:10}]}}),We.registerLanguage("php",function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},r={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,r,a]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},r,a]}}),We.registerLanguage("plaintext",function(e){return{disableAutodetect:!0}}),We.registerLanguage("pony",function(e){return{keywords:{keyword:"actor addressof and as be break class compile_error compile_intrinsic consume continue delegate digestof do else elseif embed end error for fun if ifdef in interface is isnt lambda let match new not object or primitive recover repeat return struct then trait try type until use var where while with xor",meta:"iso val tag trn box ref",literal:"this false true"},contains:[{className:"type",begin:"\\b_?[A-Z][\\w]*",relevance:0},{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},{begin:e.IDENT_RE+"'",relevance:0},{className:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("powershell",function(e){var t={begin:"`[\\s\\S]",relevance:0},n={className:"variable",variants:[{begin:/\$[\w\d][\w\d_:]*/}]},r={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[t,n,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},a=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]});return{aliases:["ps","ps1"],lexemes:/-?[A-z\.\-]+/,case_insensitive:!0,keywords:{keyword:"if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catchValidateNoCircleInNodeResources ValidateNodeExclusiveResources ValidateNodeManager ValidateNodeResources ValidateNodeResourceSource ValidateNoNameNodeResources ThrowError IsHiddenResourceIsPatternMatched ",built_in:"Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning Add-MDTPersistentDrive Disable-MDTMonitorService Enable-MDTMonitorService Get-MDTDeploymentShareStatistics Get-MDTMonitorData Get-MDTOperatingSystemCatalog Get-MDTPersistentDrive Import-MDTApplication Import-MDTDriver Import-MDTOperatingSystem Import-MDTPackage Import-MDTTaskSequence New-MDTDatabase Remove-MDTMonitorData Remove-MDTPersistentDrive Restore-MDTPersistentDrive Set-MDTMonitorData Test-MDTDeploymentShare Test-MDTMonitorData Update-MDTDatabaseSchema Update-MDTDeploymentShare Update-MDTLinkedDS Update-MDTMedia Add-VamtProductKey Export-VamtData Find-VamtManagedMachine Get-VamtConfirmationId Get-VamtProduct Get-VamtProductKey Import-VamtData Initialize-VamtData Install-VamtConfirmationId Install-VamtProductActivation Install-VamtProductKey Update-VamtProduct Add-CIDatastore Add-KeyManagementServer Add-NodeKeys Add-NsxDynamicCriteria Add-NsxDynamicMemberSet Add-NsxEdgeInterfaceAddress Add-NsxFirewallExclusionListMember Add-NsxFirewallRuleMember Add-NsxIpSetMember Add-NsxLicense Add-NsxLoadBalancerPoolMember Add-NsxLoadBalancerVip Add-NsxSecondaryManager Add-NsxSecurityGroupMember Add-NsxSecurityPolicyRule Add-NsxSecurityPolicyRuleGroup Add-NsxSecurityPolicyRuleService Add-NsxServiceGroupMember Add-NsxTransportZoneMember Add-PassthroughDevice Add-VDSwitchPhysicalNetworkAdapter Add-VDSwitchVMHost Add-VMHost Add-VMHostNtpServer Add-VirtualSwitchPhysicalNetworkAdapter Add-XmlElement Add-vRACustomForm Add-vRAPrincipalToTenantRole Add-vRAReservationNetwork Add-vRAReservationStorage Clear-NsxEdgeInterface Clear-NsxManagerTimeSettings Compress-Archive Connect-CIServer Connect-CisServer Connect-HCXServer Connect-NIServer Connect-NsxLogicalSwitch Connect-NsxServer Connect-NsxtServer Connect-SrmServer Connect-VIServer Connect-Vmc Connect-vRAServer Connect-vRNIServer ConvertFrom-Markdown ConvertTo-MOFInstance Copy-DatastoreItem Copy-HardDisk Copy-NsxEdge Copy-VDisk Copy-VMGuestFile Debug-Runspace Disable-NsxEdgeSsh Disable-RunspaceDebug Disable-vRNIDataSource Disconnect-CIServer Disconnect-CisServer Disconnect-HCXServer Disconnect-NsxLogicalSwitch Disconnect-NsxServer Disconnect-NsxtServer Disconnect-SrmServer Disconnect-VIServer Disconnect-Vmc Disconnect-vRAServer Disconnect-vRNIServer Dismount-Tools Enable-NsxEdgeSsh Enable-RunspaceDebug Enable-vRNIDataSource Expand-Archive Export-NsxObject Export-SpbmStoragePolicy Export-VApp Export-VDPortGroup Export-VDSwitch Export-VMHostProfile Export-vRAIcon Export-vRAPackage Find-Command Find-DscResource Find-Module Find-NsxWhereVMUsed Find-Package Find-PackageProvider Find-RoleCapability Find-Script Format-Hex Format-VMHostDiskPartition Format-XML Generate-VersionInfo Get-AdvancedSetting Get-AlarmAction Get-AlarmActionTrigger Get-AlarmDefinition Get-Annotation Get-CDDrive Get-CIAccessControlRule Get-CIDatastore Get-CINetworkAdapter Get-CIRole Get-CIUser Get-CIVApp Get-CIVAppNetwork Get-CIVAppStartRule Get-CIVAppTemplate Get-CIVM Get-CIVMTemplate Get-CIView Get-Catalog Get-CisCommand Get-CisService Get-CloudCommand Get-Cluster Get-CompatibleVersionAddtionaPropertiesStr Get-ComplexResourceQualifier Get-ConfigurationErrorCount Get-ContentLibraryItem Get-CustomAttribute Get-DSCResourceModules Get-Datacenter Get-Datastore Get-DatastoreCluster Get-DrsClusterGroup Get-DrsRecommendation Get-DrsRule Get-DrsVMHostRule Get-DscResource Get-EdgeGateway Get-EncryptedPassword Get-ErrorReport Get-EsxCli Get-EsxTop Get-ExternalNetwork Get-FileHash Get-FloppyDrive Get-Folder Get-HAPrimaryVMHost Get-HCXAppliance Get-HCXApplianceCompute Get-HCXApplianceDVS Get-HCXApplianceDatastore Get-HCXApplianceNetwork Get-HCXContainer Get-HCXDatastore Get-HCXGateway Get-HCXInterconnectStatus Get-HCXJob Get-HCXMigration Get-HCXNetwork Get-HCXNetworkExtension Get-HCXReplication Get-HCXReplicationSnapshot Get-HCXService Get-HCXSite Get-HCXSitePairing Get-HCXVM Get-HardDisk Get-IScsiHbaTarget Get-InnerMostErrorRecord Get-InstallPath Get-InstalledModule Get-InstalledScript Get-Inventory Get-ItemPropertyValue Get-KeyManagementServer Get-KmipClientCertificate Get-KmsCluster Get-Log Get-LogType Get-MarkdownOption Get-Media Get-MofInstanceName Get-MofInstanceText Get-NetworkAdapter Get-NetworkPool Get-NfsUser Get-NicTeamingPolicy Get-NsxApplicableMember Get-NsxApplicableSecurityAction Get-NsxBackingDVSwitch Get-NsxBackingPortGroup Get-NsxCliDfwAddrSet Get-NsxCliDfwFilter Get-NsxCliDfwRule Get-NsxClusterStatus Get-NsxController Get-NsxDynamicCriteria Get-NsxDynamicMemberSet Get-NsxEdge Get-NsxEdgeBgp Get-NsxEdgeBgpNeighbour Get-NsxEdgeCertificate Get-NsxEdgeCsr Get-NsxEdgeFirewall Get-NsxEdgeFirewallRule Get-NsxEdgeInterface Get-NsxEdgeInterfaceAddress Get-NsxEdgeNat Get-NsxEdgeNatRule Get-NsxEdgeOspf Get-NsxEdgeOspfArea Get-NsxEdgeOspfInterface Get-NsxEdgePrefix Get-NsxEdgeRedistributionRule Get-NsxEdgeRouting Get-NsxEdgeStaticRoute Get-NsxEdgeSubInterface Get-NsxFirewallExclusionListMember Get-NsxFirewallGlobalConfiguration Get-NsxFirewallPublishStatus Get-NsxFirewallRule Get-NsxFirewallRuleMember Get-NsxFirewallSavedConfiguration Get-NsxFirewallSection Get-NsxFirewallThreshold Get-NsxIpPool Get-NsxIpSet Get-NsxLicense Get-NsxLoadBalancer Get-NsxLoadBalancerApplicationProfile Get-NsxLoadBalancerApplicationRule Get-NsxLoadBalancerMonitor Get-NsxLoadBalancerPool Get-NsxLoadBalancerPoolMember Get-NsxLoadBalancerStats Get-NsxLoadBalancerVip Get-NsxLogicalRouter Get-NsxLogicalRouterBgp Get-NsxLogicalRouterBgpNeighbour Get-NsxLogicalRouterBridge Get-NsxLogicalRouterBridging Get-NsxLogicalRouterInterface Get-NsxLogicalRouterOspf Get-NsxLogicalRouterOspfArea Get-NsxLogicalRouterOspfInterface Get-NsxLogicalRouterPrefix Get-NsxLogicalRouterRedistributionRule Get-NsxLogicalRouterRouting Get-NsxLogicalRouterStaticRoute Get-NsxLogicalSwitch Get-NsxMacSet Get-NsxManagerBackup Get-NsxManagerCertificate Get-NsxManagerComponentSummary Get-NsxManagerNetwork Get-NsxManagerRole Get-NsxManagerSsoConfig Get-NsxManagerSyncStatus Get-NsxManagerSyslogServer Get-NsxManagerSystemSummary Get-NsxManagerTimeSettings Get-NsxManagerVcenterConfig Get-NsxSecondaryManager Get-NsxSecurityGroup Get-NsxSecurityGroupEffectiveIpAddress Get-NsxSecurityGroupEffectiveMacAddress Get-NsxSecurityGroupEffectiveMember Get-NsxSecurityGroupEffectiveVirtualMachine Get-NsxSecurityGroupEffectiveVnic Get-NsxSecurityGroupMemberTypes Get-NsxSecurityPolicy Get-NsxSecurityPolicyHighestUsedPrecedence Get-NsxSecurityPolicyRule Get-NsxSecurityTag Get-NsxSecurityTagAssignment Get-NsxSegmentIdRange Get-NsxService Get-NsxServiceDefinition Get-NsxServiceGroup Get-NsxServiceGroupMember Get-NsxServiceProfile Get-NsxSpoofguardNic Get-NsxSpoofguardPolicy Get-NsxSslVpn Get-NsxSslVpnAuthServer Get-NsxSslVpnClientInstallationPackage Get-NsxSslVpnIpPool Get-NsxSslVpnPrivateNetwork Get-NsxSslVpnUser Get-NsxTransportZone Get-NsxUserRole Get-NsxVdsContext Get-NsxtPolicyService Get-NsxtService Get-OSCustomizationNicMapping Get-OSCustomizationSpec Get-Org Get-OrgNetwork Get-OrgVdc Get-OrgVdcNetwork Get-OvfConfiguration Get-PSCurrentConfigurationNode Get-PSDefaultConfigurationDocument Get-PSMetaConfigDocumentInstVersionInfo Get-PSMetaConfigurationProcessed Get-PSReadLineKeyHandler Get-PSReadLineOption Get-PSRepository Get-PSTopConfigurationName Get-PSVersion Get-Package Get-PackageProvider Get-PackageSource Get-PassthroughDevice Get-PositionInfo Get-PowerCLICommunity Get-PowerCLIConfiguration Get-PowerCLIHelp Get-PowerCLIVersion Get-PowerNsxVersion Get-ProviderVdc Get-PublicKeyFromFile Get-PublicKeyFromStore Get-ResourcePool Get-Runspace Get-RunspaceDebug Get-ScsiController Get-ScsiLun Get-ScsiLunPath Get-SecurityInfo Get-SecurityPolicy Get-Snapshot Get-SpbmCapability Get-SpbmCompatibleStorage Get-SpbmEntityConfiguration Get-SpbmFaultDomain Get-SpbmPointInTimeReplica Get-SpbmReplicationGroup Get-SpbmReplicationPair Get-SpbmStoragePolicy Get-Stat Get-StatInterval Get-StatType Get-Tag Get-TagAssignment Get-TagCategory Get-Task Get-Template Get-TimeZone Get-Uptime Get-UsbDevice Get-VAIOFilter Get-VApp Get-VDBlockedPolicy Get-VDPort Get-VDPortgroup Get-VDPortgroupOverridePolicy Get-VDSecurityPolicy Get-VDSwitch Get-VDSwitchPrivateVlan Get-VDTrafficShapingPolicy Get-VDUplinkLacpPolicy Get-VDUplinkTeamingPolicy Get-VDisk Get-VIAccount Get-VICommand Get-VICredentialStoreItem Get-VIEvent Get-VIObjectByVIView Get-VIPermission Get-VIPrivilege Get-VIProperty Get-VIRole Get-VM Get-VMGuest Get-VMHost Get-VMHostAccount Get-VMHostAdvancedConfiguration Get-VMHostAuthentication Get-VMHostAvailableTimeZone Get-VMHostDiagnosticPartition Get-VMHostDisk Get-VMHostDiskPartition Get-VMHostFirewallDefaultPolicy Get-VMHostFirewallException Get-VMHostFirmware Get-VMHostHardware Get-VMHostHba Get-VMHostModule Get-VMHostNetwork Get-VMHostNetworkAdapter Get-VMHostNtpServer Get-VMHostPatch Get-VMHostPciDevice Get-VMHostProfile Get-VMHostProfileImageCacheConfiguration Get-VMHostProfileRequiredInput Get-VMHostProfileStorageDeviceConfiguration Get-VMHostProfileUserConfiguration Get-VMHostProfileVmPortGroupConfiguration Get-VMHostRoute Get-VMHostService Get-VMHostSnmp Get-VMHostStartPolicy Get-VMHostStorage Get-VMHostSysLogServer Get-VMQuestion Get-VMResourceConfiguration Get-VMStartPolicy Get-VTpm Get-VTpmCSR Get-VTpmCertificate Get-VasaProvider Get-VasaStorageArray Get-View Get-VirtualPortGroup Get-VirtualSwitch Get-VmcSddcNetworkService Get-VmcService Get-VsanClusterConfiguration Get-VsanComponent Get-VsanDisk Get-VsanDiskGroup Get-VsanEvacuationPlan Get-VsanFaultDomain Get-VsanIscsiInitiatorGroup Get-VsanIscsiInitiatorGroupTargetAssociation Get-VsanIscsiLun Get-VsanIscsiTarget Get-VsanObject Get-VsanResyncingComponent Get-VsanRuntimeInfo Get-VsanSpaceUsage Get-VsanStat Get-VsanView Get-vRAApplianceServiceStatus Get-vRAAuthorizationRole Get-vRABlueprint Get-vRABusinessGroup Get-vRACatalogItem Get-vRACatalogItemRequestTemplate Get-vRACatalogPrincipal Get-vRAComponentRegistryService Get-vRAComponentRegistryServiceEndpoint Get-vRAComponentRegistryServiceStatus Get-vRAContent Get-vRAContentData Get-vRAContentType Get-vRACustomForm Get-vRAEntitledCatalogItem Get-vRAEntitledService Get-vRAEntitlement Get-vRAExternalNetworkProfile Get-vRAGroupPrincipal Get-vRAIcon Get-vRANATNetworkProfile Get-vRANetworkProfileIPAddressList Get-vRANetworkProfileIPRangeSummary Get-vRAPackage Get-vRAPackageContent Get-vRAPropertyDefinition Get-vRAPropertyGroup Get-vRARequest Get-vRARequestDetail Get-vRAReservation Get-vRAReservationComputeResource Get-vRAReservationComputeResourceMemory Get-vRAReservationComputeResourceNetwork Get-vRAReservationComputeResourceResourcePool Get-vRAReservationComputeResourceStorage Get-vRAReservationPolicy Get-vRAReservationTemplate Get-vRAReservationType Get-vRAResource Get-vRAResourceAction Get-vRAResourceActionRequestTemplate Get-vRAResourceMetric Get-vRAResourceOperation Get-vRAResourceType Get-vRARoutedNetworkProfile Get-vRAService Get-vRAServiceBlueprint Get-vRASourceMachine Get-vRAStorageReservationPolicy Get-vRATenant Get-vRATenantDirectory Get-vRATenantDirectoryStatus Get-vRATenantRole Get-vRAUserPrincipal Get-vRAUserPrincipalGroupMembership Get-vRAVersion Get-vRNIAPIVersion Get-vRNIApplication Get-vRNIApplicationTier Get-vRNIDataSource Get-vRNIDataSourceSNMPConfig Get-vRNIDatastore Get-vRNIDistributedSwitch Get-vRNIDistributedSwitchPortGroup Get-vRNIEntity Get-vRNIEntityName Get-vRNIFirewallRule Get-vRNIFlow Get-vRNIHost Get-vRNIHostVMKNic Get-vRNIIPSet Get-vRNIL2Network Get-vRNINSXManager Get-vRNINodes Get-vRNIProblem Get-vRNIRecommendedRules Get-vRNIRecommendedRulesNsxBundle Get-vRNISecurityGroup Get-vRNISecurityTag Get-vRNIService Get-vRNIServiceGroup Get-vRNIVM Get-vRNIVMvNIC Get-vRNIvCenter Get-vRNIvCenterCluster Get-vRNIvCenterDatacenter Get-vRNIvCenterFolder Grant-NsxSpoofguardNicApproval Import-CIVApp Import-CIVAppTemplate Import-NsxObject Import-PackageProvider Import-PowerShellDataFile Import-SpbmStoragePolicy Import-VApp Import-VMHostProfile Import-vRAContentData Import-vRAIcon Import-vRAPackage Initialize-ConfigurationRuntimeState Install-Module Install-NsxCluster Install-Package Install-PackageProvider Install-Script Install-VMHostPatch Invoke-DrsRecommendation Invoke-NsxCli Invoke-NsxClusterResolveAll Invoke-NsxManagerSync Invoke-NsxRestMethod Invoke-NsxWebRequest Invoke-VMHostProfile Invoke-VMScript Invoke-XpathQuery Invoke-vRADataCollection Invoke-vRARestMethod Invoke-vRATenantDirectorySync Invoke-vRNIRestMethod Join-String Mount-Tools Move-Cluster Move-Datacenter Move-Datastore Move-Folder Move-HardDisk Move-Inventory Move-NsxSecurityPolicyRule Move-ResourcePool Move-Template Move-VApp Move-VDisk Move-VM Move-VMHost New-AdvancedSetting New-AlarmAction New-AlarmActionTrigger New-CDDrive New-CIAccessControlRule New-CIVApp New-CIVAppNetwork New-CIVAppTemplate New-CIVM New-Cluster New-CustomAttribute New-Datacenter New-Datastore New-DatastoreCluster New-DatastoreDrive New-DrsClusterGroup New-DrsRule New-DrsVMHostRule New-DscChecksum New-FloppyDrive New-Folder New-Guid New-HCXAppliance New-HCXMigration New-HCXNetworkExtension New-HCXNetworkMapping New-HCXReplication New-HCXSitePairing New-HCXStaticRoute New-HardDisk New-IScsiHbaTarget New-KmipClientCertificate New-NetworkAdapter New-NfsUser New-NsxAddressSpec New-NsxClusterVxlanConfig New-NsxController New-NsxDynamicCriteriaSpec New-NsxEdge New-NsxEdgeBgpNeighbour New-NsxEdgeCsr New-NsxEdgeFirewallRule New-NsxEdgeInterfaceSpec New-NsxEdgeNatRule New-NsxEdgeOspfArea New-NsxEdgeOspfInterface New-NsxEdgePrefix New-NsxEdgeRedistributionRule New-NsxEdgeSelfSignedCertificate New-NsxEdgeStaticRoute New-NsxEdgeSubInterface New-NsxEdgeSubInterfaceSpec New-NsxFirewallRule New-NsxFirewallSavedConfiguration New-NsxFirewallSection New-NsxIpPool New-NsxIpSet New-NsxLoadBalancerApplicationProfile New-NsxLoadBalancerApplicationRule New-NsxLoadBalancerMemberSpec New-NsxLoadBalancerMonitor New-NsxLoadBalancerPool New-NsxLogicalRouter New-NsxLogicalRouterBgpNeighbour New-NsxLogicalRouterBridge New-NsxLogicalRouterInterface New-NsxLogicalRouterInterfaceSpec New-NsxLogicalRouterOspfArea New-NsxLogicalRouterOspfInterface New-NsxLogicalRouterPrefix New-NsxLogicalRouterRedistributionRule New-NsxLogicalRouterStaticRoute New-NsxLogicalSwitch New-NsxMacSet New-NsxManager New-NsxSecurityGroup New-NsxSecurityPolicy New-NsxSecurityPolicyAssignment New-NsxSecurityPolicyFirewallRuleSpec New-NsxSecurityPolicyGuestIntrospectionSpec New-NsxSecurityPolicyNetworkIntrospectionSpec New-NsxSecurityTag New-NsxSecurityTagAssignment New-NsxSegmentIdRange New-NsxService New-NsxServiceGroup New-NsxSpoofguardPolicy New-NsxSslVpnAuthServer New-NsxSslVpnClientInstallationPackage New-NsxSslVpnIpPool New-NsxSslVpnPrivateNetwork New-NsxSslVpnUser New-NsxTransportZone New-NsxVdsContext New-OSCustomizationNicMapping New-OSCustomizationSpec New-Org New-OrgNetwork New-OrgVdc New-OrgVdcNetwork New-ResourcePool New-ScriptFileInfo New-ScsiController New-Snapshot New-SpbmRule New-SpbmRuleSet New-SpbmStoragePolicy New-StatInterval New-Tag New-TagAssignment New-TagCategory New-Template New-TemporaryFile New-VAIOFilter New-VApp New-VDPortgroup New-VDSwitch New-VDSwitchPrivateVlan New-VDisk New-VICredentialStoreItem New-VIInventoryDrive New-VIPermission New-VIProperty New-VIRole New-VISamlSecurityContext New-VM New-VMHostAccount New-VMHostNetworkAdapter New-VMHostProfile New-VMHostProfileVmPortGroupConfiguration New-VMHostRoute New-VTpm New-VasaProvider New-VcsOAuthSecurityContext New-VirtualPortGroup New-VirtualSwitch New-VsanDisk New-VsanDiskGroup New-VsanFaultDomain New-VsanIscsiInitiatorGroup New-VsanIscsiInitiatorGroupTargetAssociation New-VsanIscsiLun New-VsanIscsiTarget New-vRABusinessGroup New-vRAEntitlement New-vRAExternalNetworkProfile New-vRAGroupPrincipal New-vRANATNetworkProfile New-vRANetworkProfileIPRangeDefinition New-vRAPackage New-vRAPropertyDefinition New-vRAPropertyGroup New-vRAReservation New-vRAReservationNetworkDefinition New-vRAReservationPolicy New-vRAReservationStorageDefinition New-vRARoutedNetworkProfile New-vRAService New-vRAStorageReservationPolicy New-vRATenant New-vRATenantDirectory New-vRAUserPrincipal New-vRNIApplication New-vRNIApplicationTier New-vRNIDataSource Open-VMConsoleWindow Publish-Module Publish-NsxSpoofguardPolicy Publish-Script Register-PSRepository Register-PackageSource Remove-AdvancedSetting Remove-AlarmAction Remove-AlarmActionTrigger Remove-Alias Remove-CDDrive Remove-CIAccessControlRule Remove-CIVApp Remove-CIVAppNetwork Remove-CIVAppTemplate Remove-Cluster Remove-CustomAttribute Remove-Datacenter Remove-Datastore Remove-DatastoreCluster Remove-DrsClusterGroup Remove-DrsRule Remove-DrsVMHostRule Remove-FloppyDrive Remove-Folder Remove-HCXAppliance Remove-HCXNetworkExtension Remove-HCXReplication Remove-HCXSitePairing Remove-HardDisk Remove-IScsiHbaTarget Remove-Inventory Remove-KeyManagementServer Remove-NetworkAdapter Remove-NfsUser Remove-NsxCluster Remove-NsxClusterVxlanConfig Remove-NsxController Remove-NsxDynamicCriteria Remove-NsxDynamicMemberSet Remove-NsxEdge Remove-NsxEdgeBgpNeighbour Remove-NsxEdgeCertificate Remove-NsxEdgeCsr Remove-NsxEdgeFirewallRule Remove-NsxEdgeInterfaceAddress Remove-NsxEdgeNatRule Remove-NsxEdgeOspfArea Remove-NsxEdgeOspfInterface Remove-NsxEdgePrefix Remove-NsxEdgeRedistributionRule Remove-NsxEdgeStaticRoute Remove-NsxEdgeSubInterface Remove-NsxFirewallExclusionListMember Remove-NsxFirewallRule Remove-NsxFirewallRuleMember Remove-NsxFirewallSavedConfiguration Remove-NsxFirewallSection Remove-NsxIpPool Remove-NsxIpSet Remove-NsxIpSetMember Remove-NsxLoadBalancerApplicationProfile Remove-NsxLoadBalancerMonitor Remove-NsxLoadBalancerPool Remove-NsxLoadBalancerPoolMember Remove-NsxLoadBalancerVip Remove-NsxLogicalRouter Remove-NsxLogicalRouterBgpNeighbour Remove-NsxLogicalRouterBridge Remove-NsxLogicalRouterInterface Remove-NsxLogicalRouterOspfArea Remove-NsxLogicalRouterOspfInterface Remove-NsxLogicalRouterPrefix Remove-NsxLogicalRouterRedistributionRule Remove-NsxLogicalRouterStaticRoute Remove-NsxLogicalSwitch Remove-NsxMacSet Remove-NsxSecondaryManager Remove-NsxSecurityGroup Remove-NsxSecurityGroupMember Remove-NsxSecurityPolicy Remove-NsxSecurityPolicyAssignment Remove-NsxSecurityPolicyRule Remove-NsxSecurityPolicyRuleGroup Remove-NsxSecurityPolicyRuleService Remove-NsxSecurityTag Remove-NsxSecurityTagAssignment Remove-NsxSegmentIdRange Remove-NsxService Remove-NsxServiceGroup Remove-NsxSpoofguardPolicy Remove-NsxSslVpnClientInstallationPackage Remove-NsxSslVpnIpPool Remove-NsxSslVpnPrivateNetwork Remove-NsxSslVpnUser Remove-NsxTransportZone Remove-NsxTransportZoneMember Remove-NsxVdsContext Remove-OSCustomizationNicMapping Remove-OSCustomizationSpec Remove-Org Remove-OrgNetwork Remove-OrgVdc Remove-OrgVdcNetwork Remove-PSReadLineKeyHandler Remove-PassthroughDevice Remove-ResourcePool Remove-Snapshot Remove-SpbmStoragePolicy Remove-StatInterval Remove-Tag Remove-TagAssignment Remove-TagCategory Remove-Template Remove-UsbDevice Remove-VAIOFilter Remove-VApp Remove-VDPortGroup Remove-VDSwitch Remove-VDSwitchPhysicalNetworkAdapter Remove-VDSwitchPrivateVlan Remove-VDSwitchVMHost Remove-VDisk Remove-VICredentialStoreItem Remove-VIPermission Remove-VIProperty Remove-VIRole Remove-VM Remove-VMHost Remove-VMHostAccount Remove-VMHostNetworkAdapter Remove-VMHostNtpServer Remove-VMHostProfile Remove-VMHostProfileVmPortGroupConfiguration Remove-VMHostRoute Remove-VTpm Remove-VasaProvider Remove-VirtualPortGroup Remove-VirtualSwitch Remove-VirtualSwitchPhysicalNetworkAdapter Remove-VsanDisk Remove-VsanDiskGroup Remove-VsanFaultDomain Remove-VsanIscsiInitiatorGroup Remove-VsanIscsiInitiatorGroupTargetAssociation Remove-VsanIscsiLun Remove-VsanIscsiTarget Remove-vRABusinessGroup Remove-vRACustomForm Remove-vRAExternalNetworkProfile Remove-vRAGroupPrincipal Remove-vRAIcon Remove-vRANATNetworkProfile Remove-vRAPackage Remove-vRAPrincipalFromTenantRole Remove-vRAPropertyDefinition Remove-vRAPropertyGroup Remove-vRAReservation Remove-vRAReservationNetwork Remove-vRAReservationPolicy Remove-vRAReservationStorage Remove-vRARoutedNetworkProfile Remove-vRAService Remove-vRAStorageReservationPolicy Remove-vRATenant Remove-vRATenantDirectory Remove-vRAUserPrincipal Remove-vRNIApplication Remove-vRNIApplicationTier Remove-vRNIDataSource Repair-NsxEdge Repair-VsanObject Request-vRACatalogItem Request-vRAResourceAction Restart-CIVApp Restart-CIVAppGuest Restart-CIVM Restart-CIVMGuest Restart-VM Restart-VMGuest Restart-VMHost Restart-VMHostService Resume-HCXReplication Revoke-NsxSpoofguardNicApproval Save-Module Save-Package Save-Script Search-Cloud Set-AdvancedSetting Set-AlarmDefinition Set-Annotation Set-CDDrive Set-CIAccessControlRule Set-CINetworkAdapter Set-CIVApp Set-CIVAppNetwork Set-CIVAppStartRule Set-CIVAppTemplate Set-Cluster Set-CustomAttribute Set-Datacenter Set-Datastore Set-DatastoreCluster Set-DrsClusterGroup Set-DrsRule Set-DrsVMHostRule Set-FloppyDrive Set-Folder Set-HCXAppliance Set-HCXMigration Set-HCXReplication Set-HardDisk Set-IScsiHbaTarget Set-KeyManagementServer Set-KmsCluster Set-MarkdownOption Set-NetworkAdapter Set-NfsUser Set-NicTeamingPolicy Set-NodeExclusiveResources Set-NodeManager Set-NodeResourceSource Set-NodeResources Set-NsxEdge Set-NsxEdgeBgp Set-NsxEdgeFirewall Set-NsxEdgeInterface Set-NsxEdgeNat Set-NsxEdgeOspf Set-NsxEdgeRouting Set-NsxFirewallGlobalConfiguration Set-NsxFirewallRule Set-NsxFirewallSavedConfiguration Set-NsxFirewallThreshold Set-NsxLoadBalancer Set-NsxLoadBalancerPoolMember Set-NsxLogicalRouter Set-NsxLogicalRouterBgp Set-NsxLogicalRouterBridging Set-NsxLogicalRouterInterface Set-NsxLogicalRouterOspf Set-NsxLogicalRouterRouting Set-NsxManager Set-NsxManagerRole Set-NsxManagerTimeSettings Set-NsxSecurityPolicy Set-NsxSecurityPolicyFirewallRule Set-NsxSslVpn Set-OSCustomizationNicMapping Set-OSCustomizationSpec Set-Org Set-OrgNetwork Set-OrgVdc Set-OrgVdcNetwork Set-PSCurrentConfigurationNode Set-PSDefaultConfigurationDocument Set-PSMetaConfigDocInsProcessedBeforeMeta Set-PSMetaConfigVersionInfoV2 Set-PSReadLineKeyHandler Set-PSReadLineOption Set-PSRepository Set-PSTopConfigurationName Set-PackageSource Set-PowerCLIConfiguration Set-ResourcePool Set-ScsiController Set-ScsiLun Set-ScsiLunPath Set-SecurityPolicy Set-Snapshot Set-SpbmEntityConfiguration Set-SpbmStoragePolicy Set-StatInterval Set-Tag Set-TagCategory Set-Template Set-VAIOFilter Set-VApp Set-VDBlockedPolicy Set-VDPort Set-VDPortgroup Set-VDPortgroupOverridePolicy Set-VDSecurityPolicy Set-VDSwitch Set-VDTrafficShapingPolicy Set-VDUplinkLacpPolicy Set-VDUplinkTeamingPolicy Set-VDVlanConfiguration Set-VDisk Set-VIPermission Set-VIRole Set-VM Set-VMHost Set-VMHostAccount Set-VMHostAdvancedConfiguration Set-VMHostAuthentication Set-VMHostDiagnosticPartition Set-VMHostFirewallDefaultPolicy Set-VMHostFirewallException Set-VMHostFirmware Set-VMHostHba Set-VMHostModule Set-VMHostNetwork Set-VMHostNetworkAdapter Set-VMHostProfile Set-VMHostProfileImageCacheConfiguration Set-VMHostProfileStorageDeviceConfiguration Set-VMHostProfileUserConfiguration Set-VMHostProfileVmPortGroupConfiguration Set-VMHostRoute Set-VMHostService Set-VMHostSnmp Set-VMHostStartPolicy Set-VMHostStorage Set-VMHostSysLogServer Set-VMQuestion Set-VMResourceConfiguration Set-VMStartPolicy Set-VTpm Set-VirtualPortGroup Set-VirtualSwitch Set-VsanClusterConfiguration Set-VsanFaultDomain Set-VsanIscsiInitiatorGroup Set-VsanIscsiLun Set-VsanIscsiTarget Set-vRABusinessGroup Set-vRACatalogItem Set-vRACustomForm Set-vRAEntitlement Set-vRAExternalNetworkProfile Set-vRANATNetworkProfile Set-vRAReservation Set-vRAReservationNetwork Set-vRAReservationPolicy Set-vRAReservationStorage Set-vRARoutedNetworkProfile Set-vRAService Set-vRAStorageReservationPolicy Set-vRATenant Set-vRATenantDirectory Set-vRAUserPrincipal Set-vRNIDataSourceSNMPConfig Show-Markdown Start-CIVApp Start-CIVM Start-HCXMigration Start-HCXReplication Start-SpbmReplicationFailover Start-SpbmReplicationPrepareFailover Start-SpbmReplicationPromote Start-SpbmReplicationReverse Start-SpbmReplicationTestFailover Start-ThreadJob Start-VApp Start-VM Start-VMHost Start-VMHostService Start-VsanClusterDiskUpdate Start-VsanClusterRebalance Start-VsanEncryptionConfiguration Stop-CIVApp Stop-CIVAppGuest Stop-CIVM Stop-CIVMGuest Stop-SpbmReplicationTestFailover Stop-Task Stop-VApp Stop-VM Stop-VMGuest Stop-VMHost Stop-VMHostService Stop-VsanClusterRebalance Suspend-CIVApp Suspend-CIVM Suspend-HCXReplication Suspend-VM Suspend-VMGuest Suspend-VMHost Sync-SpbmReplicationGroup Test-ConflictingResources Test-HCXMigration Test-HCXReplication Test-Json Test-ModuleReloadRequired Test-MofInstanceText Test-NodeManager Test-NodeResourceSource Test-NodeResources Test-ScriptFileInfo Test-VMHostProfileCompliance Test-VMHostSnmp Test-VsanClusterHealth Test-VsanNetworkPerformance Test-VsanStoragePerformance Test-VsanVMCreation Test-vRAPackage Uninstall-Module Uninstall-Package Uninstall-Script Unlock-VM Unregister-PSRepository Unregister-PackageSource Update-ConfigurationDocumentRef Update-ConfigurationErrorCount Update-DependsOn Update-LocalConfigManager Update-Module Update-ModuleManifest Update-ModuleVersion Update-PowerNsx Update-Script Update-ScriptFileInfo Update-Tools Update-VsanHclDatabase ValidateUpdate-ConfigurationData Wait-Debugger Wait-NsxControllerJob Wait-NsxGenericJob Wait-NsxJob Wait-Task Wait-Tools Write-Information Write-Log Write-MetaConfigFile Write-NodeMOFFile",nomarkup:"-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace"},contains:[t,e.NUMBER_MODE,r,{className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},{className:"literal",begin:/\$(null|true|false)\b/},n,a]}}),We.registerLanguage("processing",function(e){return{keywords:{keyword:"BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI",title:"setup draw",built_in:"displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("profile",function(e){return{contains:[e.C_NUMBER_MODE,{begin:"[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}",end:":",excludeEnd:!0},{begin:"(ncalls|tottime|cumtime)",end:"$",keywords:"ncalls tottime|10 cumtime|10 filename",relevance:10},{begin:"function calls",end:"$",contains:[e.C_NUMBER_MODE],relevance:10},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\(",end:"\\)$",excludeBegin:!0,excludeEnd:!0,relevance:0}]}}),We.registerLanguage("prolog",function(e){var t={begin:/\(/,end:/\)/,relevance:0},n={begin:/\[/,end:/\]/},r={className:"comment",begin:/%/,end:/$/,contains:[e.PHRASAL_WORDS_MODE]},a={className:"string",begin:/`/,end:/`/,contains:[e.BACKSLASH_ESCAPE]},i=[{begin:/[a-z][A-Za-z0-9_]*/,relevance:0},{className:"symbol",variants:[{begin:/[A-Z][a-zA-Z0-9_]*/},{begin:/_[A-Za-z0-9_]*/}],relevance:0},t,{begin:/:-/},n,r,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,a,{className:"string",begin:/0\'(\\\'|.)/},{className:"string",begin:/0\'\\s/},e.C_NUMBER_MODE];return t.contains=i,n.contains=i,{contains:i.concat([{begin:/\.$/}])}}),We.registerLanguage("properties",function(e){var t="[ \\t\\f]*",n="("+t+"[:=]"+t+"|[ \\t\\f]+)",r="([^\\\\:= \\t\\f\\n]|\\\\.)+",a={end:n,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+"+n,returnBegin:!0,contains:[{className:"attr",begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",endsParent:!0,relevance:0}],starts:a},{begin:r+n,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:r,endsParent:!0,relevance:0}],starts:a},{className:"attr",relevance:0,begin:r+t+"$"}]}}),We.registerLanguage("protobuf",function(e){return{keywords:{keyword:"package import option optional required repeated group oneof",built_in:"double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,{className:"class",beginKeywords:"message enum service",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"function",beginKeywords:"rpc",end:/;/,excludeEnd:!0,keywords:"rpc returns"},{begin:/^\s*[A-Z_]+/,end:/\s*=/,excludeEnd:!0}]}}),We.registerLanguage("puppet",function(e){var t=e.COMMENT("#","$"),n=e.inherit(e.TITLE_MODE,{begin:"([A-Za-z_]|::)(\\w|::)*"}),r={className:"variable",begin:"\\$([A-Za-z_]|::)(\\w|::)*"},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]};return{aliases:["pp"],contains:[t,r,a,{beginKeywords:"class",end:"\\{|;",illegal:/=/,contains:[n,t]},{beginKeywords:"define",end:/\{/,contains:[{className:"section",begin:e.IDENT_RE,endsParent:!0}]},{begin:e.IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\S/,contains:[{className:"keyword",begin:e.IDENT_RE},{begin:/\{/,end:/\}/,keywords:{keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"},relevance:0,contains:[a,t,{begin:"[a-zA-Z_]+\\s*=>",returnBegin:!0,end:"=>",contains:[{className:"attr",begin:e.IDENT_RE}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},r]}],relevance:0}]}}),We.registerLanguage("purebasic",function(e){return{aliases:["pb","pbi"],keywords:"Align And Array As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount Map Module NewList NewMap Next Not Or Procedure ProcedureC ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim Read Repeat Restore Return Runtime Select Shared Static Step Structure StructureUnion Swap Threaded To UndefineMacro Until Until  UnuseModule UseModule Wend While With XIncludeFile XOr",contains:[e.COMMENT(";","$",{relevance:0}),{className:"function",begin:"\\b(Procedure|Declare)(C|CDLL|DLL)?\\b",end:"\\(",excludeEnd:!0,returnBegin:!0,contains:[{className:"keyword",begin:"(Procedure|Declare)(C|CDLL|DLL)?",excludeEnd:!0},{className:"type",begin:"\\.\\w*"},e.UNDERSCORE_TITLE_MODE]},{className:"string",begin:'(~)?"',end:'"',illegal:"\\n"},{className:"symbol",begin:"#[a-zA-Z_]\\w*\\$?"}]}}),We.registerLanguage("python",function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},n={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},a={begin:/\{\{/,relevance:0},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n,a,r]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n,a,r]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,a,r]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,a,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},s={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,i,e.HASH_COMMENT_MODE]};return r.contains=[i,o,n],{aliases:["py","gyp","ipython"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,i,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,s,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}),We.registerLanguage("q",function(e){return{aliases:["k","kdb"],keywords:{keyword:"do while select delete by update from",literal:"0b 1b",built_in:"neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum",type:"`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid"},lexemes:/(`?)[A-Za-z0-9_]+\b/,contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("qml",function(e){var t="[a-zA-Z_][a-zA-Z0-9\\._]*",n={className:"attribute",begin:"\\bid\\s*:",starts:{className:"string",end:t,returnEnd:!1}},r={begin:t+"\\s*:",returnBegin:!0,contains:[{className:"attribute",begin:t,end:"\\s*:",excludeEnd:!0,relevance:0}],relevance:0},a={begin:t+"\\s*{",end:"{",returnBegin:!0,relevance:0,contains:[e.inherit(e.TITLE_MODE,{begin:t})]};return{aliases:["qt"],case_insensitive:!1,keywords:{keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4dPromise"},contains:[{className:"meta",begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{begin:/</,end:/>\s*[);\]]/,relevance:0,subLanguage:"xml"}],relevance:0},{className:"keyword",begin:"\\bsignal\\b",starts:{className:"string",end:"(\\(|:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"keyword",begin:"\\bproperty\\b",starts:{className:"string",end:"(:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}],illegal:/\[|%/},{begin:"\\."+e.IDENT_RE,relevance:0},n,r,a],illegal:/#/}}),We.registerLanguage("r",function(e){var t="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{contains:[e.HASH_COMMENT_MODE,{begin:t,lexemes:t,keywords:{keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}}),We.registerLanguage("reasonml",function(e){var t="~?[a-z$_][0-9a-zA-Z$_]*",n="`?[A-Z$_][0-9a-zA-Z$_]*",r="("+["||","&&","++","**","+.","*","/","*.","/.","...","|>"].map(function(e){return e.split("").map(function(e){return"\\"+e}).join("")}).join("|")+"|==|===)",a="\\s+"+r+"\\s+",i={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"},o="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",s={className:"number",relevance:0,variants:[{begin:o},{begin:"\\(\\-"+o+"\\)"}]},l={className:"operator",relevance:0,begin:r},c=[{className:"identifier",relevance:0,begin:t},l,s],d=[e.QUOTE_STRING_MODE,l,{className:"module",begin:"\\b"+n,returnBegin:!0,end:".",contains:[{className:"identifier",begin:n,relevance:0}]}],_=[{className:"module",begin:"\\b"+n,returnBegin:!0,end:".",relevance:0,contains:[{className:"identifier",begin:n,relevance:0}]}],u={className:"function",relevance:0,keywords:i,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+t+")\\s*=>",end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params",variants:[{begin:t},{begin:"~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>",returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{begin:t,end:"(,|\\n|\\))",relevance:0,contains:[l,{className:"typing",begin:":",end:"(,|\\n)",returnBegin:!0,relevance:0,contains:_}]}]}]},{begin:"\\(\\.\\s"+t+"\\)\\s*=>"}]};d.push(u);var m={className:"constructor",begin:n+"\\(",end:"\\)",illegal:"\\n",keywords:i,contains:[e.QUOTE_STRING_MODE,l,{className:"params",begin:"\\b"+t}]},p={className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:i,end:"=>",relevance:0,contains:[m,l,{relevance:0,className:"constructor",begin:n}]},g={className:"module-access",keywords:i,returnBegin:!0,variants:[{begin:"\\b("+n+"\\.)+"+t},{begin:"\\b("+n+"\\.)+\\(",end:"\\)",returnBegin:!0,contains:[u,{begin:"\\(",end:"\\)",skip:!0}].concat(d)},{begin:"\\b("+n+"\\.)+{",end:"}"}],contains:d};return _.push(g),{aliases:["re"],keywords:i,illegal:"(:\\-|:=|\\${|\\+=)",contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(\\#,\\/\\/)"}),{className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:c},{className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:c},m,{className:"operator",begin:a,illegal:"\\-\\->",relevance:0},s,e.C_LINE_COMMENT_MODE,p,u,{className:"module-def",begin:"\\bmodule\\s+"+t+"\\s+"+n+"\\s+=\\s+{",end:"}",returnBegin:!0,keywords:i,relevance:0,contains:[{className:"module",relevance:0,begin:n},{begin:"{",end:"}",skip:!0}].concat(d)},g]}}),We.registerLanguage("rib",function(e){return{keywords:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",illegal:"</",contains:[e.HASH_COMMENT_MODE,e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}}),We.registerLanguage("roboconf",function(e){var t="[a-zA-Z-_][^\\n{]+\\{",n={className:"attribute",begin:/[a-zA-Z-_]+/,end:/\s*:/,excludeEnd:!0,starts:{end:";",relevance:0,contains:[{className:"variable",begin:/\.[a-zA-Z-_]+/},{className:"keyword",begin:/\(optional\)/}]}};return{aliases:["graph","instances"],case_insensitive:!0,keywords:"import",contains:[{begin:"^facet "+t,end:"}",keywords:"facet",contains:[n,e.HASH_COMMENT_MODE]},{begin:"^\\s*instance of "+t,end:"}",keywords:"name count channels instance-data instance-state instance of",illegal:/\S/,contains:["self",n,e.HASH_COMMENT_MODE]},{begin:"^"+t,end:"}",contains:[n,e.HASH_COMMENT_MODE]},e.HASH_COMMENT_MODE]}}),We.registerLanguage("routeros",function(e){var t="foreach do while for if from to step else on-error and or not in",n="true false yes no nothing nil null",r={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]},i={className:"string",begin:/'/,end:/'/};return{aliases:["routeros","mikrotik"],case_insensitive:!0,lexemes:/:?[\w-]+/,keywords:{literal:n,keyword:t+" :"+t.split(" ").join(" :")+" :"+"global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime".split(" ").join(" :")},contains:[{variants:[{begin:/^@/,end:/$/},{begin:/\/\*/,end:/\*\//},{begin:/%%/,end:/$/},{begin:/^'/,end:/$/},{begin:/^\s*\/[\w-]+=/,end:/$/},{begin:/\/\//,end:/$/},{begin:/^\[\</,end:/\>\]$/},{begin:/<\//,end:/>/},{begin:/^facet /,end:/\}/},{begin:"^1\\.\\.(\\d+)$",end:/$/}],illegal:/./},e.COMMENT("^#","$"),a,i,r,{begin:/[\w-]+\=([^\s\{\}\[\]\(\)]+)/,relevance:0,returnBegin:!0,contains:[{className:"attribute",begin:/[^=]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[a,i,r,{className:"literal",begin:"\\b("+n.split(" ").join("|")+")\\b"},{begin:/("[^"]*"|[^\s\{\}\[\]]+)/}]}]},{className:"number",begin:/\*[0-9a-fA-F]+/},{begin:"\\b("+"add remove enable disable set get print export edit find run debug error info warning".split(" ").join("|")+")([\\s[(]|])",returnBegin:!0,contains:[{className:"builtin-name",begin:/\w+/}]},{className:"built_in",variants:[{begin:"(\\.\\./|/|\\s)(("+"traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firewall firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw".split(" ").join("|")+");?\\s)+",relevance:10},{begin:/\.\./}]}]}}),We.registerLanguage("rsl",function(e){return{keywords:{keyword:"float color point normal vector matrix while for if do return else break extern continue",built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"surface displacement light volume imager",end:"\\("},{beginKeywords:"illuminate illuminance gather",end:"\\("}]}}),We.registerLanguage("ruleslanguage",function(e){return{keywords:{keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING",built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"literal",variants:[{begin:"#\\s+[a-zA-Z\\ \\.]*",relevance:0},{begin:"#[a-zA-Z\\ \\.]+"}]}]}}),We.registerLanguage("rust",function(e){var t="([ui](8|16|32|64|128|size)|f(32|64))?",n="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{aliases:["rs"],keywords:{keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:n},lexemes:e.IDENT_RE+"!?",illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"string",variants:[{begin:/r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:"number",variants:[{begin:"\\b0b([01_]+)"+t},{begin:"\\b0o([0-7_]+)"+t},{begin:"\\b0x([A-Fa-f0-9_]+)"+t},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+t}],relevance:0},{className:"function",beginKeywords:"fn",end:"(\\(|<)",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"meta",begin:"#\\!?\\[",end:"\\]",contains:[{className:"meta-string",begin:/"/,end:/"/}]},{className:"class",beginKeywords:"type",end:";",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"\\S"},{className:"class",beginKeywords:"trait enum struct union",end:"{",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"[\\w\\d]"},{begin:e.IDENT_RE+"::",keywords:{built_in:n}},{begin:"->"}]}}),We.registerLanguage("sas",function(e){return{aliases:["sas","SAS"],case_insensitive:!0,keywords:{literal:"null missing _all_ _automatic_ _character_ _infile_ _n_ _name_ _null_ _numeric_ _user_ _webout_",meta:"do if then else end until while abort array attrib by call cards cards4 catname continue datalines datalines4 delete delim delimiter display dm drop endsas error file filename footnote format goto in infile informat input keep label leave length libname link list lostcard merge missing modify options output out page put redirect remove rename replace retain return select set skip startsas stop title update waitsas where window x systask add and alter as cascade check create delete describe distinct drop foreign from group having index insert into in key like message modify msgtype not null on or order primary references reset restrict select set table unique update validate view where"},contains:[{className:"keyword",begin:/^\s*(proc [\w\d_]+|data|run|quit)[\s\;]/},{className:"variable",begin:/\&[a-zA-Z_\&][a-zA-Z0-9_]*\.?/},{className:"emphasis",begin:/^\s*datalines|cards.*;/,end:/^\s*;\s*$/},{className:"built_in",begin:"%(bquote|nrbquote|cmpres|qcmpres|compstor|datatyp|display|do|else|end|eval|global|goto|if|index|input|keydef|label|left|length|let|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qcmpres|qleft|qlowcase|qscan|qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|substr|superq|syscall|sysevalf|sysexec|sysfunc|sysget|syslput|sysprod|sysrc|sysrput|then|to|trim|unquote|until|upcase|verify|while|window)"},{className:"name",begin:/%[a-zA-Z_][a-zA-Z_0-9]*/},{className:"meta",begin:"[^%](abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|cexist|cinv|close|cnonct|collate|compbl|compound|compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|filename|fileref|finfo|finv|fipname|fipnamel|fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|hms|hosthelp|hour|ibessel|index|indexc|indexw|input|inputc|inputn|int|intck|intnx|intrr|irr|jbessel|juldate|kurtosis|lag|lbound|left|length|lgamma|libname|libref|log|log10|log2|logpdf|logpmf|logsdf|lowcase|max|mdy|mean|min|minute|mod|month|mopen|mort|n|netpv|nmiss|normal|note|npv|open|ordinal|pathname|pdf|peek|peekc|pmf|point|poisson|poke|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probt|put|putc|putn|qtr|quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|rewind|right|round|saving|scan|sdf|second|sign|sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|stfips|stname|stnamel|substr|sum|symget|sysget|sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|tinv|tnonct|today|translate|tranwrd|trigamma|trim|trimn|trunc|uniform|upcase|uss|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|zipnamel|zipstate)[(]"},{className:"string",variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.COMMENT("\\*",";"),e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("scala",function(e){var t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},n={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[t],relevance:10}]},r={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},a={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},a]},o={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[a]};return{keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},r,o,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("scheme",function(e){var t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},r={className:"number",variants:[{begin:"(\\-|\\+)?\\d+([./]\\d+)?",relevance:0},{begin:"(\\-|\\+)?\\d+([./]\\d+)?[+\\-](\\-|\\+)?\\d+([./]\\d+)?i",relevance:0},{begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},a=e.QUOTE_STRING_MODE,i=[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#\\|","\\|#")],o={begin:t,relevance:0},s={className:"symbol",begin:"'"+t},l={endsWithParent:!0,relevance:0},c={variants:[{begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)",contains:["self",n,a,r,o,s]}]},d={className:"name",begin:t,lexemes:t,keywords:{"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"}},_={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}],contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[d,{begin:/\(/,end:/\)/,endsParent:!0,contains:[o]}]},d,l]};return l.contains=[n,r,a,o,s,c,_].concat(i),{illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},r,a,s,c,_].concat(i)}}),We.registerLanguage("scilab",function(e){var t=[e.C_NUMBER_MODE,{className:"string",begin:"'|\"",end:"'|\"",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]}];return{aliases:["sci"],lexemes:/%?\w+/,keywords:{keyword:"abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while",literal:"%f %F %t %T %pi %eps %inf %nan %e %i %z %s",built_in:"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix"},illegal:'("|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{begin:"[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",end:"",relevance:0},{begin:"\\[",end:"\\]'*[\\.']*",relevance:0,contains:t},e.COMMENT("//","$")].concat(t)}}),We.registerLanguage("scss",function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},n={className:"number",begin:"#[0-9A-Fa-f]+"};e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE;return{case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,n,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@",end:"[{;]",keywords:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",contains:[t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n,e.CSS_NUMBER_MODE,{begin:"\\s[A-Za-z0-9_.-]+",relevance:0}]}]}}),We.registerLanguage("shell",function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}),We.registerLanguage("smali",function(e){var t=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"];return{aliases:["smali"],contains:[{className:"string",begin:'"',end:'"',relevance:0},e.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{begin:"\\s("+["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"].join("|")+")"}]},{className:"built_in",variants:[{begin:"\\s("+t.join("|")+")\\s"},{begin:"\\s("+t.join("|")+")((\\-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{begin:"\\s("+["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"].join("|")+")((\\-|/)[a-zA-Z0-9]+)*\\s",relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{begin:"[vp][0-9]+"}]}}),We.registerLanguage("smalltalk",function(e){var t={className:"string",begin:"\\$.{1}"},n={className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{aliases:["st"],keywords:"self super nil true false thisContext",contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:"[a-z][a-zA-Z0-9_]*:",relevance:0},e.C_NUMBER_MODE,n,t,{begin:"\\|[ ]*[a-z][a-zA-Z0-9_]*([ ]+[a-z][a-zA-Z0-9_]*)*[ ]*\\|",returnBegin:!0,end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?[a-z][a-zA-Z0-9_]*"}]},{begin:"\\#\\(",end:"\\)",contains:[e.APOS_STRING_MODE,t,e.C_NUMBER_MODE,n]}]}}),We.registerLanguage("sml",function(e){return{aliases:["ml"],keywords:{keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while",built_in:"array bool char exn int list option order real ref string substring vector unit word",literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}}),We.registerLanguage("sqf",function(e){var t={className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'",end:"'",contains:[{begin:"''",relevance:0}]}]},n={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"define undef ifdef ifndef else endif include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(t,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]};return{aliases:["sqf"],case_insensitive:!0,keywords:{keyword:"case catch default do else exit exitWith for forEach from if private switch then throw to try waitUntil while with",built_in:"abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configProperties configSourceAddonList configSourceMod configSourceModList confirmSensorTarget connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ",literal:"blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic sideUnknown taskNull teamMemberNull true west"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.NUMBER_MODE,{className:"variable",begin:/\b_+[a-zA-Z_]\w*/},{className:"title",begin:/[a-zA-Z][a-zA-Z0-9]+_fnc_\w*/},t,n],illegal:/#|^\$ /}}),We.registerLanguage("sql",function(e){var t=e.COMMENT("--","$");return{case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,lexemes:/[\w\.]+/,keywords:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}]},{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}),We.registerLanguage("stan",function(e){return{contains:[e.HASH_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE,lexemes:e.UNDERSCORE_IDENT_RE,keywords:{name:"for in while repeat until if then else",symbol:"bernoulli bernoulli_logit binomial binomial_logit beta_binomial hypergeometric categorical categorical_logit ordered_logistic neg_binomial neg_binomial_2 neg_binomial_2_log poisson poisson_log multinomial normal exp_mod_normal skew_normal student_t cauchy double_exponential logistic gumbel lognormal chi_square inv_chi_square scaled_inv_chi_square exponential inv_gamma weibull frechet rayleigh wiener pareto pareto_type_2 von_mises uniform multi_normal multi_normal_prec multi_normal_cholesky multi_gp multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet lkj_corr lkj_corr_cholesky wishart inv_wishart","selector-tag":"int real vector simplex unit_vector ordered positive_ordered row_vector matrix cholesky_factor_corr cholesky_factor_cov corr_matrix cov_matrix",title:"functions model data parameters quantities transformed generated",literal:"true false"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0}]}}),We.registerLanguage("stata",function(e){return{aliases:["do","ado"],case_insensitive:!0,keywords:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5",contains:[{className:"symbol",begin:/`[a-zA-Z0-9_]+'/},{className:"variable",begin:/\$\{?[a-zA-Z0-9_]+\}?/},{className:"string",variants:[{begin:'`"[^\r\n]*?"\''},{begin:'"[^\r\n"]*"'}]},{className:"built_in",variants:[{begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()"}]},e.COMMENT("^[ \t]*\\*.*$",!1),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("step21",function(e){return{aliases:["p21","step","stp"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:{keyword:"HEADER ENDSEC DATA"},contains:[{className:"meta",begin:"ISO-10303-21;",relevance:10},{className:"meta",begin:"END-ISO-10303-21;",relevance:10},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("/\\*\\*!","\\*/"),e.C_NUMBER_MODE,e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"'",end:"'"},{className:"symbol",variants:[{begin:"#",end:"\\d+",illegal:"\\W"}]}]}}),We.registerLanguage("stylus",function(e){var t={className:"variable",begin:"\\$"+e.IDENT_RE},n={className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"};return{aliases:["styl"],case_insensitive:!1,keywords:"if else for in",illegal:"("+["\\?","(\\bReturn\\b)","(\\bEnd\\b)","(\\bend\\b)","(\\bdef\\b)",";","#\\s","\\*\\s","===\\s","\\|","%"].join("|")+")",contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{begin:"\\.[a-zA-Z][a-zA-Z0-9_-]*(?=[\\.\\s\\n\\[\\:,])",className:"selector-class"},{begin:"\\#[a-zA-Z][a-zA-Z0-9_-]*(?=[\\.\\s\\n\\[\\:,])",className:"selector-id"},{begin:"\\b("+["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"].join("|")+")(?=[\\.\\s\\n\\[\\:,])",className:"selector-tag"},{begin:"&?:?:\\b("+["after","before","first-letter","first-line","active","first-child","focus","hover","lang","link","visited"].join("|")+")(?=[\\.\\s\\n\\[\\:,])"},{begin:"@("+["charset","css","debug","extend","font-face","for","import","include","media","mixin","page","warn","while"].join("|")+")\\b"},t,e.CSS_NUMBER_MODE,e.NUMBER_MODE,{className:"function",begin:"^[a-zA-Z][a-zA-Z0-9_-]*\\(.*\\)",illegal:"[\\n]",returnBegin:!0,contains:[{className:"title",begin:"\\b[a-zA-Z][a-zA-Z0-9_-]*"},{className:"params",begin:/\(/,end:/\)/,contains:[n,t,e.APOS_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE]}]},{className:"attribute",begin:"\\b("+["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse().join("|")+")\\b",starts:{end:/;|$/,contains:[n,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/\./,relevance:0}}]}}),We.registerLanguage("subunit",function(e){return{case_insensitive:!0,contains:[{className:"string",begin:"\\[\n(multipart)?",end:"\\]\n"},{className:"string",begin:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z"},{className:"string",begin:"(\\+|-)\\d+"},{className:"keyword",relevance:10,variants:[{begin:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?"},{begin:"^progress(:?)(\\s+)?(pop|push)?"},{begin:"^tags:"},{begin:"^time:"}]}]}}),We.registerLanguage("swift",function(e){var t={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}]},i={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return r.contains=[i],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,n,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin:/</,end:/>/},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",i,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}}),We.registerLanguage("taggerscript",function(e){return{contains:[{className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\(/,end:/\)/,contains:["self",{begin:/\\./}]}],relevance:10},{className:"keyword",begin:/\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,end:/\(/,excludeEnd:!0},{className:"variable",begin:/%[_a-zA-Z0-9:]*/,end:"%"},{className:"symbol",begin:/\\./}]}}),We.registerLanguage("yaml",function(e){var t={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]};return{case_insensitive:!0,aliases:["yml","YAML","yaml"],contains:[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!"+e.UNDERSCORE_IDENT_RE},{className:"type",begin:"!!"+e.UNDERSCORE_IDENT_RE},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},{className:"number",begin:e.C_NUMBER_RE+"\\b"},t]}}),We.registerLanguage("tap",function(e){return{case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"meta",variants:[{begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:"(s+)?---$",end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number",begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}]}]}}),We.registerLanguage("tcl",function(e){return{aliases:["tk"],keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while",contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title",begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]",endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)",end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},{className:"number",variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]}}),We.registerLanguage("tex",function(e){var t={className:"tag",begin:/\\/,relevance:0,contains:[{className:"name",variants:[{begin:/[a-zA-Z\u0430-\u044f\u0410-\u042f]+[*]?/},{begin:/[^a-zA-Z\u0430-\u044f\u0410-\u042f0-9]/}],starts:{endsWithParent:!0,relevance:0,contains:[{className:"string",variants:[{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/}]},{begin:/\s*=\s*/,endsWithParent:!0,relevance:0,contains:[{className:"number",begin:/-?\d*\.?\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/}]}]}}]};return{contains:[t,{className:"formula",contains:[t],relevance:0,variants:[{begin:/\$\$/,end:/\$\$/},{begin:/\$/,end:/\$/}]},e.COMMENT("%","$",{relevance:0})]}}),We.registerLanguage("thrift",function(e){return{keywords:{keyword:"namespace const typedef struct enum service exception void oneway set list map required optional",built_in:"bool byte i16 i32 i64 double string binary",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"struct enum service exception",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{begin:"\\b(set|list|map)\\s*<",end:">",keywords:"bool byte i16 i32 i64 double string binary",contains:["self"]}]}}),We.registerLanguage("tp",function(e){var t={className:"number",begin:"[1-9][0-9]*",relevance:0},n={className:"symbol",begin:":[^\\]]+"};return{keywords:{keyword:"ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN SUBSTR FINDSTR VOFFSET PROG ATTR MN POS",literal:"ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET"},contains:[{className:"built_in",begin:"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[",end:"\\]",contains:["self",t,n]},{className:"built_in",begin:"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[",end:"\\]",contains:["self",t,e.QUOTE_STRING_MODE,n]},{className:"keyword",begin:"/(PROG|ATTR|MN|POS|END)\\b"},{className:"keyword",begin:"(CALL|RUN|POINT_LOGIC|LBL)\\b"},{className:"keyword",begin:"\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)"},{className:"number",begin:"\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b",relevance:0},e.COMMENT("//","[;$]"),e.COMMENT("!","[;$]"),e.COMMENT("--eg:","$"),e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"'"},e.C_NUMBER_MODE,{className:"variable",begin:"\\$[A-Za-z0-9_]+"}]}}),We.registerLanguage("twig",function(e){var t="attribute block constant cycle date dump include max min parent random range source template_from_string",n={beginKeywords:t,keywords:{name:t},relevance:0,contains:[{className:"params",begin:"\\(",end:"\\)"}]},r={begin:/\|[A-Za-z_]+:?/,keywords:"abs batch capitalize column convert_encoding date date_modify default escape filter first format inky_to_html inline_css join json_encode keys last length lower map markdown merge nl2br number_format raw reduce replace reverse round slice sort spaceless split striptags title trim upper url_encode",contains:[n]},a="apply autoescape block deprecated do embed extends filter flush for from if import include macro sandbox set use verbatim with";return a=a+" "+a.split(" ").map(function(e){return"end"+e}).join(" "),{aliases:["craftcms"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:a,starts:{endsWithParent:!0,contains:[r,n],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:["self",r,n]}]}}),We.registerLanguage("typescript",function(e){var t={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"},n={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},r={begin:"\\(",end:/\)/,keywords:t,contains:["self",e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.NUMBER_MODE]},a={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r]},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:t,contains:[]},s={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},l={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"css"}},c={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,o]};return o.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,l,c,i,e.REGEXP_MODE],{aliases:["ts"],keywords:t,contains:[{className:"meta",begin:/^\s*['"]use strict['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,l,c,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+e.IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.IDENT_RE},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",e.inherit(e.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*"}),a],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/[\{;]/,excludeEnd:!0,contains:["self",a]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+e.IDENT_RE,relevance:0},n,r]}}),We.registerLanguage("vala",function(e){return{keywords:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"},contains:[{className:"class",beginKeywords:"class interface namespace",end:"{",excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"^#",end:"$",relevance:2}]}}),We.registerLanguage("vbnet",function(e){return{aliases:["vb"],case_insensitive:!0,keywords:{keyword:"addhandler addressof alias and andalso aggregate ansi as async assembly auto await binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue iterator join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor yield",built_in:"boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort",literal:"true false nothing"},illegal:"//|{|}|endif|gosub|variant|wend|^\\$ ",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT("'","$",{returnBegin:!0,contains:[{className:"doctag",begin:"'''|\x3c!--|--\x3e",contains:[e.PHRASAL_WORDS_MODE]},{className:"doctag",begin:"</?",end:">",contains:[e.PHRASAL_WORDS_MODE]}]}),e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end region externalsource"}}]}}),We.registerLanguage("vbscript",function(e){return{aliases:["vbs"],case_insensitive:!0,keywords:{keyword:"call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto",built_in:"lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err",literal:"true false null nothing empty"},illegal:"//",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT(/'/,/$/,{relevance:0}),e.C_NUMBER_MODE]}}),We.registerLanguage("vbscript-html",function(e){return{subLanguage:"xml",contains:[{begin:"<%",end:"%>",subLanguage:"vbscript"}]}}),We.registerLanguage("verilog",function(e){return{aliases:["v","sv","svh"],case_insensitive:!1,keywords:{keyword:"accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import incdir include initial inout input inside instance int integer interconnect interface intersect join join_any join_none large let liblist library local localparam logic longint macromodule matches medium modport module nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor",literal:"null",built_in:"$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale $bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat $realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson $assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff $assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk $fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control $coverage_get $coverage_save $set_coverage_db_name $rose $stable $past $rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display $coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename $unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow $floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning $dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh $tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson $dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array $async$nand$array $async$or$array $async$nor$array $sync$and$array $sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf $async$and$plane $async$nand$plane $async$or$plane $async$nor$plane $sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system $display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo $write $readmemb $readmemh $writememh $value$plusargs $dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit $writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb $dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall $dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo $fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh $swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb $fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat $sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror"},lexemes:/[\w\$]+/,contains:[e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"number",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"\\b((\\d+'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\B(('(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\b([0-9_])+",relevance:0}]},{className:"variable",variants:[{begin:"#\\((?!parameter).+\\)"},{begin:"\\.\\w+",relevance:0}]},{className:"meta",begin:"`",end:"$",keywords:{"meta-keyword":"define __FILE__ __LINE__ begin_keywords celldefine default_nettype define else elsif end_keywords endcelldefine endif ifdef ifndef include line nounconnected_drive pragma resetall timescale unconnected_drive undef undefineall"},relevance:0}]}}),We.registerLanguage("vhdl",function(e){return{case_insensitive:!0,keywords:{keyword:"abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package parameter port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable view vmode vprop vunit wait when while with xnor xor",built_in:"boolean bit character integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_logic std_logic_vector unsigned signed boolean_vector integer_vector std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed real_vector time_vector",literal:"false true note warning error failure line text side width"},illegal:"{",contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT("--","$"),e.QUOTE_STRING_MODE,{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'",contains:[e.BACKSLASH_ESCAPE]},{className:"symbol",begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[e.BACKSLASH_ESCAPE]}]}}),We.registerLanguage("vim",function(e){return{lexemes:/[!#@\w]+/,keywords:{keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank",built_in:"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp"},illegal:/;/,contains:[e.NUMBER_MODE,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:/"(\\"|\n\\|[^"\n])*"/},e.COMMENT('"',"$"),{className:"variable",begin:/[bwtglsav]:[\w\d_]*/},{className:"function",beginKeywords:"function function!",end:"$",relevance:0,contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{className:"symbol",begin:/<[\w-]+>/}]}}),We.registerLanguage("x86asm",function(e){return{case_insensitive:!0,lexemes:"[.%]?"+e.IDENT_RE,keywords:{keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0  xmm1  xmm2  xmm3  xmm4  xmm5  xmm6  xmm7  xmm8  xmm9 xmm10  xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0  ymm1  ymm2  ymm3  ymm4  ymm5  ymm6  ymm7  ymm8  ymm9 ymm10  ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0  zmm1  zmm2  zmm3  zmm4  zmm5  zmm6  zmm7  zmm8  zmm9 zmm10  zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__  __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__  __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}}),We.registerLanguage("xl",function(e){var t={keyword:"if then else do while until for loop import with is as where when by data constant integer real text name boolean symbol infix prefix postfix block tree",literal:"true false nil",built_in:"in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin acos atan exp expm1 log log2 log10 log1p pi at text_length text_range text_find text_replace contains page slide basic_slide title_slide title subtitle fade_in fade_out fade_at clear_color color line_color line_width texture_wrap texture_transform texture scale_?x scale_?y scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y rotate_?z? rectangle circle ellipse sphere path line_to move_to quad_to curve_to theme background contents locally time mouse_?x mouse_?y mouse_buttons ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts"},n={className:"string",begin:'"',end:'"',illegal:"\\n"},r={beginKeywords:"import",end:"$",keywords:t,contains:[n]},a={className:"function",begin:/[a-z][^\n]*->/,returnBegin:!0,end:/->/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,keywords:t}})]};return{aliases:["tao"],lexemes:/[a-zA-Z][a-zA-Z0-9_?]*/,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:"<<",end:">>"},a,r,{className:"number",begin:"[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?"},e.NUMBER_MODE]}}),We.registerLanguage("xquery",function(e){return{aliases:["xpath","xq"],case_insensitive:!1,lexemes:/[a-zA-Z\$][a-zA-Z0-9_:\-]*/,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update",type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration",literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN"},contains:[{className:"variable",begin:/[\$][\w-:]+/},{className:"built_in",variants:[{begin:/\barray\:/,end:/(?:append|filter|flatten|fold\-(?:left|right)|for-each(?:\-pair)?|get|head|insert\-before|join|put|remove|reverse|size|sort|subarray|tail)\b/},{begin:/\bmap\:/,end:/(?:contains|entry|find|for\-each|get|keys|merge|put|remove|size)\b/},{begin:/\bmath\:/,end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/},{begin:/\bop\:/,end:/\(/,excludeEnd:!0},{begin:/\bfn\:/,end:/\(/,excludeEnd:!0},{begin:/[^<\/\$\:'"-]\b(?:abs|accumulator\-(?:after|before)|adjust\-(?:date(?:Time)?|time)\-to\-timezone|analyze\-string|apply|available\-(?:environment\-variables|system\-properties)|avg|base\-uri|boolean|ceiling|codepoints?\-(?:equal|to\-string)|collation\-key|collection|compare|concat|contains(?:\-token)?|copy\-of|count|current(?:\-)?(?:date(?:Time)?|time|group(?:ing\-key)?|output\-uri|merge\-(?:group|key))?data|dateTime|days?\-from\-(?:date(?:Time)?|duration)|deep\-equal|default\-(?:collation|language)|distinct\-values|document(?:\-uri)?|doc(?:\-available)?|element\-(?:available|with\-id)|empty|encode\-for\-uri|ends\-with|environment\-variable|error|escape\-html\-uri|exactly\-one|exists|false|filter|floor|fold\-(?:left|right)|for\-each(?:\-pair)?|format\-(?:date(?:Time)?|time|integer|number)|function\-(?:arity|available|lookup|name)|generate\-id|has\-children|head|hours\-from\-(?:dateTime|duration|time)|id(?:ref)?|implicit\-timezone|in\-scope\-prefixes|index\-of|innermost|insert\-before|iri\-to\-uri|json\-(?:doc|to\-xml)|key|lang|last|load\-xquery\-module|local\-name(?:\-from\-QName)?|(?:lower|upper)\-case|matches|max|minutes\-from\-(?:dateTime|duration|time)|min|months?\-from\-(?:date(?:Time)?|duration)|name(?:space\-uri\-?(?:for\-prefix|from\-QName)?)?|nilled|node\-name|normalize\-(?:space|unicode)|not|number|one\-or\-more|outermost|parse\-(?:ietf\-date|json)|path|position|(?:prefix\-from\-)?QName|random\-number\-generator|regex\-group|remove|replace|resolve\-(?:QName|uri)|reverse|root|round(?:\-half\-to\-even)?|seconds\-from\-(?:dateTime|duration|time)|snapshot|sort|starts\-with|static\-base\-uri|stream\-available|string\-?(?:join|length|to\-codepoints)?|subsequence|substring\-?(?:after|before)?|sum|system\-property|tail|timezone\-from\-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type\-available|unordered|unparsed\-(?:entity|text)?\-?(?:public\-id|uri|available|lines)?|uri\-collection|xml\-to\-json|years?\-from\-(?:date(?:Time)?|duration)|zero\-or\-one)\b/},{begin:/\blocal\:/,end:/\(/,excludeEnd:!0},{begin:/\bzip\:/,end:/(?:zip\-file|(?:xml|html|text|binary)\-entry| (?:update\-)?entries)\b/},{begin:/\b(?:util|db|functx|app|xdmp|xmldb)\:/,end:/\(/,excludeEnd:!0}]},{className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{className:"comment",begin:"\\(:",end:":\\)",relevance:10,contains:[{className:"doctag",begin:"@\\w+"}]},{className:"meta",begin:/%[\w-:]+/},{className:"title",begin:/\bxquery version "[13]\.[01]"\s?(?:encoding ".+")?/,end:/;/},{beginKeywords:"element attribute comment document processing-instruction",end:"{",excludeEnd:!0},{begin:/<([\w\._:\-]+)((\s*.*)=('|").*('|"))?>/,end:/(\/[\w\._:\-]+>)/,subLanguage:"xml",contains:[{begin:"{",end:"}",subLanguage:"xquery"},"self"]}]}}),We.registerLanguage("zephir",function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["zep"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var let while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally int uint long ulong char uchar double float bool boolean stringlikely unlikely",contains:[e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:"<<<['\"]?\\w+['\"]?$",end:"^\\w+;",contains:[e.BACKSLASH_ESCAPE]},{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_BLOCK_COMMENT_MODE,t,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},t,n]}});var ht=function(){return function(e,t,n){return function(e){let t=0;E(e,"list",e=>{let n=!0,r=0;const a=[];return Array.from(e.children).forEach(e=>{e.children&&"paragraph"===e.children[0].type&&e.children[0].children&&e.children[0].children[0].value?"~!=".indexOf(e.children[0].children[0].value[0])<0&&(n=!1):n=!1}),n&&(Array.from(e.children).forEach(e=>{"paragraph"===e.children[0].type&&("~"===e.children[0].children[0].value[0]?a.push(.5):"!"===e.children[0].children[0].value[0]?a.push(0):a.push(1),e.children[0].children[0].value=`${e.children[0].children[0].value.slice(1)}\r`)}),e.type="mc",e.data={hName:"fieldset",hProperties:{className:"mc check",id:`mc_${t}`}},e.children=[{type:"list-item-mc",data:{hName:"ul"},children:e.children.map(e=>({type:"input-list-item",data:{hName:"li"},children:[{type:"input-list-input",data:{hName:"input",hProperties:{checked:e.checked,type:"checkbox",id:`mc_${t}_${r}`,className:"!~="[2*a[r]]}}},{type:"input-list-label",data:{hName:"label",hProperties:{for:`mc_${t}_${r++}`}},children:function(e){let t=[];return"paragraph"===e[0].type&&(t=e[0].children),t[0].value=t[0].value.trim(),"blockquote"===e[e.length-1].type&&(e[e.length-1].type="div",e[e.length-1].data={hName:"blockquote",hProperties:{className:"hiden_block_quote"}}),t=t.concat(e.slice(1))}(e.children)}]}))},{type:"field-button",data:{hName:"input",hProperties:{onclick:`check('mc_${t}',[${String(a)}])`,value:"Validate",type:"button"}}}],t++),e})}(e),"function"==typeof n?n(null,e,t):e}};function St(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ft(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Tt={prop:{},eaten:""},bt={defaultValue:function(){}};var Ct=function(e,t,n){var r="",a=!1,i=!1,o=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?St(n,!0).forEach(function(t){ft(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):St(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},bt,{},n);if("function"!=typeof o.defaultValue){var s=o.defaultValue;o.defaultValue=function(){return s}}var l,c,d={},_="";void 0===t&&(t=0);var u=function(){return t>=e.length||"\n\r{}".indexOf(e[t])>-1?(a&&"}"!==e[t]&&(i=!0),!0):"}"===e[t]&&a},m="",p=function(n){for(m="";t<e.length&&"\n\r{}".indexOf(e.charAt(t))<0&&n.indexOf(e.charAt(t))>=0;)r+=e.charAt(t),m+=e.charAt(t),t++;return u()},g=function(n){for(m="";t<e.length&&"\n\r{}".indexOf(e.charAt(t))<0&&n.indexOf(e.charAt(t))<0;)r+=e.charAt(t),m+=e.charAt(t),t++;return _?l=m:_=m,u()},E=function(e,n){return r+=e,t++,!n&&u()},h=function(n){return E(n,!0),function(n){if(m="",e[t]!==n){for(;t<e.length&&(n!==e[t]||"\\"===e[t-1])&&"\n"!==e[t]&&"\r"!==e[t];)r+=e.charAt(t),m+=e.charAt(t),t++;"\n"===e[t]||"\r"===e[t]||t>=e.length?i=!0:(_?l=m.replace(/\\"/g,'"'):_=m.replace(/\\"/g,'"'),u())}}(n),e.charAt(t)!==n?Tt:E(n)?-1:void 0},S=!1,f=function(){switch(c){case"id":S?(d.id=_,S=!1):d.id=d.id||_;break;case"class":d.class||(d.class=[]),d.class.indexOf(_)<0&&d.class.push(_);break;case"key":if(!_)return Tt;_ in d?"class"===_&&Boolean(l)&&d.class.push(l):(d[_]=void 0===l?o.defaultValue(_):"class"===_?[l]:l,"id"===_&&(S=!0))}c=void 0,_="",l=void 0};for(p(" \t\v"),"{"===e[t]&&(E("{"),a=!0);!u()&&!p(" \t\v");){if("."===e.charAt(t)){if(c="class",E(".")){i=!0;break}}else if("#"===e.charAt(t)){if(c="id",E("#")){i=!0;break}}else c="key";if(g("=\t\b\v  ")||!_)break;if("="===e.charAt(t)&&"key"===c){if(E("="))break;if('"'===e.charAt(t)){var T=h('"');if(-1===T)break;if(T===Tt)return Tt}else if("'"===e.charAt(t)){var b=h("'");if(-1===b)break;if(b===Tt)return Tt}else if(g(" \t\n\r\v=}"))break}f()}if(f(),a){if(!(t<e.length&&"}"===e[t]))return Tt;a=!1,E("}")}return i?Tt:{prop:d,eaten:r}},Nt="[__",vt="__]";function Rt(e,t){return e.indexOf(Nt,t)}var At=function(){function e(e,t){if(t.startsWith(Nt)){for(var n="",r=Nt.length,a=t.length;!t.startsWith(vt,r)&&r<a;){if(n+=t.charAt(r),"\n"===t.charAt(r))return!0;r++}var i="",o={};if("{"===t.charAt(r+vt.length)){var s=Ct(t,r+vt.length);i=s.eaten,o=s.prop}return"password"!==o.type&&(o.type="text"),o.placeholder=n.replace(/^_*/g,"").replace(/_*$/g,"")||void 0,!(r<a)||e(Nt+n+vt+i)({type:"line-input",children:[],data:{hName:"input",hProperties:o}})}}e.locator=Rt;var t=this.Parser,n=t.prototype.inlineTokenizers,r=t.prototype.inlineMethods;n.input=e,r.splice(r.indexOf("url"),0,"input");var a=this.Compiler;a&&(a.prototype.visitors.lineinput=function(e){return"[__".concat(this.all(e).join(""),"__]")})};const Ot="[",yt=/(\| *[vV] *])({[^\n]*})?/;function It(e,t){return e.indexOf(Ot,t)}var Dt=function(){let e="|v]";function t(t,n){if(!this.options.gfm||!n.startsWith(Ot))return;let r="",a=1;const{length:i}=n,o=t.now();o.column+=2,o.offset+=2;let s=null;if(!((s=n.substr(1).match(yt))&&a<i))return;r+=n.substr(1,s.index),e=s[1],a+=s.index+e.length;let l="",c={};if("{"===n.charAt(a)){const e=Ct(n,a);a+=(l=e.eaten).length,c=e.prop}return!(a<=i)||t(Ot+r+e+l)({type:"select",children:[],data:{hName:"select",hProperties:c,hChildren:r.split("|").filter(e=>e).map(e=>{const t=e.trim();return{type:"element",tagName:"option",properties:{value:t},children:[{type:"text",value:t}]}})}})}t.locator=It;const{Parser:n}=this,{inlineTokenizers:r}=n.prototype,{inlineMethods:a}=n.prototype;r.select=t,a.splice(a.indexOf("url"),0,"select");const{Compiler:i}=this;if(i){const{visitors:t}=i.prototype;t.lineselect=function(t){return Ot+this.all(t).join("")+e}}};const xt=/^(\[_+\n)/g,Mt=/(_+])/g;function wt(e,t){return e.indexOf(xt,t)}var Lt=function(){function e(e,t){if(!this.options.gfm||0!==t.search(xt))return;let n={class:void 0,id:void 0},r="";if(t.search(Mt)>0){if(t.search(Mt)+t.match(Mt)[0].length<t.length&&"{"===t.charAt(t.search(Mt)+t.match(Mt)[0].length)){const e=Ct(t,t.search(Mt)+t.match(Mt)[0].length);r=e.eaten,n=e.prop}let a=t.search(Mt);return a!==t.match(xt)[0].length&&(a-=1),e(t.slice(0,t.search(Mt)+t.match(Mt)[0].length)+r)({type:"textarea",data:{hName:"TEXTAREA",hProperties:n,hChildren:[{type:"text",value:t.slice(t.match(xt)[0].length,a)}]}})}return!0}e.locator=wt;const{Parser:t}=this,{blockTokenizers:n}=t.prototype,{blockMethods:r}=t.prototype;n.textinput=e,r.splice(r.indexOf("fencedCode")+1,0,"textinput");const{Compiler:a}=this;if(a){const{visitors:e}=a.prototype;e.textinput=function(e){return`[__${this.all(e).join("")}__]`}}};const Pt=[65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];var kt={REPLACEMENT_CHARACTER:"�",CODE_POINTS:{EOF:-1,NULL:0,TABULATION:9,CARRIAGE_RETURN:13,LINE_FEED:10,FORM_FEED:12,SPACE:32,EXCLAMATION_MARK:33,QUOTATION_MARK:34,NUMBER_SIGN:35,AMPERSAND:38,APOSTROPHE:39,HYPHEN_MINUS:45,SOLIDUS:47,DIGIT_0:48,DIGIT_9:57,SEMICOLON:59,LESS_THAN_SIGN:60,EQUALS_SIGN:61,GREATER_THAN_SIGN:62,QUESTION_MARK:63,LATIN_CAPITAL_A:65,LATIN_CAPITAL_F:70,LATIN_CAPITAL_X:88,LATIN_CAPITAL_Z:90,RIGHT_SQUARE_BRACKET:93,GRAVE_ACCENT:96,LATIN_SMALL_A:97,LATIN_SMALL_F:102,LATIN_SMALL_X:120,LATIN_SMALL_Z:122,REPLACEMENT_CHARACTER:65533},CODE_POINT_SEQUENCES:{DASH_DASH_STRING:[45,45],DOCTYPE_STRING:[68,79,67,84,89,80,69],CDATA_START_STRING:[91,67,68,65,84,65,91],SCRIPT_STRING:[115,99,114,105,112,116],PUBLIC_STRING:[80,85,66,76,73,67],SYSTEM_STRING:[83,89,83,84,69,77]},isSurrogate:function(e){return e>=55296&&e<=57343},isSurrogatePair:function(e){return e>=56320&&e<=57343},getSurrogatePairCodePoint:function(e,t){return 1024*(e-55296)+9216+t},isControlCodePoint:function(e){return 32!==e&&10!==e&&13!==e&&9!==e&&12!==e&&e>=1&&e<=31||e>=127&&e<=159},isUndefinedCodePoint:function(e){return e>=64976&&e<=65007||Pt.indexOf(e)>-1}},Ut={controlCharacterInInputStream:"control-character-in-input-stream",noncharacterInInputStream:"noncharacter-in-input-stream",surrogateInInputStream:"surrogate-in-input-stream",nonVoidHtmlElementStartTagWithTrailingSolidus:"non-void-html-element-start-tag-with-trailing-solidus",endTagWithAttributes:"end-tag-with-attributes",endTagWithTrailingSolidus:"end-tag-with-trailing-solidus",unexpectedSolidusInTag:"unexpected-solidus-in-tag",unexpectedNullCharacter:"unexpected-null-character",unexpectedQuestionMarkInsteadOfTagName:"unexpected-question-mark-instead-of-tag-name",invalidFirstCharacterOfTagName:"invalid-first-character-of-tag-name",unexpectedEqualsSignBeforeAttributeName:"unexpected-equals-sign-before-attribute-name",missingEndTagName:"missing-end-tag-name",unexpectedCharacterInAttributeName:"unexpected-character-in-attribute-name",unknownNamedCharacterReference:"unknown-named-character-reference",missingSemicolonAfterCharacterReference:"missing-semicolon-after-character-reference",unexpectedCharacterAfterDoctypeSystemIdentifier:"unexpected-character-after-doctype-system-identifier",unexpectedCharacterInUnquotedAttributeValue:"unexpected-character-in-unquoted-attribute-value",eofBeforeTagName:"eof-before-tag-name",eofInTag:"eof-in-tag",missingAttributeValue:"missing-attribute-value",missingWhitespaceBetweenAttributes:"missing-whitespace-between-attributes",missingWhitespaceAfterDoctypePublicKeyword:"missing-whitespace-after-doctype-public-keyword",missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:"missing-whitespace-between-doctype-public-and-system-identifiers",missingWhitespaceAfterDoctypeSystemKeyword:"missing-whitespace-after-doctype-system-keyword",missingQuoteBeforeDoctypePublicIdentifier:"missing-quote-before-doctype-public-identifier",missingQuoteBeforeDoctypeSystemIdentifier:"missing-quote-before-doctype-system-identifier",missingDoctypePublicIdentifier:"missing-doctype-public-identifier",missingDoctypeSystemIdentifier:"missing-doctype-system-identifier",abruptDoctypePublicIdentifier:"abrupt-doctype-public-identifier",abruptDoctypeSystemIdentifier:"abrupt-doctype-system-identifier",cdataInHtmlContent:"cdata-in-html-content",incorrectlyOpenedComment:"incorrectly-opened-comment",eofInScriptHtmlCommentLikeText:"eof-in-script-html-comment-like-text",eofInDoctype:"eof-in-doctype",nestedComment:"nested-comment",abruptClosingOfEmptyComment:"abrupt-closing-of-empty-comment",eofInComment:"eof-in-comment",incorrectlyClosedComment:"incorrectly-closed-comment",eofInCdata:"eof-in-cdata",absenceOfDigitsInNumericCharacterReference:"absence-of-digits-in-numeric-character-reference",nullCharacterReference:"null-character-reference",surrogateCharacterReference:"surrogate-character-reference",characterReferenceOutsideUnicodeRange:"character-reference-outside-unicode-range",controlCharacterReference:"control-character-reference",noncharacterCharacterReference:"noncharacter-character-reference",missingWhitespaceBeforeDoctypeName:"missing-whitespace-before-doctype-name",missingDoctypeName:"missing-doctype-name",invalidCharacterSequenceAfterDoctypeName:"invalid-character-sequence-after-doctype-name",duplicateAttribute:"duplicate-attribute",nonConformingDoctype:"non-conforming-doctype",missingDoctype:"missing-doctype",misplacedDoctype:"misplaced-doctype",endTagWithoutMatchingOpenElement:"end-tag-without-matching-open-element",closingOfElementWithOpenChildElements:"closing-of-element-with-open-child-elements",disallowedContentInNoscriptInHead:"disallowed-content-in-noscript-in-head",openElementsLeftAfterEof:"open-elements-left-after-eof",abandonedHeadElementChild:"abandoned-head-element-child",misplacedStartTagForHeadElement:"misplaced-start-tag-for-head-element",nestedNoscriptInHead:"nested-noscript-in-head",eofInElementThatCanContainOnlyText:"eof-in-element-that-can-contain-only-text"};const Ft=kt.CODE_POINTS,Bt=65536;var Gt=class{constructor(){this.html=null,this.pos=-1,this.lastGapPos=-1,this.lastCharPos=-1,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=Bt}_err(){}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(e){if(this.pos!==this.lastCharPos){const t=this.html.charCodeAt(this.pos+1);if(kt.isSurrogatePair(t))return this.pos++,this._addGap(),kt.getSurrogatePairCodePoint(e,t)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,Ft.EOF;return this._err(Ut.surrogateInInputStream),e}dropParsedChunk(){this.pos>this.bufferWaterline&&(this.lastCharPos-=this.pos,this.html=this.html.substring(this.pos),this.pos=0,this.lastGapPos=-1,this.gapStack=[])}write(e,t){this.html?this.html+=e:this.html=e,this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1,this.html.length),this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1}advance(){if(this.pos++,this.pos>this.lastCharPos)return this.endOfChunkHit=!this.lastChunkWritten,Ft.EOF;let e=this.html.charCodeAt(this.pos);return this.skipNextNewLine&&e===Ft.LINE_FEED?(this.skipNextNewLine=!1,this._addGap(),this.advance()):e===Ft.CARRIAGE_RETURN?(this.skipNextNewLine=!0,Ft.LINE_FEED):(this.skipNextNewLine=!1,kt.isSurrogate(e)&&(e=this._processSurrogate(e)),e>31&&e<127||e===Ft.LINE_FEED||e===Ft.CARRIAGE_RETURN||e>159&&e<64976||this._checkForProblematicCharacters(e),e)}_checkForProblematicCharacters(e){kt.isControlCodePoint(e)?this._err(Ut.controlCharacterInInputStream):kt.isUndefinedCodePoint(e)&&this._err(Ut.noncharacterInInputStream)}retreat(){this.pos===this.lastGapPos&&(this.lastGapPos=this.gapStack.pop(),this.pos--),this.pos--}},Ht=new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4e3,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,1e4,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13e3,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);const Yt=kt.CODE_POINTS,Vt=kt.CODE_POINT_SEQUENCES,zt={128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},qt=1,Kt=2,Wt=4,Qt=qt|Kt|Wt,$t="DATA_STATE",jt="RCDATA_STATE",Xt="RAWTEXT_STATE",Zt="SCRIPT_DATA_STATE",Jt="PLAINTEXT_STATE",en="TAG_OPEN_STATE",tn="END_TAG_OPEN_STATE",nn="TAG_NAME_STATE",rn="RCDATA_LESS_THAN_SIGN_STATE",an="RCDATA_END_TAG_OPEN_STATE",on="RCDATA_END_TAG_NAME_STATE",sn="RAWTEXT_LESS_THAN_SIGN_STATE",ln="RAWTEXT_END_TAG_OPEN_STATE",cn="RAWTEXT_END_TAG_NAME_STATE",dn="SCRIPT_DATA_LESS_THAN_SIGN_STATE",_n="SCRIPT_DATA_END_TAG_OPEN_STATE",un="SCRIPT_DATA_END_TAG_NAME_STATE",mn="SCRIPT_DATA_ESCAPE_START_STATE",pn="SCRIPT_DATA_ESCAPE_START_DASH_STATE",gn="SCRIPT_DATA_ESCAPED_STATE",En="SCRIPT_DATA_ESCAPED_DASH_STATE",hn="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",Sn="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE",fn="SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE",Tn="SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE",bn="SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE",Cn="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",Nn="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE",vn="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE",Rn="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",An="SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE",On="BEFORE_ATTRIBUTE_NAME_STATE",yn="ATTRIBUTE_NAME_STATE",In="AFTER_ATTRIBUTE_NAME_STATE",Dn="BEFORE_ATTRIBUTE_VALUE_STATE",xn="ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE",Mn="ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE",wn="ATTRIBUTE_VALUE_UNQUOTED_STATE",Ln="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE",Pn="SELF_CLOSING_START_TAG_STATE",kn="BOGUS_COMMENT_STATE",Un="MARKUP_DECLARATION_OPEN_STATE",Fn="COMMENT_START_STATE",Bn="COMMENT_START_DASH_STATE",Gn="COMMENT_STATE",Hn="COMMENT_LESS_THAN_SIGN_STATE",Yn="COMMENT_LESS_THAN_SIGN_BANG_STATE",Vn="COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE",zn="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE",qn="COMMENT_END_DASH_STATE",Kn="COMMENT_END_STATE",Wn="COMMENT_END_BANG_STATE",Qn="DOCTYPE_STATE",$n="BEFORE_DOCTYPE_NAME_STATE",jn="DOCTYPE_NAME_STATE",Xn="AFTER_DOCTYPE_NAME_STATE",Zn="AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE",Jn="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE",er="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE",tr="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE",nr="AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE",rr="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE",ar="AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE",ir="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE",or="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE",sr="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE",lr="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE",cr="BOGUS_DOCTYPE_STATE",dr="CDATA_SECTION_STATE",_r="CDATA_SECTION_BRACKET_STATE",ur="CDATA_SECTION_END_STATE",mr="CHARACTER_REFERENCE_STATE",pr="NAMED_CHARACTER_REFERENCE_STATE",gr="AMBIGUOS_AMPERSAND_STATE",Er="NUMERIC_CHARACTER_REFERENCE_STATE",hr="HEXADEMICAL_CHARACTER_REFERENCE_START_STATE",Sr="DECIMAL_CHARACTER_REFERENCE_START_STATE",fr="HEXADEMICAL_CHARACTER_REFERENCE_STATE",Tr="DECIMAL_CHARACTER_REFERENCE_STATE",br="NUMERIC_CHARACTER_REFERENCE_END_STATE";function Cr(e){return e===Yt.SPACE||e===Yt.LINE_FEED||e===Yt.TABULATION||e===Yt.FORM_FEED}function Nr(e){return e>=Yt.DIGIT_0&&e<=Yt.DIGIT_9}function vr(e){return e>=Yt.LATIN_CAPITAL_A&&e<=Yt.LATIN_CAPITAL_Z}function Rr(e){return e>=Yt.LATIN_SMALL_A&&e<=Yt.LATIN_SMALL_Z}function Ar(e){return Rr(e)||vr(e)}function Or(e){return Ar(e)||Nr(e)}function yr(e){return e>=Yt.LATIN_CAPITAL_A&&e<=Yt.LATIN_CAPITAL_F}function Ir(e){return e>=Yt.LATIN_SMALL_A&&e<=Yt.LATIN_SMALL_F}function Dr(e){return e+32}function xr(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(e>>>10&1023|55296)+String.fromCharCode(56320|1023&e))}function Mr(e){return String.fromCharCode(Dr(e))}function wr(e,t){const n=Ht[++e];let r=++e,a=r+n-1;for(;r<=a;){const e=r+a>>>1,i=Ht[e];if(i<t)r=e+1;else{if(!(i>t))return Ht[e+n];a=e-1}}return-1}class Lr{constructor(){this.preprocessor=new Gt,this.tokenQueue=[],this.allowCDATA=!1,this.state=$t,this.returnState="",this.charRefCode=-1,this.tempBuff=[],this.lastStartTagName="",this.consumedAfterSnapshot=-1,this.active=!1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr=null}_err(){}_errOnNextCodePoint(e){this._consume(),this._err(e),this._unconsume()}getNextToken(){for(;!this.tokenQueue.length&&this.active;){this.consumedAfterSnapshot=0;const e=this._consume();this._ensureHibernation()||this[this.state](e)}return this.tokenQueue.shift()}write(e,t){this.active=!0,this.preprocessor.write(e,t)}insertHtmlAtCurrentPos(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e)}_ensureHibernation(){if(this.preprocessor.endOfChunkHit){for(;this.consumedAfterSnapshot>0;this.consumedAfterSnapshot--)this.preprocessor.retreat();return this.active=!1,this.tokenQueue.push({type:Lr.HIBERNATION_TOKEN}),!0}return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_unconsume(){this.consumedAfterSnapshot--,this.preprocessor.retreat()}_reconsumeInState(e){this.state=e,this._unconsume()}_consumeSequenceIfMatch(e,t,n){let r=0,a=!0;const i=e.length;let o=0,s=t,l=void 0;for(;o<i;o++){if(o>0&&(s=this._consume(),r++),s===Yt.EOF){a=!1;break}if(s!==(l=e[o])&&(n||s!==Dr(l))){a=!1;break}}if(!a)for(;r--;)this._unconsume();return a}_isTempBufferEqualToScriptString(){if(this.tempBuff.length!==Vt.SCRIPT_STRING.length)return!1;for(let e=0;e<this.tempBuff.length;e++)if(this.tempBuff[e]!==Vt.SCRIPT_STRING[e])return!1;return!0}_createStartTagToken(){this.currentToken={type:Lr.START_TAG_TOKEN,tagName:"",selfClosing:!1,ackSelfClosing:!1,attrs:[]}}_createEndTagToken(){this.currentToken={type:Lr.END_TAG_TOKEN,tagName:"",selfClosing:!1,attrs:[]}}_createCommentToken(){this.currentToken={type:Lr.COMMENT_TOKEN,data:""}}_createDoctypeToken(e){this.currentToken={type:Lr.DOCTYPE_TOKEN,name:e,forceQuirks:!1,publicId:null,systemId:null}}_createCharacterToken(e,t){this.currentCharacterToken={type:e,chars:t}}_createEOFToken(){this.currentToken={type:Lr.EOF_TOKEN}}_createAttr(e){this.currentAttr={name:e,value:""}}_leaveAttrName(e){null===Lr.getTokenAttr(this.currentToken,this.currentAttr.name)?this.currentToken.attrs.push(this.currentAttr):this._err(Ut.duplicateAttribute),this.state=e}_leaveAttrValue(e){this.state=e}_emitCurrentToken(){this._emitCurrentCharacterToken();const e=this.currentToken;this.currentToken=null,e.type===Lr.START_TAG_TOKEN?this.lastStartTagName=e.tagName:e.type===Lr.END_TAG_TOKEN&&(e.attrs.length>0&&this._err(Ut.endTagWithAttributes),e.selfClosing&&this._err(Ut.endTagWithTrailingSolidus)),this.tokenQueue.push(e)}_emitCurrentCharacterToken(){this.currentCharacterToken&&(this.tokenQueue.push(this.currentCharacterToken),this.currentCharacterToken=null)}_emitEOFToken(){this._createEOFToken(),this._emitCurrentToken()}_appendCharToCurrentCharacterToken(e,t){this.currentCharacterToken&&this.currentCharacterToken.type!==e&&this._emitCurrentCharacterToken(),this.currentCharacterToken?this.currentCharacterToken.chars+=t:this._createCharacterToken(e,t)}_emitCodePoint(e){let t=Lr.CHARACTER_TOKEN;Cr(e)?t=Lr.WHITESPACE_CHARACTER_TOKEN:e===Yt.NULL&&(t=Lr.NULL_CHARACTER_TOKEN),this._appendCharToCurrentCharacterToken(t,xr(e))}_emitSeveralCodePoints(e){for(let t=0;t<e.length;t++)this._emitCodePoint(e[t])}_emitChars(e){this._appendCharToCurrentCharacterToken(Lr.CHARACTER_TOKEN,e)}_matchNamedCharacterReference(e){let t=null,n=1,r=wr(0,e);for(this.tempBuff.push(e);r>-1;){const e=Ht[r],a=e<Qt;a&&e&qt&&(t=e&Kt?[Ht[++r],Ht[++r]]:[Ht[++r]],n=0);const i=this._consume();if(this.tempBuff.push(i),n++,i===Yt.EOF)break;r=a?e&Wt?wr(r,i):-1:i===e?++r:-1}for(;n--;)this.tempBuff.pop(),this._unconsume();return t}_isCharacterReferenceInAttribute(){return this.returnState===xn||this.returnState===Mn||this.returnState===wn}_isCharacterReferenceAttributeQuirk(e){if(!e&&this._isCharacterReferenceInAttribute()){const e=this._consume();return this._unconsume(),e===Yt.EQUALS_SIGN||Or(e)}return!1}_flushCodePointsConsumedAsCharacterReference(){if(this._isCharacterReferenceInAttribute())for(let e=0;e<this.tempBuff.length;e++)this.currentAttr.value+=xr(this.tempBuff[e]);else this._emitSeveralCodePoints(this.tempBuff);this.tempBuff=[]}[$t](e){this.preprocessor.dropParsedChunk(),e===Yt.LESS_THAN_SIGN?this.state=en:e===Yt.AMPERSAND?(this.returnState=$t,this.state=mr):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitCodePoint(e)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[jt](e){this.preprocessor.dropParsedChunk(),e===Yt.AMPERSAND?(this.returnState=jt,this.state=mr):e===Yt.LESS_THAN_SIGN?this.state=rn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[Xt](e){this.preprocessor.dropParsedChunk(),e===Yt.LESS_THAN_SIGN?this.state=sn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[Zt](e){this.preprocessor.dropParsedChunk(),e===Yt.LESS_THAN_SIGN?this.state=dn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[Jt](e){this.preprocessor.dropParsedChunk(),e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[en](e){e===Yt.EXCLAMATION_MARK?this.state=Un:e===Yt.SOLIDUS?this.state=tn:Ar(e)?(this._createStartTagToken(),this._reconsumeInState(nn)):e===Yt.QUESTION_MARK?(this._err(Ut.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(),this._reconsumeInState(kn)):e===Yt.EOF?(this._err(Ut.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken()):(this._err(Ut.invalidFirstCharacterOfTagName),this._emitChars("<"),this._reconsumeInState($t))}[tn](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(nn)):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingEndTagName),this.state=$t):e===Yt.EOF?(this._err(Ut.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken()):(this._err(Ut.invalidFirstCharacterOfTagName),this._createCommentToken(),this._reconsumeInState(kn))}[nn](e){Cr(e)?this.state=On:e===Yt.SOLIDUS?this.state=Pn:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):vr(e)?this.currentToken.tagName+=Mr(e):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.tagName+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentToken.tagName+=xr(e)}[rn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=an):(this._emitChars("<"),this._reconsumeInState(jt))}[an](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(on)):(this._emitChars("</"),this._reconsumeInState(jt))}[on](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this.state=$t,void this._emitCurrentToken()}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(jt)}}[sn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=ln):(this._emitChars("<"),this._reconsumeInState(Xt))}[ln](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(cn)):(this._emitChars("</"),this._reconsumeInState(Xt))}[cn](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=$t)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(Xt)}}[dn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=_n):e===Yt.EXCLAMATION_MARK?(this.state=mn,this._emitChars("<!")):(this._emitChars("<"),this._reconsumeInState(Zt))}[_n](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(un)):(this._emitChars("</"),this._reconsumeInState(Zt))}[un](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=$t)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(Zt)}}[mn](e){e===Yt.HYPHEN_MINUS?(this.state=pn,this._emitChars("-")):this._reconsumeInState(Zt)}[pn](e){e===Yt.HYPHEN_MINUS?(this.state=hn,this._emitChars("-")):this._reconsumeInState(Zt)}[gn](e){e===Yt.HYPHEN_MINUS?(this.state=En,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?this.state=Sn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):this._emitCodePoint(e)}[En](e){e===Yt.HYPHEN_MINUS?(this.state=hn,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?this.state=Sn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=gn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=gn,this._emitCodePoint(e))}[hn](e){e===Yt.HYPHEN_MINUS?this._emitChars("-"):e===Yt.LESS_THAN_SIGN?this.state=Sn:e===Yt.GREATER_THAN_SIGN?(this.state=Zt,this._emitChars(">")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=gn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=gn,this._emitCodePoint(e))}[Sn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=fn):Ar(e)?(this.tempBuff=[],this._emitChars("<"),this._reconsumeInState(bn)):(this._emitChars("<"),this._reconsumeInState(gn))}[fn](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(Tn)):(this._emitChars("</"),this._reconsumeInState(gn))}[Tn](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=$t)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(gn)}}[bn](e){Cr(e)||e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?Cn:gn,this._emitCodePoint(e)):vr(e)?(this.tempBuff.push(Dr(e)),this._emitCodePoint(e)):Rr(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(gn)}[Cn](e){e===Yt.HYPHEN_MINUS?(this.state=Nn,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?(this.state=Rn,this._emitChars("<")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):this._emitCodePoint(e)}[Nn](e){e===Yt.HYPHEN_MINUS?(this.state=vn,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?(this.state=Rn,this._emitChars("<")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=Cn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=Cn,this._emitCodePoint(e))}[vn](e){e===Yt.HYPHEN_MINUS?this._emitChars("-"):e===Yt.LESS_THAN_SIGN?(this.state=Rn,this._emitChars("<")):e===Yt.GREATER_THAN_SIGN?(this.state=Zt,this._emitChars(">")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=Cn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=Cn,this._emitCodePoint(e))}[Rn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=An,this._emitChars("/")):this._reconsumeInState(Cn)}[An](e){Cr(e)||e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?gn:Cn,this._emitCodePoint(e)):vr(e)?(this.tempBuff.push(Dr(e)),this._emitCodePoint(e)):Rr(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(Cn)}[On](e){Cr(e)||(e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN||e===Yt.EOF?this._reconsumeInState(In):e===Yt.EQUALS_SIGN?(this._err(Ut.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=yn):(this._createAttr(""),this._reconsumeInState(yn)))}[yn](e){Cr(e)||e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN||e===Yt.EOF?(this._leaveAttrName(In),this._unconsume()):e===Yt.EQUALS_SIGN?this._leaveAttrName(Dn):vr(e)?this.currentAttr.name+=Mr(e):e===Yt.QUOTATION_MARK||e===Yt.APOSTROPHE||e===Yt.LESS_THAN_SIGN?(this._err(Ut.unexpectedCharacterInAttributeName),this.currentAttr.name+=xr(e)):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.name+=kt.REPLACEMENT_CHARACTER):this.currentAttr.name+=xr(e)}[In](e){Cr(e)||(e===Yt.SOLIDUS?this.state=Pn:e===Yt.EQUALS_SIGN?this.state=Dn:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):(this._createAttr(""),this._reconsumeInState(yn)))}[Dn](e){Cr(e)||(e===Yt.QUOTATION_MARK?this.state=xn:e===Yt.APOSTROPHE?this.state=Mn:e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingAttributeValue),this.state=$t,this._emitCurrentToken()):this._reconsumeInState(wn))}[xn](e){e===Yt.QUOTATION_MARK?this.state=Ln:e===Yt.AMPERSAND?(this.returnState=xn,this.state=mr):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.value+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentAttr.value+=xr(e)}[Mn](e){e===Yt.APOSTROPHE?this.state=Ln:e===Yt.AMPERSAND?(this.returnState=Mn,this.state=mr):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.value+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentAttr.value+=xr(e)}[wn](e){Cr(e)?this._leaveAttrValue(On):e===Yt.AMPERSAND?(this.returnState=wn,this.state=mr):e===Yt.GREATER_THAN_SIGN?(this._leaveAttrValue($t),this._emitCurrentToken()):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.value+=kt.REPLACEMENT_CHARACTER):e===Yt.QUOTATION_MARK||e===Yt.APOSTROPHE||e===Yt.LESS_THAN_SIGN||e===Yt.EQUALS_SIGN||e===Yt.GRAVE_ACCENT?(this._err(Ut.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=xr(e)):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentAttr.value+=xr(e)}[Ln](e){Cr(e)?this._leaveAttrValue(On):e===Yt.SOLIDUS?this._leaveAttrValue(Pn):e===Yt.GREATER_THAN_SIGN?(this._leaveAttrValue($t),this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):(this._err(Ut.missingWhitespaceBetweenAttributes),this._reconsumeInState(On))}[Pn](e){e===Yt.GREATER_THAN_SIGN?(this.currentToken.selfClosing=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):(this._err(Ut.unexpectedSolidusInTag),this._reconsumeInState(On))}[kn](e){e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._emitCurrentToken(),this._emitEOFToken()):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.data+=kt.REPLACEMENT_CHARACTER):this.currentToken.data+=xr(e)}[Un](e){this._consumeSequenceIfMatch(Vt.DASH_DASH_STRING,e,!0)?(this._createCommentToken(),this.state=Fn):this._consumeSequenceIfMatch(Vt.DOCTYPE_STRING,e,!1)?this.state=Qn:this._consumeSequenceIfMatch(Vt.CDATA_START_STRING,e,!0)?this.allowCDATA?this.state=dr:(this._err(Ut.cdataInHtmlContent),this._createCommentToken(),this.currentToken.data="[CDATA[",this.state=kn):this._ensureHibernation()||(this._err(Ut.incorrectlyOpenedComment),this._createCommentToken(),this._reconsumeInState(kn))}[Fn](e){e===Yt.HYPHEN_MINUS?this.state=Bn:e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptClosingOfEmptyComment),this.state=$t,this._emitCurrentToken()):this._reconsumeInState(Gn)}[Bn](e){e===Yt.HYPHEN_MINUS?this.state=Kn:e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptClosingOfEmptyComment),this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(Gn))}[Gn](e){e===Yt.HYPHEN_MINUS?this.state=qn:e===Yt.LESS_THAN_SIGN?(this.currentToken.data+="<",this.state=Hn):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.data+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.data+=xr(e)}[Hn](e){e===Yt.EXCLAMATION_MARK?(this.currentToken.data+="!",this.state=Yn):e===Yt.LESS_THAN_SIGN?this.currentToken.data+="!":this._reconsumeInState(Gn)}[Yn](e){e===Yt.HYPHEN_MINUS?this.state=Vn:this._reconsumeInState(Gn)}[Vn](e){e===Yt.HYPHEN_MINUS?this.state=zn:this._reconsumeInState(qn)}[zn](e){e!==Yt.GREATER_THAN_SIGN&&e!==Yt.EOF&&this._err(Ut.nestedComment),this._reconsumeInState(Kn)}[qn](e){e===Yt.HYPHEN_MINUS?this.state=Kn:e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(Gn))}[Kn](e){e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EXCLAMATION_MARK?this.state=Wn:e===Yt.HYPHEN_MINUS?this.currentToken.data+="-":e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--",this._reconsumeInState(Gn))}[Wn](e){e===Yt.HYPHEN_MINUS?(this.currentToken.data+="--!",this.state=qn):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.incorrectlyClosedComment),this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--!",this._reconsumeInState(Gn))}[Qn](e){Cr(e)?this.state=$n:e===Yt.GREATER_THAN_SIGN?this._reconsumeInState($n):e===Yt.EOF?(this._err(Ut.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingWhitespaceBeforeDoctypeName),this._reconsumeInState($n))}[$n](e){Cr(e)||(vr(e)?(this._createDoctypeToken(Mr(e)),this.state=jn):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._createDoctypeToken(kt.REPLACEMENT_CHARACTER),this.state=jn):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypeName),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._createDoctypeToken(xr(e)),this.state=jn))}[jn](e){Cr(e)?this.state=Xn:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):vr(e)?this.currentToken.name+=Mr(e):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.name+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.name+=xr(e)}[Xn](e){Cr(e)||(e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this._consumeSequenceIfMatch(Vt.PUBLIC_STRING,e,!1)?this.state=Zn:this._consumeSequenceIfMatch(Vt.SYSTEM_STRING,e,!1)?this.state=ar:this._ensureHibernation()||(this._err(Ut.invalidCharacterSequenceAfterDoctypeName),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[Zn](e){Cr(e)?this.state=Jn:e===Yt.QUOTATION_MARK?(this._err(Ut.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=er):e===Yt.APOSTROPHE?(this._err(Ut.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=tr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr))}[Jn](e){Cr(e)||(e===Yt.QUOTATION_MARK?(this.currentToken.publicId="",this.state=er):e===Yt.APOSTROPHE?(this.currentToken.publicId="",this.state=tr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[er](e){e===Yt.QUOTATION_MARK?this.state=nr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.publicId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=xr(e)}[tr](e){e===Yt.APOSTROPHE?this.state=nr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.publicId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=xr(e)}[nr](e){Cr(e)?this.state=rr:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.QUOTATION_MARK?(this._err(Ut.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this._err(Ut.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=sr):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr))}[rr](e){Cr(e)||(e===Yt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=$t):e===Yt.QUOTATION_MARK?(this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this.currentToken.systemId="",this.state=sr):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[ar](e){Cr(e)?this.state=ir:e===Yt.QUOTATION_MARK?(this._err(Ut.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this._err(Ut.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=sr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr))}[ir](e){Cr(e)||(e===Yt.QUOTATION_MARK?(this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this.currentToken.systemId="",this.state=sr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[or](e){e===Yt.QUOTATION_MARK?this.state=lr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.systemId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=xr(e)}[sr](e){e===Yt.APOSTROPHE?this.state=lr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.systemId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=xr(e)}[lr](e){Cr(e)||(e===Yt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.unexpectedCharacterAfterDoctypeSystemIdentifier),this._reconsumeInState(cr)))}[cr](e){e===Yt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=$t):e===Yt.NULL?this._err(Ut.unexpectedNullCharacter):e===Yt.EOF&&(this._emitCurrentToken(),this._emitEOFToken())}[dr](e){e===Yt.RIGHT_SQUARE_BRACKET?this.state=_r:e===Yt.EOF?(this._err(Ut.eofInCdata),this._emitEOFToken()):this._emitCodePoint(e)}[_r](e){e===Yt.RIGHT_SQUARE_BRACKET?this.state=ur:(this._emitChars("]"),this._reconsumeInState(dr))}[ur](e){e===Yt.GREATER_THAN_SIGN?this.state=$t:e===Yt.RIGHT_SQUARE_BRACKET?this._emitChars("]"):(this._emitChars("]]"),this._reconsumeInState(dr))}[mr](e){this.tempBuff=[Yt.AMPERSAND],e===Yt.NUMBER_SIGN?(this.tempBuff.push(e),this.state=Er):Or(e)?this._reconsumeInState(pr):(this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[pr](e){const t=this._matchNamedCharacterReference(e);if(this._ensureHibernation())this.tempBuff=[Yt.AMPERSAND];else if(t){const e=this.tempBuff[this.tempBuff.length-1]===Yt.SEMICOLON;this._isCharacterReferenceAttributeQuirk(e)||(e||this._errOnNextCodePoint(Ut.missingSemicolonAfterCharacterReference),this.tempBuff=t),this._flushCodePointsConsumedAsCharacterReference(),this.state=this.returnState}else this._flushCodePointsConsumedAsCharacterReference(),this.state=gr}[gr](e){Or(e)?this._isCharacterReferenceInAttribute()?this.currentAttr.value+=xr(e):this._emitCodePoint(e):(e===Yt.SEMICOLON&&this._err(Ut.unknownNamedCharacterReference),this._reconsumeInState(this.returnState))}[Er](e){this.charRefCode=0,e===Yt.LATIN_SMALL_X||e===Yt.LATIN_CAPITAL_X?(this.tempBuff.push(e),this.state=hr):this._reconsumeInState(Sr)}[hr](e){!function(e){return Nr(e)||yr(e)||Ir(e)}(e)?(this._err(Ut.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)):this._reconsumeInState(fr)}[Sr](e){Nr(e)?this._reconsumeInState(Tr):(this._err(Ut.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[fr](e){yr(e)?this.charRefCode=16*this.charRefCode+e-55:Ir(e)?this.charRefCode=16*this.charRefCode+e-87:Nr(e)?this.charRefCode=16*this.charRefCode+e-48:e===Yt.SEMICOLON?this.state=br:(this._err(Ut.missingSemicolonAfterCharacterReference),this._reconsumeInState(br))}[Tr](e){Nr(e)?this.charRefCode=10*this.charRefCode+e-48:e===Yt.SEMICOLON?this.state=br:(this._err(Ut.missingSemicolonAfterCharacterReference),this._reconsumeInState(br))}[br](){if(this.charRefCode===Yt.NULL)this._err(Ut.nullCharacterReference),this.charRefCode=Yt.REPLACEMENT_CHARACTER;else if(this.charRefCode>1114111)this._err(Ut.characterReferenceOutsideUnicodeRange),this.charRefCode=Yt.REPLACEMENT_CHARACTER;else if(kt.isSurrogate(this.charRefCode))this._err(Ut.surrogateCharacterReference),this.charRefCode=Yt.REPLACEMENT_CHARACTER;else if(kt.isUndefinedCodePoint(this.charRefCode))this._err(Ut.noncharacterCharacterReference);else if(kt.isControlCodePoint(this.charRefCode)||this.charRefCode===Yt.CARRIAGE_RETURN){this._err(Ut.controlCharacterReference);const e=zt[this.charRefCode];e&&(this.charRefCode=e)}this.tempBuff=[this.charRefCode],this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)}}Lr.CHARACTER_TOKEN="CHARACTER_TOKEN",Lr.NULL_CHARACTER_TOKEN="NULL_CHARACTER_TOKEN",Lr.WHITESPACE_CHARACTER_TOKEN="WHITESPACE_CHARACTER_TOKEN",Lr.START_TAG_TOKEN="START_TAG_TOKEN",Lr.END_TAG_TOKEN="END_TAG_TOKEN",Lr.COMMENT_TOKEN="COMMENT_TOKEN",Lr.DOCTYPE_TOKEN="DOCTYPE_TOKEN",Lr.EOF_TOKEN="EOF_TOKEN",Lr.HIBERNATION_TOKEN="HIBERNATION_TOKEN",Lr.MODE={DATA:$t,RCDATA:jt,RAWTEXT:Xt,SCRIPT_DATA:Zt,PLAINTEXT:Jt},Lr.getTokenAttr=function(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null};var Pr=Lr,kr=b(function(e,t){const n=t.NAMESPACES={HTML:"http://www.w3.org/1999/xhtml",MATHML:"http://www.w3.org/1998/Math/MathML",SVG:"http://www.w3.org/2000/svg",XLINK:"http://www.w3.org/1999/xlink",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"};t.ATTRS={TYPE:"type",ACTION:"action",ENCODING:"encoding",PROMPT:"prompt",NAME:"name",COLOR:"color",FACE:"face",SIZE:"size"},t.DOCUMENT_MODE={NO_QUIRKS:"no-quirks",QUIRKS:"quirks",LIMITED_QUIRKS:"limited-quirks"};const r=t.TAG_NAMES={A:"a",ADDRESS:"address",ANNOTATION_XML:"annotation-xml",APPLET:"applet",AREA:"area",ARTICLE:"article",ASIDE:"aside",B:"b",BASE:"base",BASEFONT:"basefont",BGSOUND:"bgsound",BIG:"big",BLOCKQUOTE:"blockquote",BODY:"body",BR:"br",BUTTON:"button",CAPTION:"caption",CENTER:"center",CODE:"code",COL:"col",COLGROUP:"colgroup",DD:"dd",DESC:"desc",DETAILS:"details",DIALOG:"dialog",DIR:"dir",DIV:"div",DL:"dl",DT:"dt",EM:"em",EMBED:"embed",FIELDSET:"fieldset",FIGCAPTION:"figcaption",FIGURE:"figure",FONT:"font",FOOTER:"footer",FOREIGN_OBJECT:"foreignObject",FORM:"form",FRAME:"frame",FRAMESET:"frameset",H1:"h1",H2:"h2",H3:"h3",H4:"h4",H5:"h5",H6:"h6",HEAD:"head",HEADER:"header",HGROUP:"hgroup",HR:"hr",HTML:"html",I:"i",IMG:"img",IMAGE:"image",INPUT:"input",IFRAME:"iframe",KEYGEN:"keygen",LABEL:"label",LI:"li",LINK:"link",LISTING:"listing",MAIN:"main",MALIGNMARK:"malignmark",MARQUEE:"marquee",MATH:"math",MENU:"menu",META:"meta",MGLYPH:"mglyph",MI:"mi",MO:"mo",MN:"mn",MS:"ms",MTEXT:"mtext",NAV:"nav",NOBR:"nobr",NOFRAMES:"noframes",NOEMBED:"noembed",NOSCRIPT:"noscript",OBJECT:"object",OL:"ol",OPTGROUP:"optgroup",OPTION:"option",P:"p",PARAM:"param",PLAINTEXT:"plaintext",PRE:"pre",RB:"rb",RP:"rp",RT:"rt",RTC:"rtc",RUBY:"ruby",S:"s",SCRIPT:"script",SECTION:"section",SELECT:"select",SOURCE:"source",SMALL:"small",SPAN:"span",STRIKE:"strike",STRONG:"strong",STYLE:"style",SUB:"sub",SUMMARY:"summary",SUP:"sup",TABLE:"table",TBODY:"tbody",TEMPLATE:"template",TEXTAREA:"textarea",TFOOT:"tfoot",TD:"td",TH:"th",THEAD:"thead",TITLE:"title",TR:"tr",TRACK:"track",TT:"tt",U:"u",UL:"ul",SVG:"svg",VAR:"var",WBR:"wbr",XMP:"xmp"};t.SPECIAL_ELEMENTS={[n.HTML]:{[r.ADDRESS]:!0,[r.APPLET]:!0,[r.AREA]:!0,[r.ARTICLE]:!0,[r.ASIDE]:!0,[r.BASE]:!0,[r.BASEFONT]:!0,[r.BGSOUND]:!0,[r.BLOCKQUOTE]:!0,[r.BODY]:!0,[r.BR]:!0,[r.BUTTON]:!0,[r.CAPTION]:!0,[r.CENTER]:!0,[r.COL]:!0,[r.COLGROUP]:!0,[r.DD]:!0,[r.DETAILS]:!0,[r.DIR]:!0,[r.DIV]:!0,[r.DL]:!0,[r.DT]:!0,[r.EMBED]:!0,[r.FIELDSET]:!0,[r.FIGCAPTION]:!0,[r.FIGURE]:!0,[r.FOOTER]:!0,[r.FORM]:!0,[r.FRAME]:!0,[r.FRAMESET]:!0,[r.H1]:!0,[r.H2]:!0,[r.H3]:!0,[r.H4]:!0,[r.H5]:!0,[r.H6]:!0,[r.HEAD]:!0,[r.HEADER]:!0,[r.HGROUP]:!0,[r.HR]:!0,[r.HTML]:!0,[r.IFRAME]:!0,[r.IMG]:!0,[r.INPUT]:!0,[r.LI]:!0,[r.LINK]:!0,[r.LISTING]:!0,[r.MAIN]:!0,[r.MARQUEE]:!0,[r.MENU]:!0,[r.META]:!0,[r.NAV]:!0,[r.NOEMBED]:!0,[r.NOFRAMES]:!0,[r.NOSCRIPT]:!0,[r.OBJECT]:!0,[r.OL]:!0,[r.P]:!0,[r.PARAM]:!0,[r.PLAINTEXT]:!0,[r.PRE]:!0,[r.SCRIPT]:!0,[r.SECTION]:!0,[r.SELECT]:!0,[r.SOURCE]:!0,[r.STYLE]:!0,[r.SUMMARY]:!0,[r.TABLE]:!0,[r.TBODY]:!0,[r.TD]:!0,[r.TEMPLATE]:!0,[r.TEXTAREA]:!0,[r.TFOOT]:!0,[r.TH]:!0,[r.THEAD]:!0,[r.TITLE]:!0,[r.TR]:!0,[r.TRACK]:!0,[r.UL]:!0,[r.WBR]:!0,[r.XMP]:!0},[n.MATHML]:{[r.MI]:!0,[r.MO]:!0,[r.MN]:!0,[r.MS]:!0,[r.MTEXT]:!0,[r.ANNOTATION_XML]:!0},[n.SVG]:{[r.TITLE]:!0,[r.FOREIGN_OBJECT]:!0,[r.DESC]:!0}}});kr.NAMESPACES,kr.ATTRS,kr.DOCUMENT_MODE,kr.TAG_NAMES,kr.SPECIAL_ELEMENTS;const Ur=kr.TAG_NAMES,Fr=kr.NAMESPACES;function Br(e){switch(e.length){case 1:return e===Ur.P;case 2:return e===Ur.RB||e===Ur.RP||e===Ur.RT||e===Ur.DD||e===Ur.DT||e===Ur.LI;case 3:return e===Ur.RTC;case 6:return e===Ur.OPTION;case 8:return e===Ur.OPTGROUP}return!1}function Gr(e){switch(e.length){case 1:return e===Ur.P;case 2:return e===Ur.RB||e===Ur.RP||e===Ur.RT||e===Ur.DD||e===Ur.DT||e===Ur.LI||e===Ur.TD||e===Ur.TH||e===Ur.TR;case 3:return e===Ur.RTC;case 5:return e===Ur.TBODY||e===Ur.TFOOT||e===Ur.THEAD;case 6:return e===Ur.OPTION;case 7:return e===Ur.CAPTION;case 8:return e===Ur.OPTGROUP||e===Ur.COLGROUP}return!1}function Hr(e,t){switch(e.length){case 2:if(e===Ur.TD||e===Ur.TH)return t===Fr.HTML;if(e===Ur.MI||e===Ur.MO||e===Ur.MN||e===Ur.MS)return t===Fr.MATHML;break;case 4:if(e===Ur.HTML)return t===Fr.HTML;if(e===Ur.DESC)return t===Fr.SVG;break;case 5:if(e===Ur.TABLE)return t===Fr.HTML;if(e===Ur.MTEXT)return t===Fr.MATHML;if(e===Ur.TITLE)return t===Fr.SVG;break;case 6:return(e===Ur.APPLET||e===Ur.OBJECT)&&t===Fr.HTML;case 7:return(e===Ur.CAPTION||e===Ur.MARQUEE)&&t===Fr.HTML;case 8:return e===Ur.TEMPLATE&&t===Fr.HTML;case 13:return e===Ur.FOREIGN_OBJECT&&t===Fr.SVG;case 14:return e===Ur.ANNOTATION_XML&&t===Fr.MATHML}return!1}var Yr=class{constructor(e,t){this.stackTop=-1,this.items=[],this.current=e,this.currentTagName=null,this.currentTmplContent=null,this.tmplCount=0,this.treeAdapter=t}_indexOf(e){let t=-1;for(let n=this.stackTop;n>=0;n--)if(this.items[n]===e){t=n;break}return t}_isInTemplate(){return this.currentTagName===Ur.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===Fr.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagName=this.current&&this.treeAdapter.getTagName(this.current),this.currentTmplContent=this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):null}push(e){this.items[++this.stackTop]=e,this._updateCurrentElement(),this._isInTemplate()&&this.tmplCount++}pop(){this.stackTop--,this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this._updateCurrentElement()}replace(e,t){const n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&this._updateCurrentElement()}insertAfter(e,t){const n=this._indexOf(e)+1;this.items.splice(n,0,t),n===++this.stackTop&&this._updateCurrentElement()}popUntilTagNamePopped(e){for(;this.stackTop>-1;){const t=this.currentTagName,n=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),t===e&&n===Fr.HTML)break}}popUntilElementPopped(e){for(;this.stackTop>-1;){const t=this.current;if(this.pop(),t===e)break}}popUntilNumberedHeaderPopped(){for(;this.stackTop>-1;){const e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===Ur.H1||e===Ur.H2||e===Ur.H3||e===Ur.H4||e===Ur.H5||e===Ur.H6&&t===Fr.HTML)break}}popUntilTableCellPopped(){for(;this.stackTop>-1;){const e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===Ur.TD||e===Ur.TH&&t===Fr.HTML)break}}popAllUpToHtmlElement(){this.stackTop=0,this._updateCurrentElement()}clearBackToTableContext(){for(;this.currentTagName!==Ur.TABLE&&this.currentTagName!==Ur.TEMPLATE&&this.currentTagName!==Ur.HTML||this.treeAdapter.getNamespaceURI(this.current)!==Fr.HTML;)this.pop()}clearBackToTableBodyContext(){for(;this.currentTagName!==Ur.TBODY&&this.currentTagName!==Ur.TFOOT&&this.currentTagName!==Ur.THEAD&&this.currentTagName!==Ur.TEMPLATE&&this.currentTagName!==Ur.HTML||this.treeAdapter.getNamespaceURI(this.current)!==Fr.HTML;)this.pop()}clearBackToTableRowContext(){for(;this.currentTagName!==Ur.TR&&this.currentTagName!==Ur.TEMPLATE&&this.currentTagName!==Ur.HTML||this.treeAdapter.getNamespaceURI(this.current)!==Fr.HTML;)this.pop()}remove(e){for(let t=this.stackTop;t>=0;t--)if(this.items[t]===e){this.items.splice(t,1),this.stackTop--,this._updateCurrentElement();break}}tryPeekProperlyNestedBodyElement(){const e=this.items[1];return e&&this.treeAdapter.getTagName(e)===Ur.BODY?e:null}contains(e){return this._indexOf(e)>-1}getCommonAncestor(e){let t=this._indexOf(e);return--t>=0?this.items[t]:null}isRootHtmlElementCurrent(){return 0===this.stackTop&&this.currentTagName===Ur.HTML}hasInScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===Fr.HTML)return!0;if(Hr(n,r))return!1}return!0}hasNumberedHeaderInScope(){for(let e=this.stackTop;e>=0;e--){const t=this.treeAdapter.getTagName(this.items[e]),n=this.treeAdapter.getNamespaceURI(this.items[e]);if((t===Ur.H1||t===Ur.H2||t===Ur.H3||t===Ur.H4||t===Ur.H5||t===Ur.H6)&&n===Fr.HTML)return!0;if(Hr(t,n))return!1}return!0}hasInListItemScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===Fr.HTML)return!0;if((n===Ur.UL||n===Ur.OL)&&r===Fr.HTML||Hr(n,r))return!1}return!0}hasInButtonScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===Fr.HTML)return!0;if(n===Ur.BUTTON&&r===Fr.HTML||Hr(n,r))return!1}return!0}hasInTableScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]);if(this.treeAdapter.getNamespaceURI(this.items[t])===Fr.HTML){if(n===e)return!0;if(n===Ur.TABLE||n===Ur.TEMPLATE||n===Ur.HTML)return!1}}return!0}hasTableBodyContextInTableScope(){for(let e=this.stackTop;e>=0;e--){const t=this.treeAdapter.getTagName(this.items[e]);if(this.treeAdapter.getNamespaceURI(this.items[e])===Fr.HTML){if(t===Ur.TBODY||t===Ur.THEAD||t===Ur.TFOOT)return!0;if(t===Ur.TABLE||t===Ur.HTML)return!1}}return!0}hasInSelectScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]);if(this.treeAdapter.getNamespaceURI(this.items[t])===Fr.HTML){if(n===e)return!0;if(n!==Ur.OPTION&&n!==Ur.OPTGROUP)return!1}}return!0}generateImpliedEndTags(){for(;Br(this.currentTagName);)this.pop()}generateImpliedEndTagsThoroughly(){for(;Gr(this.currentTagName);)this.pop()}generateImpliedEndTagsWithExclusion(e){for(;Br(this.currentTagName)&&this.currentTagName!==e;)this.pop()}};const Vr=3;class zr{constructor(e){this.length=0,this.entries=[],this.treeAdapter=e,this.bookmark=null}_getNoahArkConditionCandidates(e){const t=[];if(this.length>=Vr){const n=this.treeAdapter.getAttrList(e).length,r=this.treeAdapter.getTagName(e),a=this.treeAdapter.getNamespaceURI(e);for(let e=this.length-1;e>=0;e--){const i=this.entries[e];if(i.type===zr.MARKER_ENTRY)break;const o=i.element,s=this.treeAdapter.getAttrList(o);this.treeAdapter.getTagName(o)===r&&this.treeAdapter.getNamespaceURI(o)===a&&s.length===n&&t.push({idx:e,attrs:s})}}return t.length<Vr?[]:t}_ensureNoahArkCondition(e){const t=this._getNoahArkConditionCandidates(e);let n=t.length;if(n){const r=this.treeAdapter.getAttrList(e),a=r.length,i=Object.create(null);for(let e=0;e<a;e++){const t=r[e];i[t.name]=t.value}for(let e=0;e<a;e++)for(let r=0;r<n;r++){const a=t[r].attrs[e];if(i[a.name]!==a.value&&(t.splice(r,1),n--),t.length<Vr)return}for(let e=n-1;e>=Vr-1;e--)this.entries.splice(t[e].idx,1),this.length--}}insertMarker(){this.entries.push({type:zr.MARKER_ENTRY}),this.length++}pushElement(e,t){this._ensureNoahArkCondition(e),this.entries.push({type:zr.ELEMENT_ENTRY,element:e,token:t}),this.length++}insertElementAfterBookmark(e,t){let n=this.length-1;for(;n>=0&&this.entries[n]!==this.bookmark;n--);this.entries.splice(n+1,0,{type:zr.ELEMENT_ENTRY,element:e,token:t}),this.length++}removeEntry(e){for(let t=this.length-1;t>=0;t--)if(this.entries[t]===e){this.entries.splice(t,1),this.length--;break}}clearToLastMarker(){for(;this.length;){const e=this.entries.pop();if(this.length--,e.type===zr.MARKER_ENTRY)break}}getElementEntryInScopeWithTagName(e){for(let t=this.length-1;t>=0;t--){const n=this.entries[t];if(n.type===zr.MARKER_ENTRY)return null;if(this.treeAdapter.getTagName(n.element)===e)return n}return null}getElementEntry(e){for(let t=this.length-1;t>=0;t--){const n=this.entries[t];if(n.type===zr.ELEMENT_ENTRY&&n.element===e)return n}return null}}zr.MARKER_ENTRY="MARKER_ENTRY",zr.ELEMENT_ENTRY="ELEMENT_ENTRY";var qr=zr;class Kr{constructor(e){const t={},n=this._getOverriddenMethods(this,t);for(const r of Object.keys(n))"function"==typeof n[r]&&(t[r]=e[r],e[r]=n[r])}_getOverriddenMethods(){throw new Error("Not implemented")}}Kr.install=function(e,t,n){e.__mixins||(e.__mixins=[]);for(let n=0;n<e.__mixins.length;n++)if(e.__mixins[n].constructor===t)return e.__mixins[n];const r=new t(e,n);return e.__mixins.push(r),r};var Wr=Kr;var Qr=class extends Wr{constructor(e){super(e),this.preprocessor=e,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.offset=0,this.col=0,this.line=1}_getOverriddenMethods(e,t){return{advance(){const n=this.pos+1,r=this.html[n];return e.isEol&&(e.isEol=!1,e.line++,e.lineStartPos=n),("\n"===r||"\r"===r&&"\n"!==this.html[n+1])&&(e.isEol=!0),e.col=n-e.lineStartPos+1,e.offset=e.droppedBufferSize+n,t.advance.call(this)},retreat(){t.retreat.call(this),e.isEol=!1,e.col=this.pos-e.lineStartPos+1},dropParsedChunk(){const n=this.pos;t.dropParsedChunk.call(this);const r=n-this.pos;e.lineStartPos-=r,e.droppedBufferSize+=r,e.offset=e.droppedBufferSize+this.pos}}}};var $r=class extends Wr{constructor(e){super(e),this.tokenizer=e,this.posTracker=Wr.install(e.preprocessor,Qr),this.currentAttrLocation=null,this.ctLoc=null}_getCurrentLocation(){return{startLine:this.posTracker.line,startCol:this.posTracker.col,startOffset:this.posTracker.offset,endLine:-1,endCol:-1,endOffset:-1}}_attachCurrentAttrLocationInfo(){this.currentAttrLocation.endLine=this.posTracker.line,this.currentAttrLocation.endCol=this.posTracker.col,this.currentAttrLocation.endOffset=this.posTracker.offset;const e=this.tokenizer.currentToken,t=this.tokenizer.currentAttr;e.location.attrs||(e.location.attrs=Object.create(null)),e.location.attrs[t.name]=this.currentAttrLocation}_getOverriddenMethods(e,t){const n={_createStartTagToken(){t._createStartTagToken.call(this),this.currentToken.location=e.ctLoc},_createEndTagToken(){t._createEndTagToken.call(this),this.currentToken.location=e.ctLoc},_createCommentToken(){t._createCommentToken.call(this),this.currentToken.location=e.ctLoc},_createDoctypeToken(n){t._createDoctypeToken.call(this,n),this.currentToken.location=e.ctLoc},_createCharacterToken(n,r){t._createCharacterToken.call(this,n,r),this.currentCharacterToken.location=e.ctLoc},_createEOFToken(){t._createEOFToken.call(this),this.currentToken.location=e._getCurrentLocation()},_createAttr(n){t._createAttr.call(this,n),e.currentAttrLocation=e._getCurrentLocation()},_leaveAttrName(n){t._leaveAttrName.call(this,n),e._attachCurrentAttrLocationInfo()},_leaveAttrValue(n){t._leaveAttrValue.call(this,n),e._attachCurrentAttrLocationInfo()},_emitCurrentToken(){const n=this.currentToken.location;this.currentCharacterToken&&(this.currentCharacterToken.location.endLine=n.startLine,this.currentCharacterToken.location.endCol=n.startCol,this.currentCharacterToken.location.endOffset=n.startOffset),this.currentToken.type===Pr.EOF_TOKEN?(n.endLine=n.startLine,n.endCol=n.startCol,n.endOffset=n.startOffset):(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col+1,n.endOffset=e.posTracker.offset+1),t._emitCurrentToken.call(this)},_emitCurrentCharacterToken(){const n=this.currentCharacterToken&&this.currentCharacterToken.location;n&&-1===n.endOffset&&(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col,n.endOffset=e.posTracker.offset),t._emitCurrentCharacterToken.call(this)}};return Object.keys(Pr.MODE).forEach(r=>{const a=Pr.MODE[r];n[a]=function(n){e.ctLoc=e._getCurrentLocation(),t[a].call(this,n)}}),n}};var jr=class extends Wr{constructor(e,t){super(e),this.onItemPop=t.onItemPop}_getOverriddenMethods(e,t){return{pop(){e.onItemPop(this.current),t.pop.call(this)},popAllUpToHtmlElement(){for(let t=this.stackTop;t>0;t--)e.onItemPop(this.items[t]);t.popAllUpToHtmlElement.call(this)},remove(n){e.onItemPop(this.current),t.remove.call(this,n)}}}};const Xr=kr.TAG_NAMES;var Zr=class extends Wr{constructor(e){super(e),this.parser=e,this.treeAdapter=this.parser.treeAdapter,this.posTracker=null,this.lastStartTagToken=null,this.lastFosterParentingLocation=null,this.currentToken=null}_setStartLocation(e){let t=null;this.lastStartTagToken&&((t=Object.assign({},this.lastStartTagToken.location)).startTag=this.lastStartTagToken.location),this.treeAdapter.setNodeSourceCodeLocation(e,t)}_setEndLocation(e,t){const n=this.treeAdapter.getNodeSourceCodeLocation(e);if(n&&t.location){const r=t.location,a=this.treeAdapter.getTagName(e);t.type===Pr.END_TAG_TOKEN&&a===t.tagName?(n.endTag=Object.assign({},r),n.endLine=r.endLine,n.endCol=r.endCol,n.endOffset=r.endOffset):(n.endLine=r.startLine,n.endCol=r.startCol,n.endOffset=r.startOffset)}}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),e.lastStartTagToken=null,e.lastFosterParentingLocation=null,e.currentToken=null;const a=Wr.install(this.tokenizer,$r);e.posTracker=a.posTracker,Wr.install(this.openElements,jr,{onItemPop:function(t){e._setEndLocation(t,e.currentToken)}})},_runParsingLoop(n){t._runParsingLoop.call(this,n);for(let t=this.openElements.stackTop;t>=0;t--)e._setEndLocation(this.openElements.items[t],e.currentToken)},_processTokenInForeignContent(n){e.currentToken=n,t._processTokenInForeignContent.call(this,n)},_processToken(n){if(e.currentToken=n,t._processToken.call(this,n),n.type===Pr.END_TAG_TOKEN&&(n.tagName===Xr.HTML||n.tagName===Xr.BODY&&this.openElements.hasInScope(Xr.BODY)))for(let t=this.openElements.stackTop;t>=0;t--){const r=this.openElements.items[t];if(this.treeAdapter.getTagName(r)===n.tagName){e._setEndLocation(r,n);break}}},_setDocumentType(e){t._setDocumentType.call(this,e);const n=this.treeAdapter.getChildNodes(this.document),r=n.length;for(let t=0;t<r;t++){const r=n[t];if(this.treeAdapter.isDocumentTypeNode(r)){this.treeAdapter.setNodeSourceCodeLocation(r,e.location);break}}},_attachElementToTree(n){e._setStartLocation(n),e.lastStartTagToken=null,t._attachElementToTree.call(this,n)},_appendElement(n,r){e.lastStartTagToken=n,t._appendElement.call(this,n,r)},_insertElement(n,r){e.lastStartTagToken=n,t._insertElement.call(this,n,r)},_insertTemplate(n){e.lastStartTagToken=n,t._insertTemplate.call(this,n);const r=this.treeAdapter.getTemplateContent(this.openElements.current);this.treeAdapter.setNodeSourceCodeLocation(r,null)},_insertFakeRootElement(){t._insertFakeRootElement.call(this),this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current,null)},_appendCommentNode(e,n){t._appendCommentNode.call(this,e,n);const r=this.treeAdapter.getChildNodes(n),a=r[r.length-1];this.treeAdapter.setNodeSourceCodeLocation(a,e.location)},_findFosterParentingLocation(){return e.lastFosterParentingLocation=t._findFosterParentingLocation.call(this),e.lastFosterParentingLocation},_insertCharacters(n){t._insertCharacters.call(this,n);const r=this._shouldFosterParentOnInsertion(),a=r&&e.lastFosterParentingLocation.parent||this.openElements.currentTmplContent||this.openElements.current,i=this.treeAdapter.getChildNodes(a),o=i[r&&e.lastFosterParentingLocation.beforeElement?i.indexOf(e.lastFosterParentingLocation.beforeElement)-1:i.length-1],s=this.treeAdapter.getNodeSourceCodeLocation(o);s?(s.endLine=n.location.endLine,s.endCol=n.location.endCol,s.endOffset=n.location.endOffset):this.treeAdapter.setNodeSourceCodeLocation(o,n.location)}}}};var Jr=class extends Wr{constructor(e,t){super(e),this.posTracker=null,this.onParseError=t.onParseError}_setErrorLocation(e){e.startLine=e.endLine=this.posTracker.line,e.startCol=e.endCol=this.posTracker.col,e.startOffset=e.endOffset=this.posTracker.offset}_reportError(e){const t={code:e,startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1};this._setErrorLocation(t),this.onParseError(t)}_getOverriddenMethods(e){return{_err(t){e._reportError(t)}}}};var ea=class extends Jr{constructor(e,t){super(e,t),this.posTracker=Wr.install(e,Qr),this.lastErrOffset=-1}_reportError(e){this.lastErrOffset!==this.posTracker.offset&&(this.lastErrOffset=this.posTracker.offset,super._reportError(e))}};var ta=class extends Jr{constructor(e,t){super(e,t);const n=Wr.install(e.preprocessor,ea,t);this.posTracker=n.posTracker}};var na=class extends Jr{constructor(e,t){super(e,t),this.opts=t,this.ctLoc=null,this.locBeforeToken=!1}_setErrorLocation(e){this.ctLoc&&(e.startLine=this.ctLoc.startLine,e.startCol=this.ctLoc.startCol,e.startOffset=this.ctLoc.startOffset,e.endLine=this.locBeforeToken?this.ctLoc.startLine:this.ctLoc.endLine,e.endCol=this.locBeforeToken?this.ctLoc.startCol:this.ctLoc.endCol,e.endOffset=this.locBeforeToken?this.ctLoc.startOffset:this.ctLoc.endOffset)}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),Wr.install(this.tokenizer,ta,e.opts),Wr.install(this.tokenizer,$r)},_processInputToken(n){e.ctLoc=n.location,t._processInputToken.call(this,n)},_err(t,n){e.locBeforeToken=n&&n.beforeToken,e._reportError(t)}}}},ra=b(function(e,t){const{DOCUMENT_MODE:n}=kr;t.createDocument=function(){return{nodeName:"#document",mode:n.NO_QUIRKS,childNodes:[]}},t.createDocumentFragment=function(){return{nodeName:"#document-fragment",childNodes:[]}},t.createElement=function(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},t.createCommentNode=function(e){return{nodeName:"#comment",data:e,parentNode:null}};const r=function(e){return{nodeName:"#text",value:e,parentNode:null}},a=t.appendChild=function(e,t){e.childNodes.push(t),t.parentNode=e},i=t.insertBefore=function(e,t,n){const r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e};t.setTemplateContent=function(e,t){e.content=t},t.getTemplateContent=function(e){return e.content},t.setDocumentType=function(e,t,n,r){let i=null;for(let t=0;t<e.childNodes.length;t++)if("#documentType"===e.childNodes[t].nodeName){i=e.childNodes[t];break}i?(i.name=t,i.publicId=n,i.systemId=r):a(e,{nodeName:"#documentType",name:t,publicId:n,systemId:r})},t.setDocumentMode=function(e,t){e.mode=t},t.getDocumentMode=function(e){return e.mode},t.detachNode=function(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},t.insertText=function(e,t){if(e.childNodes.length){const n=e.childNodes[e.childNodes.length-1];if("#text"===n.nodeName)return void(n.value+=t)}a(e,r(t))},t.insertTextBefore=function(e,t,n){const a=e.childNodes[e.childNodes.indexOf(n)-1];a&&"#text"===a.nodeName?a.value+=t:i(e,r(t),n)},t.adoptAttributes=function(e,t){const n=[];for(let t=0;t<e.attrs.length;t++)n.push(e.attrs[t].name);for(let r=0;r<t.length;r++)-1===n.indexOf(t[r].name)&&e.attrs.push(t[r])},t.getFirstChild=function(e){return e.childNodes[0]},t.getChildNodes=function(e){return e.childNodes},t.getParentNode=function(e){return e.parentNode},t.getAttrList=function(e){return e.attrs},t.getTagName=function(e){return e.tagName},t.getNamespaceURI=function(e){return e.namespaceURI},t.getTextNodeContent=function(e){return e.value},t.getCommentNodeContent=function(e){return e.data},t.getDocumentTypeNodeName=function(e){return e.name},t.getDocumentTypeNodePublicId=function(e){return e.publicId},t.getDocumentTypeNodeSystemId=function(e){return e.systemId},t.isTextNode=function(e){return"#text"===e.nodeName},t.isCommentNode=function(e){return"#comment"===e.nodeName},t.isDocumentTypeNode=function(e){return"#documentType"===e.nodeName},t.isElementNode=function(e){return!!e.tagName},t.setNodeSourceCodeLocation=function(e,t){e.sourceCodeLocation=t},t.getNodeSourceCodeLocation=function(e){return e.sourceCodeLocation}}),aa=(ra.createDocument,ra.createDocumentFragment,ra.createElement,ra.createCommentNode,ra.appendChild,ra.insertBefore,ra.setTemplateContent,ra.getTemplateContent,ra.setDocumentType,ra.setDocumentMode,ra.getDocumentMode,ra.detachNode,ra.insertText,ra.insertTextBefore,ra.adoptAttributes,ra.getFirstChild,ra.getChildNodes,ra.getParentNode,ra.getAttrList,ra.getTagName,ra.getNamespaceURI,ra.getTextNodeContent,ra.getCommentNodeContent,ra.getDocumentTypeNodeName,ra.getDocumentTypeNodePublicId,ra.getDocumentTypeNodeSystemId,ra.isTextNode,ra.isCommentNode,ra.isDocumentTypeNode,ra.isElementNode,ra.setNodeSourceCodeLocation,ra.getNodeSourceCodeLocation,function(e,t){return[e,t=t||Object.create(null)].reduce((e,t)=>(Object.keys(t).forEach(n=>{e[n]=t[n]}),e),Object.create(null))});const{DOCUMENT_MODE:ia}=kr,oa=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],sa=oa.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]),la=["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"],ca=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],da=ca.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]);function _a(e){const t=-1!==e.indexOf('"')?"'":'"';return t+e+t}function ua(e,t){for(let n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return!0;return!1}var ma={isConforming:function(e){return"html"===e.name&&null===e.publicId&&(null===e.systemId||"about:legacy-compat"===e.systemId)},getDocumentMode:function(e){if("html"!==e.name)return ia.QUIRKS;const t=e.systemId;if(t&&"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"===t.toLowerCase())return ia.QUIRKS;let n=e.publicId;if(null!==n){if(n=n.toLowerCase(),la.indexOf(n)>-1)return ia.QUIRKS;let e=null===t?sa:oa;if(ua(n,e))return ia.QUIRKS;if(ua(n,e=null===t?ca:da))return ia.LIMITED_QUIRKS}return ia.NO_QUIRKS},serializeContent:function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=" PUBLIC "+_a(t):n&&(r+=" SYSTEM"),null!==n&&(r+=" "+_a(n)),r}},pa=b(function(e,t){const n=kr.TAG_NAMES,r=kr.NAMESPACES,a=kr.ATTRS,i={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},o={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},s={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:r.XLINK},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:r.XLINK},"xlink:href":{prefix:"xlink",name:"href",namespace:r.XLINK},"xlink:role":{prefix:"xlink",name:"role",namespace:r.XLINK},"xlink:show":{prefix:"xlink",name:"show",namespace:r.XLINK},"xlink:title":{prefix:"xlink",name:"title",namespace:r.XLINK},"xlink:type":{prefix:"xlink",name:"type",namespace:r.XLINK},"xml:base":{prefix:"xml",name:"base",namespace:r.XML},"xml:lang":{prefix:"xml",name:"lang",namespace:r.XML},"xml:space":{prefix:"xml",name:"space",namespace:r.XML},xmlns:{prefix:"",name:"xmlns",namespace:r.XMLNS},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:r.XMLNS}},l=t.SVG_TAG_NAMES_ADJUSTMENT_MAP={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},c={[n.B]:!0,[n.BIG]:!0,[n.BLOCKQUOTE]:!0,[n.BODY]:!0,[n.BR]:!0,[n.CENTER]:!0,[n.CODE]:!0,[n.DD]:!0,[n.DIV]:!0,[n.DL]:!0,[n.DT]:!0,[n.EM]:!0,[n.EMBED]:!0,[n.H1]:!0,[n.H2]:!0,[n.H3]:!0,[n.H4]:!0,[n.H5]:!0,[n.H6]:!0,[n.HEAD]:!0,[n.HR]:!0,[n.I]:!0,[n.IMG]:!0,[n.LI]:!0,[n.LISTING]:!0,[n.MENU]:!0,[n.META]:!0,[n.NOBR]:!0,[n.OL]:!0,[n.P]:!0,[n.PRE]:!0,[n.RUBY]:!0,[n.S]:!0,[n.SMALL]:!0,[n.SPAN]:!0,[n.STRONG]:!0,[n.STRIKE]:!0,[n.SUB]:!0,[n.SUP]:!0,[n.TABLE]:!0,[n.TT]:!0,[n.U]:!0,[n.UL]:!0,[n.VAR]:!0};t.causesExit=function(e){const t=e.tagName;return!!(t===n.FONT&&(null!==Pr.getTokenAttr(e,a.COLOR)||null!==Pr.getTokenAttr(e,a.SIZE)||null!==Pr.getTokenAttr(e,a.FACE)))||c[t]},t.adjustTokenMathMLAttrs=function(e){for(let t=0;t<e.attrs.length;t++)if("definitionurl"===e.attrs[t].name){e.attrs[t].name="definitionURL";break}},t.adjustTokenSVGAttrs=function(e){for(let t=0;t<e.attrs.length;t++){const n=o[e.attrs[t].name];n&&(e.attrs[t].name=n)}},t.adjustTokenXMLAttrs=function(e){for(let t=0;t<e.attrs.length;t++){const n=s[e.attrs[t].name];n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace)}},t.adjustTokenSVGTagName=function(e){const t=l[e.tagName];t&&(e.tagName=t)},t.isIntegrationPoint=function(e,t,o,s){return!(s&&s!==r.HTML||!function(e,t,o){if(t===r.MATHML&&e===n.ANNOTATION_XML)for(let e=0;e<o.length;e++)if(o[e].name===a.ENCODING){const t=o[e].value.toLowerCase();return t===i.TEXT_HTML||t===i.APPLICATION_XML}return t===r.SVG&&(e===n.FOREIGN_OBJECT||e===n.DESC||e===n.TITLE)}(e,t,o))||!(s&&s!==r.MATHML||!function(e,t){return t===r.MATHML&&(e===n.MI||e===n.MO||e===n.MN||e===n.MS||e===n.MTEXT)}(e,t))}});pa.SVG_TAG_NAMES_ADJUSTMENT_MAP,pa.causesExit,pa.adjustTokenMathMLAttrs,pa.adjustTokenSVGAttrs,pa.adjustTokenXMLAttrs,pa.adjustTokenSVGTagName,pa.isIntegrationPoint;const ga=kr.TAG_NAMES,Ea=kr.NAMESPACES,ha=kr.ATTRS,Sa={scriptingEnabled:!0,sourceCodeLocationInfo:!1,onParseError:null,treeAdapter:ra},fa="hidden",Ta=8,ba=3,Ca="INITIAL_MODE",Na="BEFORE_HTML_MODE",va="BEFORE_HEAD_MODE",Ra="IN_HEAD_MODE",Aa="IN_HEAD_NO_SCRIPT_MODE",Oa="AFTER_HEAD_MODE",ya="IN_BODY_MODE",Ia="TEXT_MODE",Da="IN_TABLE_MODE",xa="IN_TABLE_TEXT_MODE",Ma="IN_CAPTION_MODE",wa="IN_COLUMN_GROUP_MODE",La="IN_TABLE_BODY_MODE",Pa="IN_ROW_MODE",ka="IN_CELL_MODE",Ua="IN_SELECT_MODE",Fa="IN_SELECT_IN_TABLE_MODE",Ba="IN_TEMPLATE_MODE",Ga="AFTER_BODY_MODE",Ha="IN_FRAMESET_MODE",Ya="AFTER_FRAMESET_MODE",Va="AFTER_AFTER_BODY_MODE",za="AFTER_AFTER_FRAMESET_MODE",qa={[ga.TR]:Pa,[ga.TBODY]:La,[ga.THEAD]:La,[ga.TFOOT]:La,[ga.CAPTION]:Ma,[ga.COLGROUP]:wa,[ga.TABLE]:Da,[ga.BODY]:ya,[ga.FRAMESET]:Ha},Ka={[ga.CAPTION]:Da,[ga.COLGROUP]:Da,[ga.TBODY]:Da,[ga.TFOOT]:Da,[ga.THEAD]:Da,[ga.COL]:wa,[ga.TR]:La,[ga.TD]:Pa,[ga.TH]:Pa},Wa={[Ca]:{[Pr.CHARACTER_TOKEN]:li,[Pr.NULL_CHARACTER_TOKEN]:li,[Pr.WHITESPACE_CHARACTER_TOKEN]:ni,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:function(e,t){e._setDocumentType(t);const n=t.forceQuirks?kr.DOCUMENT_MODE.QUIRKS:ma.getDocumentMode(t);ma.isConforming(t)||e._err(Ut.nonConformingDoctype);e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=Na},[Pr.START_TAG_TOKEN]:li,[Pr.END_TAG_TOKEN]:li,[Pr.EOF_TOKEN]:li},[Na]:{[Pr.CHARACTER_TOKEN]:ci,[Pr.NULL_CHARACTER_TOKEN]:ci,[Pr.WHITESPACE_CHARACTER_TOKEN]:ni,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?(e._insertElement(t,Ea.HTML),e.insertionMode=va):ci(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n!==ga.HTML&&n!==ga.HEAD&&n!==ga.BODY&&n!==ga.BR||ci(e,t)},[Pr.EOF_TOKEN]:ci},[va]:{[Pr.CHARACTER_TOKEN]:di,[Pr.NULL_CHARACTER_TOKEN]:di,[Pr.WHITESPACE_CHARACTER_TOKEN]:ni,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.HEAD?(e._insertElement(t,Ea.HTML),e.headElement=e.openElements.current,e.insertionMode=Ra):di(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HEAD||n===ga.BODY||n===ga.HTML||n===ga.BR?di(e,t):e._err(Ut.endTagWithoutMatchingOpenElement)},[Pr.EOF_TOKEN]:di},[Ra]:{[Pr.CHARACTER_TOKEN]:mi,[Pr.NULL_CHARACTER_TOKEN]:mi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:_i,[Pr.END_TAG_TOKEN]:ui,[Pr.EOF_TOKEN]:mi},[Aa]:{[Pr.CHARACTER_TOKEN]:pi,[Pr.NULL_CHARACTER_TOKEN]:pi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.BASEFONT||n===ga.BGSOUND||n===ga.HEAD||n===ga.LINK||n===ga.META||n===ga.NOFRAMES||n===ga.STYLE?_i(e,t):n===ga.NOSCRIPT?e._err(Ut.nestedNoscriptInHead):pi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.NOSCRIPT?(e.openElements.pop(),e.insertionMode=Ra):n===ga.BR?pi(e,t):e._err(Ut.endTagWithoutMatchingOpenElement)},[Pr.EOF_TOKEN]:pi},[Oa]:{[Pr.CHARACTER_TOKEN]:gi,[Pr.NULL_CHARACTER_TOKEN]:gi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.BODY?(e._insertElement(t,Ea.HTML),e.framesetOk=!1,e.insertionMode=ya):n===ga.FRAMESET?(e._insertElement(t,Ea.HTML),e.insertionMode=Ha):n===ga.BASE||n===ga.BASEFONT||n===ga.BGSOUND||n===ga.LINK||n===ga.META||n===ga.NOFRAMES||n===ga.SCRIPT||n===ga.STYLE||n===ga.TEMPLATE||n===ga.TITLE?(e._err(Ut.abandonedHeadElementChild),e.openElements.push(e.headElement),_i(e,t),e.openElements.remove(e.headElement)):n===ga.HEAD?e._err(Ut.misplacedStartTagForHeadElement):gi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.BODY||n===ga.HTML||n===ga.BR?gi(e,t):n===ga.TEMPLATE?ui(e,t):e._err(Ut.endTagWithoutMatchingOpenElement)},[Pr.EOF_TOKEN]:gi},[ya]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:yi,[Pr.END_TAG_TOKEN]:Mi,[Pr.EOF_TOKEN]:wi},[Ia]:{[Pr.CHARACTER_TOKEN]:oi,[Pr.NULL_CHARACTER_TOKEN]:oi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ni,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:ni,[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.SCRIPT&&(e.pendingScript=e.openElements.current);e.openElements.pop(),e.insertionMode=e.originalInsertionMode},[Pr.EOF_TOKEN]:function(e,t){e._err(Ut.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e._processToken(t)}},[Da]:{[Pr.CHARACTER_TOKEN]:Li,[Pr.NULL_CHARACTER_TOKEN]:Li,[Pr.WHITESPACE_CHARACTER_TOKEN]:Li,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:Pi,[Pr.END_TAG_TOKEN]:ki,[Pr.EOF_TOKEN]:wi},[xa]:{[Pr.CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0},[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t)},[Pr.COMMENT_TOKEN]:Fi,[Pr.DOCTYPE_TOKEN]:Fi,[Pr.START_TAG_TOKEN]:Fi,[Pr.END_TAG_TOKEN]:Fi,[Pr.EOF_TOKEN]:Fi},[Ma]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TD||n===ga.TFOOT||n===ga.TH||n===ga.THEAD||n===ga.TR?e.openElements.hasInTableScope(ga.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ga.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Da,e._processToken(t)):yi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.TABLE?e.openElements.hasInTableScope(ga.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ga.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Da,n===ga.TABLE&&e._processToken(t)):n!==ga.BODY&&n!==ga.COL&&n!==ga.COLGROUP&&n!==ga.HTML&&n!==ga.TBODY&&n!==ga.TD&&n!==ga.TFOOT&&n!==ga.TH&&n!==ga.THEAD&&n!==ga.TR&&Mi(e,t)},[Pr.EOF_TOKEN]:wi},[wa]:{[Pr.CHARACTER_TOKEN]:Bi,[Pr.NULL_CHARACTER_TOKEN]:Bi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.COL?(e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0):n===ga.TEMPLATE?_i(e,t):Bi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.COLGROUP?e.openElements.currentTagName===ga.COLGROUP&&(e.openElements.pop(),e.insertionMode=Da):n===ga.TEMPLATE?ui(e,t):n!==ga.COL&&Bi(e,t)},[Pr.EOF_TOKEN]:wi},[La]:{[Pr.CHARACTER_TOKEN]:Li,[Pr.NULL_CHARACTER_TOKEN]:Li,[Pr.WHITESPACE_CHARACTER_TOKEN]:Li,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TR?(e.openElements.clearBackToTableBodyContext(),e._insertElement(t,Ea.HTML),e.insertionMode=Pa):n===ga.TH||n===ga.TD?(e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(ga.TR),e.insertionMode=Pa,e._processToken(t)):n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=Da,e._processToken(t)):Pi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=Da):n===ga.TABLE?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=Da,e._processToken(t)):(n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP||n!==ga.HTML&&n!==ga.TD&&n!==ga.TH&&n!==ga.TR)&&ki(e,t)},[Pr.EOF_TOKEN]:wi},[Pa]:{[Pr.CHARACTER_TOKEN]:Li,[Pr.NULL_CHARACTER_TOKEN]:Li,[Pr.WHITESPACE_CHARACTER_TOKEN]:Li,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TH||n===ga.TD?(e.openElements.clearBackToTableRowContext(),e._insertElement(t,Ea.HTML),e.insertionMode=ka,e.activeFormattingElements.insertMarker()):n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR?e.openElements.hasInTableScope(ga.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La,e._processToken(t)):Pi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TR?e.openElements.hasInTableScope(ga.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La):n===ga.TABLE?e.openElements.hasInTableScope(ga.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La,e._processToken(t)):n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?(e.openElements.hasInTableScope(n)||e.openElements.hasInTableScope(ga.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La,e._processToken(t)):(n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP||n!==ga.HTML&&n!==ga.TD&&n!==ga.TH)&&ki(e,t)},[Pr.EOF_TOKEN]:wi},[ka]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TD||n===ga.TFOOT||n===ga.TH||n===ga.THEAD||n===ga.TR?(e.openElements.hasInTableScope(ga.TD)||e.openElements.hasInTableScope(ga.TH))&&(e._closeTableCell(),e._processToken(t)):yi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TD||n===ga.TH?e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Pa):n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR?e.openElements.hasInTableScope(n)&&(e._closeTableCell(),e._processToken(t)):n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP&&n!==ga.HTML&&Mi(e,t)},[Pr.EOF_TOKEN]:wi},[Ua]:{[Pr.CHARACTER_TOKEN]:oi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:Gi,[Pr.END_TAG_TOKEN]:Hi,[Pr.EOF_TOKEN]:wi},[Fa]:{[Pr.CHARACTER_TOKEN]:oi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR||n===ga.TD||n===ga.TH?(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode(),e._processToken(t)):Gi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR||n===ga.TD||n===ga.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode(),e._processToken(t)):Hi(e,t)},[Pr.EOF_TOKEN]:wi},[Ba]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;if(n===ga.BASE||n===ga.BASEFONT||n===ga.BGSOUND||n===ga.LINK||n===ga.META||n===ga.NOFRAMES||n===ga.SCRIPT||n===ga.STYLE||n===ga.TEMPLATE||n===ga.TITLE)_i(e,t);else{const r=Ka[n]||ya;e._popTmplInsertionMode(),e._pushTmplInsertionMode(r),e.insertionMode=r,e._processToken(t)}},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.TEMPLATE&&ui(e,t)},[Pr.EOF_TOKEN]:Yi},[Ga]:{[Pr.CHARACTER_TOKEN]:Vi,[Pr.NULL_CHARACTER_TOKEN]:Vi,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:function(e,t){e._appendCommentNode(t,e.openElements.items[0])},[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?yi(e,t):Vi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?e.fragmentContext||(e.insertionMode=Va):Vi(e,t)},[Pr.EOF_TOKEN]:si},[Ha]:{[Pr.CHARACTER_TOKEN]:ni,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.FRAMESET?e._insertElement(t,Ea.HTML):n===ga.FRAME?(e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0):n===ga.NOFRAMES&&_i(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName!==ga.FRAMESET||e.openElements.isRootHtmlElementCurrent()||(e.openElements.pop(),e.fragmentContext||e.openElements.currentTagName===ga.FRAMESET||(e.insertionMode=Ya))},[Pr.EOF_TOKEN]:si},[Ya]:{[Pr.CHARACTER_TOKEN]:ni,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.NOFRAMES&&_i(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML&&(e.insertionMode=za)},[Pr.EOF_TOKEN]:si},[Va]:{[Pr.CHARACTER_TOKEN]:zi,[Pr.NULL_CHARACTER_TOKEN]:zi,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ii,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?yi(e,t):zi(e,t)},[Pr.END_TAG_TOKEN]:zi,[Pr.EOF_TOKEN]:si},[za]:{[Pr.CHARACTER_TOKEN]:ni,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ii,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.NOFRAMES&&_i(e,t)},[Pr.END_TAG_TOKEN]:ni,[Pr.EOF_TOKEN]:si}};var Qa=class{constructor(e){this.options=aa(Sa,e),this.treeAdapter=this.options.treeAdapter,this.pendingScript=null,this.options.sourceCodeLocationInfo&&Wr.install(this,Zr),this.options.onParseError&&Wr.install(this,na,{onParseError:this.options.onParseError})}parse(e){const t=this.treeAdapter.createDocument();return this._bootstrap(t,null),this.tokenizer.write(e,!0),this._runParsingLoop(null),t}parseFragment(e,t){t||(t=this.treeAdapter.createElement(ga.TEMPLATE,Ea.HTML,[]));const n=this.treeAdapter.createElement("documentmock",Ea.HTML,[]);this._bootstrap(n,t),this.treeAdapter.getTagName(t)===ga.TEMPLATE&&this._pushTmplInsertionMode(Ba),this._initTokenizerForFragmentParsing(),this._insertFakeRootElement(),this._resetInsertionMode(),this._findFormInFragmentContext(),this.tokenizer.write(e,!0),this._runParsingLoop(null);const r=this.treeAdapter.getFirstChild(n),a=this.treeAdapter.createDocumentFragment();return this._adoptNodes(r,a),a}_bootstrap(e,t){this.tokenizer=new Pr(this.options),this.stopped=!1,this.insertionMode=Ca,this.originalInsertionMode="",this.document=e,this.fragmentContext=t,this.headElement=null,this.formElement=null,this.openElements=new Yr(this.document,this.treeAdapter),this.activeFormattingElements=new qr(this.treeAdapter),this.tmplInsertionModeStack=[],this.tmplInsertionModeStackTop=-1,this.currentTmplInsertionMode=null,this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1}_err(){}_runParsingLoop(e){for(;!this.stopped;){this._setupTokenizerCDATAMode();const t=this.tokenizer.getNextToken();if(t.type===Pr.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.type===Pr.WHITESPACE_CHARACTER_TOKEN&&"\n"===t.chars[0])){if(1===t.chars.length)continue;t.chars=t.chars.substr(1)}if(this._processInputToken(t),e&&this.pendingScript)break}}runParsingLoopForCurrentChunk(e,t){if(this._runParsingLoop(t),t&&this.pendingScript){const e=this.pendingScript;return this.pendingScript=null,void t(e)}e&&e()}_setupTokenizerCDATAMode(){const e=this._getAdjustedCurrentElement();this.tokenizer.allowCDATA=e&&e!==this.document&&this.treeAdapter.getNamespaceURI(e)!==Ea.HTML&&!this._isIntegrationPoint(e)}_switchToTextParsing(e,t){this._insertElement(e,Ea.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=Ia}switchToPlaintextParsing(){this.insertionMode=Ia,this.originalInsertionMode=ya,this.tokenizer.state=Pr.MODE.PLAINTEXT}_getAdjustedCurrentElement(){return 0===this.openElements.stackTop&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let e=this.fragmentContext;do{if(this.treeAdapter.getTagName(e)===ga.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}while(e)}_initTokenizerForFragmentParsing(){if(this.treeAdapter.getNamespaceURI(this.fragmentContext)===Ea.HTML){const e=this.treeAdapter.getTagName(this.fragmentContext);e===ga.TITLE||e===ga.TEXTAREA?this.tokenizer.state=Pr.MODE.RCDATA:e===ga.STYLE||e===ga.XMP||e===ga.IFRAME||e===ga.NOEMBED||e===ga.NOFRAMES||e===ga.NOSCRIPT?this.tokenizer.state=Pr.MODE.RAWTEXT:e===ga.SCRIPT?this.tokenizer.state=Pr.MODE.SCRIPT_DATA:e===ga.PLAINTEXT&&(this.tokenizer.state=Pr.MODE.PLAINTEXT)}}_setDocumentType(e){const t=e.name||"",n=e.publicId||"",r=e.systemId||"";this.treeAdapter.setDocumentType(this.document,t,n,r)}_attachElementToTree(e){if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{const t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.appendChild(t,e)}}_appendElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n)}_insertElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n),this.openElements.push(n)}_insertFakeElement(e){const t=this.treeAdapter.createElement(e,Ea.HTML,[]);this._attachElementToTree(t),this.openElements.push(t)}_insertTemplate(e){const t=this.treeAdapter.createElement(e.tagName,Ea.HTML,e.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,n),this._attachElementToTree(t),this.openElements.push(t)}_insertFakeRootElement(){const e=this.treeAdapter.createElement(ga.HTML,Ea.HTML,[]);this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e)}_appendCommentNode(e,t){const n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n)}_insertCharacters(e){if(this._shouldFosterParentOnInsertion())this._fosterParentText(e.chars);else{const t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.insertText(t,e.chars)}}_adoptNodes(e,t){for(let n=this.treeAdapter.getFirstChild(e);n;n=this.treeAdapter.getFirstChild(e))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}_shouldProcessTokenInForeignContent(e){const t=this._getAdjustedCurrentElement();if(!t||t===this.document)return!1;const n=this.treeAdapter.getNamespaceURI(t);if(n===Ea.HTML)return!1;if(this.treeAdapter.getTagName(t)===ga.ANNOTATION_XML&&n===Ea.MATHML&&e.type===Pr.START_TAG_TOKEN&&e.tagName===ga.SVG)return!1;const r=e.type===Pr.CHARACTER_TOKEN||e.type===Pr.NULL_CHARACTER_TOKEN||e.type===Pr.WHITESPACE_CHARACTER_TOKEN;return!((e.type===Pr.START_TAG_TOKEN&&e.tagName!==ga.MGLYPH&&e.tagName!==ga.MALIGNMARK||r)&&this._isIntegrationPoint(t,Ea.MATHML)||(e.type===Pr.START_TAG_TOKEN||r)&&this._isIntegrationPoint(t,Ea.HTML)||e.type===Pr.EOF_TOKEN)}_processToken(e){Wa[this.insertionMode][e.type](this,e)}_processTokenInBodyMode(e){Wa[ya][e.type](this,e)}_processTokenInForeignContent(e){e.type===Pr.CHARACTER_TOKEN?function(e,t){e._insertCharacters(t),e.framesetOk=!1}(this,e):e.type===Pr.NULL_CHARACTER_TOKEN?function(e,t){t.chars=kt.REPLACEMENT_CHARACTER,e._insertCharacters(t)}(this,e):e.type===Pr.WHITESPACE_CHARACTER_TOKEN?oi(this,e):e.type===Pr.COMMENT_TOKEN?ai(this,e):e.type===Pr.START_TAG_TOKEN?function(e,t){if(pa.causesExit(t)&&!e.fragmentContext){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==Ea.HTML&&!e._isIntegrationPoint(e.openElements.current);)e.openElements.pop();e._processToken(t)}else{const n=e._getAdjustedCurrentElement(),r=e.treeAdapter.getNamespaceURI(n);r===Ea.MATHML?pa.adjustTokenMathMLAttrs(t):r===Ea.SVG&&(pa.adjustTokenSVGTagName(t),pa.adjustTokenSVGAttrs(t)),pa.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,r):e._insertElement(t,r),t.ackSelfClosing=!0}}(this,e):e.type===Pr.END_TAG_TOKEN&&function(e,t){for(let n=e.openElements.stackTop;n>0;n--){const r=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(r)===Ea.HTML){e._processToken(t);break}if(e.treeAdapter.getTagName(r).toLowerCase()===t.tagName){e.openElements.popUntilElementPopped(r);break}}}(this,e)}_processInputToken(e){this._shouldProcessTokenInForeignContent(e)?this._processTokenInForeignContent(e):this._processToken(e),e.type===Pr.START_TAG_TOKEN&&e.selfClosing&&!e.ackSelfClosing&&this._err(Ut.nonVoidHtmlElementStartTagWithTrailingSolidus)}_isIntegrationPoint(e,t){const n=this.treeAdapter.getTagName(e),r=this.treeAdapter.getNamespaceURI(e),a=this.treeAdapter.getAttrList(e);return pa.isIntegrationPoint(n,r,a,t)}_reconstructActiveFormattingElements(){const e=this.activeFormattingElements.length;if(e){let t=e,n=null;do{if(t--,(n=this.activeFormattingElements.entries[t]).type===qr.MARKER_ENTRY||this.openElements.contains(n.element)){t++;break}}while(t>0);for(let r=t;r<e;r++)n=this.activeFormattingElements.entries[r],this._insertElement(n.token,this.treeAdapter.getNamespaceURI(n.element)),n.element=this.openElements.current}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=Pa}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(ga.P),this.openElements.popUntilTagNamePopped(ga.P)}_resetInsertionMode(){for(let e=this.openElements.stackTop,t=!1;e>=0;e--){let n=this.openElements.items[e];0===e&&(t=!0,this.fragmentContext&&(n=this.fragmentContext));const r=this.treeAdapter.getTagName(n),a=qa[r];if(a){this.insertionMode=a;break}if(!(t||r!==ga.TD&&r!==ga.TH)){this.insertionMode=ka;break}if(!t&&r===ga.HEAD){this.insertionMode=Ra;break}if(r===ga.SELECT){this._resetInsertionModeForSelect(e);break}if(r===ga.TEMPLATE){this.insertionMode=this.currentTmplInsertionMode;break}if(r===ga.HTML){this.insertionMode=this.headElement?Oa:va;break}if(t){this.insertionMode=ya;break}}}_resetInsertionModeForSelect(e){if(e>0)for(let t=e-1;t>0;t--){const e=this.openElements.items[t],n=this.treeAdapter.getTagName(e);if(n===ga.TEMPLATE)break;if(n===ga.TABLE)return void(this.insertionMode=Fa)}this.insertionMode=Ua}_pushTmplInsertionMode(e){this.tmplInsertionModeStack.push(e),this.tmplInsertionModeStackTop++,this.currentTmplInsertionMode=e}_popTmplInsertionMode(){this.tmplInsertionModeStack.pop(),this.tmplInsertionModeStackTop--,this.currentTmplInsertionMode=this.tmplInsertionModeStack[this.tmplInsertionModeStackTop]}_isElementCausesFosterParenting(e){const t=this.treeAdapter.getTagName(e);return t===ga.TABLE||t===ga.TBODY||t===ga.TFOOT||t===ga.THEAD||t===ga.TR}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.current)}_findFosterParentingLocation(){const e={parent:null,beforeElement:null};for(let t=this.openElements.stackTop;t>=0;t--){const n=this.openElements.items[t],r=this.treeAdapter.getTagName(n),a=this.treeAdapter.getNamespaceURI(n);if(r===ga.TEMPLATE&&a===Ea.HTML){e.parent=this.treeAdapter.getTemplateContent(n);break}if(r===ga.TABLE){e.parent=this.treeAdapter.getParentNode(n),e.parent?e.beforeElement=n:e.parent=this.openElements.items[t-1];break}}return e.parent||(e.parent=this.openElements.items[0]),e}_fosterParentElement(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)}_fosterParentText(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertTextBefore(t.parent,e,t.beforeElement):this.treeAdapter.insertText(t.parent,e)}_isSpecialElement(e){const t=this.treeAdapter.getTagName(e),n=this.treeAdapter.getNamespaceURI(e);return kr.SPECIAL_ELEMENTS[n][t]}};function $a(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagName)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):xi(e,t),n}function ja(e,t){let n=null;for(let r=e.openElements.stackTop;r>=0;r--){const a=e.openElements.items[r];if(a===t.element)break;e._isSpecialElement(a)&&(n=a)}return n||(e.openElements.popUntilElementPopped(t.element),e.activeFormattingElements.removeEntry(t)),n}function Xa(e,t,n){let r=t,a=e.openElements.getCommonAncestor(t);for(let i=0,o=a;o!==n;i++,o=a){a=e.openElements.getCommonAncestor(o);const n=e.activeFormattingElements.getElementEntry(o),s=n&&i>=ba;!n||s?(s&&e.activeFormattingElements.removeEntry(n),e.openElements.remove(o)):(o=Za(e,n),r===t&&(e.activeFormattingElements.bookmark=n),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(o,r),r=o)}return r}function Za(e,t){const n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}function Ja(e,t,n){if(e._isElementCausesFosterParenting(t))e._fosterParentElement(n);else{const r=e.treeAdapter.getTagName(t),a=e.treeAdapter.getNamespaceURI(t);r===ga.TEMPLATE&&a===Ea.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n)}}function ei(e,t,n){const r=e.treeAdapter.getNamespaceURI(n.element),a=n.token,i=e.treeAdapter.createElement(a.tagName,r,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,n.token),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i)}function ti(e,t){let n;for(let r=0;r<Ta&&(n=$a(e,t));r++){const t=ja(e,n);if(!t)break;e.activeFormattingElements.bookmark=n;const r=Xa(e,t,n.element),a=e.openElements.getCommonAncestor(n.element);e.treeAdapter.detachNode(r),Ja(e,a,r),ei(e,t,n)}}function ni(){}function ri(e){e._err(Ut.misplacedDoctype)}function ai(e,t){e._appendCommentNode(t,e.openElements.currentTmplContent||e.openElements.current)}function ii(e,t){e._appendCommentNode(t,e.document)}function oi(e,t){e._insertCharacters(t)}function si(e){e.stopped=!0}function li(e,t){e._err(Ut.missingDoctype,{beforeToken:!0}),e.treeAdapter.setDocumentMode(e.document,kr.DOCUMENT_MODE.QUIRKS),e.insertionMode=Na,e._processToken(t)}function ci(e,t){e._insertFakeRootElement(),e.insertionMode=va,e._processToken(t)}function di(e,t){e._insertFakeElement(ga.HEAD),e.headElement=e.openElements.current,e.insertionMode=Ra,e._processToken(t)}function _i(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.BASE||n===ga.BASEFONT||n===ga.BGSOUND||n===ga.LINK||n===ga.META?(e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0):n===ga.TITLE?e._switchToTextParsing(t,Pr.MODE.RCDATA):n===ga.NOSCRIPT?e.options.scriptingEnabled?e._switchToTextParsing(t,Pr.MODE.RAWTEXT):(e._insertElement(t,Ea.HTML),e.insertionMode=Aa):n===ga.NOFRAMES||n===ga.STYLE?e._switchToTextParsing(t,Pr.MODE.RAWTEXT):n===ga.SCRIPT?e._switchToTextParsing(t,Pr.MODE.SCRIPT_DATA):n===ga.TEMPLATE?(e._insertTemplate(t,Ea.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=Ba,e._pushTmplInsertionMode(Ba)):n===ga.HEAD?e._err(Ut.misplacedStartTagForHeadElement):mi(e,t)}function ui(e,t){const n=t.tagName;n===ga.HEAD?(e.openElements.pop(),e.insertionMode=Oa):n===ga.BODY||n===ga.BR||n===ga.HTML?mi(e,t):n===ga.TEMPLATE&&e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagName!==ga.TEMPLATE&&e._err(Ut.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(ga.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode()):e._err(Ut.endTagWithoutMatchingOpenElement)}function mi(e,t){e.openElements.pop(),e.insertionMode=Oa,e._processToken(t)}function pi(e,t){const n=t.type===Pr.EOF_TOKEN?Ut.openElementsLeftAfterEof:Ut.disallowedContentInNoscriptInHead;e._err(n),e.openElements.pop(),e.insertionMode=Ra,e._processToken(t)}function gi(e,t){e._insertFakeElement(ga.BODY),e.insertionMode=ya,e._processToken(t)}function Ei(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function hi(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function Si(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML)}function fi(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function Ti(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function bi(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function Ci(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Ea.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function Ni(e,t){e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0}function vi(e,t){e._switchToTextParsing(t,Pr.MODE.RAWTEXT)}function Ri(e,t){e.openElements.currentTagName===ga.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML)}function Ai(e,t){e.openElements.hasInScope(ga.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,Ea.HTML)}function Oi(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML)}function yi(e,t){const n=t.tagName;switch(n.length){case 1:n===ga.I||n===ga.S||n===ga.B||n===ga.U?Ti(e,t):n===ga.P?Si(e,t):n===ga.A?function(e,t){const n=e.activeFormattingElements.getElementEntryInScopeWithTagName(ga.A);n&&(ti(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):Oi(e,t);break;case 2:n===ga.DL||n===ga.OL||n===ga.UL?Si(e,t):n===ga.H1||n===ga.H2||n===ga.H3||n===ga.H4||n===ga.H5||n===ga.H6?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement();const n=e.openElements.currentTagName;n!==ga.H1&&n!==ga.H2&&n!==ga.H3&&n!==ga.H4&&n!==ga.H5&&n!==ga.H6||e.openElements.pop(),e._insertElement(t,Ea.HTML)}(e,t):n===ga.LI||n===ga.DD||n===ga.DT?function(e,t){e.framesetOk=!1;const n=t.tagName;for(let t=e.openElements.stackTop;t>=0;t--){const r=e.openElements.items[t],a=e.treeAdapter.getTagName(r);let i=null;if(n===ga.LI&&a===ga.LI?i=ga.LI:n!==ga.DD&&n!==ga.DT||a!==ga.DD&&a!==ga.DT||(i=a),i){e.openElements.generateImpliedEndTagsWithExclusion(i),e.openElements.popUntilTagNamePopped(i);break}if(a!==ga.ADDRESS&&a!==ga.DIV&&a!==ga.P&&e._isSpecialElement(r))break}e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML)}(e,t):n===ga.EM||n===ga.TT?Ti(e,t):n===ga.BR?Ci(e,t):n===ga.HR?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._appendElement(t,Ea.HTML),e.framesetOk=!1,e.ackSelfClosing=!0}(e,t):n===ga.RB?Ai(e,t):n===ga.RT||n===ga.RP?function(e,t){e.openElements.hasInScope(ga.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(ga.RTC),e._insertElement(t,Ea.HTML)}(e,t):n!==ga.TH&&n!==ga.TD&&n!==ga.TR&&Oi(e,t);break;case 3:n===ga.DIV||n===ga.DIR||n===ga.NAV?Si(e,t):n===ga.PRE?fi(e,t):n===ga.BIG?Ti(e,t):n===ga.IMG||n===ga.WBR?Ci(e,t):n===ga.XMP?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,Pr.MODE.RAWTEXT)}(e,t):n===ga.SVG?function(e,t){e._reconstructActiveFormattingElements(),pa.adjustTokenSVGAttrs(t),pa.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,Ea.SVG):e._insertElement(t,Ea.SVG),t.ackSelfClosing=!0}(e,t):n===ga.RTC?Ai(e,t):n!==ga.COL&&Oi(e,t);break;case 4:n===ga.HTML?function(e,t){0===e.openElements.tmplCount&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}(e,t):n===ga.BASE||n===ga.LINK||n===ga.META?_i(e,t):n===ga.BODY?function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&0===e.openElements.tmplCount&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}(e,t):n===ga.MAIN||n===ga.MENU?Si(e,t):n===ga.FORM?function(e,t){const n=e.openElements.tmplCount>0;e.formElement&&!n||(e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),n||(e.formElement=e.openElements.current))}(e,t):n===ga.CODE||n===ga.FONT?Ti(e,t):n===ga.NOBR?function(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(ga.NOBR)&&(ti(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,Ea.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):n===ga.AREA?Ci(e,t):n===ga.MATH?function(e,t){e._reconstructActiveFormattingElements(),pa.adjustTokenMathMLAttrs(t),pa.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,Ea.MATHML):e._insertElement(t,Ea.MATHML),t.ackSelfClosing=!0}(e,t):n===ga.MENU?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML)}(e,t):n!==ga.HEAD&&Oi(e,t);break;case 5:n===ga.STYLE||n===ga.TITLE?_i(e,t):n===ga.ASIDE?Si(e,t):n===ga.SMALL?Ti(e,t):n===ga.TABLE?function(e,t){e.treeAdapter.getDocumentMode(e.document)!==kr.DOCUMENT_MODE.QUIRKS&&e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),e.framesetOk=!1,e.insertionMode=Da}(e,t):n===ga.EMBED?Ci(e,t):n===ga.INPUT?function(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Ea.HTML);const n=Pr.getTokenAttr(t,ha.TYPE);n&&n.toLowerCase()===fa||(e.framesetOk=!1),t.ackSelfClosing=!0}(e,t):n===ga.PARAM||n===ga.TRACK?Ni(e,t):n===ga.IMAGE?function(e,t){t.tagName=ga.IMG,Ci(e,t)}(e,t):n!==ga.FRAME&&n!==ga.TBODY&&n!==ga.TFOOT&&n!==ga.THEAD&&Oi(e,t);break;case 6:n===ga.SCRIPT?_i(e,t):n===ga.CENTER||n===ga.FIGURE||n===ga.FOOTER||n===ga.HEADER||n===ga.HGROUP||n===ga.DIALOG?Si(e,t):n===ga.BUTTON?function(e,t){e.openElements.hasInScope(ga.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ga.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.framesetOk=!1}(e,t):n===ga.STRIKE||n===ga.STRONG?Ti(e,t):n===ga.APPLET||n===ga.OBJECT?bi(e,t):n===ga.KEYGEN?Ci(e,t):n===ga.SOURCE?Ni(e,t):n===ga.IFRAME?function(e,t){e.framesetOk=!1,e._switchToTextParsing(t,Pr.MODE.RAWTEXT)}(e,t):n===ga.SELECT?function(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.framesetOk=!1,e.insertionMode===Da||e.insertionMode===Ma||e.insertionMode===La||e.insertionMode===Pa||e.insertionMode===ka?e.insertionMode=Fa:e.insertionMode=Ua}(e,t):n===ga.OPTION?Ri(e,t):Oi(e,t);break;case 7:n===ga.BGSOUND?_i(e,t):n===ga.DETAILS||n===ga.ADDRESS||n===ga.ARTICLE||n===ga.SECTION||n===ga.SUMMARY?Si(e,t):n===ga.LISTING?fi(e,t):n===ga.MARQUEE?bi(e,t):n===ga.NOEMBED?vi(e,t):n!==ga.CAPTION&&Oi(e,t);break;case 8:n===ga.BASEFONT?_i(e,t):n===ga.FRAMESET?function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,Ea.HTML),e.insertionMode=Ha)}(e,t):n===ga.FIELDSET?Si(e,t):n===ga.TEXTAREA?function(e,t){e._insertElement(t,Ea.HTML),e.skipNextNewLine=!0,e.tokenizer.state=Pr.MODE.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=Ia}(e,t):n===ga.TEMPLATE?_i(e,t):n===ga.NOSCRIPT?e.options.scriptingEnabled?vi(e,t):Oi(e,t):n===ga.OPTGROUP?Ri(e,t):n!==ga.COLGROUP&&Oi(e,t);break;case 9:n===ga.PLAINTEXT?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),e.tokenizer.state=Pr.MODE.PLAINTEXT}(e,t):Oi(e,t);break;case 10:n===ga.BLOCKQUOTE||n===ga.FIGCAPTION?Si(e,t):Oi(e,t);break;default:Oi(e,t)}}function Ii(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function Di(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function xi(e,t){const n=t.tagName;for(let t=e.openElements.stackTop;t>0;t--){const r=e.openElements.items[t];if(e.treeAdapter.getTagName(r)===n){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilElementPopped(r);break}if(e._isSpecialElement(r))break}}function Mi(e,t){const n=t.tagName;switch(n.length){case 1:n===ga.A||n===ga.B||n===ga.I||n===ga.S||n===ga.U?ti(e,t):n===ga.P?function(e){e.openElements.hasInButtonScope(ga.P)||e._insertFakeElement(ga.P),e._closePElement()}(e):xi(e,t);break;case 2:n===ga.DL||n===ga.UL||n===ga.OL?Ii(e,t):n===ga.LI?function(e){e.openElements.hasInListItemScope(ga.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(ga.LI),e.openElements.popUntilTagNamePopped(ga.LI))}(e):n===ga.DD||n===ga.DT?function(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}(e,t):n===ga.H1||n===ga.H2||n===ga.H3||n===ga.H4||n===ga.H5||n===ga.H6?function(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}(e):n===ga.BR?function(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(ga.BR),e.openElements.pop(),e.framesetOk=!1}(e):n===ga.EM||n===ga.TT?ti(e,t):xi(e,t);break;case 3:n===ga.BIG?ti(e,t):n===ga.DIR||n===ga.DIV||n===ga.NAV||n===ga.PRE?Ii(e,t):xi(e,t);break;case 4:n===ga.BODY?function(e){e.openElements.hasInScope(ga.BODY)&&(e.insertionMode=Ga)}(e):n===ga.HTML?function(e,t){e.openElements.hasInScope(ga.BODY)&&(e.insertionMode=Ga,e._processToken(t))}(e,t):n===ga.FORM?function(e){const t=e.openElements.tmplCount>0,n=e.formElement;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(ga.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(ga.FORM):e.openElements.remove(n))}(e):n===ga.CODE||n===ga.FONT||n===ga.NOBR?ti(e,t):n===ga.MAIN||n===ga.MENU?Ii(e,t):xi(e,t);break;case 5:n===ga.ASIDE?Ii(e,t):n===ga.SMALL?ti(e,t):xi(e,t);break;case 6:n===ga.CENTER||n===ga.FIGURE||n===ga.FOOTER||n===ga.HEADER||n===ga.HGROUP||n===ga.DIALOG?Ii(e,t):n===ga.APPLET||n===ga.OBJECT?Di(e,t):n===ga.STRIKE||n===ga.STRONG?ti(e,t):xi(e,t);break;case 7:n===ga.ADDRESS||n===ga.ARTICLE||n===ga.DETAILS||n===ga.SECTION||n===ga.SUMMARY||n===ga.LISTING?Ii(e,t):n===ga.MARQUEE?Di(e,t):xi(e,t);break;case 8:n===ga.FIELDSET?Ii(e,t):n===ga.TEMPLATE?ui(e,t):xi(e,t);break;case 10:n===ga.BLOCKQUOTE||n===ga.FIGCAPTION?Ii(e,t):xi(e,t);break;default:xi(e,t)}}function wi(e,t){e.tmplInsertionModeStackTop>-1?Yi(e,t):e.stopped=!0}function Li(e,t){const n=e.openElements.currentTagName;n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR?(e.pendingCharacterTokens=[],e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=xa,e._processToken(t)):Ui(e,t)}function Pi(e,t){const n=t.tagName;switch(n.length){case 2:n===ga.TD||n===ga.TH||n===ga.TR?function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(ga.TBODY),e.insertionMode=La,e._processToken(t)}(e,t):Ui(e,t);break;case 3:n===ga.COL?function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(ga.COLGROUP),e.insertionMode=wa,e._processToken(t)}(e,t):Ui(e,t);break;case 4:n===ga.FORM?function(e,t){e.formElement||0!==e.openElements.tmplCount||(e._insertElement(t,Ea.HTML),e.formElement=e.openElements.current,e.openElements.pop())}(e,t):Ui(e,t);break;case 5:n===ga.TABLE?function(e,t){e.openElements.hasInTableScope(ga.TABLE)&&(e.openElements.popUntilTagNamePopped(ga.TABLE),e._resetInsertionMode(),e._processToken(t))}(e,t):n===ga.STYLE?_i(e,t):n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Ea.HTML),e.insertionMode=La}(e,t):n===ga.INPUT?function(e,t){const n=Pr.getTokenAttr(t,ha.TYPE);n&&n.toLowerCase()===fa?e._appendElement(t,Ea.HTML):Ui(e,t),t.ackSelfClosing=!0}(e,t):Ui(e,t);break;case 6:n===ga.SCRIPT?_i(e,t):Ui(e,t);break;case 7:n===ga.CAPTION?function(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,Ea.HTML),e.insertionMode=Ma}(e,t):Ui(e,t);break;case 8:n===ga.COLGROUP?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Ea.HTML),e.insertionMode=wa}(e,t):n===ga.TEMPLATE?_i(e,t):Ui(e,t);break;default:Ui(e,t)}}function ki(e,t){const n=t.tagName;n===ga.TABLE?e.openElements.hasInTableScope(ga.TABLE)&&(e.openElements.popUntilTagNamePopped(ga.TABLE),e._resetInsertionMode()):n===ga.TEMPLATE?ui(e,t):n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP&&n!==ga.HTML&&n!==ga.TBODY&&n!==ga.TD&&n!==ga.TFOOT&&n!==ga.TH&&n!==ga.THEAD&&n!==ga.TR&&Ui(e,t)}function Ui(e,t){const n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,e._processTokenInBodyMode(t),e.fosterParentingEnabled=n}function Fi(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)Ui(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t)}function Bi(e,t){e.openElements.currentTagName===ga.COLGROUP&&(e.openElements.pop(),e.insertionMode=Da,e._processToken(t))}function Gi(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.OPTION?(e.openElements.currentTagName===ga.OPTION&&e.openElements.pop(),e._insertElement(t,Ea.HTML)):n===ga.OPTGROUP?(e.openElements.currentTagName===ga.OPTION&&e.openElements.pop(),e.openElements.currentTagName===ga.OPTGROUP&&e.openElements.pop(),e._insertElement(t,Ea.HTML)):n===ga.INPUT||n===ga.KEYGEN||n===ga.TEXTAREA||n===ga.SELECT?e.openElements.hasInSelectScope(ga.SELECT)&&(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode(),n!==ga.SELECT&&e._processToken(t)):n!==ga.SCRIPT&&n!==ga.TEMPLATE||_i(e,t)}function Hi(e,t){const n=t.tagName;if(n===ga.OPTGROUP){const t=e.openElements.items[e.openElements.stackTop-1],n=t&&e.treeAdapter.getTagName(t);e.openElements.currentTagName===ga.OPTION&&n===ga.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagName===ga.OPTGROUP&&e.openElements.pop()}else n===ga.OPTION?e.openElements.currentTagName===ga.OPTION&&e.openElements.pop():n===ga.SELECT&&e.openElements.hasInSelectScope(ga.SELECT)?(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode()):n===ga.TEMPLATE&&ui(e,t)}function Yi(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(ga.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode(),e._processToken(t)):e.stopped=!0}function Vi(e,t){e.insertionMode=ya,e._processToken(t)}function zi(e,t){e.insertionMode=ya,e._processToken(t)}var qi=Wi,Ki=Wi.prototype;function Wi(e,t,n){this.property=e,this.normal=t,n&&(this.space=n)}Ki.space=null,Ki.normal={},Ki.property={};var Qi=function(t){var n,r,a=t.length,i=[],o=[],s=-1;for(;++s<a;)n=t[s],i.push(n.property),o.push(n.normal),r=n.space;return new qi(e.apply(null,i),e.apply(null,o),r)};var $i=function(e){return e.toLowerCase()};var ji=Zi,Xi=Zi.prototype;function Zi(e,t){this.property=e,this.attribute=t}Xi.space=null,Xi.attribute=null,Xi.property=null,Xi.boolean=!1,Xi.booleanish=!1,Xi.overloadedBoolean=!1,Xi.number=!1,Xi.commaSeparated=!1,Xi.spaceSeparated=!1,Xi.commaOrSpaceSeparated=!1,Xi.mustUseProperty=!1,Xi.defined=!1;var Ji=0;function eo(){return Math.pow(2,++Ji)}var to={boolean:eo(),booleanish:eo(),overloadedBoolean:eo(),number:eo(),spaceSeparated:eo(),commaSeparated:eo(),commaOrSpaceSeparated:eo()},no=io;io.prototype=new ji,io.prototype.defined=!0;var ro=["boolean","booleanish","overloadedBoolean","number","commaSeparated","spaceSeparated","commaOrSpaceSeparated"],ao=ro.length;function io(e,t,n,r){var a,i=-1;for(oo(this,"space",r),ji.call(this,e,t);++i<ao;)oo(this,a=ro[i],(n&to[a])===to[a])}function oo(e,t,n){n&&(e[t]=n)}var so=function(e){var t,n,r=e.space,a=e.mustUseProperty||[],i=e.attributes||{},o=e.properties,s=e.transform,l={},c={};for(t in o)n=new no(t,s(i,t),o[t],r),-1!==a.indexOf(t)&&(n.mustUseProperty=!0),l[t]=n,c[$i(t)]=t,c[$i(n.attribute)]=t;return new qi(l,c,r)};var lo=so({space:"xlink",transform:function(e,t){return"xlink:"+t.slice(5).toLowerCase()},properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null}});var co=so({space:"xml",transform:function(e,t){return"xml:"+t.slice(3).toLowerCase()},properties:{xmlLang:null,xmlBase:null,xmlSpace:null}});var _o=function(e,t){return t in e?e[t]:t};var uo=function(e,t){return _o(e,t.toLowerCase())};var mo=so({space:"xmlns",attributes:{xmlnsxlink:"xmlns:xlink"},transform:uo,properties:{xmlns:null,xmlnsXLink:null}}),po=to.booleanish,go=to.number,Eo=to.spaceSeparated,ho=so({transform:function(e,t){return"role"===t?t:"aria-"+t.slice(4).toLowerCase()},properties:{ariaActiveDescendant:null,ariaAtomic:po,ariaAutoComplete:null,ariaBusy:po,ariaChecked:po,ariaColCount:go,ariaColIndex:go,ariaColSpan:go,ariaControls:Eo,ariaCurrent:null,ariaDescribedBy:Eo,ariaDetails:null,ariaDisabled:po,ariaDropEffect:Eo,ariaErrorMessage:null,ariaExpanded:po,ariaFlowTo:Eo,ariaGrabbed:po,ariaHasPopup:null,ariaHidden:po,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Eo,ariaLevel:go,ariaLive:null,ariaModal:po,ariaMultiLine:po,ariaMultiSelectable:po,ariaOrientation:null,ariaOwns:Eo,ariaPlaceholder:null,ariaPosInSet:go,ariaPressed:po,ariaReadOnly:po,ariaRelevant:null,ariaRequired:po,ariaRoleDescription:Eo,ariaRowCount:go,ariaRowIndex:go,ariaRowSpan:go,ariaSelected:po,ariaSetSize:go,ariaSort:null,ariaValueMax:go,ariaValueMin:go,ariaValueNow:go,ariaValueText:null,role:null}});var So=to.boolean,fo=to.overloadedBoolean,To=to.booleanish,bo=to.number,Co=to.spaceSeparated,No=to.commaSeparated,vo=Qi([co,lo,mo,ho,so({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:uo,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:No,acceptCharset:Co,accessKey:Co,action:null,allow:null,allowFullScreen:So,allowPaymentRequest:So,allowUserMedia:So,alt:null,as:null,async:So,autoCapitalize:null,autoComplete:Co,autoFocus:So,autoPlay:So,capture:So,charSet:null,checked:So,cite:null,className:Co,cols:bo,colSpan:null,content:null,contentEditable:To,controls:So,controlsList:Co,coords:bo|No,crossOrigin:null,data:null,dateTime:null,decoding:null,default:So,defer:So,dir:null,dirName:null,disabled:So,download:fo,draggable:To,encType:null,enterKeyHint:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:So,formTarget:null,headers:Co,height:bo,hidden:So,high:bo,href:null,hrefLang:null,htmlFor:Co,httpEquiv:Co,id:null,imageSizes:null,imageSrcSet:No,inputMode:null,integrity:null,is:null,isMap:So,itemId:null,itemProp:Co,itemRef:Co,itemScope:So,itemType:Co,kind:null,label:null,lang:null,language:null,list:null,loop:So,low:bo,manifest:null,max:null,maxLength:bo,media:null,method:null,min:null,minLength:bo,multiple:So,muted:So,name:null,nonce:null,noModule:So,noValidate:So,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforePrint:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextMenu:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:So,optimum:bo,pattern:null,ping:Co,placeholder:null,playsInline:So,poster:null,preload:null,readOnly:So,referrerPolicy:null,rel:Co,required:So,reversed:So,rows:bo,rowSpan:bo,sandbox:Co,scope:null,scoped:So,seamless:So,selected:So,shape:null,size:bo,sizes:null,slot:null,span:bo,spellCheck:To,src:null,srcDoc:null,srcLang:null,srcSet:No,start:bo,step:null,style:null,tabIndex:bo,target:null,title:null,translate:null,type:null,typeMustMatch:So,useMap:null,value:To,width:bo,wrap:null,align:null,aLink:null,archive:Co,axis:null,background:null,bgColor:null,border:bo,borderColor:null,bottomMargin:bo,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:So,declare:So,event:null,face:null,frame:null,frameBorder:null,hSpace:bo,leftMargin:bo,link:null,longDesc:null,lowSrc:null,marginHeight:bo,marginWidth:bo,noResize:So,noHref:So,noShade:So,noWrap:So,object:null,profile:null,prompt:null,rev:null,rightMargin:bo,rules:null,scheme:null,scrolling:To,standby:null,summary:null,text:null,topMargin:bo,valueType:null,version:null,vAlign:null,vLink:null,vSpace:bo,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:So,prefix:null,property:null,results:bo,security:null,unselectable:null}})]),Ro=to.boolean,Ao=to.number,Oo=to.spaceSeparated,yo=to.commaSeparated,Io=to.commaOrSpaceSeparated,Do=Qi([co,lo,mo,ho,so({space:"svg",attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},transform:_o,properties:{about:Io,accentHeight:Ao,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:Ao,amplitude:Ao,arabicForm:null,ascent:Ao,attributeName:null,attributeType:null,azimuth:Ao,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:Ao,by:null,calcMode:null,capHeight:Ao,className:Oo,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:Ao,diffuseConstant:Ao,direction:null,display:null,dur:null,divisor:Ao,dominantBaseline:null,download:Ro,dx:null,dy:null,edgeMode:null,editable:null,elevation:Ao,enableBackground:null,end:null,event:null,exponent:Ao,externalResourcesRequired:null,fill:null,fillOpacity:Ao,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:yo,g2:yo,glyphName:yo,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:Ao,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:Ao,horizOriginX:Ao,horizOriginY:Ao,id:null,ideographic:Ao,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:Ao,k:Ao,k1:Ao,k2:Ao,k3:Ao,k4:Ao,kernelMatrix:Io,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:Ao,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:Ao,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:Ao,overlineThickness:Ao,paintOrder:null,panose1:null,path:null,pathLength:Ao,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:Oo,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:Ao,pointsAtY:Ao,pointsAtZ:Ao,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Io,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Io,rev:Io,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Io,requiredFeatures:Io,requiredFonts:Io,requiredFormats:Io,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:Ao,specularExponent:Ao,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:Ao,strikethroughThickness:Ao,string:null,stroke:null,strokeDashArray:Io,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:Ao,strokeOpacity:Ao,strokeWidth:null,style:null,surfaceScale:Ao,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Io,tabIndex:Ao,tableValues:null,target:null,targetX:Ao,targetY:Ao,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Io,to:null,transform:null,u1:null,u2:null,underlinePosition:Ao,underlineThickness:Ao,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:Ao,values:null,vAlphabetic:Ao,vMathematical:Ao,vectorEffect:null,vHanging:Ao,vIdeographic:Ao,version:null,vertAdvY:Ao,vertOriginX:Ao,vertOriginY:Ao,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:Ao,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null}})]),xo="data",Mo=function(e,t){var n=$i(t),r=t,a=ji;if(n in e.normal)return e.property[e.normal[n]];n.length>4&&n.slice(0,4)===xo&&wo.test(t)&&("-"===t.charAt(4)?r=function(e){var t=e.slice(5).replace(Lo,Uo);return xo+t.charAt(0).toUpperCase()+t.slice(1)}(t):t=function(e){var t=e.slice(4);if(Lo.test(t))return e;"-"!==(t=t.replace(Po,ko)).charAt(0)&&(t="-"+t);return xo+t}(t),a=no);return new a(r,t)},wo=/^data[-a-z0-9.:_]+$/i,Lo=/-[a-z]/g,Po=/[A-Z]/g;function ko(e){return"-"+e.toLowerCase()}function Uo(e){return e.charAt(1).toUpperCase()}const Fo="http://www.w3.org/1999/xhtml",Bo="http://www.w3.org/1998/Math/MathML",Go="http://www.w3.org/2000/svg",Ho="http://www.w3.org/1999/xlink",Yo="http://www.w3.org/XML/1998/namespace",Vo="http://www.w3.org/2000/xmlns/";var zo={html:Fo,mathml:Bo,svg:Go,xlink:Ho,xml:Yo,xmlns:Vo},qo=Object.freeze({html:Fo,mathml:Bo,svg:Go,xlink:Ho,xml:Yo,xmlns:Vo,default:zo}),Ko=Object.freeze({default:["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","solidColor","textArea","textPath"]}),Wo=function(e,t){var n,r,a,i,o,s=e||"",l=t||"div",c={},d=-1,_=s.length;for(;++d<=_;)(a=s.charCodeAt(d))&&a!==$o&&a!==Qo||((i=s.slice(o,d))&&(r===$o?n?n.push(i):(n=[i],c.className=n):r===Qo?c.id=i:l=i),o=d+1,r=a);return{type:"element",tagName:l,properties:c,children:[]}},Qo=35,$o=46;var jo=function(e){var t=String(e||Zo).trim();return t===Zo?[]:t.split(es)},Xo=function(e){return e.join(Jo).trim()},Zo="",Jo=" ",es=/[ \t\n\r\f]+/g;var ts={parse:jo,stringify:Xo},ns=function(e){var t,n=[],r=String(e||os),a=r.indexOf(as),i=0,o=!1;for(;!o;)-1===a&&(a=r.length,o=!0),!(t=r.slice(i,a).trim())&&o||n.push(t),i=a+1,a=r.indexOf(as,i);return n},rs=function(e,t){var n=t||{},r=!1===n.padLeft?os:is,a=n.padRight?is:os;e[e.length-1]===os&&(e=e.concat(os));return e.join(a+as+r).trim()},as=",",is=" ",os="";var ss={parse:ns,stringify:rs},ls=ts.parse,cs=ss.parse,ds=function(e,t,n){var r=n?function(e){var t,n=e.length,r=-1,a={};for(;++r<n;)t=e[r],a[t.toLowerCase()]=t;return a}(n):null;return function(e,n){var i,o=Wo(e,t),s=Array.prototype.slice.call(arguments,2),l=o.tagName.toLowerCase();o.tagName=r&&_s.call(r,l)?r[l]:l,n&&function(e,t){return"string"==typeof e||"length"in e||function(e,t){var n=t.type;return!("input"===e||!n||"string"!=typeof n)&&("object"==typeof t.children&&"length"in t.children||(n=n.toLowerCase(),"button"===e?"menu"!==n&&"submit"!==n&&"reset"!==n&&"button"!==n:"value"in t))}(t.tagName,e)}(n,o)&&(s.unshift(n),n=null);if(n)for(i in n)a(o.properties,i,n[i]);(function e(t,n){var r,a;if("string"!=typeof n&&"number"!=typeof n)if("object"==typeof n&&"length"in n)for(r=-1,a=n.length;++r<a;)e(t,n[r]);else{if("object"!=typeof n||!("type"in n))throw new Error("Expected node, nodes, or string, got `"+n+"`");t.push(n)}else t.push({type:"text",value:String(n)})})(o.children,s),"template"===o.tagName&&(o.content={type:"root",children:o.children},o.children=[]);return o};function a(t,n,r){var a,i,o;null!==r&&void 0!==r&&r==r&&(a=Mo(e,n),i=a.property,"string"==typeof(o=r)&&(a.spaceSeparated?o=ls(o):a.commaSeparated?o=cs(o):a.commaOrSpaceSeparated&&(o=ls(cs(o).join(" ")))),"style"===i&&"string"!=typeof r&&(o=function(e){var t,n=[];for(t in e)n.push([t,e[t]].join(": "));return n.join("; ")}(o)),"className"===i&&t.className&&(o=t.className.concat(o)),t[i]=function(e,t,n){var r,a,i;if("object"!=typeof n||!("length"in n))return us(e,t,n);a=n.length,r=-1,i=[];for(;++r<a;)i[r]=us(e,t,n[r]);return i}(a,i,o))}},_s={}.hasOwnProperty;function us(e,t,n){var r=n;return e.number||e.positiveNumber?isNaN(r)||""===r||(r=Number(r)):(e.boolean||e.overloadedBoolean)&&("string"!=typeof r||""!==r&&$i(n)!==$i(t)||(r=!0)),r}var ms=C(Ko),ps=ds(Do,"g",ms);ps.displayName="svg";var gs=ps,Es=ds(vo,"div");Es.displayName="html";var hs=Es,Ss=function(e,t){var n,r=0;if(e=String(e),"string"!=typeof t||1!==t.length)throw new Error("Expected character");n=e.indexOf(t);for(;-1!==n;)r++,n=e.indexOf(t,n+1);return r};var fs=C(qo),Ts=function(e,t){var n,r=t||{};r.messages?(n=r,r={}):n=r.file;return Ns(e,{schema:"svg"===r.space?Do:vo,file:n,verbose:r.verbose,location:!1})},bs={}.hasOwnProperty,Cs={"#document":vs,"#document-fragment":vs,"#text":function(e){return{type:"text",value:e.value}},"#comment":function(e){return{type:"comment",value:e.data}},"#documentType":function(e){return{type:"doctype",name:e.name||"",public:e.publicId||null,system:e.systemId||null}}};function Ns(t,n){var r,a,i,o=n.schema,s=bs.call(Cs,t.nodeName)?Cs[t.nodeName]:Rs;return s===Rs&&(n.schema=t.namespaceURI===fs.svg?Do:vo),t.childNodes&&(r=function(e,t){var n=e.length,r=-1,a=[];for(;++r<n;)a[r]=Ns(e[r],t);return a}(t.childNodes,n)),a=s(t,r,n),t.sourceCodeLocation&&n.file&&(i=function(t,n,r){var a,i,o,s,l,c=r.schema,d=r.verbose,_=As(n);if("element"===t.type&&(a=t.children[t.children.length-1],!n.endTag&&a&&a.position&&a.position.end&&(_.end=e(a.position.end)),d)){for(o in i=n.attrs,s={},i)l=Mo(c,o).property,s[l]=As(i[o]);t.data={position:{opening:As(n.startTag),closing:n.endTag?As(n.endTag):null,properties:s}}}return _}(a,t.sourceCodeLocation,n))&&(n.location=!0,a.position=i),n.schema=o,a}function vs(e,t,n){var r,a={type:"root",children:t,data:{}};return a.data.quirksMode="quirks"===e.mode||"limited-quirks"===e.mode,n.file&&n.location&&(r=String(n.file),a.position={start:{line:1,column:1,offset:0},end:{line:Ss(r,"\n")+1,column:r.length-r.lastIndexOf("\n"),offset:r.length}}),a}function Rs(e,t,n){for(var r,a,i,o,s,l="svg"===n.schema.space?gs:hs,c=e.tagName,d=e.attrs,_=d.length,u={},m=-1;++m<_;)u[((r=d[m]).prefix?r.prefix+":":"")+r.name]=r.value;return a=l(c,u,t),"template"===c&&"content"in e&&(o=(i=e.sourceCodeLocation)&&i.startTag&&As(i.startTag).end,s=i&&i.endTag&&As(i.endTag).start,a.content=Ns(e.content,n),(o||s)&&n.file&&(a.content.position={start:o,end:s})),a}function As(e){var t=Os({line:e.startLine,column:e.startCol,offset:e.startOffset}),n=Os({line:e.endLine,column:e.endCol,offset:e.endOffset});return t||n?{start:t,end:n}:null}function Os(e){return e.line&&e.column?e:null}var ys={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},Is=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,Ds=/\n/g,xs=/^\s*/,Ms=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,ws=/^:\s*/,Ls=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,Ps=/^[;\s]*/,ks=/^\s+|\s+$/g,Us="\n",Fs="/",Bs="*",Gs="",Hs="comment",Ys="declaration",Vs=function(e,t){if("string"!=typeof e)throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var n=1,r=1;function a(e){var t=e.match(Ds);t&&(n+=t.length);var a=e.lastIndexOf(Us);r=~a?e.length-a:r+e.length}function i(){var e={line:n,column:r};return function(t){return t.position=new o(e),c(),t}}function o(e){this.start=e,this.end={line:n,column:r},this.source=t.source}function s(a){var i=new Error(t.source+":"+n+":"+r+": "+a);if(i.reason=a,i.filename=t.source,i.line=n,i.column=r,i.source=e,!t.silent)throw i}function l(t){var n=t.exec(e);if(n){var r=n[0];return a(r),e=e.slice(r.length),n}}function c(){l(xs)}function d(e){var t;for(e=e||[];t=_();)!1!==t&&e.push(t);return e}function _(){var t=i();if(Fs==e.charAt(0)&&Bs==e.charAt(1)){for(var n=2;Gs!=e.charAt(n)&&(Bs!=e.charAt(n)||Fs!=e.charAt(n+1));)++n;if(n+=2,Gs===e.charAt(n-1))return s("End of comment missing");var o=e.slice(2,n-2);return r+=2,a(o),e=e.slice(n),r+=2,t({type:Hs,comment:o})}}function u(){var e=i(),t=l(Ms);if(t){if(_(),!l(ws))return s("property missing ':'");var n=l(Ls),r=e({type:Ys,property:zs(t[0].replace(Is,Gs)),value:n?zs(n[0].replace(Is,Gs)):Gs});return l(Ps),r}}return o.prototype.content=e,c(),function(){var e,t=[];for(d(t);e=u();)!1!==e&&(t.push(e),d(t));return t}()};function zs(e){return e?e.replace(ks,Gs):Gs}var qs=function(e,t){var n,r=null;if(!e||"string"!=typeof e)return r;for(var a,i,o=Vs(e),s="function"==typeof t,l=0,c=o.length;l<c;l++)a=(n=o[l]).property,i=n.value,s?t(a,i,n):i&&(r||(r={}),r[a]=i);return r},Ks=C(Object.freeze({classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink",default:ys})),Ws=s("root"),Qs=s("element"),$s=s("text"),js=/-([a-z])/g,Xs=function(e,t,n){var r,a,i,o,s=n||{};if("function"!=typeof e)throw new Error("h is not a function");"string"==typeof s||"boolean"==typeof s?(r=s,s={}):r=s.prefix;a=function(e){var t=e&&e("div");return Boolean(t&&("_owner"in t||"_store"in t)&&null===t.key)}(e),i=function(e){var t=e&&e("div");return Boolean(t&&t.context&&t.context._isVue)}(e),o=function(e){return e&&"VirtualNode"===e("div").type}(e),(null===r||void 0===r)&&(r=(!0===a||!0===i||!0===o)&&"h-");if(Ws(t))t=1===t.children.length&&Qs(t.children[0])?t.children[0]:{type:"element",tagName:"div",properties:{},children:t.children};else if(!Qs(t))throw new Error("Expected root or element, not `"+(t&&t.type||t)+"`");return function e(t,n,r){var a=r.schema;var i=a;var o=n.tagName;var s;var l;var c;var d;var _;var u;var m;var p;var g;"html"===a.space&&"svg"===o.toLowerCase()&&(i=Do,r.schema=i);!0===r.vdom&&"html"===i.space&&(o=o.toUpperCase());s=n.properties;l={};for(d in s)Zs(l,d,s[d],r);"string"!=typeof l.style||!0!==r.vdom&&!0!==r.vue&&!0!==r.react||(l.style=function(e,t){var n={};try{qs(e,function(e,t){n[function(e){"-ms-"===e.slice(0,4)&&(e="ms-"+e.slice(4));return e.replace(js,Js)}(e)]=t})}catch(e){throw e.message=t+"[style]"+e.message.slice("undefined".length),e}return n}(l.style,o));r.prefix&&(r.key++,l.key=r.prefix+r.key);r.vdom&&"html"!==i.space&&(l.namespace=fs[i.space]);_=[];c=n.children;u=c?c.length:0;m=-1;for(;++m<u;)p=c[m],Qs(p)?_.push(e(t,p,r)):$s(p)&&_.push(p.value);g=0===_.length?t(o,l):t(o,l,_);r.schema=a;return g}(e,t,{schema:"svg"===s.space?Do:vo,prefix:r,key:0,react:a,vue:i,vdom:o,hyperscript:function(e){return Boolean(e&&e.context&&e.cleanup)}(e)})};function Zs(e,t,n,r){var a,i=r.hyperscript||r.vdom||r.vue,o=r.schema,s=Mo(o,t);null===n||void 0===n||n!=n||i&&!1===n||i&&s.boolean&&!n||(null!==n&&"object"==typeof n&&"length"in n&&(n=(s.commaSeparated?ss:ts).stringify(n)),s.boolean&&!0===r.hyperscript&&(n=""),r.vue?"style"!==t&&(a="attrs"):s.mustUseProperty||(!0===r.vdom?a="attributes":!0===r.hyperscript&&(a="attrs")),a?(void 0===e[a]&&(e[a]={}),e[a][s.attribute]=n):r.react&&s.space?e[Ks[s.property]||s.property]=n:e[s.attribute]=n)}function Js(e,t){return t.toUpperCase()}var el=function(e,t){var n=t||{};function r(t){var n=r.invalid,a=r.handlers;return t&&nl.call(t,e)&&(n=nl.call(a,t[e])?a[t[e]]:r.unknown),(n||tl).apply(this,arguments)}return r.handlers=n.handlers||{},r.invalid=n.invalid,r.unknown=n.unknown,r},tl=Function.prototype,nl={}.hasOwnProperty;var rl=function(e,t){return il(e,"svg"===t?Do:vo)},al=["svg","html"],il=el("type");function ol(e,t,n){var r,a=n,i=e.position,o=e.children,s=[],l=o?o.length:0,c=-1;for("element"===e.type&&("html"===a.space&&"svg"===e.tagName&&(a=Do),t.namespaceURI=fs[a.space]);++c<l;)(r=il(o[c],a)).parentNode=t,s[c]=r;return"element"!==e.type&&"root"!==e.type||(t.childNodes=s),i&&i.start&&i.end&&(t.sourceCodeLocation={startLine:i.start.line,startCol:i.start.column,startOffset:i.start.offset,endLine:i.end.line,endCol:i.end.column,endOffset:i.end.offset}),t}il.handlers.root=function(e,t){var n=(e.data||{}).quirksMode?"quirks":"no-quirks";return ol(e,{nodeName:"#document",mode:n},t)},il.handlers.element=function(t,n){var r=n.space,a=e(t,{children:[]});return Xs(function(e,r){var i,o,s,l,c,d,_=[];for(l in r)c=Mo(n,l),!1===(o=r[l])||c.boolean&&!o||(s={name:l,value:!0===o?"":String(o)},c.space&&-1===al.indexOf(c.space)&&(-1===(d=l.indexOf(":"))?s.prefix="":(s.name=l.slice(d+1),s.prefix=l.slice(0,d)),s.namespace=fs[c.space]),_.push(s));i=ol(t,{nodeName:e,tagName:e,attrs:_},n),"template"===e&&(i.content=function(e,t){return ol(e,{nodeName:"#document-fragment"},t)}(a.content,n));return i},a,{space:r})},il.handlers.text=function(e,t){return ol(e,{nodeName:"#text",value:e.value},t)},il.handlers.comment=function(e,t){return ol(e,{nodeName:"#comment",data:e.value},t)},il.handlers.doctype=function(e,t){return ol(e,{nodeName:"#documentType",name:e.name,publicId:e.public||"",systemId:e.system||""},t)};var sl=C(Object.freeze({default:["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","isindex","keygen","link","menuitem","meta","nextid","param","source","track","wbr"]})),ll=function(t,n){var r,a,i,o,s,l=new Qa(El),c=el("type");if(c.handlers.root=function(e){m(e.children)},c.handlers.element=function(t){var n=-1!==sl.indexOf(t.tagName);l._processToken(function(t){var n=Sl(t);return n.startTag=e(n),{type:ul,tagName:t.tagName,selfClosing:!1,attrs:function(e){return rl({tagName:e.tagName,type:"element",properties:e.properties}).attrs}(t),location:n}}(t),fs.html),m(t.children),n||(l._processToken(function(t){var n=Sl(t);return n.endTag=e(n),{type:ml,tagName:t.tagName,attrs:[],location:n}}(t)),r.state=dl)},c.handlers.text=function(e){l._processToken({type:_l,chars:e.value,location:Sl(e)})},c.handlers.comment=function(e){l._processToken({type:pl,data:e.value,location:Sl(e)})},c.handlers.doctype=function(e){var t=rl(e);l._processToken({type:gl,name:t.name,forceQuirks:!1,publicId:t.publicId,systemId:t.systemId,location:Sl(e)})},c.handlers.raw=function(e){var t,n=N.start(e);a.html=null,a.endOfChunkHit=!1,a.lastChunkWritten=!1,a.lastCharPos=-1,a.pos=-1,i.droppedBufferSize=0,i.line=n.line,i.col=1,i.offset=0,i.lineStartPos=1-n.column,i.droppedBufferSize=n.offset,o.currentAttrLocation=null,o.ctLoc=Sl(e),r.write(e.value),l._runParsingLoop(null),(t=r.currentCharacterToken)&&(t.location.endLine=i.line,t.location.endCol=i.col+1,t.location.endOffset=i.offset+1,l._processToken(t)),r.currentToken=null,r.currentCharacterToken=null,r.currentAttr=null},c.unknown=hl,s=Ts((_=t,u="root"===_.type?_.children[0]:_,!u||"doctype"!==u.type&&"html"!==u.tagName?function(){var e,n,s;return e={nodeName:"template",tagName:"template",attrs:[],namespaceURI:fs.html,childNodes:[]},n={nodeName:"documentmock",tagName:"documentmock",attrs:[],namespaceURI:fs.html,childNodes:[]},s={nodeName:"#document-fragment",childNodes:[]},l._bootstrap(n,e),l._pushTmplInsertionMode(cl),l._initTokenizerForFragmentParsing(),l._insertFakeRootElement(),l._resetInsertionMode(),l._findFormInFragmentContext(),r=l.tokenizer,a=r.preprocessor,o=r.__mixins[0],i=o.posTracker,c(t),l._adoptNodes(n.childNodes[0],s),s}():(d=l.treeAdapter.createDocument(),l._bootstrap(d,null),r=l.tokenizer,a=r.preprocessor,o=r.__mixins[0],i=o.posTracker,c(t),d)),n),"root"!==t.type&&1===s.children.length)return s.children[0];var d;var _,u;return s;function m(e){var t=0,n=-1;for(e&&(t=e.length);++n<t;)c(e[n])}},cl="IN_TEMPLATE_MODE",dl="DATA_STATE",_l="CHARACTER_TOKEN",ul="START_TAG_TOKEN",ml="END_TAG_TOKEN",pl="COMMENT_TOKEN",gl="DOCTYPE_TOKEN",El={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function hl(e){throw new Error("Cannot compile `"+e.type+"` node")}function Sl(e){var t=N.start(e),n=N.end(e);return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:n.line,endCol:n.column,endOffset:n.offset}}var fl=function(){return ll};var Tl=bl;function bl(e){if("string"==typeof e)return function(e){return function(t){return Boolean(t&&t.type===e)}}(e);if(null===e||void 0===e)return Cl;if("object"==typeof e)return("length"in e?function(e){var t=function(e){var t=[],n=e.length,r=-1;for(;++r<n;)t[r]=bl(e[r]);return t}(e),n=t.length;return function(){var e=-1;for(;++e<n;)if(t[e].apply(this,arguments))return!0;return!1}}:function(e){return function(t){var n;for(n in e)if(t[n]!==e[n])return!1;return!0}})(e);if("function"==typeof e)return e;throw new Error("Expected function, string, or object as test")}function Cl(){return!0}var Nl=Ol,vl=!0,Rl="skip",Al=!1;function Ol(e,t,n,r){var a;function i(e,o,s){var l,c=[];return(t&&!a(e,o,s[s.length-1]||null)||(c=yl(n(e,s)))[0]!==Al)&&e.children&&c[0]!==Rl&&(l=yl(function(e,t){var n,a=r?-1:1,o=(r?e.length:-1)+a;for(;o>-1&&o<e.length;){if((n=i(e[o],o,t))[0]===Al)return n;o="number"==typeof n[1]?n[1]:o+a}}(e.children,s.concat(e))))[0]===Al?l:c}"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),a=Tl(t),i(e,null,[])}function yl(e){return null!==e&&"object"==typeof e&&"length"in e?e:"number"==typeof e?[vl,e]:[e]}Ol.CONTINUE=vl,Ol.SKIP=Rl,Ol.EXIT=Al;var Il=wl,Dl=Nl.CONTINUE,xl=Nl.SKIP,Ml=Nl.EXIT;function wl(e,t,n,r){"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),Nl(e,t,function(e,t){var r=t[t.length-1],a=r?r.children.indexOf(e):null;return n(e,a,r)},r)}wl.CONTINUE=Dl,wl.SKIP=xl,wl.EXIT=Ml;var Ll,Pl=b(function(e,t){var n;"undefined"!=typeof self&&self,n=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){},function(e,t,n){n.r(t);n(0);var r=function(){function e(e,t,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=n}return e.range=function(t,n){return n?t&&t.loc&&n.loc&&t.loc.lexer===n.loc.lexer?new e(t.loc.lexer,t.loc.start,n.loc.end):null:t&&t.loc},e}(),a=function(){function e(e,t){this.text=void 0,this.loc=void 0,this.text=e,this.loc=t}return e.prototype.range=function(t,n){return new e(n,r.range(this,t))},e}(),i=function e(t,n){this.position=void 0;var r,a="KaTeX parse error: "+t,i=n&&n.loc;if(i&&i.start<=i.end){var o=i.lexer.input;r=i.start;var s=i.end;r===o.length?a+=" at end of input: ":a+=" at position "+(r+1)+": ";var l=o.slice(r,s).replace(/[^]/g,"$&̲");a+=(r>15?"…"+o.slice(r-15,r):o.slice(0,r))+l+(s+15<o.length?o.slice(s,s+15)+"…":o.slice(s))}var c=new Error(a);return c.name="ParseError",c.__proto__=e.prototype,c.position=r,c};i.prototype.__proto__=Error.prototype;var o=i,s=/([A-Z])/g,l={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},c=/[&><"']/g;var d=function e(t){return"ordgroup"===t.type?1===t.body.length?e(t.body[0]):t:"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},_={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(c,function(e){return l[e]})},hyphenate:function(e){return e.replace(s,"-$1").toLowerCase()},getBaseElem:d,isCharacterBox:function(e){var t=d(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^\s*([^\\/#]*?)(?::|&#0*58|&#x0*3a)/i.exec(e);return null!=t?t[1]:"_relative"}},u=function(){function e(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,e=e||{},this.displayMode=_.deflt(e.displayMode,!1),this.output=_.deflt(e.output,"htmlAndMathml"),this.leqno=_.deflt(e.leqno,!1),this.fleqn=_.deflt(e.fleqn,!1),this.throwOnError=_.deflt(e.throwOnError,!0),this.errorColor=_.deflt(e.errorColor,"#cc0000"),this.macros=e.macros||{},this.minRuleThickness=Math.max(0,_.deflt(e.minRuleThickness,0)),this.colorIsTextColor=_.deflt(e.colorIsTextColor,!1),this.strict=_.deflt(e.strict,"warn"),this.trust=_.deflt(e.trust,!1),this.maxSize=Math.max(0,_.deflt(e.maxSize,1/0)),this.maxExpand=Math.max(0,_.deflt(e.maxExpand,1e3))}var t=e.prototype;return t.reportNonstrict=function(e,t,n){var r=this.strict;if("function"==typeof r&&(r=r(e,t,n)),r&&"ignore"!==r){if(!0===r||"error"===r)throw new o("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",n);"warn"===r?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+r+"': "+t+" ["+e+"]")}},t.useStrictBehavior=function(e,t,n){var r=this.strict;if("function"==typeof r)try{r=r(e,t,n)}catch(e){r="error"}return!(!r||"ignore"===r)&&(!0===r||"error"===r||("warn"===r?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+r+"': "+t+" ["+e+"]"),!1)))},t.isTrusted=function(e){e.url&&!e.protocol&&(e.protocol=_.protocolFromUrl(e.url));var t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)},e}(),m=function(){function e(e,t,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=n}var t=e.prototype;return t.sup=function(){return p[g[this.id]]},t.sub=function(){return p[E[this.id]]},t.fracNum=function(){return p[h[this.id]]},t.fracDen=function(){return p[S[this.id]]},t.cramp=function(){return p[f[this.id]]},t.text=function(){return p[T[this.id]]},t.isTight=function(){return this.size>=2},e}(),p=[new m(0,0,!1),new m(1,0,!0),new m(2,1,!1),new m(3,1,!0),new m(4,2,!1),new m(5,2,!0),new m(6,3,!1),new m(7,3,!0)],g=[4,5,4,5,6,7,6,7],E=[5,5,5,5,7,7,7,7],h=[2,3,4,5,6,7,6,7],S=[3,3,5,5,7,7,7,7],f=[1,1,3,3,5,5,7,7],T=[0,1,2,3,2,3,2,3],b={DISPLAY:p[0],TEXT:p[2],SCRIPT:p[4],SCRIPTSCRIPT:p[6]},C=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var N=[];function v(e){for(var t=0;t<N.length;t+=2)if(e>=N[t]&&e<=N[t+1])return!0;return!1}C.forEach(function(e){return e.blocks.forEach(function(e){return N.push.apply(N,e)})});var R={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e},t.toMarkup=function(){for(var e="",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e},t.toText=function(){var e=function(e){return e.toText()};return this.children.map(e).join("")},e}(),O=function(e){return e.filter(function(e){return e}).join(" ")},y=function(e,t,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},t){t.style.isTight()&&this.classes.push("mtight");var r=t.getColor();r&&(this.style.color=r)}},I=function(e){var t=document.createElement(e);for(var n in t.className=O(this.classes),this.style)this.style.hasOwnProperty(n)&&(t.style[n]=this.style[n]);for(var r in this.attributes)this.attributes.hasOwnProperty(r)&&t.setAttribute(r,this.attributes[r]);for(var a=0;a<this.children.length;a++)t.appendChild(this.children[a].toNode());return t},D=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+_.escape(O(this.classes))+'"');var n="";for(var r in this.style)this.style.hasOwnProperty(r)&&(n+=_.hyphenate(r)+":"+this.style[r]+";");for(var a in n&&(t+=' style="'+_.escape(n)+'"'),this.attributes)this.attributes.hasOwnProperty(a)&&(t+=" "+a+'="'+_.escape(this.attributes[a])+'"');t+=">";for(var i=0;i<this.children.length;i++)t+=this.children[i].toMarkup();return t+="</"+e+">"},x=function(){function e(e,t,n,r){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,y.call(this,e,n,r),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){return I.call(this,"span")},t.toMarkup=function(){return D.call(this,"span")},e}(),M=function(){function e(e,t,n,r){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,y.call(this,t,r),this.children=n||[],this.setAttribute("href",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){return I.call(this,"a")},t.toMarkup=function(){return D.call(this,"a")},e}(),w=function(){function e(e,t,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=n}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e},t.toMarkup=function(){var e="<img  src='"+this.src+" 'alt='"+this.alt+"' ",t="";for(var n in this.style)this.style.hasOwnProperty(n)&&(t+=_.hyphenate(n)+":"+this.style[n]+";");return t&&(e+=' style="'+_.escape(t)+'"'),e+="'/>"},e}(),L={"î":"ı̂","ï":"ı̈","í":"ı́","ì":"ı̀"},P=function(){function e(e,t,n,r,a,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=n||0,this.italic=r||0,this.skew=a||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t<C.length;t++)for(var n=C[t],r=0;r<n.blocks.length;r++){var a=n.blocks[r];if(e>=a[0]&&e<=a[1])return n.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[îïíì]/.test(this.text)&&(this.text=L[this.text])}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var n in this.italic>0&&((t=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((t=t||document.createElement("span")).className=O(this.classes)),this.style)this.style.hasOwnProperty(n)&&((t=t||document.createElement("span")).style[n]=this.style[n]);return t?(t.appendChild(e),t):e},t.toMarkup=function(){var e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=_.escape(O(this.classes)),t+='"');var n="";for(var r in this.italic>0&&(n+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(r)&&(n+=_.hyphenate(r)+":"+this.style[r]+";");n&&(e=!0,t+=' style="'+_.escape(n)+'"');var a=_.escape(this.text);return e?(t+=">",t+=a,t+="</span>"):a},e}(),k=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},t.toMarkup=function(){var e="<svg";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");e+=">";for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+="</svg>"},e}(),U=function(){function e(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",R[this.pathName]),e},t.toMarkup=function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+R[this.pathName]+"'/>"},e}(),F=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e="<line";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");return e+="/>"},e}();function B(e){if(e instanceof P)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}var G={"AMS-Regular":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},"Fraktur-Regular":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,1],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.9,0,0,.278],8943:[-.19,.31,0,0,1.172],8945:[-.1,.82,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.744,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.744,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},"Math-Italic":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"Math-Regular":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"SansSerif-Bold":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},"Size1-Regular":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},H={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Y={"Å":"A","Ç":"C","Ð":"D","Þ":"o","å":"a","ç":"c","ð":"d","þ":"o","А":"A","Б":"B","В":"B","Г":"F","Д":"A","Е":"E","Ж":"K","З":"3","И":"N","Й":"N","К":"K","Л":"N","М":"M","Н":"H","О":"O","П":"N","Р":"P","С":"C","Т":"T","У":"y","Ф":"O","Х":"X","Ц":"U","Ч":"h","Ш":"W","Щ":"W","Ъ":"B","Ы":"X","Ь":"B","Э":"3","Ю":"X","Я":"R","а":"a","б":"b","в":"a","г":"r","д":"y","е":"e","ж":"m","з":"e","и":"n","й":"n","к":"n","л":"n","м":"m","н":"n","о":"o","п":"n","р":"p","с":"c","т":"o","у":"y","ф":"b","х":"x","ц":"n","ч":"n","ш":"w","щ":"w","ъ":"a","ы":"m","ь":"a","э":"e","ю":"m","я":"r"};function V(e,t,n){if(!G[t])throw new Error("Font metrics not found for font: "+t+".");var r=e.charCodeAt(0),a=G[t][r];if(!a&&e[0]in Y&&(r=Y[e[0]].charCodeAt(0),a=G[t][r]),a||"text"!==n||v(r)&&(a=G[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var z={};var q={bin:1,close:1,inner:1,open:1,punct:1,rel:1},K={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},W={math:{},text:{}},Q=W;function $(e,t,n,r,a,i){W[e][a]={font:t,group:n,replace:r},i&&r&&(W[e][r]=W[e][a])}var j="main",X="ams",Z="bin",J="mathord",ee="op-token",te="rel";$("math",j,te,"≡","\\equiv",!0),$("math",j,te,"≺","\\prec",!0),$("math",j,te,"≻","\\succ",!0),$("math",j,te,"∼","\\sim",!0),$("math",j,te,"⊥","\\perp"),$("math",j,te,"⪯","\\preceq",!0),$("math",j,te,"⪰","\\succeq",!0),$("math",j,te,"≃","\\simeq",!0),$("math",j,te,"∣","\\mid",!0),$("math",j,te,"≪","\\ll",!0),$("math",j,te,"≫","\\gg",!0),$("math",j,te,"≍","\\asymp",!0),$("math",j,te,"∥","\\parallel"),$("math",j,te,"⋈","\\bowtie",!0),$("math",j,te,"⌣","\\smile",!0),$("math",j,te,"⊑","\\sqsubseteq",!0),$("math",j,te,"⊒","\\sqsupseteq",!0),$("math",j,te,"≐","\\doteq",!0),$("math",j,te,"⌢","\\frown",!0),$("math",j,te,"∋","\\ni",!0),$("math",j,te,"∝","\\propto",!0),$("math",j,te,"⊢","\\vdash",!0),$("math",j,te,"⊣","\\dashv",!0),$("math",j,te,"∋","\\owns"),$("math",j,"punct",".","\\ldotp"),$("math",j,"punct","⋅","\\cdotp"),$("math",j,"textord","#","\\#"),$("text",j,"textord","#","\\#"),$("math",j,"textord","&","\\&"),$("text",j,"textord","&","\\&"),$("math",j,"textord","ℵ","\\aleph",!0),$("math",j,"textord","∀","\\forall",!0),$("math",j,"textord","ℏ","\\hbar",!0),$("math",j,"textord","∃","\\exists",!0),$("math",j,"textord","∇","\\nabla",!0),$("math",j,"textord","♭","\\flat",!0),$("math",j,"textord","ℓ","\\ell",!0),$("math",j,"textord","♮","\\natural",!0),$("math",j,"textord","♣","\\clubsuit",!0),$("math",j,"textord","℘","\\wp",!0),$("math",j,"textord","♯","\\sharp",!0),$("math",j,"textord","♢","\\diamondsuit",!0),$("math",j,"textord","ℜ","\\Re",!0),$("math",j,"textord","♡","\\heartsuit",!0),$("math",j,"textord","ℑ","\\Im",!0),$("math",j,"textord","♠","\\spadesuit",!0),$("text",j,"textord","§","\\S",!0),$("text",j,"textord","¶","\\P",!0),$("math",j,"textord","†","\\dag"),$("text",j,"textord","†","\\dag"),$("text",j,"textord","†","\\textdagger"),$("math",j,"textord","‡","\\ddag"),$("text",j,"textord","‡","\\ddag"),$("text",j,"textord","‡","\\textdaggerdbl"),$("math",j,"close","⎱","\\rmoustache",!0),$("math",j,"open","⎰","\\lmoustache",!0),$("math",j,"close","⟯","\\rgroup",!0),$("math",j,"open","⟮","\\lgroup",!0),$("math",j,Z,"∓","\\mp",!0),$("math",j,Z,"⊖","\\ominus",!0),$("math",j,Z,"⊎","\\uplus",!0),$("math",j,Z,"⊓","\\sqcap",!0),$("math",j,Z,"∗","\\ast"),$("math",j,Z,"⊔","\\sqcup",!0),$("math",j,Z,"◯","\\bigcirc"),$("math",j,Z,"∙","\\bullet"),$("math",j,Z,"‡","\\ddagger"),$("math",j,Z,"≀","\\wr",!0),$("math",j,Z,"⨿","\\amalg"),$("math",j,Z,"&","\\And"),$("math",j,te,"⟵","\\longleftarrow",!0),$("math",j,te,"⇐","\\Leftarrow",!0),$("math",j,te,"⟸","\\Longleftarrow",!0),$("math",j,te,"⟶","\\longrightarrow",!0),$("math",j,te,"⇒","\\Rightarrow",!0),$("math",j,te,"⟹","\\Longrightarrow",!0),$("math",j,te,"↔","\\leftrightarrow",!0),$("math",j,te,"⟷","\\longleftrightarrow",!0),$("math",j,te,"⇔","\\Leftrightarrow",!0),$("math",j,te,"⟺","\\Longleftrightarrow",!0),$("math",j,te,"↦","\\mapsto",!0),$("math",j,te,"⟼","\\longmapsto",!0),$("math",j,te,"↗","\\nearrow",!0),$("math",j,te,"↩","\\hookleftarrow",!0),$("math",j,te,"↪","\\hookrightarrow",!0),$("math",j,te,"↘","\\searrow",!0),$("math",j,te,"↼","\\leftharpoonup",!0),$("math",j,te,"⇀","\\rightharpoonup",!0),$("math",j,te,"↙","\\swarrow",!0),$("math",j,te,"↽","\\leftharpoondown",!0),$("math",j,te,"⇁","\\rightharpoondown",!0),$("math",j,te,"↖","\\nwarrow",!0),$("math",j,te,"⇌","\\rightleftharpoons",!0),$("math",X,te,"≮","\\nless",!0),$("math",X,te,"","\\@nleqslant"),$("math",X,te,"","\\@nleqq"),$("math",X,te,"⪇","\\lneq",!0),$("math",X,te,"≨","\\lneqq",!0),$("math",X,te,"","\\@lvertneqq"),$("math",X,te,"⋦","\\lnsim",!0),$("math",X,te,"⪉","\\lnapprox",!0),$("math",X,te,"⊀","\\nprec",!0),$("math",X,te,"⋠","\\npreceq",!0),$("math",X,te,"⋨","\\precnsim",!0),$("math",X,te,"⪹","\\precnapprox",!0),$("math",X,te,"≁","\\nsim",!0),$("math",X,te,"","\\@nshortmid"),$("math",X,te,"∤","\\nmid",!0),$("math",X,te,"⊬","\\nvdash",!0),$("math",X,te,"⊭","\\nvDash",!0),$("math",X,te,"⋪","\\ntriangleleft"),$("math",X,te,"⋬","\\ntrianglelefteq",!0),$("math",X,te,"⊊","\\subsetneq",!0),$("math",X,te,"","\\@varsubsetneq"),$("math",X,te,"⫋","\\subsetneqq",!0),$("math",X,te,"","\\@varsubsetneqq"),$("math",X,te,"≯","\\ngtr",!0),$("math",X,te,"","\\@ngeqslant"),$("math",X,te,"","\\@ngeqq"),$("math",X,te,"⪈","\\gneq",!0),$("math",X,te,"≩","\\gneqq",!0),$("math",X,te,"","\\@gvertneqq"),$("math",X,te,"⋧","\\gnsim",!0),$("math",X,te,"⪊","\\gnapprox",!0),$("math",X,te,"⊁","\\nsucc",!0),$("math",X,te,"⋡","\\nsucceq",!0),$("math",X,te,"⋩","\\succnsim",!0),$("math",X,te,"⪺","\\succnapprox",!0),$("math",X,te,"≆","\\ncong",!0),$("math",X,te,"","\\@nshortparallel"),$("math",X,te,"∦","\\nparallel",!0),$("math",X,te,"⊯","\\nVDash",!0),$("math",X,te,"⋫","\\ntriangleright"),$("math",X,te,"⋭","\\ntrianglerighteq",!0),$("math",X,te,"","\\@nsupseteqq"),$("math",X,te,"⊋","\\supsetneq",!0),$("math",X,te,"","\\@varsupsetneq"),$("math",X,te,"⫌","\\supsetneqq",!0),$("math",X,te,"","\\@varsupsetneqq"),$("math",X,te,"⊮","\\nVdash",!0),$("math",X,te,"⪵","\\precneqq",!0),$("math",X,te,"⪶","\\succneqq",!0),$("math",X,te,"","\\@nsubseteqq"),$("math",X,Z,"⊴","\\unlhd"),$("math",X,Z,"⊵","\\unrhd"),$("math",X,te,"↚","\\nleftarrow",!0),$("math",X,te,"↛","\\nrightarrow",!0),$("math",X,te,"⇍","\\nLeftarrow",!0),$("math",X,te,"⇏","\\nRightarrow",!0),$("math",X,te,"↮","\\nleftrightarrow",!0),$("math",X,te,"⇎","\\nLeftrightarrow",!0),$("math",X,te,"△","\\vartriangle"),$("math",X,"textord","ℏ","\\hslash"),$("math",X,"textord","▽","\\triangledown"),$("math",X,"textord","◊","\\lozenge"),$("math",X,"textord","Ⓢ","\\circledS"),$("math",X,"textord","®","\\circledR"),$("text",X,"textord","®","\\circledR"),$("math",X,"textord","∡","\\measuredangle",!0),$("math",X,"textord","∄","\\nexists"),$("math",X,"textord","℧","\\mho"),$("math",X,"textord","Ⅎ","\\Finv",!0),$("math",X,"textord","⅁","\\Game",!0),$("math",X,"textord","‵","\\backprime"),$("math",X,"textord","▲","\\blacktriangle"),$("math",X,"textord","▼","\\blacktriangledown"),$("math",X,"textord","■","\\blacksquare"),$("math",X,"textord","⧫","\\blacklozenge"),$("math",X,"textord","★","\\bigstar"),$("math",X,"textord","∢","\\sphericalangle",!0),$("math",X,"textord","∁","\\complement",!0),$("math",X,"textord","ð","\\eth",!0),$("math",X,"textord","╱","\\diagup"),$("math",X,"textord","╲","\\diagdown"),$("math",X,"textord","□","\\square"),$("math",X,"textord","□","\\Box"),$("math",X,"textord","◊","\\Diamond"),$("math",X,"textord","¥","\\yen",!0),$("text",X,"textord","¥","\\yen",!0),$("math",X,"textord","✓","\\checkmark",!0),$("text",X,"textord","✓","\\checkmark"),$("math",X,"textord","ℶ","\\beth",!0),$("math",X,"textord","ℸ","\\daleth",!0),$("math",X,"textord","ℷ","\\gimel",!0),$("math",X,"textord","ϝ","\\digamma",!0),$("math",X,"textord","ϰ","\\varkappa"),$("math",X,"open","┌","\\ulcorner",!0),$("math",X,"close","┐","\\urcorner",!0),$("math",X,"open","└","\\llcorner",!0),$("math",X,"close","┘","\\lrcorner",!0),$("math",X,te,"≦","\\leqq",!0),$("math",X,te,"⩽","\\leqslant",!0),$("math",X,te,"⪕","\\eqslantless",!0),$("math",X,te,"≲","\\lesssim",!0),$("math",X,te,"⪅","\\lessapprox",!0),$("math",X,te,"≊","\\approxeq",!0),$("math",X,Z,"⋖","\\lessdot"),$("math",X,te,"⋘","\\lll",!0),$("math",X,te,"≶","\\lessgtr",!0),$("math",X,te,"⋚","\\lesseqgtr",!0),$("math",X,te,"⪋","\\lesseqqgtr",!0),$("math",X,te,"≑","\\doteqdot"),$("math",X,te,"≓","\\risingdotseq",!0),$("math",X,te,"≒","\\fallingdotseq",!0),$("math",X,te,"∽","\\backsim",!0),$("math",X,te,"⋍","\\backsimeq",!0),$("math",X,te,"⫅","\\subseteqq",!0),$("math",X,te,"⋐","\\Subset",!0),$("math",X,te,"⊏","\\sqsubset",!0),$("math",X,te,"≼","\\preccurlyeq",!0),$("math",X,te,"⋞","\\curlyeqprec",!0),$("math",X,te,"≾","\\precsim",!0),$("math",X,te,"⪷","\\precapprox",!0),$("math",X,te,"⊲","\\vartriangleleft"),$("math",X,te,"⊴","\\trianglelefteq"),$("math",X,te,"⊨","\\vDash",!0),$("math",X,te,"⊪","\\Vvdash",!0),$("math",X,te,"⌣","\\smallsmile"),$("math",X,te,"⌢","\\smallfrown"),$("math",X,te,"≏","\\bumpeq",!0),$("math",X,te,"≎","\\Bumpeq",!0),$("math",X,te,"≧","\\geqq",!0),$("math",X,te,"⩾","\\geqslant",!0),$("math",X,te,"⪖","\\eqslantgtr",!0),$("math",X,te,"≳","\\gtrsim",!0),$("math",X,te,"⪆","\\gtrapprox",!0),$("math",X,Z,"⋗","\\gtrdot"),$("math",X,te,"⋙","\\ggg",!0),$("math",X,te,"≷","\\gtrless",!0),$("math",X,te,"⋛","\\gtreqless",!0),$("math",X,te,"⪌","\\gtreqqless",!0),$("math",X,te,"≖","\\eqcirc",!0),$("math",X,te,"≗","\\circeq",!0),$("math",X,te,"≜","\\triangleq",!0),$("math",X,te,"∼","\\thicksim"),$("math",X,te,"≈","\\thickapprox"),$("math",X,te,"⫆","\\supseteqq",!0),$("math",X,te,"⋑","\\Supset",!0),$("math",X,te,"⊐","\\sqsupset",!0),$("math",X,te,"≽","\\succcurlyeq",!0),$("math",X,te,"⋟","\\curlyeqsucc",!0),$("math",X,te,"≿","\\succsim",!0),$("math",X,te,"⪸","\\succapprox",!0),$("math",X,te,"⊳","\\vartriangleright"),$("math",X,te,"⊵","\\trianglerighteq"),$("math",X,te,"⊩","\\Vdash",!0),$("math",X,te,"∣","\\shortmid"),$("math",X,te,"∥","\\shortparallel"),$("math",X,te,"≬","\\between",!0),$("math",X,te,"⋔","\\pitchfork",!0),$("math",X,te,"∝","\\varpropto"),$("math",X,te,"◀","\\blacktriangleleft"),$("math",X,te,"∴","\\therefore",!0),$("math",X,te,"∍","\\backepsilon"),$("math",X,te,"▶","\\blacktriangleright"),$("math",X,te,"∵","\\because",!0),$("math",X,te,"⋘","\\llless"),$("math",X,te,"⋙","\\gggtr"),$("math",X,Z,"⊲","\\lhd"),$("math",X,Z,"⊳","\\rhd"),$("math",X,te,"≂","\\eqsim",!0),$("math",j,te,"⋈","\\Join"),$("math",X,te,"≑","\\Doteq",!0),$("math",X,Z,"∔","\\dotplus",!0),$("math",X,Z,"∖","\\smallsetminus"),$("math",X,Z,"⋒","\\Cap",!0),$("math",X,Z,"⋓","\\Cup",!0),$("math",X,Z,"⩞","\\doublebarwedge",!0),$("math",X,Z,"⊟","\\boxminus",!0),$("math",X,Z,"⊞","\\boxplus",!0),$("math",X,Z,"⋇","\\divideontimes",!0),$("math",X,Z,"⋉","\\ltimes",!0),$("math",X,Z,"⋊","\\rtimes",!0),$("math",X,Z,"⋋","\\leftthreetimes",!0),$("math",X,Z,"⋌","\\rightthreetimes",!0),$("math",X,Z,"⋏","\\curlywedge",!0),$("math",X,Z,"⋎","\\curlyvee",!0),$("math",X,Z,"⊝","\\circleddash",!0),$("math",X,Z,"⊛","\\circledast",!0),$("math",X,Z,"⋅","\\centerdot"),$("math",X,Z,"⊺","\\intercal",!0),$("math",X,Z,"⋒","\\doublecap"),$("math",X,Z,"⋓","\\doublecup"),$("math",X,Z,"⊠","\\boxtimes",!0),$("math",X,te,"⇢","\\dashrightarrow",!0),$("math",X,te,"⇠","\\dashleftarrow",!0),$("math",X,te,"⇇","\\leftleftarrows",!0),$("math",X,te,"⇆","\\leftrightarrows",!0),$("math",X,te,"⇚","\\Lleftarrow",!0),$("math",X,te,"↞","\\twoheadleftarrow",!0),$("math",X,te,"↢","\\leftarrowtail",!0),$("math",X,te,"↫","\\looparrowleft",!0),$("math",X,te,"⇋","\\leftrightharpoons",!0),$("math",X,te,"↶","\\curvearrowleft",!0),$("math",X,te,"↺","\\circlearrowleft",!0),$("math",X,te,"↰","\\Lsh",!0),$("math",X,te,"⇈","\\upuparrows",!0),$("math",X,te,"↿","\\upharpoonleft",!0),$("math",X,te,"⇃","\\downharpoonleft",!0),$("math",X,te,"⊸","\\multimap",!0),$("math",X,te,"↭","\\leftrightsquigarrow",!0),$("math",X,te,"⇉","\\rightrightarrows",!0),$("math",X,te,"⇄","\\rightleftarrows",!0),$("math",X,te,"↠","\\twoheadrightarrow",!0),$("math",X,te,"↣","\\rightarrowtail",!0),$("math",X,te,"↬","\\looparrowright",!0),$("math",X,te,"↷","\\curvearrowright",!0),$("math",X,te,"↻","\\circlearrowright",!0),$("math",X,te,"↱","\\Rsh",!0),$("math",X,te,"⇊","\\downdownarrows",!0),$("math",X,te,"↾","\\upharpoonright",!0),$("math",X,te,"⇂","\\downharpoonright",!0),$("math",X,te,"⇝","\\rightsquigarrow",!0),$("math",X,te,"⇝","\\leadsto"),$("math",X,te,"⇛","\\Rrightarrow",!0),$("math",X,te,"↾","\\restriction"),$("math",j,"textord","‘","`"),$("math",j,"textord","$","\\$"),$("text",j,"textord","$","\\$"),$("text",j,"textord","$","\\textdollar"),$("math",j,"textord","%","\\%"),$("text",j,"textord","%","\\%"),$("math",j,"textord","_","\\_"),$("text",j,"textord","_","\\_"),$("text",j,"textord","_","\\textunderscore"),$("math",j,"textord","∠","\\angle",!0),$("math",j,"textord","∞","\\infty",!0),$("math",j,"textord","′","\\prime"),$("math",j,"textord","△","\\triangle"),$("math",j,"textord","Γ","\\Gamma",!0),$("math",j,"textord","Δ","\\Delta",!0),$("math",j,"textord","Θ","\\Theta",!0),$("math",j,"textord","Λ","\\Lambda",!0),$("math",j,"textord","Ξ","\\Xi",!0),$("math",j,"textord","Π","\\Pi",!0),$("math",j,"textord","Σ","\\Sigma",!0),$("math",j,"textord","Υ","\\Upsilon",!0),$("math",j,"textord","Φ","\\Phi",!0),$("math",j,"textord","Ψ","\\Psi",!0),$("math",j,"textord","Ω","\\Omega",!0),$("math",j,"textord","A","Α"),$("math",j,"textord","B","Β"),$("math",j,"textord","E","Ε"),$("math",j,"textord","Z","Ζ"),$("math",j,"textord","H","Η"),$("math",j,"textord","I","Ι"),$("math",j,"textord","K","Κ"),$("math",j,"textord","M","Μ"),$("math",j,"textord","N","Ν"),$("math",j,"textord","O","Ο"),$("math",j,"textord","P","Ρ"),$("math",j,"textord","T","Τ"),$("math",j,"textord","X","Χ"),$("math",j,"textord","¬","\\neg",!0),$("math",j,"textord","¬","\\lnot"),$("math",j,"textord","⊤","\\top"),$("math",j,"textord","⊥","\\bot"),$("math",j,"textord","∅","\\emptyset"),$("math",X,"textord","∅","\\varnothing"),$("math",j,J,"α","\\alpha",!0),$("math",j,J,"β","\\beta",!0),$("math",j,J,"γ","\\gamma",!0),$("math",j,J,"δ","\\delta",!0),$("math",j,J,"ϵ","\\epsilon",!0),$("math",j,J,"ζ","\\zeta",!0),$("math",j,J,"η","\\eta",!0),$("math",j,J,"θ","\\theta",!0),$("math",j,J,"ι","\\iota",!0),$("math",j,J,"κ","\\kappa",!0),$("math",j,J,"λ","\\lambda",!0),$("math",j,J,"μ","\\mu",!0),$("math",j,J,"ν","\\nu",!0),$("math",j,J,"ξ","\\xi",!0),$("math",j,J,"ο","\\omicron",!0),$("math",j,J,"π","\\pi",!0),$("math",j,J,"ρ","\\rho",!0),$("math",j,J,"σ","\\sigma",!0),$("math",j,J,"τ","\\tau",!0),$("math",j,J,"υ","\\upsilon",!0),$("math",j,J,"ϕ","\\phi",!0),$("math",j,J,"χ","\\chi",!0),$("math",j,J,"ψ","\\psi",!0),$("math",j,J,"ω","\\omega",!0),$("math",j,J,"ε","\\varepsilon",!0),$("math",j,J,"ϑ","\\vartheta",!0),$("math",j,J,"ϖ","\\varpi",!0),$("math",j,J,"ϱ","\\varrho",!0),$("math",j,J,"ς","\\varsigma",!0),$("math",j,J,"φ","\\varphi",!0),$("math",j,Z,"∗","*"),$("math",j,Z,"+","+"),$("math",j,Z,"−","-"),$("math",j,Z,"⋅","\\cdot",!0),$("math",j,Z,"∘","\\circ"),$("math",j,Z,"÷","\\div",!0),$("math",j,Z,"±","\\pm",!0),$("math",j,Z,"×","\\times",!0),$("math",j,Z,"∩","\\cap",!0),$("math",j,Z,"∪","\\cup",!0),$("math",j,Z,"∖","\\setminus"),$("math",j,Z,"∧","\\land"),$("math",j,Z,"∨","\\lor"),$("math",j,Z,"∧","\\wedge",!0),$("math",j,Z,"∨","\\vee",!0),$("math",j,"textord","√","\\surd"),$("math",j,"open","(","("),$("math",j,"open","[","["),$("math",j,"open","⟨","\\langle",!0),$("math",j,"open","∣","\\lvert"),$("math",j,"open","∥","\\lVert"),$("math",j,"close",")",")"),$("math",j,"close","]","]"),$("math",j,"close","?","?"),$("math",j,"close","!","!"),$("math",j,"close","⟩","\\rangle",!0),$("math",j,"close","∣","\\rvert"),$("math",j,"close","∥","\\rVert"),$("math",j,te,"=","="),$("math",j,te,"<","<"),$("math",j,te,">",">"),$("math",j,te,":",":"),$("math",j,te,"≈","\\approx",!0),$("math",j,te,"≅","\\cong",!0),$("math",j,te,"≥","\\ge"),$("math",j,te,"≥","\\geq",!0),$("math",j,te,"←","\\gets"),$("math",j,te,">","\\gt"),$("math",j,te,"∈","\\in",!0),$("math",j,te,"","\\@not"),$("math",j,te,"⊂","\\subset",!0),$("math",j,te,"⊃","\\supset",!0),$("math",j,te,"⊆","\\subseteq",!0),$("math",j,te,"⊇","\\supseteq",!0),$("math",X,te,"⊈","\\nsubseteq",!0),$("math",X,te,"⊉","\\nsupseteq",!0),$("math",j,te,"⊨","\\models"),$("math",j,te,"←","\\leftarrow",!0),$("math",j,te,"≤","\\le"),$("math",j,te,"≤","\\leq",!0),$("math",j,te,"<","\\lt"),$("math",j,te,"→","\\rightarrow",!0),$("math",j,te,"→","\\to"),$("math",X,te,"≱","\\ngeq",!0),$("math",X,te,"≰","\\nleq",!0),$("math",j,"spacing"," ","\\ "),$("math",j,"spacing"," ","~"),$("math",j,"spacing"," ","\\space"),$("math",j,"spacing"," ","\\nobreakspace"),$("text",j,"spacing"," ","\\ "),$("text",j,"spacing"," ","~"),$("text",j,"spacing"," ","\\space"),$("text",j,"spacing"," ","\\nobreakspace"),$("math",j,"spacing",null,"\\nobreak"),$("math",j,"spacing",null,"\\allowbreak"),$("math",j,"punct",",",","),$("math",j,"punct",";",";"),$("math",X,Z,"⊼","\\barwedge",!0),$("math",X,Z,"⊻","\\veebar",!0),$("math",j,Z,"⊙","\\odot",!0),$("math",j,Z,"⊕","\\oplus",!0),$("math",j,Z,"⊗","\\otimes",!0),$("math",j,"textord","∂","\\partial",!0),$("math",j,Z,"⊘","\\oslash",!0),$("math",X,Z,"⊚","\\circledcirc",!0),$("math",X,Z,"⊡","\\boxdot",!0),$("math",j,Z,"△","\\bigtriangleup"),$("math",j,Z,"▽","\\bigtriangledown"),$("math",j,Z,"†","\\dagger"),$("math",j,Z,"⋄","\\diamond"),$("math",j,Z,"⋆","\\star"),$("math",j,Z,"◃","\\triangleleft"),$("math",j,Z,"▹","\\triangleright"),$("math",j,"open","{","\\{"),$("text",j,"textord","{","\\{"),$("text",j,"textord","{","\\textbraceleft"),$("math",j,"close","}","\\}"),$("text",j,"textord","}","\\}"),$("text",j,"textord","}","\\textbraceright"),$("math",j,"open","{","\\lbrace"),$("math",j,"close","}","\\rbrace"),$("math",j,"open","[","\\lbrack"),$("text",j,"textord","[","\\lbrack"),$("math",j,"close","]","\\rbrack"),$("text",j,"textord","]","\\rbrack"),$("math",j,"open","(","\\lparen"),$("math",j,"close",")","\\rparen"),$("text",j,"textord","<","\\textless"),$("text",j,"textord",">","\\textgreater"),$("math",j,"open","⌊","\\lfloor",!0),$("math",j,"close","⌋","\\rfloor",!0),$("math",j,"open","⌈","\\lceil",!0),$("math",j,"close","⌉","\\rceil",!0),$("math",j,"textord","\\","\\backslash"),$("math",j,"textord","∣","|"),$("math",j,"textord","∣","\\vert"),$("text",j,"textord","|","\\textbar"),$("math",j,"textord","∥","\\|"),$("math",j,"textord","∥","\\Vert"),$("text",j,"textord","∥","\\textbardbl"),$("text",j,"textord","~","\\textasciitilde"),$("text",j,"textord","\\","\\textbackslash"),$("text",j,"textord","^","\\textasciicircum"),$("math",j,te,"↑","\\uparrow",!0),$("math",j,te,"⇑","\\Uparrow",!0),$("math",j,te,"↓","\\downarrow",!0),$("math",j,te,"⇓","\\Downarrow",!0),$("math",j,te,"↕","\\updownarrow",!0),$("math",j,te,"⇕","\\Updownarrow",!0),$("math",j,ee,"∐","\\coprod"),$("math",j,ee,"⋁","\\bigvee"),$("math",j,ee,"⋀","\\bigwedge"),$("math",j,ee,"⨄","\\biguplus"),$("math",j,ee,"⋂","\\bigcap"),$("math",j,ee,"⋃","\\bigcup"),$("math",j,ee,"∫","\\int"),$("math",j,ee,"∫","\\intop"),$("math",j,ee,"∬","\\iint"),$("math",j,ee,"∭","\\iiint"),$("math",j,ee,"∏","\\prod"),$("math",j,ee,"∑","\\sum"),$("math",j,ee,"⨂","\\bigotimes"),$("math",j,ee,"⨁","\\bigoplus"),$("math",j,ee,"⨀","\\bigodot"),$("math",j,ee,"∮","\\oint"),$("math",j,ee,"∯","\\oiint"),$("math",j,ee,"∰","\\oiiint"),$("math",j,ee,"⨆","\\bigsqcup"),$("math",j,ee,"∫","\\smallint"),$("text",j,"inner","…","\\textellipsis"),$("math",j,"inner","…","\\mathellipsis"),$("text",j,"inner","…","\\ldots",!0),$("math",j,"inner","…","\\ldots",!0),$("math",j,"inner","⋯","\\@cdots",!0),$("math",j,"inner","⋱","\\ddots",!0),$("math",j,"textord","⋮","\\varvdots"),$("math",j,"accent-token","ˊ","\\acute"),$("math",j,"accent-token","ˋ","\\grave"),$("math",j,"accent-token","¨","\\ddot"),$("math",j,"accent-token","~","\\tilde"),$("math",j,"accent-token","ˉ","\\bar"),$("math",j,"accent-token","˘","\\breve"),$("math",j,"accent-token","ˇ","\\check"),$("math",j,"accent-token","^","\\hat"),$("math",j,"accent-token","⃗","\\vec"),$("math",j,"accent-token","˙","\\dot"),$("math",j,"accent-token","˚","\\mathring"),$("math",j,J,"ı","\\imath",!0),$("math",j,J,"ȷ","\\jmath",!0),$("text",j,"textord","ı","\\i",!0),$("text",j,"textord","ȷ","\\j",!0),$("text",j,"textord","ß","\\ss",!0),$("text",j,"textord","æ","\\ae",!0),$("text",j,"textord","æ","\\ae",!0),$("text",j,"textord","œ","\\oe",!0),$("text",j,"textord","ø","\\o",!0),$("text",j,"textord","Æ","\\AE",!0),$("text",j,"textord","Œ","\\OE",!0),$("text",j,"textord","Ø","\\O",!0),$("text",j,"accent-token","ˊ","\\'"),$("text",j,"accent-token","ˋ","\\`"),$("text",j,"accent-token","ˆ","\\^"),$("text",j,"accent-token","˜","\\~"),$("text",j,"accent-token","ˉ","\\="),$("text",j,"accent-token","˘","\\u"),$("text",j,"accent-token","˙","\\."),$("text",j,"accent-token","˚","\\r"),$("text",j,"accent-token","ˇ","\\v"),$("text",j,"accent-token","¨",'\\"'),$("text",j,"accent-token","˝","\\H"),$("text",j,"accent-token","◯","\\textcircled");var ne={"--":!0,"---":!0,"``":!0,"''":!0};$("text",j,"textord","–","--"),$("text",j,"textord","–","\\textendash"),$("text",j,"textord","—","---"),$("text",j,"textord","—","\\textemdash"),$("text",j,"textord","‘","`"),$("text",j,"textord","‘","\\textquoteleft"),$("text",j,"textord","’","'"),$("text",j,"textord","’","\\textquoteright"),$("text",j,"textord","“","``"),$("text",j,"textord","“","\\textquotedblleft"),$("text",j,"textord","”","''"),$("text",j,"textord","”","\\textquotedblright"),$("math",j,"textord","°","\\degree",!0),$("text",j,"textord","°","\\degree"),$("text",j,"textord","°","\\textdegree",!0),$("math",j,J,"£","\\pounds"),$("math",j,J,"£","\\mathsterling",!0),$("text",j,J,"£","\\pounds"),$("text",j,J,"£","\\textsterling",!0),$("math",X,"textord","✠","\\maltese"),$("text",X,"textord","✠","\\maltese"),$("text",j,"spacing"," ","\\ "),$("text",j,"spacing"," "," "),$("text",j,"spacing"," ","~");for(var re=0;re<'0123456789/@."'.length;re++){var ae='0123456789/@."'.charAt(re);$("math",j,"textord",ae,ae)}for(var ie=0;ie<'0123456789!@*()-=+[]<>|";:?/.,'.length;ie++){var oe='0123456789!@*()-=+[]<>|";:?/.,'.charAt(ie);$("text",j,"textord",oe,oe)}for(var se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",le=0;le<se.length;le++){var ce=se.charAt(le);$("math",j,J,ce,ce),$("text",j,"textord",ce,ce)}$("math",X,"textord","C","ℂ"),$("text",X,"textord","C","ℂ"),$("math",X,"textord","H","ℍ"),$("text",X,"textord","H","ℍ"),$("math",X,"textord","N","ℕ"),$("text",X,"textord","N","ℕ"),$("math",X,"textord","P","ℙ"),$("text",X,"textord","P","ℙ"),$("math",X,"textord","Q","ℚ"),$("text",X,"textord","Q","ℚ"),$("math",X,"textord","R","ℝ"),$("text",X,"textord","R","ℝ"),$("math",X,"textord","Z","ℤ"),$("text",X,"textord","Z","ℤ"),$("math",j,J,"h","ℎ"),$("text",j,J,"h","ℎ");for(var de="",_e=0;_e<se.length;_e++){var ue=se.charAt(_e);$("math",j,J,ue,de=String.fromCharCode(55349,56320+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56372+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56424+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56580+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56736+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56788+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56840+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56944+_e)),$("text",j,"textord",ue,de),_e<26&&($("math",j,J,ue,de=String.fromCharCode(55349,56632+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56476+_e)),$("text",j,"textord",ue,de))}$("math",j,J,"k",de=String.fromCharCode(55349,56668)),$("text",j,"textord","k",de);for(var me=0;me<10;me++){var pe=me.toString();$("math",j,J,pe,de=String.fromCharCode(55349,57294+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57314+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57324+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57334+me)),$("text",j,"textord",pe,de)}for(var ge=0;ge<"ÇÐÞçþ".length;ge++){var Ee="ÇÐÞçþ".charAt(ge);$("math",j,J,Ee,Ee),$("text",j,"textord",Ee,Ee)}$("text",j,"textord","ð","ð"),$("text",j,"textord","–","–"),$("text",j,"textord","—","—"),$("text",j,"textord","‘","‘"),$("text",j,"textord","’","’"),$("text",j,"textord","“","“"),$("text",j,"textord","”","”");var he=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathdefault","textit","Math-Italic"],["mathdefault","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["","",""],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Se=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],fe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Te=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],be=function(e,t){return t.size<2?e:fe[e-1][t.size-1]},Ce=function(){function e(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=Te[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}var t=e.prototype;return t.extend=function(t){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);return new e(n)},t.havingStyle=function(e){return this.style===e?this:this.extend({style:e,size:be(this.textSize,e)})},t.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},t.havingSize=function(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Te[e-1]})},t.havingBaseStyle=function(t){t=t||this.style.text();var n=be(e.BASESIZE,t);return this.size===n&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:n})},t.havingBaseSizing=function(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})},t.withColor=function(e){return this.extend({color:e})},t.withPhantom=function(){return this.extend({phantom:!0})},t.withFont=function(e){return this.extend({font:e})},t.withTextFontFamily=function(e){return this.extend({fontFamily:e,font:""})},t.withTextFontWeight=function(e){return this.extend({fontWeight:e,font:""})},t.withTextFontShape=function(e){return this.extend({fontShape:e,font:""})},t.sizingClasses=function(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]},t.baseSizingClasses=function(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]},t.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!z[t=e>=5?0:e>=3?1:2]){var n=z[t]={cssEmPerMu:H.quad[t]/18};for(var r in H)H.hasOwnProperty(r)&&(n[r]=H[r][t])}return z[t]}(this.size)),this._fontMetrics},t.getColor=function(){return this.phantom?"transparent":this.color},e}();Ce.BASESIZE=6;var Ne=Ce,ve={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},Re={ex:!0,em:!0,mu:!0},Ae=function(e){return"string"!=typeof e&&(e=e.unit),e in ve||e in Re||"ex"===e},Oe=function(e,t){var n;if(e.unit in ve)n=ve[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)n=t.fontMetrics().cssEmPerMu;else{var r;if(r=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)n=r.fontMetrics().xHeight;else{if("em"!==e.unit)throw new o("Invalid unit: '"+e.unit+"'");n=r.fontMetrics().quad}r!==t&&(n*=r.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*n,t.maxSize)},ye=["\\imath","ı","\\jmath","ȷ","\\pounds","\\mathsterling","\\textsterling","£"],Ie=function(e,t,n){return Q[n][e]&&Q[n][e].replace&&(e=Q[n][e].replace),{value:e,metrics:V(e,t,n)}},De=function(e,t,n,r,a){var i,o=Ie(e,t,n),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===n||r&&"mathit"===r.font)&&(l=0),i=new P(e,s.height,s.depth,l,s.skew,s.width,a)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+n+"'"),i=new P(e,0,0,0,0,0,a);if(r){i.maxFontSize=r.sizeMultiplier,r.style.isTight()&&i.classes.push("mtight");var c=r.getColor();c&&(i.style.color=c)}return i},xe=function(e,t){if(O(e.classes)!==O(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;for(var n in e.style)if(e.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&e.style[r]!==t.style[r])return!1;return!0},Me=function(e){for(var t=0,n=0,r=0,a=0;a<e.children.length;a++){var i=e.children[a];i.height>t&&(t=i.height),i.depth>n&&(n=i.depth),i.maxFontSize>r&&(r=i.maxFontSize)}e.height=t,e.depth=n,e.maxFontSize=r},we=function(e,t,n,r){var a=new x(e,t,n,r);return Me(a),a},Le=function(e,t,n,r){return new x(e,t,n,r)},Pe=function(e){var t=new A(e);return Me(t),t},ke=function(e,t,n){var r="";switch(e){case"amsrm":r="AMS";break;case"textrm":r="Main";break;case"textsf":r="SansSerif";break;case"texttt":r="Typewriter";break;default:r=e}return r+"-"+("textbf"===t&&"textit"===n?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},Ue={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Fe={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Be={fontMap:Ue,makeSymbol:De,mathsym:function(e,t,n,r){return void 0===r&&(r=[]),"boldsymbol"===n.font&&Ie(e,"Main-Bold",t).metrics?De(e,"Main-Bold",t,n,r.concat(["mathbf"])):"\\"===e||"main"===Q[t][e].font?De(e,"Main-Regular",t,n,r):De(e,"AMS-Regular",t,n,r.concat(["amsrm"]))},makeSpan:we,makeSvgSpan:Le,makeLineSpan:function(e,t,n){var r=we([e],[],t);return r.height=Math.max(n||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),r.style.borderBottomWidth=r.height+"em",r.maxFontSize=1,r},makeAnchor:function(e,t,n,r){var a=new M(e,t,n,r);return Me(a),a},makeFragment:Pe,wrapFragment:function(e,t){return e instanceof A?we([],[e],t):e},makeVList:function(e,t){for(var n=function(e){if("individualShift"===e.positionType){for(var t=e.children,n=[t[0]],r=-t[0].shift-t[0].elem.depth,a=r,i=1;i<t.length;i++){var o=-t[i].shift-a-t[i].elem.depth,s=o-(t[i-1].elem.height+t[i-1].elem.depth);a+=o,n.push({type:"kern",size:s}),n.push(t[i])}return{children:n,depth:r}}var l;if("top"===e.positionType){for(var c=e.positionData,d=0;d<e.children.length;d++){var _=e.children[d];c-="kern"===_.type?_.size:_.elem.height+_.elem.depth}l=c}else if("bottom"===e.positionType)l=-e.positionData;else{var u=e.children[0];if("elem"!==u.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)l=-u.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");l=-u.elem.depth}}return{children:e.children,depth:l}}(e),r=n.children,a=n.depth,i=0,o=0;o<r.length;o++){var s=r[o];if("elem"===s.type){var l=s.elem;i=Math.max(i,l.maxFontSize,l.height)}}i+=2;var c=we(["pstrut"],[]);c.style.height=i+"em";for(var d=[],_=a,u=a,m=a,p=0;p<r.length;p++){var g=r[p];if("kern"===g.type)m+=g.size;else{var E=g.elem,h=g.wrapperClasses||[],S=g.wrapperStyle||{},f=we(h,[c,E],void 0,S);f.style.top=-i-m-E.depth+"em",g.marginLeft&&(f.style.marginLeft=g.marginLeft),g.marginRight&&(f.style.marginRight=g.marginRight),d.push(f),m+=E.height+E.depth}_=Math.min(_,m),u=Math.max(u,m)}var T,b=we(["vlist"],d);if(b.style.height=u+"em",_<0){var C=we([],[]),N=we(["vlist"],[C]);N.style.height=-_+"em";var v=we(["vlist-s"],[new P("​")]);T=[we(["vlist-r"],[b,v]),we(["vlist-r"],[N])]}else T=[we(["vlist-r"],[b])];var R=we(["vlist-t"],T);return 2===T.length&&R.classes.push("vlist-t2"),R.height=u,R.depth=-_,R},makeOrd:function(e,t,n){var r,a=e.mode,i=e.text,s=["mord"],l="math"===a||"text"===a&&t.font,c=l?t.font:t.fontFamily;if(55349===i.charCodeAt(0)){var d=function(e,t){var n=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,r="math"===t?0:1;if(119808<=n&&n<120484){var a=Math.floor((n-119808)/26);return[he[a][2],he[a][r]]}if(120782<=n&&n<=120831){var i=Math.floor((n-120782)/10);return[Se[i][2],Se[i][r]]}if(120485===n||120486===n)return[he[0][2],he[0][r]];if(120486<n&&n<120782)return["",""];throw new o("Unsupported character: "+e)}(i,a),u=d[0],m=d[1];return De(i,u,a,t,s.concat(m))}if(c){var p,g;if("boldsymbol"===c||"mathnormal"===c){var E="boldsymbol"===c?function(e,t,n,r){return Ie(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(i,a):(r=i,_.contains(ye,r)?{fontName:"Main-Italic",fontClass:"mathit"}:/[0-9]/.test(r.charAt(0))?{fontName:"Caligraphic-Regular",fontClass:"mathcal"}:{fontName:"Math-Italic",fontClass:"mathdefault"});p=E.fontName,g=[E.fontClass]}else _.contains(ye,i)?(p="Main-Italic",g=["mathit"]):l?(p=Ue[c].fontName,g=[c]):(p=ke(c,t.fontWeight,t.fontShape),g=[c,t.fontWeight,t.fontShape]);if(Ie(i,p,a).metrics)return De(i,p,a,t,s.concat(g));if(ne.hasOwnProperty(i)&&"Typewriter"===p.substr(0,10)){for(var h=[],S=0;S<i.length;S++)h.push(De(i[S],p,a,t,s.concat(g)));return Pe(h)}}if("mathord"===n){var f=function(e,t,n,r){return/[0-9]/.test(e.charAt(0))||_.contains(ye,e)?{fontName:"Main-Italic",fontClass:"mathit"}:{fontName:"Math-Italic",fontClass:"mathdefault"}}(i);return De(i,f.fontName,a,t,s.concat([f.fontClass]))}if("textord"===n){var T=Q[a][i]&&Q[a][i].font;if("ams"===T){var b=ke("amsrm",t.fontWeight,t.fontShape);return De(i,b,a,t,s.concat("amsrm",t.fontWeight,t.fontShape))}if("main"!==T&&T){var C=ke(T,t.fontWeight,t.fontShape);return De(i,C,a,t,s.concat(C,t.fontWeight,t.fontShape))}var N=ke("textrm",t.fontWeight,t.fontShape);return De(i,N,a,t,s.concat(t.fontWeight,t.fontShape))}throw new Error("unexpected type: "+n+" in makeOrd")},makeGlue:function(e,t){var n=we(["mspace"],[],t),r=Oe(e,t);return n.style.marginRight=r+"em",n},staticSvg:function(e,t){var n=Fe[e],r=n[0],a=n[1],i=n[2],o=new U(r),s=new k([o],{width:a+"em",height:i+"em",style:"width:"+a+"em",viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=Le(["overlay"],[s],t);return l.height=i,l.style.height=i+"em",l.style.width=a+"em",l},svgData:Fe,tryCombineChars:function(e){for(var t=0;t<e.length-1;t++){var n=e[t],r=e[t+1];n instanceof P&&r instanceof P&&xe(n,r)&&(n.text+=r.text,n.height=Math.max(n.height,r.height),n.depth=Math.max(n.depth,r.depth),n.italic=r.italic,e.splice(t+1,1),t--)}return e}};function Ge(e,t){var n=He(e,t);if(!n)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return n}function He(e,t){return e&&e.type===t?e:null}function Ye(e,t){var n=function(e,t){return e&&"atom"===e.type&&e.family===t?e:null}(e,t);if(!n)throw new Error('Expected node of type "atom" and family "'+t+'", but got '+(e?"atom"===e.type?"atom of family "+e.family:"node of type "+e.type:String(e)));return n}function Ve(e){var t=ze(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function ze(e){return e&&("atom"===e.type||K.hasOwnProperty(e.type))?e:null}var qe={number:3,unit:"mu"},Ke={number:4,unit:"mu"},We={number:5,unit:"mu"},Qe={mord:{mop:qe,mbin:Ke,mrel:We,minner:qe},mop:{mord:qe,mop:qe,mrel:We,minner:qe},mbin:{mord:Ke,mop:Ke,mopen:Ke,minner:Ke},mrel:{mord:We,mop:We,mopen:We,minner:We},mopen:{},mclose:{mop:qe,mbin:Ke,mrel:We,minner:qe},mpunct:{mord:qe,mop:qe,mrel:We,mopen:qe,mclose:qe,mpunct:qe,minner:qe},minner:{mord:qe,mop:qe,mbin:Ke,mrel:We,mopen:qe,mpunct:qe,minner:qe}},$e={mord:{mop:qe},mop:{mord:qe,mop:qe},mbin:{},mrel:{},mopen:{},mclose:{mop:qe},mpunct:{},minner:{mop:qe}},je={},Xe={},Ze={};function Je(e){for(var t=e.type,n=e.names,r=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:r.numArgs,argTypes:r.argTypes,greediness:void 0===r.greediness?1:r.greediness,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a},l=0;l<n.length;++l)je[n[l]]=s;t&&(i&&(Xe[t]=i),o&&(Ze[t]=o))}function et(e){Je({type:e.type,names:[],props:{numArgs:0},handler:function(){throw new Error("Should never be called.")},htmlBuilder:e.htmlBuilder,mathmlBuilder:e.mathmlBuilder})}var tt=function(e){var t=He(e,"ordgroup");return t?t.body:[e]},nt=Be.makeSpan,rt=["leftmost","mbin","mopen","mrel","mop","mpunct"],at=["rightmost","mrel","mclose","mpunct"],it={display:b.DISPLAY,text:b.TEXT,script:b.SCRIPT,scriptscript:b.SCRIPTSCRIPT},ot={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},st=function(e,t,n,r){void 0===r&&(r=[null,null]);for(var a=[],i=0;i<e.length;i++){var o=ut(e[i],t);if(o instanceof A){var s=o.children;a.push.apply(a,s)}else a.push(o)}if(!n)return a;var l=t;if(1===e.length){var c=He(e[0],"sizing")||He(e[0],"styling");c&&("sizing"===c.type?l=t.havingSize(c.size):"styling"===c.type&&(l=t.havingStyle(it[c.style])))}var d=nt([r[0]||"leftmost"],[],t),u=nt([r[1]||"rightmost"],[],t);return lt(a,function(e,t){var n=t.classes[0],r=e.classes[0];"mbin"===n&&_.contains(at,r)?t.classes[0]="mord":"mbin"===r&&_.contains(rt,n)&&(e.classes[0]="mord")},{node:d},u),lt(a,function(e,t){var n=dt(t),r=dt(e),a=n&&r?e.hasClass("mtight")?$e[n][r]:Qe[n][r]:null;if(a)return Be.makeGlue(a,l)},{node:d},u),a},lt=function e(t,n,r,a){a&&t.push(a);for(var i=0;i<t.length;i++){var o=t[i],s=ct(o);if(s)e(s.children,n,r);else if("mspace"!==o.classes[0]){var l=n(o,r.node);l&&(r.insertAfter?r.insertAfter(l):(t.unshift(l),i++)),r.node=o,r.insertAfter=function(e){return function(n){t.splice(e+1,0,n),i++}}(i)}}a&&t.pop()},ct=function(e){return e instanceof A||e instanceof M?e:null},dt=function(e,t){return e?(t&&(e=function e(t,n){var r=ct(t);if(r){var a=r.children;if(a.length){if("right"===n)return e(a[a.length-1],"right");if("left"===n)return e(a[0],"left")}}return t}(e,t)),ot[e.classes[0]]||null):null},_t=function(e,t){var n=["nulldelimiter"].concat(e.baseSizingClasses());return nt(t.concat(n))},ut=function(e,t,n){if(!e)return nt();if(Xe[e.type]){var r=Xe[e.type](e,t);if(n&&t.size!==n.size){r=nt(t.sizingClasses(n),[r],t);var a=t.sizeMultiplier/n.sizeMultiplier;r.height*=a,r.depth*=a}return r}throw new o("Got group of unknown type: '"+e.type+"'")};function mt(e,t){var n=nt(["base"],e,t),r=nt(["strut"]);return r.style.height=n.height+n.depth+"em",r.style.verticalAlign=-n.depth+"em",n.children.unshift(r),n}function pt(e,t){var n=null;1===e.length&&"tag"===e[0].type&&(n=e[0].tag,e=e[0].body);for(var r,a=st(e,t,!0),i=[],o=[],s=0;s<a.length;s++)if(o.push(a[s]),a[s].hasClass("mbin")||a[s].hasClass("mrel")||a[s].hasClass("allowbreak")){for(var l=!1;s<a.length-1&&a[s+1].hasClass("mspace")&&!a[s+1].hasClass("newline");)s++,o.push(a[s]),a[s].hasClass("nobreak")&&(l=!0);l||(i.push(mt(o,t)),o=[])}else a[s].hasClass("newline")&&(o.pop(),o.length>0&&(i.push(mt(o,t)),o=[]),i.push(a[s]));o.length>0&&i.push(mt(o,t)),n&&((r=mt(st(n,t,!0))).classes=["tag"],i.push(r));var c=nt(["katex-html"],i);if(c.setAttribute("aria-hidden","true"),r){var d=r.children[0];d.style.height=c.height+c.depth+"em",d.style.verticalAlign=-c.depth+"em"}return c}function gt(e){return new A(e)}var Et=function(){function e(e,t){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=e,this.attributes={},this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.getAttribute=function(e){return this.attributes[e]},t.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},t.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=_.escape(this.attributes[t]),e+='"');e+=">";for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+="</"+this.type+">"},t.toText=function(){return this.children.map(function(e){return e.toText()}).join("")},e}(),ht=function(){function e(e){this.text=void 0,this.text=e}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.text)},t.toMarkup=function(){return _.escape(this.toText())},t.toText=function(){return this.text},e}(),St={MathNode:Et,TextNode:ht,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?" ":e>=.1666&&e<=.1667?" ":e>=.2222&&e<=.2223?" ":e>=.2777&&e<=.2778?"  ":e>=-.05556&&e<=-.05555?" ⁣":e>=-.1667&&e<=-.1666?" ⁣":e>=-.2223&&e<=-.2222?" ⁣":e>=-.2778&&e<=-.2777?" ⁣":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",this.width+"em"),e},t.toMarkup=function(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+this.width+'em"/>'},t.toText=function(){return this.character?this.character:" "},e}(),newDocumentFragment:gt},ft=function(e,t,n){return!Q[t][e]||!Q[t][e].replace||55349===e.charCodeAt(0)||ne.hasOwnProperty(e)&&n&&(n.fontFamily&&"tt"===n.fontFamily.substr(4,2)||n.font&&"tt"===n.font.substr(4,2))||(e=Q[t][e].replace),new St.TextNode(e)},Tt=function(e){return 1===e.length?e[0]:new St.MathNode("mrow",e)},bt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var n=t.font;if(!n||"mathnormal"===n)return null;var r=e.mode;if("mathit"===n)return"italic";if("boldsymbol"===n)return"bold-italic";if("mathbf"===n)return"bold";if("mathbb"===n)return"double-struck";if("mathfrak"===n)return"fraktur";if("mathscr"===n||"mathcal"===n)return"script";if("mathsf"===n)return"sans-serif";if("mathtt"===n)return"monospace";var a=e.text;return _.contains(["\\imath","\\jmath"],a)?null:(Q[r][a]&&Q[r][a].replace&&(a=Q[r][a].replace),V(a,Be.fontMap[n].fontName,r)?Be.fontMap[n].variant:null)},Ct=function(e,t,n){if(1===e.length){var r=vt(e[0],t);return n&&r instanceof Et&&"mo"===r.type&&(r.setAttribute("lspace","0em"),r.setAttribute("rspace","0em")),[r]}for(var a,i=[],o=0;o<e.length;o++){var s=vt(e[o],t);if(s instanceof Et&&a instanceof Et){if("mtext"===s.type&&"mtext"===a.type&&s.getAttribute("mathvariant")===a.getAttribute("mathvariant")){var l;(l=a.children).push.apply(l,s.children);continue}if("mn"===s.type&&"mn"===a.type){var c;(c=a.children).push.apply(c,s.children);continue}if("mi"===s.type&&1===s.children.length&&"mn"===a.type){var d=s.children[0];if(d instanceof ht&&"."===d.text){var _;(_=a.children).push.apply(_,s.children);continue}}else if("mi"===a.type&&1===a.children.length){var u=a.children[0];if(u instanceof ht&&"̸"===u.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var m=s.children[0];m instanceof ht&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(s),a=s}return i},Nt=function(e,t,n){return Tt(Ct(e,t,n))},vt=function(e,t){if(!e)return new St.MathNode("mrow");if(Ze[e.type])return Ze[e.type](e,t);throw new o("Got group of unknown type: '"+e.type+"'")};function Rt(e,t,n,r){var a,i=Ct(e,n);a=1===i.length&&i[0]instanceof Et&&_.contains(["mrow","mtable"],i[0].type)?i[0]:new St.MathNode("mrow",i);var o=new St.MathNode("annotation",[new St.TextNode(t)]);o.setAttribute("encoding","application/x-tex");var s=new St.MathNode("semantics",[a,o]),l=new St.MathNode("math",[s]);l.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");var c=r?"katex":"katex-mathml";return Be.makeSpan([c],[l])}var At=function(e){return new Ne({style:e.displayMode?b.DISPLAY:b.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Ot=function(e,t){if(t.displayMode){var n=["katex-display"];t.leqno&&n.push("leqno"),t.fleqn&&n.push("fleqn"),e=Be.makeSpan(n,[e])}return e},yt={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋"},It={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Dt=function(e){return"ordgroup"===e.type?e.body.length:1},xt=function(e,t,n,r){var a,i=e.height+e.depth+2*n;if(/fbox|color/.test(t)){if(a=Be.makeSpan(["stretchy",t],[],r),"fbox"===t){var o=r.color&&r.getColor();o&&(a.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(t)&&s.push(new F({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&s.push(new F({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var l=new k(s,{width:"100%",height:i+"em"});a=Be.makeSvgSpan([],[l],r)}return a.height=i,a.style.height=i+"em",a},Mt=function(e){var t=new St.MathNode("mo",[new St.TextNode(yt[e.substr(1)])]);return t.setAttribute("stretchy","true"),t},wt=function(e,t){var n=function(){var n=4e5,r=e.label.substr(1);if(_.contains(["widehat","widecheck","widetilde","utilde"],r)){var a,i,o,s=Dt(e.base);if(s>5)"widehat"===r||"widecheck"===r?(a=420,n=2364,o=.42,i=r+"4"):(a=312,n=2340,o=.34,i="tilde4");else{var l=[1,1,2,2,3,3][s];"widehat"===r||"widecheck"===r?(n=[0,1062,2364,2364,2364][l],a=[0,239,300,360,420][l],o=[0,.24,.3,.3,.36,.42][l],i=r+l):(n=[0,600,1033,2339,2340][l],a=[0,260,286,306,312][l],o=[0,.26,.286,.3,.306,.34][l],i="tilde"+l)}var c=new U(i),d=new k([c],{width:"100%",height:o+"em",viewBox:"0 0 "+n+" "+a,preserveAspectRatio:"none"});return{span:Be.makeSvgSpan([],[d],t),minWidth:0,height:o}}var u,m,p=[],g=It[r],E=g[0],h=g[1],S=g[2],f=S/1e3,T=E.length;if(1===T)u=["hide-tail"],m=[g[3]];else if(2===T)u=["halfarrow-left","halfarrow-right"],m=["xMinYMin","xMaxYMin"];else{if(3!==T)throw new Error("Correct katexImagesData or update code here to support\n                    "+T+" children.");u=["brace-left","brace-center","brace-right"],m=["xMinYMin","xMidYMin","xMaxYMin"]}for(var b=0;b<T;b++){var C=new U(E[b]),N=new k([C],{width:"400em",height:f+"em",viewBox:"0 0 "+n+" "+S,preserveAspectRatio:m[b]+" slice"}),v=Be.makeSvgSpan([u[b]],[N],t);if(1===T)return{span:v,minWidth:h,height:f};v.style.height=f+"em",p.push(v)}return{span:Be.makeSpan(["stretchy"],p,t),minWidth:h,height:f}}(),r=n.span,a=n.minWidth,i=n.height;return r.height=i,r.style.height=i+"em",a>0&&(r.style.minWidth=a+"em"),r},Lt=function(e,t){var n,r,a,i=He(e,"supsub");i?(n=(r=Ge(i.base,"accent")).base,i.base=n,a=function(e){if(e instanceof x)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}(ut(i,t)),i.base=r):n=(r=Ge(e,"accent")).base;var o=ut(n,t.havingCrampedStyle()),s=0;if(r.isShifty&&_.isCharacterBox(n)){var l=_.getBaseElem(n);s=B(ut(l,t.havingCrampedStyle())).skew}var c,d=Math.min(o.height,t.fontMetrics().xHeight);if(r.isStretchy)c=wt(r,t),c=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:c,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},t);else{var u,m;"\\vec"===r.label?(u=Be.staticSvg("vec",t),m=Be.svgData.vec[1]):((u=B(u=Be.makeOrd({mode:r.mode,text:r.label},t,"textord"))).italic=0,m=u.width),c=Be.makeSpan(["accent-body"],[u]);var p="\\textcircled"===r.label;p&&(c.classes.push("accent-full"),d=o.height);var g=s;p||(g-=m/2),c.style.left=g+"em","\\textcircled"===r.label&&(c.style.top=".2em"),c=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:-d},{type:"elem",elem:c}]},t)}var E=Be.makeSpan(["mord","accent"],[c],t);return a?(a.children[0]=E,a.height=Math.max(E.height,a.height),a.classes[0]="mord",a):E},Pt=function(e,t){var n=e.isStretchy?Mt(e.label):new St.MathNode("mo",[ft(e.label,e.mode)]),r=new St.MathNode("mover",[vt(e.base,t),n]);return r.setAttribute("accent","true"),r},kt=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(e){return"\\"+e}).join("|"));Je({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(e,t){var n=t[0],r=!kt.test(e.funcName),a=!r||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:r,isShifty:a,base:n}},htmlBuilder:Lt,mathmlBuilder:Pt}),Je({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var n=t[0];return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:Lt,mathmlBuilder:Pt}),Je({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"accentUnder",mode:n.mode,label:r,base:a}},htmlBuilder:function(e,t){var n=ut(e.base,t),r=wt(e,t),a="\\utilde"===e.label?.12:0,i=Be.makeVList({positionType:"bottom",positionData:r.height+a,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:n}]},t);return Be.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:function(e,t){var n=Mt(e.label),r=new St.MathNode("munder",[vt(e.base,t),n]);return r.setAttribute("accentunder","true"),r}});var Ut=function(e){var t=new St.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};Je({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,n){var r=e.parser,a=e.funcName;return{type:"xArrow",mode:r.mode,label:a,body:t[0],below:n[0]}},htmlBuilder:function(e,t){var n,r=t.style,a=t.havingStyle(r.sup()),i=Be.wrapFragment(ut(e.body,a,t),t);i.classes.push("x-arrow-pad"),e.below&&(a=t.havingStyle(r.sub()),(n=Be.wrapFragment(ut(e.below,a,t),t)).classes.push("x-arrow-pad"));var o,s=wt(e,t),l=-t.fontMetrics().axisHeight+.5*s.height,c=-t.fontMetrics().axisHeight-.5*s.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(c-=i.depth),n){var d=-t.fontMetrics().axisHeight+n.height+.5*s.height+.111;o=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:s,shift:l},{type:"elem",elem:n,shift:d}]},t)}else o=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:s,shift:l}]},t);return o.children[0].children[0].children[1].classes.push("svg-align"),Be.makeSpan(["mrel","x-arrow"],[o],t)},mathmlBuilder:function(e,t){var n,r=Mt(e.label);if(e.body){var a=Ut(vt(e.body,t));if(e.below){var i=Ut(vt(e.below,t));n=new St.MathNode("munderover",[r,i,a])}else n=new St.MathNode("mover",[r,a])}else if(e.below){var o=Ut(vt(e.below,t));n=new St.MathNode("munder",[r,o])}else n=Ut(),n=new St.MathNode("mover",[r,n]);return n}}),Je({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){for(var n=e.parser,r=Ge(t[0],"ordgroup").body,a="",i=0;i<r.length;i++){a+=Ge(r[i],"textord").text}var s=parseInt(a);if(isNaN(s))throw new o("\\@char has non-numeric argument "+a);return{type:"textord",mode:n.mode,text:String.fromCharCode(s)}}});var Ft=function(e,t){var n=st(e.body,t.withColor(e.color),!1);return Be.makeFragment(n)},Bt=function(e,t){var n=Ct(e.body,t.withColor(e.color)),r=new St.MathNode("mstyle",n);return r.setAttribute("mathcolor",e.color),r};Je({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","original"]},handler:function(e,t){var n=e.parser,r=Ge(t[0],"color-token").color,a=t[1];return{type:"color",mode:n.mode,color:r,body:tt(a)}},htmlBuilder:Ft,mathmlBuilder:Bt}),Je({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:["color"]},handler:function(e,t){var n=e.parser,r=e.breakOnTokenText,a=Ge(t[0],"color-token").color;n.gullet.macros.set("\\current@color",a);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:a,body:i}},htmlBuilder:Ft,mathmlBuilder:Bt}),Je({type:"cr",names:["\\cr","\\newline"],props:{numArgs:0,numOptionalArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=n[0],o="\\cr"===a,s=!1;return o||(s=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode")),{type:"cr",mode:r.mode,newLine:s,newRow:o,size:i&&Ge(i,"size").value}},htmlBuilder:function(e,t){if(e.newRow)throw new o("\\cr valid only within a tabular/array environment");var n=Be.makeSpan(["mspace"],[],t);return e.newLine&&(n.classes.push("newline"),e.size&&(n.style.marginTop=Oe(e.size,t)+"em")),n},mathmlBuilder:function(e,t){var n=new St.MathNode("mspace");return e.newLine&&(n.setAttribute("linebreak","newline"),e.size&&n.setAttribute("height",Oe(e.size,t)+"em")),n}});var Gt=function(e,t,n){var r=V(Q.math[e]&&Q.math[e].replace||e,t,n);if(!r)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return r},Ht=function(e,t,n,r){var a=n.havingBaseStyle(t),i=Be.makeSpan(r.concat(a.sizingClasses(n)),[e],n),o=a.sizeMultiplier/n.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=a.sizeMultiplier,i},Yt=function(e,t,n){var r=t.havingBaseStyle(n),a=(1-t.sizeMultiplier/r.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=a+"em",e.height-=a,e.depth+=a},Vt=function(e,t,n,r,a,i){var o=function(e,t,n,r){return Be.makeSymbol(e,"Size"+t+"-Regular",n,r)}(e,t,a,r),s=Ht(Be.makeSpan(["delimsizing","size"+t],[o],r),b.TEXT,r,i);return n&&Yt(s,r,b.TEXT),s},zt=function(e,t,n){var r;return r="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Be.makeSpan(["delimsizinginner",r],[Be.makeSpan([],[Be.makeSymbol(e,t,n)])])}},qt={type:"kern",size:-.005},Kt=function(e,t,n,r,a,i){var o,s,l,c;o=l=c=e,s=null;var d="Size1-Regular";"\\uparrow"===e?l=c="⏐":"\\Uparrow"===e?l=c="‖":"\\downarrow"===e?o=l="⏐":"\\Downarrow"===e?o=l="‖":"\\updownarrow"===e?(o="\\uparrow",l="⏐",c="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",l="‖",c="\\Downarrow"):"["===e||"\\lbrack"===e?(o="⎡",l="⎢",c="⎣",d="Size4-Regular"):"]"===e||"\\rbrack"===e?(o="⎤",l="⎥",c="⎦",d="Size4-Regular"):"\\lfloor"===e||"⌊"===e?(l=o="⎢",c="⎣",d="Size4-Regular"):"\\lceil"===e||"⌈"===e?(o="⎡",l=c="⎢",d="Size4-Regular"):"\\rfloor"===e||"⌋"===e?(l=o="⎥",c="⎦",d="Size4-Regular"):"\\rceil"===e||"⌉"===e?(o="⎤",l=c="⎥",d="Size4-Regular"):"("===e||"\\lparen"===e?(o="⎛",l="⎜",c="⎝",d="Size4-Regular"):")"===e||"\\rparen"===e?(o="⎞",l="⎟",c="⎠",d="Size4-Regular"):"\\{"===e||"\\lbrace"===e?(o="⎧",s="⎨",c="⎩",l="⎪",d="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="⎫",s="⎬",c="⎭",l="⎪",d="Size4-Regular"):"\\lgroup"===e||"⟮"===e?(o="⎧",c="⎩",l="⎪",d="Size4-Regular"):"\\rgroup"===e||"⟯"===e?(o="⎫",c="⎭",l="⎪",d="Size4-Regular"):"\\lmoustache"===e||"⎰"===e?(o="⎧",c="⎭",l="⎪",d="Size4-Regular"):"\\rmoustache"!==e&&"⎱"!==e||(o="⎫",c="⎩",l="⎪",d="Size4-Regular");var _=Gt(o,d,a),u=_.height+_.depth,m=Gt(l,d,a),p=m.height+m.depth,g=Gt(c,d,a),E=g.height+g.depth,h=0,S=1;if(null!==s){var f=Gt(s,d,a);h=f.height+f.depth,S=2}var T=u+E+h,C=Math.max(0,Math.ceil((t-T)/(S*p))),N=T+C*S*p,v=r.fontMetrics().axisHeight;n&&(v*=r.sizeMultiplier);var R=N/2-v,A=.005*(C+1)-p,O=[];if(O.push(zt(c,d,a)),null===s)for(var y=0;y<C;y++)O.push(qt),O.push(zt(l,d,a));else{for(var I=0;I<C;I++)O.push(qt),O.push(zt(l,d,a));O.push({type:"kern",size:A}),O.push(zt(l,d,a)),O.push(qt),O.push(zt(s,d,a));for(var D=0;D<C;D++)O.push(qt),O.push(zt(l,d,a))}O.push({type:"kern",size:A}),O.push(zt(l,d,a)),O.push(qt),O.push(zt(o,d,a));var x=r.havingBaseStyle(b.TEXT),M=Be.makeVList({positionType:"bottom",positionData:R,children:O},x);return Ht(Be.makeSpan(["delimsizing","mult"],[M],x),b.TEXT,r,i)},Wt=function(e,t,n,r,a){var i=function(e,t,n){t*=1e3;var r="";switch(e){case"sqrtMain":r=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize1":r=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize2":r=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize3":r=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize4":r=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,80);break;case"sqrtTall":r=function(e,t,n){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(n-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,80,n)}return r}(e,r,n),o=new U(e,i),s=new k([o],{width:"400em",height:t+"em",viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Be.makeSvgSpan(["hide-tail"],[s],a)},Qt=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],$t=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],jt=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Xt=[0,1.2,1.8,2.4,3],Zt=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Jt=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"stack"}],en=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],tn=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},nn=function(e,t,n,r){for(var a=Math.min(2,3-r.style.size);a<n.length&&"stack"!==n[a].type;a++){var i=Gt(e,tn(n[a]),"math"),o=i.height+i.depth;if("small"===n[a].type&&(o*=r.havingBaseStyle(n[a].style).sizeMultiplier),o>t)return n[a]}return n[n.length-1]},rn=function(e,t,n,r,a,i){var o;"<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),o=_.contains(jt,e)?Zt:_.contains(Qt,e)?en:Jt;var s=nn(e,t,o,r);return"small"===s.type?function(e,t,n,r,a,i){var o=Be.makeSymbol(e,"Main-Regular",a,r),s=Ht(o,t,r,i);return n&&Yt(s,r,t),s}(e,s.style,n,r,a,i):"large"===s.type?Vt(e,s.size,n,r,a,i):Kt(e,t,n,r,a,i)},an=function(e,t){var n,r,a=t.havingBaseSizing(),i=nn("\\surd",e*a.sizeMultiplier,en,a),o=a.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,c=0,d=0;return"small"===i.type?(d=1e3+1e3*s+80,e<1?o=1:e<1.4&&(o=.7),c=(1+s)/o,(n=Wt("sqrtMain",l=(1+s+.08)/o,d,s,t)).style.minWidth="0.853em",r=.833/o):"large"===i.type?(d=1080*Xt[i.size],c=(Xt[i.size]+s)/o,l=(Xt[i.size]+s+.08)/o,(n=Wt("sqrtSize"+i.size,l,d,s,t)).style.minWidth="1.02em",r=1/o):(l=e+s+.08,c=e+s,d=Math.floor(1e3*e+s)+80,(n=Wt("sqrtTall",l,d,s,t)).style.minWidth="0.742em",r=1.056),n.height=c,n.style.height=l+"em",{span:n,advanceWidth:r,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},on=function(e,t,n,r,a){if("<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),_.contains(Qt,e)||_.contains(jt,e))return Vt(e,t,!1,n,r,a);if(_.contains($t,e))return Kt(e,Xt[t],!1,n,r,a);throw new o("Illegal delimiter: '"+e+"'")},sn=rn,ln=function(e,t,n,r,a,i){var o=r.fontMetrics().axisHeight*r.sizeMultiplier,s=5/r.fontMetrics().ptPerEm,l=Math.max(t-o,n+o),c=Math.max(l/500*901,2*l-s);return rn(e,c,!0,r,a,i)},cn={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},dn=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function _n(e,t){var n=ze(e);if(n&&_.contains(dn,n.text))return n;throw new o("Invalid delimiter: '"+(n?n.text:JSON.stringify(e))+"' after '"+t.funcName+"'",e)}function un(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Je({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:cn[e.funcName].size,mclass:cn[e.funcName].mclass,delim:n.text}},htmlBuilder:function(e,t){return"."===e.delim?Be.makeSpan([e.mclass]):on(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(ft(e.delim,e.mode));var n=new St.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n}}),Je({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(e,t){var n=e.parser.gullet.macros.get("\\current@color");if(n&&"string"!=typeof n)throw new o("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:_n(t[0],e).text,color:n}}}),Je({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e),r=e.parser;++r.leftrightDepth;var a=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=Ge(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:a,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(e,t){un(e);for(var n,r,a=st(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l<a.length;l++)a[l].isMiddle?s=!0:(i=Math.max(a[l].height,i),o=Math.max(a[l].depth,o));if(i*=t.sizeMultiplier,o*=t.sizeMultiplier,n="."===e.left?_t(t,["mopen"]):ln(e.left,i,o,t,e.mode,["mopen"]),a.unshift(n),s)for(var c=1;c<a.length;c++){var d=a[c].isMiddle;d&&(a[c]=ln(d.delim,i,o,d.options,e.mode,[]))}if("."===e.right)r=_t(t,["mclose"]);else{var _=e.rightColor?t.withColor(e.rightColor):t;r=ln(e.right,i,o,_,e.mode,["mclose"])}return a.push(r),Be.makeSpan(["minner"],a,t)},mathmlBuilder:function(e,t){un(e);var n=Ct(e.body,t);if("."!==e.left){var r=new St.MathNode("mo",[ft(e.left,e.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if("."!==e.right){var a=new St.MathNode("mo",[ft(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),n.push(a)}return Tt(n)}}),Je({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e);if(!e.parser.leftrightDepth)throw new o("\\middle without preceding \\left",n);return{type:"middle",mode:e.parser.mode,delim:n.text}},htmlBuilder:function(e,t){var n;if("."===e.delim)n=_t(t,[]);else{n=on(e.delim,1,t,e.mode,[]);var r={delim:e.delim,options:t};n.isMiddle=r}return n},mathmlBuilder:function(e,t){var n="\\vert"===e.delim||"|"===e.delim?ft("|","text"):ft(e.delim,e.mode),r=new St.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var mn=function(e,t){var n,r,a=Be.wrapFragment(ut(e.body,t),t),i=e.label.substr(1),o=t.sizeMultiplier,s=0,l=_.isCharacterBox(e.body);if("sout"===i)(n=Be.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/o,s=-.5*t.fontMetrics().xHeight;else{/cancel/.test(i)?l||a.classes.push("cancel-pad"):a.classes.push("boxpad");var c=0,d=0;/box/.test(i)?(d=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),c=t.fontMetrics().fboxsep+("colorbox"===i?0:d)):c=l?.2:0,n=xt(a,i,c,t),/fbox|boxed|fcolorbox/.test(i)&&(n.style.borderStyle="solid",n.style.borderWidth=d+"em"),s=a.depth+c,e.backgroundColor&&(n.style.backgroundColor=e.backgroundColor,e.borderColor&&(n.style.borderColor=e.borderColor))}return r=e.backgroundColor?Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:s},{type:"elem",elem:a,shift:0}]},t):Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:0},{type:"elem",elem:n,shift:s,wrapperClasses:/cancel/.test(i)?["svg-align"]:[]}]},t),/cancel/.test(i)&&(r.height=a.height,r.depth=a.depth),/cancel/.test(i)&&!l?Be.makeSpan(["mord","cancel-lap"],[r],t):Be.makeSpan(["mord"],[r],t)},pn=function(e,t){var n=0,r=new St.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[vt(e.body,t)]);switch(e.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(n=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),"\\fcolorbox"===e.label){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);r.setAttribute("style","border: "+a+"em solid "+String(e.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&r.setAttribute("mathbackground",e.backgroundColor),r};Je({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=Ge(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:r.mode,label:a,backgroundColor:i,body:o}},htmlBuilder:mn,mathmlBuilder:pn}),Je({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=Ge(t[0],"color-token").color,o=Ge(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:r.mode,label:a,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:mn,mathmlBuilder:pn}),Je({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\fbox",body:t[0]}}}),Je({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=t[0];return{type:"enclose",mode:r.mode,label:a,body:i}},htmlBuilder:mn,mathmlBuilder:pn});var gn={};function En(e){for(var t=e.type,n=e.names,r=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:r.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l<n.length;++l)gn[n[l]]=s;i&&(Xe[t]=i),o&&(Ze[t]=o)}function hn(e){var t=[];e.consumeSpaces();for(var n=e.fetch().text;"\\hline"===n||"\\hdashline"===n;)e.consume(),t.push("\\hdashline"===n),e.consumeSpaces(),n=e.fetch().text;return t}function Sn(e,t,n){var r=t.hskipBeforeAndAfter,a=t.addJot,i=t.cols,s=t.arraystretch,l=t.colSeparationType;if(e.gullet.beginGroup(),e.gullet.macros.set("\\\\","\\cr"),!s){var c=e.gullet.expandMacroAsText("\\arraystretch");if(null==c)s=1;else if(!(s=parseFloat(c))||s<0)throw new o("Invalid \\arraystretch: "+c)}e.gullet.beginGroup();var d=[],_=[d],u=[],m=[];for(m.push(hn(e));;){var p=e.parseExpression(!1,"\\cr");e.gullet.endGroup(),e.gullet.beginGroup(),p={type:"ordgroup",mode:e.mode,body:p},n&&(p={type:"styling",mode:e.mode,style:n,body:[p]}),d.push(p);var g=e.fetch().text;if("&"===g)e.consume();else{if("\\end"===g){1===d.length&&"styling"===p.type&&0===p.body[0].body.length&&_.pop(),m.length<_.length+1&&m.push([]);break}if("\\cr"!==g)throw new o("Expected & or \\\\ or \\cr or \\end",e.nextToken);var E=Ge(e.parseFunction(),"cr");u.push(E.size),m.push(hn(e)),d=[],_.push(d)}}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:a,arraystretch:s,body:_,cols:i,rowGaps:u,hskipBeforeAndAfter:r,hLinesBeforeRow:m,colSeparationType:l}}function fn(e){return"d"===e.substr(0,1)?"display":"text"}var Tn=function(e,t){var n,r,a=e.body.length,i=e.hLinesBeforeRow,s=0,l=new Array(a),c=[],d=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),u=1/t.fontMetrics().ptPerEm,m=5*u;e.colSeparationType&&"small"===e.colSeparationType&&(m=t.havingStyle(b.SCRIPT).sizeMultiplier/t.sizeMultiplier*.2778);var p=12*u,g=3*u,E=e.arraystretch*p,h=.7*E,S=.3*E,f=0;function T(e){for(var t=0;t<e.length;++t)t>0&&(f+=.25),c.push({pos:f,isDashed:e[t]})}for(T(i[0]),n=0;n<e.body.length;++n){var C=e.body[n],N=h,v=S;s<C.length&&(s=C.length);var R=new Array(C.length);for(r=0;r<C.length;++r){var A=ut(C[r],t);v<A.depth&&(v=A.depth),N<A.height&&(N=A.height),R[r]=A}var O=e.rowGaps[n],y=0;O&&(y=Oe(O,t))>0&&(v<(y+=S)&&(v=y),y=0),e.addJot&&(v+=g),R.height=N,R.depth=v,f+=N,R.pos=f,f+=v+y,l[n]=R,T(i[n+1])}var I,D,x=f/2+t.fontMetrics().axisHeight,M=e.cols||[],w=[];for(r=0,D=0;r<s||D<M.length;++r,++D){for(var L=M[D]||{},P=!0;"separator"===L.type;){if(P||((I=Be.makeSpan(["arraycolsep"],[])).style.width=t.fontMetrics().doubleRuleSep+"em",w.push(I)),"|"!==L.separator&&":"!==L.separator)throw new o("Invalid separator type: "+L.separator);var k="|"===L.separator?"solid":"dashed",U=Be.makeSpan(["vertical-separator"],[],t);U.style.height=f+"em",U.style.borderRightWidth=d+"em",U.style.borderRightStyle=k,U.style.margin="0 -"+d/2+"em",U.style.verticalAlign=-(f-x)+"em",w.push(U),L=M[++D]||{},P=!1}if(!(r>=s)){var F=void 0;(r>0||e.hskipBeforeAndAfter)&&0!==(F=_.deflt(L.pregap,m))&&((I=Be.makeSpan(["arraycolsep"],[])).style.width=F+"em",w.push(I));var B=[];for(n=0;n<a;++n){var G=l[n],H=G[r];if(H){var Y=G.pos-x;H.depth=G.depth,H.height=G.height,B.push({type:"elem",elem:H,shift:Y})}}B=Be.makeVList({positionType:"individualShift",children:B},t),B=Be.makeSpan(["col-align-"+(L.align||"c")],[B]),w.push(B),(r<s-1||e.hskipBeforeAndAfter)&&0!==(F=_.deflt(L.postgap,m))&&((I=Be.makeSpan(["arraycolsep"],[])).style.width=F+"em",w.push(I))}}if(l=Be.makeSpan(["mtable"],w),c.length>0){for(var V=Be.makeLineSpan("hline",t,d),z=Be.makeLineSpan("hdashline",t,d),q=[{type:"elem",elem:l,shift:0}];c.length>0;){var K=c.pop(),W=K.pos-x;K.isDashed?q.push({type:"elem",elem:z,shift:W}):q.push({type:"elem",elem:V,shift:W})}l=Be.makeVList({positionType:"individualShift",children:q},t)}return Be.makeSpan(["mord"],[l],t)},bn={c:"center ",l:"left ",r:"right "},Cn=function(e,t){var n=new St.MathNode("mtable",e.body.map(function(e){return new St.MathNode("mtr",e.map(function(e){return new St.MathNode("mtd",[vt(e,t)])}))})),r=.5===e.arraystretch?.1:.16+e.arraystretch-1+(e.addJot?.09:0);n.setAttribute("rowspacing",r+"em");var a="",i="";if(e.cols){var o=e.cols,s="",l=!1,c=0,d=o.length;"separator"===o[0].type&&(a+="top ",c=1),"separator"===o[o.length-1].type&&(a+="bottom ",d-=1);for(var _=c;_<d;_++)"align"===o[_].type?(i+=bn[o[_].align],l&&(s+="none "),l=!0):"separator"===o[_].type&&l&&(s+="|"===o[_].separator?"solid ":"dashed ",l=!1);n.setAttribute("columnalign",i.trim()),/[sd]/.test(s)&&n.setAttribute("columnlines",s.trim())}if("align"===e.colSeparationType){for(var u=e.cols||[],m="",p=1;p<u.length;p++)m+=p%2?"0em ":"1em ";n.setAttribute("columnspacing",m.trim())}else"alignat"===e.colSeparationType?n.setAttribute("columnspacing","0em"):"small"===e.colSeparationType?n.setAttribute("columnspacing","0.2778em"):n.setAttribute("columnspacing","1em");var g="",E=e.hLinesBeforeRow;a+=E[0].length>0?"left ":"",a+=E[E.length-1].length>0?"right ":"";for(var h=1;h<E.length-1;h++)g+=0===E[h].length?"none ":E[h][0]?"dashed ":"solid ";return/[sd]/.test(g)&&n.setAttribute("rowlines",g.trim()),""!==a&&(n=new St.MathNode("menclose",[n])).setAttribute("notation",a.trim()),e.arraystretch&&e.arraystretch<1&&(n=new St.MathNode("mstyle",[n])).setAttribute("scriptlevel","1"),n},Nn=function(e,t){var n,r=[],a=Sn(e.parser,{cols:r,addJot:!0},"display"),i=0,s={type:"ordgroup",mode:e.mode,body:[]},l=He(t[0],"ordgroup");if(l){for(var c="",d=0;d<l.body.length;d++){c+=Ge(l.body[d],"textord").text}n=Number(c),i=2*n}var _=!i;a.body.forEach(function(e){for(var t=1;t<e.length;t+=2){Ge(Ge(e[t],"styling").body[0],"ordgroup").body.unshift(s)}if(_)i<e.length&&(i=e.length);else{var r=e.length/2;if(n<r)throw new o("Too many math in a row: expected "+n+", but got "+r,e[0])}});for(var u=0;u<i;++u){var m="r",p=0;u%2==1?m="l":u>0&&_&&(p=1),r[u]={type:"align",align:m,pregap:p,postgap:0}}return a.colSeparationType=_?"align":"alignat",a};En({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(e,t){var n={cols:(ze(t[0])?[t[0]]:Ge(t[0],"ordgroup").body).map(function(e){var t=Ve(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new o("Unknown column alignment: "+t,e)}),hskipBeforeAndAfter:!0};return Sn(e.parser,n,fn(e.envName))},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName],n=Sn(e.parser,{hskipBeforeAndAfter:!1},fn(e.envName));return t?{type:"leftright",mode:e.mode,body:[n],left:t[0],right:t[1],rightColor:void 0}:n},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(e){var t=Sn(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["subarray"],props:{numArgs:1},handler:function(e,t){var n=(ze(t[0])?[t[0]]:Ge(t[0],"ordgroup").body).map(function(e){var t=Ve(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new o("Unknown column alignment: "+t,e)});if(n.length>1)throw new o("{subarray} can contain only one column");var r={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5};if((r=Sn(e.parser,r,"script")).body[0].length>1)throw new o("{subarray} can contain only one column");return r},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(e){var t=Sn(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},fn(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:"\\{",right:".",rightColor:void 0}},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["aligned"],props:{numArgs:0},handler:Nn,htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["gathered"],props:{numArgs:0},handler:function(e){return Sn(e.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["alignedat"],props:{numArgs:1},handler:Nn,htmlBuilder:Tn,mathmlBuilder:Cn}),Je({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(e,t){throw new o(e.funcName+" valid only within array environment")}});var vn=gn;Je({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];if("ordgroup"!==a.type)throw new o("Invalid environment name",a);for(var i="",s=0;s<a.body.length;++s)i+=Ge(a.body[s],"textord").text;if("\\begin"===r){if(!vn.hasOwnProperty(i))throw new o("No such environment: "+i,a);var l=vn[i],c=n.parseArguments("\\begin{"+i+"}",l),d=c.args,_=c.optArgs,u={mode:n.mode,envName:i,parser:n},m=l.handler(u,d,_);n.expect("\\end",!1);var p=n.nextToken,g=Ge(n.parseFunction(),"environment");if(g.name!==i)throw new o("Mismatch: \\begin{"+i+"} matched by \\end{"+g.name+"}",p);return m}return{type:"environment",mode:n.mode,name:i,nameGroup:a}}});var Rn=Be.makeSpan;function An(e,t){var n=st(e.body,t,!0);return Rn([e.mclass],n,t)}function On(e,t){var n,r=Ct(e.body,t);return"minner"===e.mclass?St.newDocumentFragment(r):("mord"===e.mclass?e.isCharacterBox?(n=r[0]).type="mi":n=new St.MathNode("mi",r):(e.isCharacterBox?(n=r[0]).type="mo":n=new St.MathNode("mo",r),"mbin"===e.mclass?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):"mpunct"===e.mclass?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):"mopen"!==e.mclass&&"mclose"!==e.mclass||(n.attributes.lspace="0em",n.attributes.rspace="0em")),n)}Je({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.substr(5),body:tt(a),isCharacterBox:_.isCharacterBox(a)}},htmlBuilder:An,mathmlBuilder:On});var yn=function(e){var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};Je({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:function(e,t){return{type:"mclass",mode:e.parser.mode,mclass:yn(t[0]),body:[t[1]],isCharacterBox:_.isCharacterBox(t[1])}}}),Je({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler:function(e,t){var n,r=e.parser,a=e.funcName,i=t[1],o=t[0];n="\\stackrel"!==a?yn(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==a,body:tt(i)},l={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===a?null:o,sub:"\\underset"===a?o:null};return{type:"mclass",mode:r.mode,mclass:n,body:[l],isCharacterBox:_.isCharacterBox(l)}},htmlBuilder:An,mathmlBuilder:On});var In=function(e,t){var n=e.font,r=t.withFont(n);return ut(e.body,r)},Dn=function(e,t){var n=e.font,r=t.withFont(n);return vt(e.body,r)},xn={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Je({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,greediness:2},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0],i=r;return i in xn&&(i=xn[i]),{type:"font",mode:n.mode,font:i.slice(1),body:a}},htmlBuilder:In,mathmlBuilder:Dn}),Je({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1,greediness:2},handler:function(e,t){var n=e.parser,r=t[0],a=_.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:yn(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:a}}}),Je({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=e.breakOnTokenText,i=n.mode,o=n.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+r.slice(1),body:{type:"ordgroup",mode:n.mode,body:o}}},htmlBuilder:In,mathmlBuilder:Dn});var Mn=function(e,t){var n=t;return"display"===e?n=n.id>=b.SCRIPT.id?n.text():b.DISPLAY:"text"===e&&n.size===b.DISPLAY.size?n=b.TEXT:"script"===e?n=b.SCRIPT:"scriptscript"===e&&(n=b.SCRIPTSCRIPT),n},wn=function(e,t){var n,r=Mn(e.size,t.style),a=r.fracNum(),i=r.fracDen();n=t.havingStyle(a);var o=ut(e.numer,n,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<l?l:o.depth}n=t.havingStyle(i);var c,d,_,u,m,p,g,E,h,S,f=ut(e.denom,n,t);if(e.hasBarLine?(e.barSize?(d=Oe(e.barSize,t),c=Be.makeLineSpan("frac-line",t,d)):c=Be.makeLineSpan("frac-line",t),d=c.height,_=c.height):(c=null,d=0,_=t.fontMetrics().defaultRuleThickness),r.size===b.DISPLAY.size||"display"===e.size?(u=t.fontMetrics().num1,m=d>0?3*_:7*_,p=t.fontMetrics().denom1):(d>0?(u=t.fontMetrics().num2,m=_):(u=t.fontMetrics().num3,m=3*_),p=t.fontMetrics().denom2),c){var T=t.fontMetrics().axisHeight;u-o.depth-(T+.5*d)<m&&(u+=m-(u-o.depth-(T+.5*d))),T-.5*d-(f.height-p)<m&&(p+=m-(T-.5*d-(f.height-p)));var C=-(T-.5*d);g=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:p},{type:"elem",elem:c,shift:C},{type:"elem",elem:o,shift:-u}]},t)}else{var N=u-o.depth-(f.height-p);N<m&&(u+=.5*(m-N),p+=.5*(m-N)),g=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:p},{type:"elem",elem:o,shift:-u}]},t)}return n=t.havingStyle(r),g.height*=n.sizeMultiplier/t.sizeMultiplier,g.depth*=n.sizeMultiplier/t.sizeMultiplier,E=r.size===b.DISPLAY.size?t.fontMetrics().delim1:t.fontMetrics().delim2,h=null==e.leftDelim?_t(t,["mopen"]):sn(e.leftDelim,E,!0,t.havingStyle(r),e.mode,["mopen"]),S=e.continued?Be.makeSpan([]):null==e.rightDelim?_t(t,["mclose"]):sn(e.rightDelim,E,!0,t.havingStyle(r),e.mode,["mclose"]),Be.makeSpan(["mord"].concat(n.sizingClasses(t)),[h,Be.makeSpan(["mfrac"],[g]),S],t)},Ln=function(e,t){var n=new St.MathNode("mfrac",[vt(e.numer,t),vt(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var r=Oe(e.barSize,t);n.setAttribute("linethickness",r+"em")}}else n.setAttribute("linethickness","0px");var a=Mn(e.size,t.style);if(a.size!==t.style.size){n=new St.MathNode("mstyle",[n]);var i=a.size===b.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){var o=[];if(null!=e.leftDelim){var s=new St.MathNode("mo",[new St.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(n),null!=e.rightDelim){var l=new St.MathNode("mo",[new St.TextNode(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),o.push(l)}return Tt(o)}return n};Je({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,greediness:2},handler:function(e,t){var n,r=e.parser,a=e.funcName,i=t[0],o=t[1],s=null,l=null,c="auto";switch(a){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":n=!0;break;case"\\\\atopfrac":n=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":n=!1,s="(",l=")";break;case"\\\\bracefrac":n=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":n=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(a){case"\\cfrac":case"\\dfrac":case"\\dbinom":c="display";break;case"\\tfrac":case"\\tbinom":c="text"}return{type:"genfrac",mode:r.mode,continued:"\\cfrac"===a,numer:i,denom:o,hasBarLine:n,leftDelim:s,rightDelim:l,size:c,barSize:null}},htmlBuilder:wn,mathmlBuilder:Ln}),Je({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler:function(e){var t,n=e.parser,r=e.funcName,a=e.token;switch(r){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:n.mode,replaceWith:t,token:a}}});var Pn=["display","text","script","scriptscript"],kn=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};Je({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(e,t){var n=e.parser,r=t[4],a=t[5],i=He(t[0],"atom");i&&(i=Ye(t[0],"open"));var o=i?kn(i.text):null,s=He(t[1],"atom");s&&(s=Ye(t[1],"close"));var l,c=s?kn(s.text):null,d=Ge(t[2],"size"),_=null;l=!!d.isBlank||(_=d.value).number>0;var u="auto",m=He(t[3],"ordgroup");if(m){if(m.body.length>0){var p=Ge(m.body[0],"textord");u=Pn[Number(p.text)]}}else m=Ge(t[3],"textord"),u=Pn[Number(m.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:a,continued:!1,hasBarLine:l,barSize:_,leftDelim:o,rightDelim:c,size:u}},htmlBuilder:wn,mathmlBuilder:Ln}),Je({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(e,t){var n=e.parser,r=(e.funcName,e.token);return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:Ge(t[0],"size").value,token:r}}}),Je({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(e,t){var n=e.parser,r=(e.funcName,t[0]),a=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ge(t[1],"infix").size),i=t[2],o=a.number>0;return{type:"genfrac",mode:n.mode,numer:r,denom:i,continued:!1,hasBarLine:o,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:wn,mathmlBuilder:Ln});var Un=function(e,t){var n,r,a=t.style,i=He(e,"supsub");i?(n=i.sup?ut(i.sup,t.havingStyle(a.sup()),t):ut(i.sub,t.havingStyle(a.sub()),t),r=Ge(i.base,"horizBrace")):r=Ge(e,"horizBrace");var o,s=ut(r.base,t.havingBaseStyle(b.DISPLAY)),l=wt(r,t);if(r.isOver?(o=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:l}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(o=Be.makeVList({positionType:"bottom",positionData:s.depth+.1+l.height,children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[0].classes.push("svg-align"),n){var c=Be.makeSpan(["mord",r.isOver?"mover":"munder"],[o],t);o=r.isOver?Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:n}]},t):Be.makeVList({positionType:"bottom",positionData:c.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:c}]},t)}return Be.makeSpan(["mord",r.isOver?"mover":"munder"],[o],t)};Je({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:t[0]}},htmlBuilder:Un,mathmlBuilder:function(e,t){var n=Mt(e.label);return new St.MathNode(e.isOver?"mover":"munder",[vt(e.base,t),n])}}),Je({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[1],a=Ge(t[0],"url").url;return n.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:n.mode,href:a,body:tt(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:function(e,t){var n=st(e.body,t,!1);return Be.makeAnchor(e.href,[],n,t)},mathmlBuilder:function(e,t){var n=Nt(e.body,t);return n instanceof Et||(n=new Et("mrow",[n])),n.setAttribute("href",e.href),n}}),Je({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=Ge(t[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var a=[],i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),a.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:n.mode,font:"\\texttt",body:a};return{type:"href",mode:n.mode,href:r,body:tt(s)}}}),Je({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:function(e,t){return{type:"htmlmathml",mode:e.parser.mode,html:tt(t[0]),mathml:tt(t[1])}},htmlBuilder:function(e,t){var n=st(e.html,t,!1);return Be.makeFragment(n)},mathmlBuilder:function(e,t){return Nt(e.mathml,t)}});var Fn=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new o("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(t[1]+t[2]),unit:t[3]};if(!Ae(n))throw new o("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};Je({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:function(e,t,n){var r=e.parser,a={number:0,unit:"em"},i={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(n[0])for(var c=Ge(n[0],"raw").string.split(","),d=0;d<c.length;d++){var _=c[d].split("=");if(2===_.length){var u=_[1].trim();switch(_[0].trim()){case"alt":l=u;break;case"width":a=Fn(u);break;case"height":i=Fn(u);break;case"totalheight":s=Fn(u);break;default:throw new o("Invalid key: '"+_[0]+"' in \\includegraphics.")}}}var m=Ge(t[0],"url").url;return""===l&&(l=(l=(l=m).replace(/^.*[\\/]/,"")).substring(0,l.lastIndexOf("."))),r.settings.isTrusted({command:"\\includegraphics",url:m})?{type:"includegraphics",mode:r.mode,alt:l,width:a,height:i,totalheight:s,src:m}:r.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:function(e,t){var n=Oe(e.height,t),r=0;e.totalheight.number>0&&(r=Oe(e.totalheight,t)-n,r=Number(r.toFixed(2)));var a=0;e.width.number>0&&(a=Oe(e.width,t));var i={height:n+r+"em"};a>0&&(i.width=a+"em"),r>0&&(i.verticalAlign=-r+"em");var o=new w(e.src,e.alt,i);return o.height=n,o.depth=r,o},mathmlBuilder:function(e,t){var n=new St.MathNode("mglyph",[]);n.setAttribute("alt",e.alt);var r=Oe(e.height,t),a=0;if(e.totalheight.number>0&&(a=(a=Oe(e.totalheight,t)-r).toFixed(2),n.setAttribute("valign","-"+a+"em")),n.setAttribute("height",r+a+"em"),e.width.number>0){var i=Oe(e.width,t);n.setAttribute("width",i+"em")}return n.setAttribute("src",e.src),n}}),Je({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=Ge(t[0],"size");if(n.settings.strict){var i="m"===r[1],o="mu"===a.value.unit;i?(o||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, not "+a.value.unit+" units"),"math"!==n.mode&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):o&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:a.value}},htmlBuilder:function(e,t){return Be.makeGlue(e.dimension,t)},mathmlBuilder:function(e,t){var n=Oe(e.dimension,t);return new St.SpaceNode(n)}}),Je({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:a}},htmlBuilder:function(e,t){var n;"clap"===e.alignment?(n=Be.makeSpan([],[ut(e.body,t)]),n=Be.makeSpan(["inner"],[n],t)):n=Be.makeSpan(["inner"],[ut(e.body,t)]);var r=Be.makeSpan(["fix"],[]),a=Be.makeSpan([e.alignment],[n,r],t),i=Be.makeSpan(["strut"]);return i.style.height=a.height+a.depth+"em",i.style.verticalAlign=-a.depth+"em",a.children.unshift(i),a=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},t),Be.makeSpan(["mord"],[a],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]);if("rlap"!==e.alignment){var r="llap"===e.alignment?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}}),Je({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var n=e.funcName,r=e.parser,a=r.mode;r.switchMode("math");var i="\\("===n?"\\)":"$",o=r.parseExpression(!1,i);return r.expect(i),r.switchMode(a),{type:"styling",mode:r.mode,style:"text",body:o}}}),Je({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){throw new o("Mismatched "+e.funcName)}});var Bn=function(e,t){switch(t.style.size){case b.DISPLAY.size:return e.display;case b.TEXT.size:return e.text;case b.SCRIPT.size:return e.script;case b.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};Je({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(e,t){return{type:"mathchoice",mode:e.parser.mode,display:tt(t[0]),text:tt(t[1]),script:tt(t[2]),scriptscript:tt(t[3])}},htmlBuilder:function(e,t){var n=Bn(e,t),r=st(n,t,!1);return Be.makeFragment(r)},mathmlBuilder:function(e,t){var n=Bn(e,t);return Nt(n,t)}});var Gn=function(e,t,n,r,a,i,o){var s,l,c;if(e=Be.makeSpan([],[e]),t){var d=ut(t,r.havingStyle(a.sup()),r);l={elem:d,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-d.depth)}}if(n){var _=ut(n,r.havingStyle(a.sub()),r);s={elem:_,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-_.height)}}if(l&&s){var u=r.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;c=Be.makeVList({positionType:"bottom",positionData:u,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:i+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(s){var m=e.height-o;c=Be.makeVList({positionType:"top",positionData:m,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:e}]},r)}else{if(!l)return e;var p=e.depth+o;c=Be.makeVList({positionType:"bottom",positionData:p,children:[{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:i+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}return Be.makeSpan(["mop","op-limits"],[c],r)},Hn=["\\smallint"],Yn=function(e,t){var n,r,a,i=!1,o=He(e,"supsub");o?(n=o.sup,r=o.sub,a=Ge(o.base,"op"),i=!0):a=Ge(e,"op");var s,l=t.style,c=!1;if(l.size===b.DISPLAY.size&&a.symbol&&!_.contains(Hn,a.name)&&(c=!0),a.symbol){var d=c?"Size2-Regular":"Size1-Regular",u="";if("\\oiint"!==a.name&&"\\oiiint"!==a.name||(u=a.name.substr(1),a.name="oiint"===u?"\\iint":"\\iiint"),s=Be.makeSymbol(a.name,d,"math",t,["mop","op-symbol",c?"large-op":"small-op"]),u.length>0){var m=s.italic,p=Be.staticSvg(u+"Size"+(c?"2":"1"),t);s=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:p,shift:c?.08:0}]},t),a.name="\\"+u,s.classes.unshift("mop"),s.italic=m}}else if(a.body){var g=st(a.body,t,!0);1===g.length&&g[0]instanceof P?(s=g[0]).classes[0]="mop":s=Be.makeSpan(["mop"],Be.tryCombineChars(g),t)}else{for(var E=[],h=1;h<a.name.length;h++)E.push(Be.mathsym(a.name[h],a.mode,t));s=Be.makeSpan(["mop"],E,t)}var S=0,f=0;return(s instanceof P||"\\oiint"===a.name||"\\oiiint"===a.name)&&!a.suppressBaseShift&&(S=(s.height-s.depth)/2-t.fontMetrics().axisHeight,f=s.italic),i?Gn(s,n,r,t,l,f,S):(S&&(s.style.position="relative",s.style.top=S+"em"),s)},Vn=function(e,t){var n;if(e.symbol)n=new Et("mo",[ft(e.name,e.mode)]),_.contains(Hn,e.name)&&n.setAttribute("largeop","false");else if(e.body)n=new Et("mo",Ct(e.body,t));else{n=new Et("mi",[new ht(e.name.slice(1))]);var r=new Et("mo",[ft("⁡","text")]);n=e.parentIsSupSub?new Et("mo",[n,r]):gt([n,r])}return n},zn={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};Je({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:function(e,t){var n=e.parser,r=e.funcName;return 1===r.length&&(r=zn[r]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=t[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:tt(r)}},htmlBuilder:Yn,mathmlBuilder:Vn});var qn={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};Je({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return 1===n.length&&(n=qn[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn});var Kn=function(e,t){var n,r,a,i,o=!1,s=He(e,"supsub");if(s?(n=s.sup,r=s.sub,a=Ge(s.base,"operatorname"),o=!0):a=Ge(e,"operatorname"),a.body.length>0){for(var l=a.body.map(function(e){var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e}),c=st(l,t.withFont("mathrm"),!0),d=0;d<c.length;d++){var _=c[d];_ instanceof P&&(_.text=_.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=Be.makeSpan(["mop"],c,t)}else i=Be.makeSpan(["mop"],[],t);return o?Gn(i,n,r,t,t.style,0,0):i};function Wn(e,t,n){for(var r=st(e,t,!1),a=t.sizeMultiplier/n.sizeMultiplier,i=0;i<r.length;i++){var o=r[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(r[i].classes,t.sizingClasses(n)):r[i].classes[o+1]==="reset-size"+t.size&&(r[i].classes[o+1]="reset-size"+n.size),r[i].height*=a,r[i].depth*=a}return Be.makeFragment(r)}Je({type:"operatorname",names:["\\operatorname","\\operatorname*"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"operatorname",mode:n.mode,body:tt(a),alwaysHandleSupSub:"\\operatorname*"===r,limits:!1,parentIsSupSub:!1}},htmlBuilder:Kn,mathmlBuilder:function(e,t){for(var n=Ct(e.body,t.withFont("mathrm")),r=!0,a=0;a<n.length;a++){var i=n[a];if(i instanceof St.SpaceNode);else if(i instanceof St.MathNode)switch(i.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof St.TextNode?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):r=!1;break;default:r=!1}else r=!1}if(r){var s=n.map(function(e){return e.toText()}).join("");n=[new St.TextNode(s)]}var l=new St.MathNode("mi",n);l.setAttribute("mathvariant","normal");var c=new St.MathNode("mo",[ft("⁡","text")]);return e.parentIsSupSub?new St.MathNode("mo",[l,c]):St.newDocumentFragment([l,c])}}),et({type:"ordgroup",htmlBuilder:function(e,t){return e.semisimple?Be.makeFragment(st(e.body,t,!1)):Be.makeSpan(["mord"],st(e.body,t,!0),t)},mathmlBuilder:function(e,t){return Nt(e.body,t,!0)}}),Je({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=t[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=ut(e.body,t.havingCrampedStyle()),r=Be.makeLineSpan("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r},{type:"kern",size:a}]},t);return Be.makeSpan(["mord","overline"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[new St.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new St.MathNode("mover",[vt(e.body,t),n]);return r.setAttribute("accent","true"),r}}),Je({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"phantom",mode:n.mode,body:tt(r)}},htmlBuilder:function(e,t){var n=st(e.body,t.withPhantom(),!1);return Be.makeFragment(n)},mathmlBuilder:function(e,t){var n=Ct(e.body,t);return new St.MathNode("mphantom",n)}}),Je({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=Be.makeSpan([],[ut(e.body,t.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r<n.children.length;r++)n.children[r].height=0,n.children[r].depth=0;return n=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},t),Be.makeSpan(["mord"],[n],t)},mathmlBuilder:function(e,t){var n=Ct(tt(e.body),t),r=new St.MathNode("mphantom",n),a=new St.MathNode("mpadded",[r]);return a.setAttribute("height","0px"),a.setAttribute("depth","0px"),a}}),Je({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=Be.makeSpan(["inner"],[ut(e.body,t.withPhantom())]),r=Be.makeSpan(["fix"],[]);return Be.makeSpan(["mord","rlap"],[n,r],t)},mathmlBuilder:function(e,t){var n=Ct(tt(e.body),t),r=new St.MathNode("mphantom",n),a=new St.MathNode("mpadded",[r]);return a.setAttribute("width","0px"),a}}),Je({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=Ge(t[0],"size").value,a=t[1];return{type:"raisebox",mode:n.mode,dy:r,body:a}},htmlBuilder:function(e,t){var n=ut(e.body,t),r=Oe(e.dy,t);return Be.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]),r=e.dy.number+e.dy.unit;return n.setAttribute("voffset",r),n}}),Je({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(e,t,n){var r=e.parser,a=n[0],i=Ge(t[0],"size"),o=Ge(t[1],"size");return{type:"rule",mode:r.mode,shift:a&&Ge(a,"size").value,width:i.value,height:o.value}},htmlBuilder:function(e,t){var n=Be.makeSpan(["mord","rule"],[],t),r=Oe(e.width,t),a=Oe(e.height,t),i=e.shift?Oe(e.shift,t):0;return n.style.borderRightWidth=r+"em",n.style.borderTopWidth=a+"em",n.style.bottom=i+"em",n.width=r,n.height=a+i,n.depth=-i,n.maxFontSize=1.125*a*t.sizeMultiplier,n},mathmlBuilder:function(e,t){var n=Oe(e.width,t),r=Oe(e.height,t),a=e.shift?Oe(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new St.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",n+"em"),o.setAttribute("height",r+"em");var s=new St.MathNode("mpadded",[o]);return a>=0?s.setAttribute("height","+"+a+"em"):(s.setAttribute("height",a+"em"),s.setAttribute("depth","+"+-a+"em")),s.setAttribute("voffset",a+"em"),s}});var Qn=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Je({type:"sizing",names:Qn,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.breakOnTokenText,r=e.funcName,a=e.parser,i=a.parseExpression(!1,n);return{type:"sizing",mode:a.mode,size:Qn.indexOf(r)+1,body:i}},htmlBuilder:function(e,t){var n=t.havingSize(e.size);return Wn(e.body,n,t)},mathmlBuilder:function(e,t){var n=t.havingSize(e.size),r=Ct(e.body,n),a=new St.MathNode("mstyle",r);return a.setAttribute("mathsize",n.sizeMultiplier+"em"),a}}),Je({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,n){var r=e.parser,a=!1,i=!1,o=n[0]&&Ge(n[0],"ordgroup");if(o)for(var s="",l=0;l<o.body.length;++l){if("t"===(s=o.body[l].text))a=!0;else{if("b"!==s){a=!1,i=!1;break}i=!0}}else a=!0,i=!0;var c=t[0];return{type:"smash",mode:r.mode,body:c,smashHeight:a,smashDepth:i}},htmlBuilder:function(e,t){var n=Be.makeSpan([],[ut(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return n;if(e.smashHeight&&(n.height=0,n.children))for(var r=0;r<n.children.length;r++)n.children[r].height=0;if(e.smashDepth&&(n.depth=0,n.children))for(var a=0;a<n.children.length;a++)n.children[a].depth=0;var i=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},t);return Be.makeSpan(["mord"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]);return e.smashHeight&&n.setAttribute("height","0px"),e.smashDepth&&n.setAttribute("depth","0px"),n}}),Je({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,n){var r=e.parser,a=n[0],i=t[0];return{type:"sqrt",mode:r.mode,body:i,index:a}},htmlBuilder:function(e,t){var n=ut(e.body,t.havingCrampedStyle());0===n.height&&(n.height=t.fontMetrics().xHeight),n=Be.wrapFragment(n,t);var r=t.fontMetrics().defaultRuleThickness,a=r;t.style.id<b.TEXT.id&&(a=t.fontMetrics().xHeight);var i=r+a/4,o=n.height+n.depth+i+r,s=an(o,t),l=s.span,c=s.ruleWidth,d=s.advanceWidth,_=l.height-c;_>n.height+n.depth+i&&(i=(i+_-n.height-n.depth)/2);var u=l.height-n.height-i-c;n.style.paddingLeft=d+"em";var m=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+u)},{type:"elem",elem:l},{type:"kern",size:c}]},t);if(e.index){var p=t.havingStyle(b.SCRIPTSCRIPT),g=ut(e.index,p,t),E=.6*(m.height-m.depth),h=Be.makeVList({positionType:"shift",positionData:-E,children:[{type:"elem",elem:g}]},t),S=Be.makeSpan(["root"],[h]);return Be.makeSpan(["mord","sqrt"],[S,m],t)}return Be.makeSpan(["mord","sqrt"],[m],t)},mathmlBuilder:function(e,t){var n=e.body,r=e.index;return r?new St.MathNode("mroot",[vt(n,t),vt(r,t)]):new St.MathNode("msqrt",[vt(n,t)])}});var $n={display:b.DISPLAY,text:b.TEXT,script:b.SCRIPT,scriptscript:b.SCRIPTSCRIPT};Je({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.breakOnTokenText,r=e.funcName,a=e.parser,i=a.parseExpression(!0,n),o=r.slice(1,r.length-5);return{type:"styling",mode:a.mode,style:o,body:i}},htmlBuilder:function(e,t){var n=$n[e.style],r=t.havingStyle(n).withFont("");return Wn(e.body,r,t)},mathmlBuilder:function(e,t){var n=$n[e.style],r=t.havingStyle(n),a=Ct(e.body,r),i=new St.MathNode("mstyle",a),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});et({type:"supsub",htmlBuilder:function(e,t){var n=function(e,t){var n=e.base;return n?"op"===n.type?n.limits&&(t.style.size===b.DISPLAY.size||n.alwaysHandleSupSub)?Yn:null:"operatorname"===n.type?n.alwaysHandleSupSub&&(t.style.size===b.DISPLAY.size||n.limits)?Kn:null:"accent"===n.type?_.isCharacterBox(n.base)?Lt:null:"horizBrace"===n.type&&!e.sub===n.isOver?Un:null:null}(e,t);if(n)return n(e,t);var r,a,i,o=e.base,s=e.sup,l=e.sub,c=ut(o,t),d=t.fontMetrics(),u=0,m=0,p=o&&_.isCharacterBox(o);if(s){var g=t.havingStyle(t.style.sup());r=ut(s,g,t),p||(u=c.height-g.fontMetrics().supDrop*g.sizeMultiplier/t.sizeMultiplier)}if(l){var E=t.havingStyle(t.style.sub());a=ut(l,E,t),p||(m=c.depth+E.fontMetrics().subDrop*E.sizeMultiplier/t.sizeMultiplier)}i=t.style===b.DISPLAY?d.sup1:t.style.cramped?d.sup3:d.sup2;var h,S=t.sizeMultiplier,f=.5/d.ptPerEm/S+"em",T=null;if(a){var C=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(c instanceof P||C)&&(T=-c.italic+"em")}if(r&&a){u=Math.max(u,i,r.depth+.25*d.xHeight),m=Math.max(m,d.sub2);var N=4*d.defaultRuleThickness;if(u-r.depth-(a.height-m)<N){m=N-(u-r.depth)+a.height;var v=.8*d.xHeight-(u-r.depth);v>0&&(u+=v,m-=v)}var R=[{type:"elem",elem:a,shift:m,marginRight:f,marginLeft:T},{type:"elem",elem:r,shift:-u,marginRight:f}];h=Be.makeVList({positionType:"individualShift",children:R},t)}else if(a){m=Math.max(m,d.sub1,a.height-.8*d.xHeight);var A=[{type:"elem",elem:a,marginLeft:T,marginRight:f}];h=Be.makeVList({positionType:"shift",positionData:m,children:A},t)}else{if(!r)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,r.depth+.25*d.xHeight),h=Be.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:r,marginRight:f}]},t)}var O=dt(c,"right")||"mord";return Be.makeSpan([O],[c,Be.makeSpan(["msupsub"],[h])],t)},mathmlBuilder:function(e,t){var n,r=!1,a=He(e.base,"horizBrace");a&&!!e.sup===a.isOver&&(r=!0,n=a.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var i,o=[vt(e.base,t)];if(e.sub&&o.push(vt(e.sub,t)),e.sup&&o.push(vt(e.sup,t)),r)i=n?"mover":"munder";else if(e.sub)if(e.sup){var s=e.base;i=s&&"op"===s.type&&s.limits&&t.style===b.DISPLAY?"munderover":s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(t.style===b.DISPLAY||s.limits)?"munderover":"msubsup"}else{var l=e.base;i=l&&"op"===l.type&&l.limits&&(t.style===b.DISPLAY||l.alwaysHandleSupSub)?"munder":l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===b.DISPLAY)?"munder":"msub"}else{var c=e.base;i=c&&"op"===c.type&&c.limits&&(t.style===b.DISPLAY||c.alwaysHandleSupSub)?"mover":c&&"operatorname"===c.type&&c.alwaysHandleSupSub&&(c.limits||t.style===b.DISPLAY)?"mover":"msup"}return new St.MathNode(i,o)}}),et({type:"atom",htmlBuilder:function(e,t){return Be.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[ft(e.text,e.mode)]);if("bin"===e.family){var r=bt(e,t);"bold-italic"===r&&n.setAttribute("mathvariant",r)}else"punct"===e.family?n.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||n.setAttribute("stretchy","false");return n}});var jn={mi:"italic",mn:"normal",mtext:"normal"};et({type:"mathord",htmlBuilder:function(e,t){return Be.makeOrd(e,t,"mathord")},mathmlBuilder:function(e,t){var n=new St.MathNode("mi",[ft(e.text,e.mode,t)]),r=bt(e,t)||"italic";return r!==jn[n.type]&&n.setAttribute("mathvariant",r),n}}),et({type:"textord",htmlBuilder:function(e,t){return Be.makeOrd(e,t,"textord")},mathmlBuilder:function(e,t){var n,r=ft(e.text,e.mode,t),a=bt(e,t)||"normal";return n="text"===e.mode?new St.MathNode("mtext",[r]):/[0-9]/.test(e.text)?new St.MathNode("mn",[r]):"\\prime"===e.text?new St.MathNode("mo",[r]):new St.MathNode("mi",[r]),a!==jn[n.type]&&n.setAttribute("mathvariant",a),n}});var Xn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Zn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};et({type:"spacing",htmlBuilder:function(e,t){if(Zn.hasOwnProperty(e.text)){var n=Zn[e.text].className||"";if("text"===e.mode){var r=Be.makeOrd(e,t,"textord");return r.classes.push(n),r}return Be.makeSpan(["mspace",n],[Be.mathsym(e.text,e.mode,t)],t)}if(Xn.hasOwnProperty(e.text))return Be.makeSpan(["mspace",Xn[e.text]],[],t);throw new o('Unknown type of space "'+e.text+'"')},mathmlBuilder:function(e,t){if(!Zn.hasOwnProperty(e.text)){if(Xn.hasOwnProperty(e.text))return new St.MathNode("mspace");throw new o('Unknown type of space "'+e.text+'"')}return new St.MathNode("mtext",[new St.TextNode(" ")])}});var Jn=function(){var e=new St.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};et({type:"tag",mathmlBuilder:function(e,t){var n=new St.MathNode("mtable",[new St.MathNode("mtr",[Jn(),new St.MathNode("mtd",[Nt(e.body,t)]),Jn(),new St.MathNode("mtd",[Nt(e.tag,t)])])]);return n.setAttribute("width","100%"),n}});var er={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},tr={"\\textbf":"textbf","\\textmd":"textmd"},nr={"\\textit":"textit","\\textup":"textup"},rr=function(e,t){var n=e.font;return n?er[n]?t.withTextFontFamily(er[n]):tr[n]?t.withTextFontWeight(tr[n]):t.withTextFontShape(nr[n]):t};Je({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"text",mode:n.mode,body:tt(a),font:r}},htmlBuilder:function(e,t){var n=rr(e,t),r=st(e.body,n,!0);return Be.makeSpan(["mord","text"],Be.tryCombineChars(r),n)},mathmlBuilder:function(e,t){var n=rr(e,t);return Nt(e.body,n)}}),Je({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var n=ut(e.body,t),r=Be.makeLineSpan("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Be.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:a},{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n}]},t);return Be.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[new St.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new St.MathNode("munder",[vt(e.body,t),n]);return r.setAttribute("accentunder","true"),r}}),Je({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,n){throw new o("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var n=ar(e),r=[],a=t.havingStyle(t.style.text()),i=0;i<n.length;i++){var o=n[i];"~"===o&&(o="\\textasciitilde"),r.push(Be.makeSymbol(o,"Typewriter-Regular",e.mode,a,["mord","texttt"]))}return Be.makeSpan(["mord","text"].concat(a.sizingClasses(t)),Be.tryCombineChars(r),a)},mathmlBuilder:function(e,t){var n=new St.TextNode(ar(e)),r=new St.MathNode("mtext",[n]);return r.setAttribute("mathvariant","monospace"),r}});var ar=function(e){return e.body.replace(/ /g,e.star?"␣":" ")},ir=je,or=new RegExp("^(\\\\[a-zA-Z@]+)[ \r\n\t]*$"),sr=new RegExp("[̀-ͯ]+$"),lr="([ \r\n\t]+)|([!-\\[\\]-‧‪-퟿豈-￿][̀-ͯ]*|[\ud800-\udbff][\udc00-\udfff][̀-ͯ]*|\\\\verb\\*([^]).*?\\3|\\\\verb([^*a-zA-Z]).*?\\4|\\\\operatorname\\*|\\\\[a-zA-Z@]+[ \r\n\t]*|\\\\[^\ud800-\udfff])",cr=function(){function e(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(lr,"g"),this.catcodes={"%":14}}var t=e.prototype;return t.setCatcode=function(e,t){this.catcodes[e]=t},t.lex=function(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new a("EOF",new r(this,t,t));var n=this.tokenRegex.exec(e);if(null===n||n.index!==t)throw new o("Unexpected character: '"+e[t]+"'",new a(e[t],new r(this,t,t+1)));var i=n[2]||" ";if(14===this.catcodes[i]){var s=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}var l=i.match(or);return l&&(i=l[1]),new a(i,new r(this,t,this.tokenRegex.lastIndex))},e}(),dr=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}var t=e.prototype;return t.beginGroup=function(){this.undefStack.push({})},t.endGroup=function(){if(0===this.undefStack.length)throw new o("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(void 0===e[t]?delete this.current[t]:this.current[t]=e[t])},t.has=function(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)},t.get=function(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]},t.set=function(e,t,n){if(void 0===n&&(n=!1),n){for(var r=0;r<this.undefStack.length;r++)delete this.undefStack[r][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}this.current[e]=t},e}(),_r={},ur=_r;function mr(e,t){_r[e]=t}mr("\\@firstoftwo",function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}}),mr("\\@secondoftwo",function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}}),mr("\\@ifnextchar",function(e){var t=e.consumeArgs(3),n=e.future();return 1===t[0].length&&t[0][0].text===n.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}}),mr("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),mr("\\TextOrMath",function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var pr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};mr("\\char",function(e){var t,n=e.popToken(),r="";if("'"===n.text)t=8,n=e.popToken();else if('"'===n.text)t=16,n=e.popToken();else if("`"===n.text)if("\\"===(n=e.popToken()).text[0])r=n.text.charCodeAt(1);else{if("EOF"===n.text)throw new o("\\char` missing argument");r=n.text.charCodeAt(0)}else t=10;if(t){if(null==(r=pr[n.text])||r>=t)throw new o("Invalid base-"+t+" digit "+n.text);for(var a;null!=(a=pr[e.future().text])&&a<t;)r*=t,r+=a,e.popToken()}return"\\@char{"+r+"}"});var gr=function(e,t){var n=e.consumeArgs(1)[0];if(1!==n.length)throw new o("\\gdef's first argument must be a macro name");var r=n[0].text,a=0;for(n=e.consumeArgs(1)[0];1===n.length&&"#"===n[0].text;){if(1!==(n=e.consumeArgs(1)[0]).length)throw new o('Invalid argument number length "'+n.length+'"');if(!/^[1-9]$/.test(n[0].text))throw new o('Invalid argument number "'+n[0].text+'"');if(a++,parseInt(n[0].text)!==a)throw new o('Argument number "'+n[0].text+'" out of order');n=e.consumeArgs(1)[0]}return e.macros.set(r,{tokens:n,numArgs:a},t),""};mr("\\gdef",function(e){return gr(e,!0)}),mr("\\def",function(e){return gr(e,!1)}),mr("\\global",function(e){var t=e.consumeArgs(1)[0];if(1!==t.length)throw new o("Invalid command after \\global");var n=t[0].text;if("\\def"===n)return gr(e,!0);throw new o("Invalid command '"+n+"' after \\global")});var Er=function(e,t,n){var r=e.consumeArgs(1)[0];if(1!==r.length)throw new o("\\newcommand's first argument must be a macro name");var a=r[0].text,i=e.isDefined(a);if(i&&!t)throw new o("\\newcommand{"+a+"} attempting to redefine "+a+"; use \\renewcommand");if(!i&&!n)throw new o("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var s=0;if(1===(r=e.consumeArgs(1)[0]).length&&"["===r[0].text){for(var l="",c=e.expandNextToken();"]"!==c.text&&"EOF"!==c.text;)l+=c.text,c=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new o("Invalid number of arguments: "+l);s=parseInt(l),r=e.consumeArgs(1)[0]}return e.macros.set(a,{tokens:r,numArgs:s}),""};mr("\\newcommand",function(e){return Er(e,!1,!0)}),mr("\\renewcommand",function(e){return Er(e,!0,!1)}),mr("\\providecommand",function(e){return Er(e,!0,!0)}),mr("\\bgroup","{"),mr("\\egroup","}"),mr("\\lq","`"),mr("\\rq","'"),mr("\\aa","\\r a"),mr("\\AA","\\r A"),mr("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}"),mr("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),mr("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"),mr("ℬ","\\mathscr{B}"),mr("ℰ","\\mathscr{E}"),mr("ℱ","\\mathscr{F}"),mr("ℋ","\\mathscr{H}"),mr("ℐ","\\mathscr{I}"),mr("ℒ","\\mathscr{L}"),mr("ℳ","\\mathscr{M}"),mr("ℛ","\\mathscr{R}"),mr("ℭ","\\mathfrak{C}"),mr("ℌ","\\mathfrak{H}"),mr("ℨ","\\mathfrak{Z}"),mr("\\Bbbk","\\Bbb{k}"),mr("·","\\cdotp"),mr("\\llap","\\mathllap{\\textrm{#1}}"),mr("\\rlap","\\mathrlap{\\textrm{#1}}"),mr("\\clap","\\mathclap{\\textrm{#1}}"),mr("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),mr("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"),mr("\\ne","\\neq"),mr("≠","\\neq"),mr("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"),mr("∉","\\notin"),mr("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"),mr("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"),mr("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"),mr("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"),mr("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"),mr("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"),mr("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"),mr("⟂","\\perp"),mr("‼","\\mathclose{!\\mkern-0.8mu!}"),mr("∌","\\notni"),mr("⌜","\\ulcorner"),mr("⌝","\\urcorner"),mr("⌞","\\llcorner"),mr("⌟","\\lrcorner"),mr("©","\\copyright"),mr("®","\\textregistered"),mr("️","\\textregistered"),mr("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}"),mr("⋮","\\vdots"),mr("\\varGamma","\\mathit{\\Gamma}"),mr("\\varDelta","\\mathit{\\Delta}"),mr("\\varTheta","\\mathit{\\Theta}"),mr("\\varLambda","\\mathit{\\Lambda}"),mr("\\varXi","\\mathit{\\Xi}"),mr("\\varPi","\\mathit{\\Pi}"),mr("\\varSigma","\\mathit{\\Sigma}"),mr("\\varUpsilon","\\mathit{\\Upsilon}"),mr("\\varPhi","\\mathit{\\Phi}"),mr("\\varPsi","\\mathit{\\Psi}"),mr("\\varOmega","\\mathit{\\Omega}"),mr("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),mr("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu"),mr("\\boxed","\\fbox{$\\displaystyle{#1}$}"),mr("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),mr("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),mr("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var hr={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};mr("\\dots",function(e){var t="\\dotso",n=e.expandAfterFuture().text;return n in hr?t=hr[n]:"\\not"===n.substr(0,4)?t="\\dotsb":n in Q.math&&_.contains(["bin","rel"],Q.math[n].group)&&(t="\\dotsb"),t});var Sr={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};mr("\\dotso",function(e){return e.future().text in Sr?"\\ldots\\,":"\\ldots"}),mr("\\dotsc",function(e){var t=e.future().text;return t in Sr&&","!==t?"\\ldots\\,":"\\ldots"}),mr("\\cdots",function(e){return e.future().text in Sr?"\\@cdots\\,":"\\@cdots"}),mr("\\dotsb","\\cdots"),mr("\\dotsm","\\cdots"),mr("\\dotsi","\\!\\cdots"),mr("\\dotsx","\\ldots\\,"),mr("\\DOTSI","\\relax"),mr("\\DOTSB","\\relax"),mr("\\DOTSX","\\relax"),mr("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),mr("\\,","\\tmspace+{3mu}{.1667em}"),mr("\\thinspace","\\,"),mr("\\>","\\mskip{4mu}"),mr("\\:","\\tmspace+{4mu}{.2222em}"),mr("\\medspace","\\:"),mr("\\;","\\tmspace+{5mu}{.2777em}"),mr("\\thickspace","\\;"),mr("\\!","\\tmspace-{3mu}{.1667em}"),mr("\\negthinspace","\\!"),mr("\\negmedspace","\\tmspace-{4mu}{.2222em}"),mr("\\negthickspace","\\tmspace-{5mu}{.277em}"),mr("\\enspace","\\kern.5em "),mr("\\enskip","\\hskip.5em\\relax"),mr("\\quad","\\hskip1em\\relax"),mr("\\qquad","\\hskip2em\\relax"),mr("\\tag","\\@ifstar\\tag@literal\\tag@paren"),mr("\\tag@paren","\\tag@literal{({#1})}"),mr("\\tag@literal",function(e){if(e.macros.get("\\df@tag"))throw new o("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),mr("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),mr("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),mr("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),mr("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),mr("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),mr("\\\\","\\newline"),mr("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var fr=G["Main-Regular"]["T".charCodeAt(0)][1]-.7*G["Main-Regular"]["A".charCodeAt(0)][1]+"em";mr("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+fr+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),mr("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+fr+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),mr("\\hspace","\\@ifstar\\@hspacer\\@hspace"),mr("\\@hspace","\\hskip #1\\relax"),mr("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),mr("\\ordinarycolon",":"),mr("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),mr("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),mr("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),mr("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),mr("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),mr("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),mr("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),mr("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),mr("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),mr("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),mr("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),mr("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),mr("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),mr("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),mr("∷","\\dblcolon"),mr("∹","\\eqcolon"),mr("≔","\\coloneqq"),mr("≕","\\eqqcolon"),mr("⩴","\\Coloneqq"),mr("\\ratio","\\vcentcolon"),mr("\\coloncolon","\\dblcolon"),mr("\\colonequals","\\coloneqq"),mr("\\coloncolonequals","\\Coloneqq"),mr("\\equalscolon","\\eqqcolon"),mr("\\equalscoloncolon","\\Eqqcolon"),mr("\\colonminus","\\coloneq"),mr("\\coloncolonminus","\\Coloneq"),mr("\\minuscolon","\\eqcolon"),mr("\\minuscoloncolon","\\Eqcolon"),mr("\\coloncolonapprox","\\Colonapprox"),mr("\\coloncolonsim","\\Colonsim"),mr("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),mr("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),mr("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),mr("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),mr("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),mr("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),mr("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),mr("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}"),mr("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}"),mr("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}"),mr("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}"),mr("\\nleqq","\\html@mathml{\\@nleqq}{≰}"),mr("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}"),mr("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}"),mr("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}"),mr("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}"),mr("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}"),mr("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}"),mr("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}"),mr("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}"),mr("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}"),mr("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),mr("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),mr("⟦","\\llbracket"),mr("⟧","\\rrbracket"),mr("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),mr("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),mr("⦃","\\lBrace"),mr("⦄","\\rBrace"),mr("\\darr","\\downarrow"),mr("\\dArr","\\Downarrow"),mr("\\Darr","\\Downarrow"),mr("\\lang","\\langle"),mr("\\rang","\\rangle"),mr("\\uarr","\\uparrow"),mr("\\uArr","\\Uparrow"),mr("\\Uarr","\\Uparrow"),mr("\\N","\\mathbb{N}"),mr("\\R","\\mathbb{R}"),mr("\\Z","\\mathbb{Z}"),mr("\\alef","\\aleph"),mr("\\alefsym","\\aleph"),mr("\\Alpha","\\mathrm{A}"),mr("\\Beta","\\mathrm{B}"),mr("\\bull","\\bullet"),mr("\\Chi","\\mathrm{X}"),mr("\\clubs","\\clubsuit"),mr("\\cnums","\\mathbb{C}"),mr("\\Complex","\\mathbb{C}"),mr("\\Dagger","\\ddagger"),mr("\\diamonds","\\diamondsuit"),mr("\\empty","\\emptyset"),mr("\\Epsilon","\\mathrm{E}"),mr("\\Eta","\\mathrm{H}"),mr("\\exist","\\exists"),mr("\\harr","\\leftrightarrow"),mr("\\hArr","\\Leftrightarrow"),mr("\\Harr","\\Leftrightarrow"),mr("\\hearts","\\heartsuit"),mr("\\image","\\Im"),mr("\\infin","\\infty"),mr("\\Iota","\\mathrm{I}"),mr("\\isin","\\in"),mr("\\Kappa","\\mathrm{K}"),mr("\\larr","\\leftarrow"),mr("\\lArr","\\Leftarrow"),mr("\\Larr","\\Leftarrow"),mr("\\lrarr","\\leftrightarrow"),mr("\\lrArr","\\Leftrightarrow"),mr("\\Lrarr","\\Leftrightarrow"),mr("\\Mu","\\mathrm{M}"),mr("\\natnums","\\mathbb{N}"),mr("\\Nu","\\mathrm{N}"),mr("\\Omicron","\\mathrm{O}"),mr("\\plusmn","\\pm"),mr("\\rarr","\\rightarrow"),mr("\\rArr","\\Rightarrow"),mr("\\Rarr","\\Rightarrow"),mr("\\real","\\Re"),mr("\\reals","\\mathbb{R}"),mr("\\Reals","\\mathbb{R}"),mr("\\Rho","\\mathrm{P}"),mr("\\sdot","\\cdot"),mr("\\sect","\\S"),mr("\\spades","\\spadesuit"),mr("\\sub","\\subset"),mr("\\sube","\\subseteq"),mr("\\supe","\\supseteq"),mr("\\Tau","\\mathrm{T}"),mr("\\thetasym","\\vartheta"),mr("\\weierp","\\wp"),mr("\\Zeta","\\mathrm{Z}"),mr("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),mr("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),mr("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),mr("\\blue","\\textcolor{##6495ed}{#1}"),mr("\\orange","\\textcolor{##ffa500}{#1}"),mr("\\pink","\\textcolor{##ff00af}{#1}"),mr("\\red","\\textcolor{##df0030}{#1}"),mr("\\green","\\textcolor{##28ae7b}{#1}"),mr("\\gray","\\textcolor{gray}{#1}"),mr("\\purple","\\textcolor{##9d38bd}{#1}"),mr("\\blueA","\\textcolor{##ccfaff}{#1}"),mr("\\blueB","\\textcolor{##80f6ff}{#1}"),mr("\\blueC","\\textcolor{##63d9ea}{#1}"),mr("\\blueD","\\textcolor{##11accd}{#1}"),mr("\\blueE","\\textcolor{##0c7f99}{#1}"),mr("\\tealA","\\textcolor{##94fff5}{#1}"),mr("\\tealB","\\textcolor{##26edd5}{#1}"),mr("\\tealC","\\textcolor{##01d1c1}{#1}"),mr("\\tealD","\\textcolor{##01a995}{#1}"),mr("\\tealE","\\textcolor{##208170}{#1}"),mr("\\greenA","\\textcolor{##b6ffb0}{#1}"),mr("\\greenB","\\textcolor{##8af281}{#1}"),mr("\\greenC","\\textcolor{##74cf70}{#1}"),mr("\\greenD","\\textcolor{##1fab54}{#1}"),mr("\\greenE","\\textcolor{##0d923f}{#1}"),mr("\\goldA","\\textcolor{##ffd0a9}{#1}"),mr("\\goldB","\\textcolor{##ffbb71}{#1}"),mr("\\goldC","\\textcolor{##ff9c39}{#1}"),mr("\\goldD","\\textcolor{##e07d10}{#1}"),mr("\\goldE","\\textcolor{##a75a05}{#1}"),mr("\\redA","\\textcolor{##fca9a9}{#1}"),mr("\\redB","\\textcolor{##ff8482}{#1}"),mr("\\redC","\\textcolor{##f9685d}{#1}"),mr("\\redD","\\textcolor{##e84d39}{#1}"),mr("\\redE","\\textcolor{##bc2612}{#1}"),mr("\\maroonA","\\textcolor{##ffbde0}{#1}"),mr("\\maroonB","\\textcolor{##ff92c6}{#1}"),mr("\\maroonC","\\textcolor{##ed5fa6}{#1}"),mr("\\maroonD","\\textcolor{##ca337c}{#1}"),mr("\\maroonE","\\textcolor{##9e034e}{#1}"),mr("\\purpleA","\\textcolor{##ddd7ff}{#1}"),mr("\\purpleB","\\textcolor{##c6b9fc}{#1}"),mr("\\purpleC","\\textcolor{##aa87ff}{#1}"),mr("\\purpleD","\\textcolor{##7854ab}{#1}"),mr("\\purpleE","\\textcolor{##543b78}{#1}"),mr("\\mintA","\\textcolor{##f5f9e8}{#1}"),mr("\\mintB","\\textcolor{##edf2df}{#1}"),mr("\\mintC","\\textcolor{##e0e5cc}{#1}"),mr("\\grayA","\\textcolor{##f6f7f7}{#1}"),mr("\\grayB","\\textcolor{##f0f1f2}{#1}"),mr("\\grayC","\\textcolor{##e3e5e6}{#1}"),mr("\\grayD","\\textcolor{##d6d8da}{#1}"),mr("\\grayE","\\textcolor{##babec2}{#1}"),mr("\\grayF","\\textcolor{##888d93}{#1}"),mr("\\grayG","\\textcolor{##626569}{#1}"),mr("\\grayH","\\textcolor{##3b3e40}{#1}"),mr("\\grayI","\\textcolor{##21242c}{#1}"),mr("\\kaBlue","\\textcolor{##314453}{#1}"),mr("\\kaGreen","\\textcolor{##71B307}{#1}");var Tr={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},br=function(){function e(e,t,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new dr(ur,t.macros),this.mode=n,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new cr(e,this.settings)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},t.consumeArgs=function(e){for(var t=[],n=0;n<e;++n){this.consumeSpaces();var r=this.popToken();if("{"===r.text){for(var a=[],i=1;0!==i;){var s=this.popToken();if(a.push(s),"{"===s.text)++i;else if("}"===s.text)--i;else if("EOF"===s.text)throw new o("End of input in macro argument",r)}a.pop(),a.reverse(),t[n]=a}else{if("EOF"===r.text)throw new o("End of input expecting macro argument");t[n]=[r]}}return t},t.expandOnce=function(){var e=this.popToken(),t=e.text,n=this._getExpansion(t);if(null==n)return this.pushToken(e),e;if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new o("Too many expansions: infinite loop or need to increase maxExpand setting");var r=n.tokens;if(n.numArgs)for(var a=this.consumeArgs(n.numArgs),i=(r=r.slice()).length-1;i>=0;--i){var s=r[i];if("#"===s.text){if(0===i)throw new o("Incomplete placeholder at end of macro body",s);if("#"===(s=r[--i]).text)r.splice(i+1,1);else{if(!/^[1-9]$/.test(s.text))throw new o("Not a valid argument number",s);var l;(l=r).splice.apply(l,[i,2].concat(a[+s.text-1]))}}}return this.pushTokens(r),r},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof a){if("\\relax"!==e.text)return this.stack.pop();this.stack.pop()}}throw new Error},t.expandMacro=function(e){if(this.macros.get(e)){var t=[],n=this.stack.length;for(this.pushToken(new a(e));this.stack.length>n;){this.expandOnce()instanceof a&&t.push(this.stack.pop())}return t}},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map(function(e){return e.text}).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;var n="function"==typeof t?t(this):t;if("string"==typeof n){var r=0;if(-1!==n.indexOf("#"))for(var a=n.replace(/##/g,"");-1!==a.indexOf("#"+(r+1));)++r;for(var i=new cr(n,this.settings),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();return o.reverse(),{tokens:o,numArgs:r}}return n},t.isDefined=function(e){return this.macros.has(e)||ir.hasOwnProperty(e)||Q.math.hasOwnProperty(e)||Q.text.hasOwnProperty(e)||Tr.hasOwnProperty(e)},e}(),Cr={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"}},Nr={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"},vr=function(){function e(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new br(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var t=e.prototype;return t.expect=function(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new o("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()},t.consume=function(){this.nextToken=null},t.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},t.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},t.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var e=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),e},t.parseExpression=function(t,n){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==e.endOfExpression.indexOf(a.text))break;if(n&&a.text===n)break;if(t&&ir[a.text]&&ir[a.text].infix)break;var i=this.parseAtom(n);if(!i)break;r.push(i)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)},t.handleInfixNodes=function(e){for(var t,n=-1,r=0;r<e.length;r++){var a=He(e[r],"infix");if(a){if(-1!==n)throw new o("only one infix operator per group",a.token);n=r,t=a.replaceWith}}if(-1!==n&&t){var i,s,l=e.slice(0,n),c=e.slice(n+1);return i=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},s=1===c.length&&"ordgroup"===c[0].type?c[0]:{type:"ordgroup",mode:this.mode,body:c},["\\\\abovefrac"===t?this.callFunction(t,[i,e[n],s],[]):this.callFunction(t,[i,s],[])]}return e},t.handleSupSubscript=function(t){var n=this.fetch(),r=n.text;this.consume();var a=this.parseGroup(t,!1,e.SUPSUB_GREEDINESS,void 0,void 0,!0);if(!a)throw new o("Expected group after '"+r+"'",n);return a},t.formatUnsupportedCmd=function(e){for(var t=[],n=0;n<e.length;n++)t.push({type:"textord",mode:"text",text:e[n]});var r={type:"text",mode:this.mode,body:t};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[r]}},t.parseAtom=function(e){var t,n,r=this.parseGroup("atom",!1,null,e);if("text"===this.mode)return r;for(;;){this.consumeSpaces();var a=this.fetch();if("\\limits"===a.text||"\\nolimits"===a.text){var i=He(r,"op");if(i){var s="\\limits"===a.text;i.limits=s,i.alwaysHandleSupSub=!0}else{if(!(i=He(r,"operatorname"))||!i.alwaysHandleSupSub)throw new o("Limit controls must follow a math operator",a);var l="\\limits"===a.text;i.limits=l}this.consume()}else if("^"===a.text){if(t)throw new o("Double superscript",a);t=this.handleSupSubscript("superscript")}else if("_"===a.text){if(n)throw new o("Double subscript",a);n=this.handleSupSubscript("subscript")}else{if("'"!==a.text)break;if(t)throw new o("Double superscript",a);var c={type:"textord",mode:this.mode,text:"\\prime"},d=[c];for(this.consume();"'"===this.fetch().text;)d.push(c),this.consume();"^"===this.fetch().text&&d.push(this.handleSupSubscript("superscript")),t={type:"ordgroup",mode:this.mode,body:d}}}return t||n?{type:"supsub",mode:this.mode,base:r,sup:t,sub:n}:r},t.parseFunction=function(e,t,n){var r=this.fetch(),a=r.text,i=ir[a];if(!i)return null;if(this.consume(),null!=n&&i.greediness<=n)throw new o("Got function '"+a+"' with no arguments"+(t?" as "+t:""),r);if("text"===this.mode&&!i.allowedInText)throw new o("Can't use function '"+a+"' in text mode",r);if("math"===this.mode&&!1===i.allowedInMath)throw new o("Can't use function '"+a+"' in math mode",r);var s=this.parseArguments(a,i),l=s.args,c=s.optArgs;return this.callFunction(a,l,c,r,e)},t.callFunction=function(e,t,n,r,a){var i={funcName:e,parser:this,token:r,breakOnTokenText:a},s=ir[e];if(s&&s.handler)return s.handler(i,t,n);throw new o("No function handler for "+e)},t.parseArguments=function(e,t){var n=t.numArgs+t.numOptionalArgs;if(0===n)return{args:[],optArgs:[]};for(var r=t.greediness,a=[],i=[],s=0;s<n;s++){var l=t.argTypes&&t.argTypes[s],c=s<t.numOptionalArgs,d=s>0&&!c||0===s&&!c&&"math"===this.mode,_=this.parseGroupOfType("argument to '"+e+"'",l,c,r,d);if(!_){if(c){i.push(null);continue}throw new o("Expected group after '"+e+"'",this.fetch())}(c?i:a).push(_)}return{args:a,optArgs:i}},t.parseGroupOfType=function(e,t,n,r,a){switch(t){case"color":return a&&this.consumeSpaces(),this.parseColorGroup(n);case"size":return a&&this.consumeSpaces(),this.parseSizeGroup(n);case"url":return this.parseUrlGroup(n,a);case"math":case"text":return this.parseGroup(e,n,r,void 0,t,a);case"hbox":var i=this.parseGroup(e,n,r,void 0,"text",a);return i?{type:"styling",mode:i.mode,body:[i],style:"text"}:i;case"raw":if(a&&this.consumeSpaces(),n&&"{"===this.fetch().text)return null;var s=this.parseStringGroup("raw",n,!0);if(s)return{type:"raw",mode:"text",string:s.text};throw new o("Expected raw group",this.fetch());case"original":case null:case void 0:return this.parseGroup(e,n,r,void 0,void 0,a);default:throw new o("Unknown group type as "+e,this.fetch())}},t.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},t.parseStringGroup=function(e,t,n){var r=t?"[":"{",a=t?"]":"}",i=this.fetch();if(i.text!==r){if(t)return null;if(n&&"EOF"!==i.text&&/[^{}[\]]/.test(i.text))return this.consume(),i}var s=this.mode;this.mode="text",this.expect(r);for(var l,c="",d=this.fetch(),_=0,u=d;(l=this.fetch()).text!==a||n&&_>0;){switch(l.text){case"EOF":throw new o("Unexpected end of input in "+e,d.range(u,c));case r:_++;break;case a:_--}c+=(u=l).text,this.consume()}return this.expect(a),this.mode=s,d.range(u,c)},t.parseRegexGroup=function(e,t){var n=this.mode;this.mode="text";for(var r,a=this.fetch(),i=a,s="";"EOF"!==(r=this.fetch()).text&&e.test(s+r.text);)s+=(i=r).text,this.consume();if(""===s)throw new o("Invalid "+t+": '"+a.text+"'",a);return this.mode=n,a.range(i,s)},t.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(!t)return null;var n=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!n)throw new o("Invalid color: '"+t.text+"'",t);var r=n[0];return/^[0-9a-f]{6}$/i.test(r)&&(r="#"+r),{type:"color-token",mode:this.mode,color:r}},t.parseSizeGroup=function(e){var t,n=!1;if(!(t=e||"{"===this.fetch().text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;e||0!==t.text.length||(t.text="0pt",n=!0);var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!r)throw new o("Invalid size: '"+t.text+"'",t);var a={number:+(r[1]+r[2]),unit:r[3]};if(!Ae(a))throw new o("Invalid unit: '"+a.unit+"'",t);return{type:"size",mode:this.mode,value:a,isBlank:n}},t.parseUrlGroup=function(e,t){this.gullet.lexer.setCatcode("%",13);var n=this.parseStringGroup("url",e,!0);if(this.gullet.lexer.setCatcode("%",14),!n)return null;var r=n.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:r}},t.parseGroup=function(t,n,a,i,s,l){var c=this.mode;s&&this.switchMode(s),l&&this.consumeSpaces();var d,_=this.fetch(),u=_.text;if(n?"["===u:"{"===u||"\\begingroup"===u){this.consume();var m=e.endOfGroup[u];this.gullet.beginGroup();var p=this.parseExpression(!1,m),g=this.fetch();this.expect(m),this.gullet.endGroup(),d={type:"ordgroup",mode:this.mode,loc:r.range(_,g),body:p,semisimple:"\\begingroup"===u||void 0}}else if(n)d=null;else if(null==(d=this.parseFunction(i,t,a)||this.parseSymbol())&&"\\"===u[0]&&!Tr.hasOwnProperty(u)){if(this.settings.throwOnError)throw new o("Undefined control sequence: "+u,_);d=this.formatUnsupportedCmd(u),this.consume()}return s&&this.switchMode(c),d},t.formLigatures=function(e){for(var t=e.length-1,n=0;n<t;++n){var a=e[n],i=a.text;"-"===i&&"-"===e[n+1].text&&(n+1<t&&"-"===e[n+2].text?(e.splice(n,3,{type:"textord",mode:"text",loc:r.range(a,e[n+2]),text:"---"}),t-=2):(e.splice(n,2,{type:"textord",mode:"text",loc:r.range(a,e[n+1]),text:"--"}),t-=1)),"'"!==i&&"`"!==i||e[n+1].text!==i||(e.splice(n,2,{type:"textord",mode:"text",loc:r.range(a,e[n+1]),text:i+i}),t-=1)}},t.parseSymbol=function(){var e=this.fetch(),t=e.text;if(/^\\verb[^a-zA-Z]/.test(t)){this.consume();var n=t.slice(5),a="*"===n.charAt(0);if(a&&(n=n.slice(1)),n.length<2||n.charAt(0)!==n.slice(-1))throw new o("\\verb assertion failed --\n                    please report what input caused this bug");return{type:"verb",mode:"text",body:n=n.slice(1,-1),star:a}}Nr.hasOwnProperty(t[0])&&!Q[this.mode][t[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+t[0]+'" used in math mode',e),t=Nr[t[0]]+t.substr(1));var i,s=sr.exec(t);if(s&&("i"===(t=t.substring(0,s.index))?t="ı":"j"===t&&(t="ȷ")),Q[this.mode][t]){this.settings.strict&&"math"===this.mode&&"ÇÐÞçþ".indexOf(t)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var l,c=Q[this.mode][t].group,d=r.range(e);if(q.hasOwnProperty(c)){var _=c;l={type:"atom",mode:this.mode,family:_,loc:d,text:t}}else l={type:c,mode:this.mode,loc:d,text:t};i=l}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(v(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),i={type:"textord",mode:"text",loc:r.range(e),text:t}}if(this.consume(),s)for(var u=0;u<s[0].length;u++){var m=s[0][u];if(!Cr[m])throw new o("Unknown accent ' "+m+"'",e);var p=Cr[m][this.mode];if(!p)throw new o("Accent "+m+" unsupported in "+this.mode+" mode",e);i={type:"accent",mode:this.mode,loc:r.range(e),label:p,isStretchy:!1,isShifty:!0,base:i}}return i},e}();vr.endOfExpression=["}","\\endgroup","\\end","\\right","&"],vr.endOfGroup={"[":"]","{":"}","\\begingroup":"\\endgroup"},vr.SUPSUB_GREEDINESS=1;var Rr=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var n=new vr(e,t);delete n.gullet.macros.current["\\df@tag"];var r=n.parse();if(n.gullet.macros.get("\\df@tag")){if(!t.displayMode)throw new o("\\tag works only in display equations");n.gullet.feed("\\df@tag"),r=[{type:"tag",mode:"text",body:r,tag:n.parse()}]}return r},Ar=function(e,t,n){t.textContent="";var r=yr(e,n).toNode();t.appendChild(r)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),Ar=function(){throw new o("KaTeX doesn't work in quirks mode.")});var Or=function(e,t,n){if(n.throwOnError||!(e instanceof o))throw e;var r=Be.makeSpan(["katex-error"],[new P(t)]);return r.setAttribute("title",e.toString()),r.setAttribute("style","color:"+n.errorColor),r},yr=function(e,t){var n=new u(t);try{return function(e,t,n){var r,a=At(n);if("mathml"===n.output)return Rt(e,t,a,!0);if("html"===n.output){var i=pt(e,a);r=Be.makeSpan(["katex"],[i])}else{var o=Rt(e,t,a,!1),s=pt(e,a);r=Be.makeSpan(["katex"],[o,s])}return Ot(r,n)}(Rr(e,n),e,n)}catch(t){return Or(t,e,n)}},Ir={version:"0.11.1",render:Ar,renderToString:function(e,t){return yr(e,t).toMarkup()},ParseError:o,__parse:function(e,t){var n=new u(t);return Rr(e,n)},__renderToDomTree:yr,__renderToHTMLTree:function(e,t){var n=new u(t);try{return function(e,t,n){var r=pt(e,At(n)),a=Be.makeSpan(["katex"],[r]);return Ot(a,n)}(Rr(e,n),0,n)}catch(t){return Or(t,e,n)}},__setFontMetrics:function(e,t){G[e]=t},__defineSymbol:$,__defineMacro:mr,__domTree:{Span:x,Anchor:M,SymbolNode:P,SvgNode:k,PathNode:U,LineNode:F}};t.default=Ir}]).default},e.exports=n()});(Ll=Pl)&&Ll.__esModule&&Object.prototype.hasOwnProperty.call(Ll,"default")&&Ll.default;var kl=Object.prototype.hasOwnProperty,Ul=Object.prototype.toString,Fl=Object.defineProperty,Bl=Object.getOwnPropertyDescriptor,Gl=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===Ul.call(e)},Hl=function(e){if(!e||"[object Object]"!==Ul.call(e))return!1;var t,n=kl.call(e,"constructor"),r=e.constructor&&e.constructor.prototype&&kl.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||kl.call(e,t)},Yl=function(e,t){Fl&&"__proto__"===t.name?Fl(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},Vl=function(e,t){if("__proto__"===t){if(!kl.call(e,t))return;if(Bl)return Bl(e,t).value}return e[t]},zl=function e(){var t,n,r,a,i,o,s=arguments[0],l=1,c=arguments.length,d=!1;for("boolean"==typeof s&&(d=s,s=arguments[1]||{},l=2),(null==s||"object"!=typeof s&&"function"!=typeof s)&&(s={});l<c;++l)if(null!=(t=arguments[l]))for(n in t)r=Vl(s,n),s!==(a=Vl(t,n))&&(d&&a&&(Hl(a)||(i=Gl(a)))?(i?(i=!1,o=r&&Gl(r)?r:[]):o=r&&Hl(r)?r:{},Yl(s,{name:n,newValue:e(d,o,a)})):void 0!==a&&Yl(s,{name:n,newValue:a}));return s},ql=function(e){if(e)throw e};var Kl={}.hasOwnProperty,Wl=function(e){if(!e||"object"!=typeof e)return"";if(Kl.call(e,"position")||Kl.call(e,"type"))return $l(e.position);if(Kl.call(e,"start")||Kl.call(e,"end"))return $l(e);if(Kl.call(e,"line")||Kl.call(e,"column"))return Ql(e);return""};function Ql(e){return e&&"object"==typeof e||(e={}),jl(e.line)+":"+jl(e.column)}function $l(e){return e&&"object"==typeof e||(e={}),Ql(e.start)+"-"+Ql(e.end)}function jl(e){return e&&"number"==typeof e?e:1}var Xl=ec;function Zl(){}Zl.prototype=Error.prototype,ec.prototype=new Zl;var Jl=ec.prototype;function ec(e,t,n){var r,a,i;"string"==typeof t&&(n=t,t=null),r=function(e){var t,n=[null,null];"string"==typeof e&&(-1===(t=e.indexOf(":"))?n[1]=e:(n[0]=e.slice(0,t),n[1]=e.slice(t+1)));return n}(n),a=Wl(t)||"1:1",i={start:{line:null,column:null},end:{line:null,column:null}},t&&t.position&&(t=t.position),t&&(t.start?(i=t,t=t.start):i.start=t),e.stack&&(this.stack=e.stack,e=e.message),this.message=e,this.name=a,this.reason=e,this.line=t?t.line:null,this.column=t?t.column:null,this.location=i,this.source=r[0],this.ruleId=r[1]}Jl.file="",Jl.name="",Jl.reason="",Jl.message="",Jl.stack="",Jl.fatal=null,Jl.column=null,Jl.line=null;var tc="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function nc(){throw new Error("setTimeout has not been defined")}function rc(){throw new Error("clearTimeout has not been defined")}var ac=nc,ic=rc;function oc(e){if(ac===setTimeout)return setTimeout(e,0);if((ac===nc||!ac)&&setTimeout)return ac=setTimeout,setTimeout(e,0);try{return ac(e,0)}catch(t){try{return ac.call(null,e,0)}catch(t){return ac.call(this,e,0)}}}"function"==typeof tc.setTimeout&&(ac=setTimeout),"function"==typeof tc.clearTimeout&&(ic=clearTimeout);var sc,lc=[],cc=!1,dc=-1;function _c(){cc&&sc&&(cc=!1,sc.length?lc=sc.concat(lc):dc=-1,lc.length&&uc())}function uc(){if(!cc){var e=oc(_c);cc=!0;for(var t=lc.length;t;){for(sc=lc,lc=[];++dc<t;)sc&&sc[dc].run();dc=-1,t=lc.length}sc=null,cc=!1,function(e){if(ic===clearTimeout)return clearTimeout(e);if((ic===rc||!ic)&&clearTimeout)return ic=clearTimeout,clearTimeout(e);try{ic(e)}catch(t){try{return ic.call(null,e)}catch(t){return ic.call(this,e)}}}(e)}}function mc(e,t){this.fun=e,this.array=t}mc.prototype.run=function(){this.fun.apply(null,this.array)};function pc(){}var gc=pc,Ec=pc,hc=pc,Sc=pc,fc=pc,Tc=pc,bc=pc;var Cc=tc.performance||{},Nc=Cc.now||Cc.mozNow||Cc.msNow||Cc.oNow||Cc.webkitNow||function(){return(new Date).getTime()};var vc=new Date;var Rc={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];lc.push(new mc(e,t)),1!==lc.length||cc||oc(uc)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:gc,addListener:Ec,once:hc,off:Sc,removeListener:fc,removeAllListeners:Tc,emit:bc,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*Nc.call(Cc),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-vc)/1e3}};function Ac(e,t){for(var n=0,r=e.length-1;r>=0;r--){var a=e[r];"."===a?e.splice(r,1):".."===a?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var Oc=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,yc=function(e){return Oc.exec(e).slice(1)};function Ic(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var r=n>=0?arguments[n]:"/";if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return e=Ac(wc(e.split("/"),function(e){return!!e}),!t).join("/"),(t?"/":"")+e||"."}function Dc(e){var t=xc(e),n="/"===Lc(e,-1);return(e=Ac(wc(e.split("/"),function(e){return!!e}),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e}function xc(e){return"/"===e.charAt(0)}var Mc={extname:function(e){return yc(e)[3]},basename:function(e,t){var n=yc(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},dirname:function(e){var t=yc(e),n=t[0],r=t[1];return n||r?(r&&(r=r.substr(0,r.length-1)),n+r):"."},sep:"/",delimiter:":",relative:function(e,t){function n(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=Ic(e).substr(1),t=Ic(t).substr(1);for(var r=n(e.split("/")),a=n(t.split("/")),i=Math.min(r.length,a.length),o=i,s=0;s<i;s++)if(r[s]!==a[s]){o=s;break}var l=[];for(s=o;s<r.length;s++)l.push("..");return(l=l.concat(a.slice(o))).join("/")},join:function(){return Dc(wc(Array.prototype.slice.call(arguments,0),function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},isAbsolute:xc,normalize:Dc,resolve:Ic};function wc(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}var Lc="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)};var Pc=function(e,t){if("string"!=typeof e)return e;if(0===e.length)return e;var n=Mc.basename(e,Mc.extname(e))+t;return Mc.join(Mc.dirname(e),n)},kc=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},Uc=Hc,Fc={}.hasOwnProperty,Bc=Hc.prototype,Gc=["history","path","basename","stem","extname","dirname"];function Hc(e){var t,n,r;if(e){if("string"==typeof e||kc(e))e={contents:e};else if("message"in e&&"messages"in e)return e}else e={};if(!(this instanceof Hc))return new Hc(e);for(this.data={},this.messages=[],this.history=[],this.cwd=Rc.cwd(),n=-1,r=Gc.length;++n<r;)t=Gc[n],Fc.call(e,t)&&(this[t]=e[t]);for(t in e)-1===Gc.indexOf(t)&&(this[t]=e[t])}function Yc(e,t){if(-1!==e.indexOf(Mc.sep))throw new Error("`"+t+"` cannot be a path: did not expect `"+Mc.sep+"`")}function Vc(e,t){if(!e)throw new Error("`"+t+"` cannot be empty")}function zc(e,t){if(!e)throw new Error("Setting `"+t+"` requires `path` to be set too")}Bc.toString=function(e){var t=this.contents||"";return kc(t)?t.toString(e):String(t)},Object.defineProperty(Bc,"path",{get:function(){return this.history[this.history.length-1]},set:function(e){Vc(e,"path"),e!==this.path&&this.history.push(e)}}),Object.defineProperty(Bc,"dirname",{get:function(){return"string"==typeof this.path?Mc.dirname(this.path):void 0},set:function(e){zc(this.path,"dirname"),this.path=Mc.join(e||"",this.basename)}}),Object.defineProperty(Bc,"basename",{get:function(){return"string"==typeof this.path?Mc.basename(this.path):void 0},set:function(e){Vc(e,"basename"),Yc(e,"basename"),this.path=Mc.join(this.dirname||"",e)}}),Object.defineProperty(Bc,"extname",{get:function(){return"string"==typeof this.path?Mc.extname(this.path):void 0},set:function(e){var t=e||"";if(Yc(t,"extname"),zc(this.path,"extname"),t){if("."!==t.charAt(0))throw new Error("`extname` must start with `.`");if(-1!==t.indexOf(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=Pc(this.path,t)}}),Object.defineProperty(Bc,"stem",{get:function(){return"string"==typeof this.path?Mc.basename(this.path,this.extname):void 0},set:function(e){Vc(e,"stem"),Yc(e,"stem"),this.path=Mc.join(this.dirname||"",e+(this.extname||""))}});var qc=Uc,Kc=Uc.prototype;Kc.message=function(e,t,n){var r=this.path,a=new Xl(e,t,n);r&&(a.name=r+":"+a.name,a.file=r);return a.fatal=!1,this.messages.push(a),a},Kc.info=function(){var e=this.message.apply(this,arguments);return e.fatal=null,e},Kc.fail=function(){var e=this.message.apply(this,arguments);throw e.fatal=!0,e};var Wc=[].slice,Qc=function(e,t){var n;return function(){var t,i=Wc.call(arguments,0),o=e.length>i.length;o&&i.push(r);try{t=e.apply(null,i)}catch(e){if(o&&n)throw e;return r(e)}o||(t&&"function"==typeof t.then?t.then(a,r):t instanceof Error?r(t):a(t))};function r(){n||(n=!0,t.apply(null,arguments))}function a(e){r(null,e)}};var $c=Xc;Xc.wrap=Qc;var jc=[].slice;function Xc(){var e=[],t={run:function(){var t=-1,n=jc.call(arguments,0,-1),r=arguments[arguments.length-1];if("function"!=typeof r)throw new Error("Expected function as last argument, not "+r);(function a(i){var o=e[++t];var s=jc.call(arguments,0);var l=s.slice(1);var c=n.length;var d=-1;if(i)return void r(i);for(;++d<c;)null!==l[d]&&void 0!==l[d]||(l[d]=n[d]);n=l;o?Qc(o,a).apply(null,n):r.apply(null,[null].concat(n))}).apply(null,[null].concat(n))},use:function(n){if("function"!=typeof n)throw new Error("Expected `fn` to be a function, not "+n);return e.push(n),t}};return t}var Zc=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.getPrototypeOf({})},Jc=function e(){var t=[];var n=$c();var r={};var a=!1;var i=-1;o.data=function(e,t){if("string"==typeof e)return 2===arguments.length?(od("data",a),r[e]=t,o):td.call(r,e)&&r[e]||null;if(e)return od("data",a),r=e,o;return r};o.freeze=s;o.attachers=t;o.use=function(e){var n;if(od("use",a),null===e||void 0===e);else if("function"==typeof e)c.apply(null,arguments);else{if("object"!=typeof e)throw new Error("Expected usable value, not `"+e+"`");"length"in e?l(e):i(e)}n&&(r.settings=zl(r.settings||{},n));return o;function i(e){l(e.plugins),e.settings&&(n=zl(n||{},e.settings))}function s(e){if("function"==typeof e)c(e);else{if("object"!=typeof e)throw new Error("Expected usable value, not `"+e+"`");"length"in e?c.apply(null,e):i(e)}}function l(e){var t,n;if(null===e||void 0===e);else{if(!("object"==typeof e&&"length"in e))throw new Error("Expected a list of plugins, not `"+e+"`");for(t=e.length,n=-1;++n<t;)s(e[n])}}function c(e,n){var r=function(e){var n,r=t.length,a=-1;for(;++a<r;)if((n=t[a])[0]===e)return n}(e);r?(Zc(r[1])&&Zc(n)&&(n=zl(r[1],n)),r[1]=n):t.push(ed.call(arguments))}};o.parse=function(e){var t,n=qc(e);if(s(),ad("parse",t=o.Parser),rd(t,"parse"))return new t(String(n),n).parse();return t(String(n),n)};o.stringify=function(e,t){var n,r=qc(t);if(s(),id("stringify",n=o.Compiler),sd(e),rd(n,"compile"))return new n(e,r).compile();return n(e,r)};o.run=l;o.runSync=function(e,t){var n,r=!1;return l(e,t,function(e,t){r=!0,ql(e),n=t}),ld("runSync","run",r),n};o.process=c;o.processSync=function(e){var t,n=!1;return s(),ad("processSync",o.Parser),id("processSync",o.Compiler),c(t=qc(e),function(e){n=!0,ql(e)}),ld("processSync","process",n),t};return o;function o(){for(var n=e(),a=t.length,i=-1;++i<a;)n.use.apply(null,t[i]);return n.data(zl(!0,{},r)),n}function s(){var e,r,s,l;if(a)return o;for(;++i<t.length;)e=t[i],r=e[0],s=e[1],l=null,!1!==s&&(!0===s&&(e[1]=void 0),"function"==typeof(l=r.apply(o,e.slice(1)))&&n.use(l));return a=!0,i=1/0,o}function l(e,t,r){if(sd(e),s(),r||"function"!=typeof t||(r=t,t=null),!r)return new Promise(a);function a(a,i){n.run(e,qc(t),function(t,n,o){n=n||e,t?i(t):a?a(n):r(null,n,o)})}a(null,r)}function c(e,t){if(s(),ad("process",o.Parser),id("process",o.Compiler),!t)return new Promise(n);function n(n,r){var a=qc(e);nd.run(o,{file:a},function(e){e?r(e):n?n(a):t(null,a)})}n(null,t)}}().freeze(),ed=[].slice,td={}.hasOwnProperty,nd=$c().use(function(e,t){t.tree=e.parse(t.file)}).use(function(e,t,n){e.run(t.tree,t.file,function(e,r,a){e?n(e):(t.tree=r,t.file=a,n())})}).use(function(e,t){t.file.contents=e.stringify(t.tree,t.file)});function rd(e,t){return"function"==typeof e&&e.prototype&&(function(e){var t;for(t in e)return!0;return!1}(e.prototype)||t in e.prototype)}function ad(e,t){if("function"!=typeof t)throw new Error("Cannot `"+e+"` without `Parser`")}function id(e,t){if("function"!=typeof t)throw new Error("Cannot `"+e+"` without `Compiler`")}function od(e,t){if(t)throw new Error("Cannot invoke `"+e+"` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.")}function sd(e){if(!e||"string"!=typeof e.type)throw new Error("Expected node, got `"+e+"`")}function ld(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}const cd={reason:"Unexpected metadata element after head",description:"Unexpected element after head. Expected the element before `</head>`",url:!1},dd={reason:"Unexpected abruptly closed empty comment",description:"Unexpected `>` or `->`. Expected `--\x3e` to close comments"},_d={reason:"Unexpected abruptly closed public identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the public identifier"},ud={reason:"Unexpected abruptly closed system identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the identifier identifier"},md={reason:"Unexpected non-digit at start of numeric character reference",description:"Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references"},pd={reason:"Unexpected CDATA section in HTML",description:"Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead"},gd={reason:"Unexpected too big numeric character reference",description:"Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)"},Ed={reason:"Unexpected closing tag with open child elements",description:"Unexpectedly closing tag. Expected other tags to be closed first",url:!1},hd={reason:"Unexpected control character",description:"Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace"},Sd={reason:"Unexpected control character reference",description:"Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace"},fd={reason:"Disallowed content inside `<noscript>` in `<head>`",description:"Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`",url:!1},Td={reason:"Unexpected duplicate attribute",description:"Unexpectedly double attribute. Expected attributes to occur only once"},bd={reason:"Unexpected attribute on closing tag",description:"Unexpected attribute. Expected `>` instead"},Cd={reason:"Unexpected slash at end of closing tag",description:"Unexpected `%c-1`. Expected `>` instead"},Nd={reason:"Unexpected unopened end tag",description:"Unexpected end tag. Expected no end tag or another end tag",url:!1},vd={reason:"Unexpected end of file",description:"Unexpected end of file. Expected tag name instead"},Rd={reason:"Unexpected end of file in CDATA",description:"Unexpected end of file. Expected `]]>` to close the CDATA"},Ad={reason:"Unexpected end of file in comment",description:"Unexpected end of file. Expected `--\x3e` to close the comment"},Od={reason:"Unexpected end of file in doctype",description:"Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)"},yd={reason:"Unexpected end of file in element that can only contain text",description:"Unexpected end of file. Expected text or a closing tag",url:!1},Id={reason:"Unexpected end of file in comment inside script",description:"Unexpected end of file. Expected `--\x3e` to close the comment"},Dd={reason:"Unexpected end of file in tag",description:"Unexpected end of file. Expected `>` to close the tag"},xd={reason:"Incorrectly closed comment",description:"Unexpected `%c-1`. Expected `--\x3e` to close the comment"},Md={reason:"Incorrectly opened comment",description:"Unexpected `%c`. Expected `\x3c!--` to open the comment"},wd={reason:"Invalid sequence after doctype name",description:"Unexpected sequence at `%c`. Expected `public` or `system`"},Ld={reason:"Invalid first character in tag name",description:"Unexpected `%c`. Expected an ASCII letter instead"},Pd={reason:"Misplaced doctype",description:"Unexpected doctype. Expected doctype before head",url:!1},kd={reason:"Misplaced `<head>` start tag",description:"Unexpected start tag `<head>`. Expected `<head>` directly after doctype",url:!1},Ud={reason:"Missing attribute value",description:"Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead"},Fd={reason:"Missing doctype before other content",description:"Expected a `<!doctype html>` before anything else",url:!1},Bd={reason:"Missing doctype name",description:"Unexpected doctype end at `%c`. Expected `html` instead"},Gd={reason:"Missing public identifier in doctype",description:"Unexpected `%c`. Expected identifier for `public` instead"},Hd={reason:"Missing system identifier in doctype",description:'Unexpected `%c`. Expected identifier for `system` instead (suggested: `"about:legacy-compat"`)'},Yd={reason:"Missing name in end tag",description:"Unexpected `%c`. Expected an ASCII letter instead"},Vd={reason:"Missing quote before public identifier in doctype",description:"Unexpected `%c`. Expected `\"` or `'` instead"},zd={reason:"Missing quote before system identifier in doctype",description:"Unexpected `%c`. Expected `\"` or `'` instead"},qd={reason:"Missing semicolon after character reference",description:"Unexpected `%c`. Expected `;` instead"},Kd={reason:"Missing whitespace after public identifier in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},Wd={reason:"Missing whitespace after system identifier in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},Qd={reason:"Missing whitespace before doctype name",description:"Unexpected `%c`. Expected ASCII whitespace instead"},$d={reason:"Missing whitespace between attributes",description:"Unexpected `%c`. Expected ASCII whitespace instead"},jd={reason:"Missing whitespace between public and system identifiers in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},Xd={reason:"Unexpected nested comment",description:"Unexpected `\x3c!--`. Expected `--\x3e`"},Zd={reason:"Unexpected nested `<noscript>` in `<head>`",description:"Unexpected `<noscript>`. Expected a closing tag or a meta element",url:!1},Jd={reason:"Unexpected non-conforming doctype declaration",description:'Expected `<!doctype html>` or `<!doctype html system "about:legacy-compat">`',url:!1},e_={reason:"Unexpected trailing slash on start tag of non-void element",description:"Unexpected `/`. Expected `>` instead"},t_={reason:"Unexpected noncharacter code point referenced by character reference",description:"Unexpected code point. Do not use noncharacters in HTML"},n_={reason:"Unexpected noncharacter character",description:"Unexpected code point `%x`. Do not use noncharacters in HTML"},r_={reason:"Unexpected NULL character referenced by character reference",description:"Unexpected code point. Do not use NULL characters in HTML"},a_={reason:"Unexpected end of file",description:"Unexpected end of file. Expected closing tag instead",url:!1},i_={reason:"Unexpected surrogate character referenced by character reference",description:"Unexpected code point. Do not use lone surrogate characters in HTML"},o_={reason:"Unexpected surrogate character",description:"Unexpected code point `%x`. Do not use lone surrogate characters in HTML"},s_={reason:"Invalid character after system identifier in doctype",description:"Unexpected character at `%c`. Expected `>`"},l_={reason:"Unexpected character in attribute name",description:"Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter"},c_={reason:"Unexpected character in unquoted attribute value",description:"Unexpected `%c`. Quote the attribute value to include it"},d_={reason:"Unexpected equals sign before attribute name ",description:"Unexpected `%c`. Add an attribute name before it"},__={reason:"Unexpected NULL character",description:"Unexpected code point `%x`. Do not use NULL characters in HTML"},u_={reason:"Unexpected question mark instead of tag name",description:"Unexpected `%c`. Expected an ASCII letter instead"},m_={reason:"Unexpected slash in tag",description:"Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value"},p_={reason:"Unexpected unknown named character reference",description:"Unexpected character reference. Expected known named character references"};var g_={abandonedHeadElementChild:cd,abruptClosingOfEmptyComment:dd,abruptDoctypePublicIdentifier:_d,abruptDoctypeSystemIdentifier:ud,absenceOfDigitsInNumericCharacterReference:md,cdataInHtmlContent:pd,characterReferenceOutsideUnicodeRange:gd,closingOfElementWithOpenChildElements:Ed,controlCharacterInInputStream:hd,controlCharacterReference:Sd,disallowedContentInNoscriptInHead:fd,duplicateAttribute:Td,endTagWithAttributes:bd,endTagWithTrailingSolidus:Cd,endTagWithoutMatchingOpenElement:Nd,eofBeforeTagName:vd,eofInCdata:Rd,eofInComment:Ad,eofInDoctype:Od,eofInElementThatCanContainOnlyText:yd,eofInScriptHtmlCommentLikeText:Id,eofInTag:Dd,incorrectlyClosedComment:xd,incorrectlyOpenedComment:Md,invalidCharacterSequenceAfterDoctypeName:wd,invalidFirstCharacterOfTagName:Ld,misplacedDoctype:Pd,misplacedStartTagForHeadElement:kd,missingAttributeValue:Ud,missingDoctype:Fd,missingDoctypeName:Bd,missingDoctypePublicIdentifier:Gd,missingDoctypeSystemIdentifier:Hd,missingEndTagName:Yd,missingQuoteBeforeDoctypePublicIdentifier:Vd,missingQuoteBeforeDoctypeSystemIdentifier:zd,missingSemicolonAfterCharacterReference:qd,missingWhitespaceAfterDoctypePublicKeyword:Kd,missingWhitespaceAfterDoctypeSystemKeyword:Wd,missingWhitespaceBeforeDoctypeName:Qd,missingWhitespaceBetweenAttributes:$d,missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:jd,nestedComment:Xd,nestedNoscriptInHead:Zd,nonConformingDoctype:Jd,nonVoidHtmlElementStartTagWithTrailingSolidus:e_,noncharacterCharacterReference:t_,noncharacterInInputStream:n_,nullCharacterReference:r_,openElementsLeftAfterEof:a_,surrogateCharacterReference:i_,surrogateInInputStream:o_,unexpectedCharacterAfterDoctypeSystemIdentifier:s_,unexpectedCharacterInAttributeName:l_,unexpectedCharacterInUnquotedAttributeValue:c_,unexpectedEqualsSignBeforeAttributeName:d_,unexpectedNullCharacter:__,unexpectedQuestionMarkInsteadOfTagName:u_,unexpectedSolidusInTag:m_,unknownNamedCharacterReference:p_},E_=C(Object.freeze({abandonedHeadElementChild:cd,abruptClosingOfEmptyComment:dd,abruptDoctypePublicIdentifier:_d,abruptDoctypeSystemIdentifier:ud,absenceOfDigitsInNumericCharacterReference:md,cdataInHtmlContent:pd,characterReferenceOutsideUnicodeRange:gd,closingOfElementWithOpenChildElements:Ed,controlCharacterInInputStream:hd,controlCharacterReference:Sd,disallowedContentInNoscriptInHead:fd,duplicateAttribute:Td,endTagWithAttributes:bd,endTagWithTrailingSolidus:Cd,endTagWithoutMatchingOpenElement:Nd,eofBeforeTagName:vd,eofInCdata:Rd,eofInComment:Ad,eofInDoctype:Od,eofInElementThatCanContainOnlyText:yd,eofInScriptHtmlCommentLikeText:Id,eofInTag:Dd,incorrectlyClosedComment:xd,incorrectlyOpenedComment:Md,invalidCharacterSequenceAfterDoctypeName:wd,invalidFirstCharacterOfTagName:Ld,misplacedDoctype:Pd,misplacedStartTagForHeadElement:kd,missingAttributeValue:Ud,missingDoctype:Fd,missingDoctypeName:Bd,missingDoctypePublicIdentifier:Gd,missingDoctypeSystemIdentifier:Hd,missingEndTagName:Yd,missingQuoteBeforeDoctypePublicIdentifier:Vd,missingQuoteBeforeDoctypeSystemIdentifier:zd,missingSemicolonAfterCharacterReference:qd,missingWhitespaceAfterDoctypePublicKeyword:Kd,missingWhitespaceAfterDoctypeSystemKeyword:Wd,missingWhitespaceBeforeDoctypeName:Qd,missingWhitespaceBetweenAttributes:$d,missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:jd,nestedComment:Xd,nestedNoscriptInHead:Zd,nonConformingDoctype:Jd,nonVoidHtmlElementStartTagWithTrailingSolidus:e_,noncharacterCharacterReference:t_,noncharacterInInputStream:n_,nullCharacterReference:r_,openElementsLeftAfterEof:a_,surrogateCharacterReference:i_,surrogateInInputStream:o_,unexpectedCharacterAfterDoctypeSystemIdentifier:s_,unexpectedCharacterInAttributeName:l_,unexpectedCharacterInUnquotedAttributeValue:c_,unexpectedEqualsSignBeforeAttributeName:d_,unexpectedNullCharacter:__,unexpectedQuestionMarkInsteadOfTagName:u_,unexpectedSolidusInTag:m_,unknownNamedCharacterReference:p_,default:g_})),h_="https://html.spec.whatwg.org/multipage/parsing.html#parse-error-",S_={2:!0,1:!1,0:null},f_=function(t){var n=e(t,this.data("settings")),r=n.position;r="boolean"!=typeof r||r,this.Parser=function(e,t){var a=n.fragment?"parseFragment":"parse",i=n.emitParseErrors?function(r){var a,i,o=r.code,s=(m=o,m.replace(/-[a-z]/g,T_)),l=n[s],c=void 0===l||null===l||l,d="number"==typeof c?c:c?1:0,_={line:r.startLine,column:r.startCol,offset:r.startOffset},u={line:r.endLine,column:r.endCol,offset:r.endOffset};var m;d&&(a=E_[s]||{reason:"",description:""},(i=t.message(p(a.reason),{start:_,end:u})).source="parse-error",i.ruleId=o,i.fatal=S_[d],i.note=p(a.description),i.url=!1===a.url?null:h_+o);function p(e){return e.replace(/%c(?:-(\d+))?/g,g).replace(/%x/g,E)}function g(t,n){var a=n?-parseInt(n,10):0,i=e.charAt(r.startOffset+a);return"`"===i?"` ` `":i}function E(){var t=e.charCodeAt(r.startOffset).toString(16).toUpperCase();return"0x"+t}}:null,o=new Qa({sourceCodeLocationInfo:r,onParseError:i,scriptingEnabled:!1});return Ts(o[a](e),{space:n.space,file:t,verbose:n.verbose})}};function T_(e){return e.charAt(1).toUpperCase()}var b_=function(e,t){var n;if(null!==t&&void 0!==t&&"string"!=typeof t&&("object"!=typeof t||0===t.length))throw new Error("Expected `string` or `Array.<string>` for `tagNames`, not `"+t+"`");if(!e||"object"!=typeof e||"element"!==e.type||"string"!=typeof e.tagName)return!1;if(null===t||void 0===t)return!0;if(n=e.tagName,"string"==typeof t)return n===t;return-1!==t.indexOf(n)};var C_=function(e,t,n){var r,a,i,o=s(n);if(!e||!e.type||!e.children)throw new Error("Expected parent node");r=e.children,i=r.length,t&&t.type&&(t=r.indexOf(t));if(isNaN(t)||t<0||t===1/0)throw new Error("Expected positive finite index or child node");for(;++t<i;)if(a=r[t],o(a,t,e))return a;return null};var N_=function(e){var t,n,r,a,i,o=e.children||[],s=o.length,l=Z_(e),c=Q_(e,{}),d=-1;if("text"===e.type||"comment"===e.type)return q_(e,{whiteSpace:c,breakBefore:!0,breakAfter:!0});t=[];for(;++d<s;)n=z_(o[d],d,e,{whiteSpace:c,breakBefore:0===d&&l,breakAfter:d===s-1?l:b_(o[d+1],"br")}),t=t.concat(n);d=-1,s=t.length,r=[];for(;++d<s;)"number"==typeof(a=t[d])?void 0!==i&&a>i&&(i=a):""!==a&&(i&&r.push(H(Y_,i)),i=0,r.push(a));return r.join("")},v_=Math.min,R_=Math.max,A_=9,O_=32,y_=8203,I_=1564,D_=8206,x_=8207,M_=8234,w_=8235,L_=8236,P_=8237,k_=8238,U_=8294,F_=8295,B_=8296,G_=8297,H_="\t",Y_="\n",V_=" ";function z_(e,t,n,r){return"element"===e.type?function(e,t,n,r){var a,i,o,s=Q_(e,r),l=e.children||[],c=l.length,d=-1,_=[];if(function(e){var t=e.properties||{};return b_(e,["datalist","head","noembed","noframes","rp","script","style","template","title","noscript"])||t.hidden||b_(e,"dialog")&&!t.open}(e))return _;b_(e,"br")?o=Y_:X_(e)&&C_(n,e,X_)?o=Y_:b_(e,"p")?(i=2,o=2):Z_(e)&&(i=1,o=1);for(;++d<c;)a=z_(l[d],d,e,{whiteSpace:s,breakBefore:0===d&&i,breakAfter:d===c-1?o:b_(l[d+1],"br")}),_=_.concat(a);j_(e)&&C_(n,e,j_)&&_.push(H_);i&&_.unshift(i);o&&_.push(o);return _}(e,0,n,r):"text"===e.type?["normal"===r.whiteSpace?q_(e,r):function(e){return String(e.value)}(e)]:[]}function q_(e,t){var n,r,a,i,o,s=t.breakBefore,l=t.breakAfter,c=String(e.value),d=-1,_=c.length,u=[],m=[];for(n=0,r=-1===(r=c.indexOf(Y_))?c.length:r;-1!==r&&(a=W_(a=K_(a=c.slice(n,r)),s,l),u.push(a),r!==c.length);)n=r+1,r=-1===(r=c.indexOf(Y_,n))?c.length:r;for(d=-1,_=u.length,o="";++d<_;)a=u[d],i=u[d+1]||"",a.charCodeAt(a.length-1)!==y_&&i.charCodeAt(0)!==y_?a&&(o&&m.push(o),m.push(a),o=V_):(m.push(a),o="");return m.join("")}function K_(e){for(var t=-1,n=e.length,r="";++t<n;)$_(e.charCodeAt(t))||(r+=e.charAt(t));return r}function W_(e,t,n){for(var r,a,i=0,o=e.length,s=[];i<=o&&((a=e.charCodeAt(i))===O_||a===A_);)i++;for(0===i||t||s.push(""),r=l(i-1);i<o;){for(r=-1===r?o:r,s.push(e.slice(i,r)),i=r;i<=o&&((a=e.charCodeAt(i))===O_||a===A_);)i++;i!==o||i===r||n||s.push(""),r=l(i)}return s.join(" ");function l(t){var n=e.indexOf(V_,t+1),r=e.indexOf(H_,t+1);return(-1===n||-1===r?R_:v_)(n,r)}}function Q_(e,t){var n=e.properties||{},r=t.whiteSpace||"normal";switch(e.tagName){case"listing":case"plaintext":case"xmp":return"pre";case"nobr":return"nowrap";case"pre":return n.wrap?"pre-wrap":"pre";case"td":case"th":return n.noWrap?"nowrap":r;case"textarea":return"pre-wrap";default:return r}}function $_(e){switch(e){case I_:case D_:case x_:case M_:case w_:case L_:case P_:case k_:case U_:case F_:case B_:case G_:return!0;default:return!1}}function j_(e){return b_(e,["th","td"])}function X_(e){return b_(e,["tr"])}function Z_(e){return b_(e,["caption","html","body","address","blockquote","center","dialog","div","figure","figcaption","footer","form,","header","hr","legend","listing","main","p","plaintext","pre","xmp","article","aside","h1","h2","h3","h4","h5","h6","hgroup","nav","section","dir","dd","dl","dt","menu","ol","ul"])}const J_=Pl.renderToString;var eu=function(e){const t=(e||{}).throwOnError||!1;return function(n,r){Il(n,"element",function(n){const a=n.properties.className||[],i=a.includes("math-inline"),o=a.includes("math-display");if(!i&&!o)return;const s=N_(n);let l;try{l=J_(s,tu({},e,{displayMode:o,throwOnError:!0}))}catch(a){const i=t?"fail":"message",c=[ru,a.name.toLowerCase()].join(":");r[i](a.message,n.position,c),l=J_(s,tu({},e,{displayMode:o,throwOnError:!1,strict:"ignore"}))}n.children=nu.parse(l).children})}};const tu=Object.assign,nu=Jc().use(f_,{fragment:!0,position:!1}),ru="rehype-katex";var au=function(e){var t;if(e&&"object"==typeof e&&"text"===e.type)t=e.value||"";else{if("string"!=typeof e)return!1;t=e}return""===t.replace(iu,"")},iu=/[ \t\n\f\r]/g;function ou(e){return function(t,n,r){var a,i=t&&t.children;if(n+=e,a=i&&i[n],!r)for(;a&&au(a);)a=i[n+=e];return a}}var su={before:ou(-1),after:ou(1)},lu=su.after,cu=function(e,t){return lu(e,-1,t)};var du=function(e,t){return e&&e.children&&e.children.indexOf(t)};var _u=function(e){return uu(e)&&au(e.value.charAt(0))},uu=s("text");var mu=function(e){return function(t,n,r){var a=t.tagName,i=!!pu.call(e,a)&&e[a];return!!i&&i(t,n,r)}},pu={}.hasOwnProperty;var gu=su.after,Eu=s("comment"),hu="optgroup",Su=["option"].concat(hu),fu=["dt","dd"],Tu="li",bu=["menuitem","hr","menu"],Cu=["rp","rt"],Nu=["tbody","tfoot"],vu="tr",Ru=["td","th"],Au=["a","audio","del","ins","map","noscript","video"],Ou=["address","article","aside","blockquote","details","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","menu","nav","ol","p","pre","section","table","ul"],yu=mu({html:function(e,t,n){var r=gu(n,t);return!r||!Eu(r)},head:Iu,body:function(e,t,n){var r=gu(n,t);return!r||!Eu(r)},p:function(e,t,n){var r=gu(n,t);return r?b_(r,Ou):!n||!b_(n,Au)},li:function(e,t,n){var r=gu(n,t);return!r||b_(r,Tu)},dt:function(e,t,n){var r=gu(n,t);return r&&b_(r,fu)},dd:function(e,t,n){var r=gu(n,t);return!r||b_(r,fu)},rt:Du,rp:Du,optgroup:function(e,t,n){var r=gu(n,t);return!r||b_(r,hu)},option:function(e,t,n){var r=gu(n,t);return!r||b_(r,Su)},menuitem:function(e,t,n){var r=gu(n,t);return!r||b_(r,bu)},colgroup:Iu,caption:Iu,thead:function(e,t,n){var r=gu(n,t);return r&&b_(r,Nu)},tbody:function(e,t,n){var r=gu(n,t);return!r||b_(r,Nu)},tfoot:function(e,t,n){return!gu(n,t)},tr:function(e,t,n){var r=gu(n,t);return!r||b_(r,vu)},td:xu,th:xu});function Iu(e,t,n){var r=gu(n,t,!0);return!r||!Eu(r)&&!_u(r)}function Du(e,t,n){var r=gu(n,t);return!r||b_(r,Cu)}function xu(e,t,n){var r=gu(n,t);return!r||b_(r,Ru)}var Mu=su.before,wu={}.hasOwnProperty,Lu=s("comment"),Pu=["title","base"],ku=["meta","link","script","style","template"],Uu=["thead","tbody"],Fu="tr";var Bu={opening:mu({html:function(e){var t=cu(e);return!t||!Lu(t)},head:function(e){var t,n,r=e.children,a=r.length,i={},o=-1;for(;++o<a;)if(t=r[o],n=t.tagName,b_(t,Pu)){if(wu.call(i,n))return!1;i[n]=!0}return Boolean(a)},body:function(e){var t=cu(e,!0);return!t||!Lu(t)&&!_u(t)&&!b_(t,ku)},colgroup:function(e,t,n){var r=Mu(n,t),a=cu(e,!0);if(b_(r,"colgroup")&&yu(r,du(n,r),n))return!1;return a&&b_(a,"col")},tbody:function(e,t,n){var r=Mu(n,t),a=cu(e);if(b_(r,Uu)&&yu(r,du(n,r),n))return!1;return a&&b_(a,Fu)}}),closing:yu},Gu=function(e,t){var n=t&&t.children,r=n&&n.length,a=-1,i=[];for(;++a<r;)i[a]=Mm(e,n[a],a,t);return i.join("")};var Hu={nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",fnof:"ƒ",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€"},Yu=Object.freeze({nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",fnof:"ƒ",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€",default:Hu});var Vu={AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ"},zu=Object.freeze({AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ",default:Vu}),qu=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57};var Ku=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57};var Wu=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90};var Qu=function(e){return Wu(e)||Ku(e)};var $u=Object.freeze({default:["cent","copy","divide","gt","lt","not","para","times"]}),ju=C(Yu),Xu=C(zu),Zu=C($u),Ju=Ku,em=om;om.escape=function(e){return om(e,{escapeOnly:!0,useNamedReferences:!0})};var tm={}.hasOwnProperty,nm=function(){var e,t={};for(e in ju)t[ju[e]]=e;return t}(),rm=lm(['"',"'","<",">","&","`"]),am=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,im=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;function om(e,t){var n=t||{},r=n.subset,a=r?lm(r):rm,i=n.escapeOnly,o=n.omitOptionalSemicolons;return e=e.replace(a,s),r||i?e:e.replace(am,function(e,t,n){return sm(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)-56320+65536,n.charAt(t+2),o)}).replace(im,s);function s(e,t,r){return function(e,t,n){var r,a,i,o,s=n.useShortestReferences,l=n.omitOptionalSemicolons;(s||n.useNamedReferences)&&tm.call(nm,e)&&(r=function(e,t,n,r){var a="&"+e;if(n&&tm.call(Xu,e)&&-1===Zu.indexOf(e)&&(!r||t&&"="!==t&&!Qu(t)))return a;return a+";"}(nm[e],t,l,n.attribute));!s&&r||(a=e.charCodeAt(0),i=sm(a,t,l),s&&(o=function(e,t,n){var r="&#"+String(e);return n&&t&&!Ju(t)?r:r+";"}(a,t,l)).length<i.length&&(i=o));if(r&&(!s||r.length<i.length))return r;return i}(e,r.charAt(t+1),n)}}function sm(e,t,n){var r="&#x"+e.toString(16).toUpperCase();return n&&t&&!qu(t)?r:r+";"}function lm(e){return new RegExp("["+e.join("")+"]","g")}var cm=function(t,n,r,a){var i=n.value;return function(e){return e&&("script"===e.tagName||"style"===e.tagName)}(a)?i:em(i,e(t.entities,{subset:["<","&"]}))};var dm=[" ","\t","\n","\r","\f"],_m=dm.concat("&","/",">","="),um=dm.concat("&",">"),mm=um.concat("\0",'"',"'","<","=","`"),pm=["&","'"],gm=["&",'"'],Em={name:[[_m,_m.concat('"',"'","`")],[_m.concat("\0",'"',"'","<"),_m.concat("\0",'"',"'","<","`")]],unquoted:[[um,mm],[mm,mm]],single:[[pm,pm.concat('"',"`")],[pm.concat("\0"),pm.concat("\0",'"',"`")]],double:[[gm,gm.concat("'","`")],[gm.concat("\0"),gm.concat("\0","'","`")]]},hm=ts.stringify,Sm=ss.stringify,fm=function(e,t,n,r){var a,i,o,s,l,c,d=e.schema,_=t.tagName,u="",m=t;"html"===d.space&&"svg"===_&&(e.schema=Do);l=function(e,t){var n,r,a,i,o,s,l=[];for(n in t)null!=(r=t[n])&&(a=Om(e,n,r))&&l.push(a);for(i=l.length,o=-1;++o<i;)a=l[o],s=null,e.tight&&(s=a.charAt(a.length-1)),o!==i-1&&s!==bm&&s!==Cm&&(l[o]=a+Tm);return l.join("")}(e,t.properties),"svg"===e.schema.space?(o=!1,i=!0,a=e.closeEmpty):(o=e.omit,i=e.close,a=-1!==e.voids.indexOf(_.toLowerCase()),"template"===_&&(m=t.content));s=Gu(e,m),a=!s&&a,!l&&o&&o.opening(t,n,r)||(u=vm+_+(l?Tm+l:""),a&&i&&(c=l.charAt(l.length-1),(!e.tightClose||c===Am||"svg"===e.schema.space&&c&&c!==bm&&c!==Cm)&&(u+=Tm),u+=Am),u+=Rm);u+=s,a||o&&o.closing(t,n,r)||(u+=vm+Am+_+Rm);return e.schema=d,u},Tm=" ",bm='"',Cm="'",Nm="=",vm="<",Rm=">",Am="/";function Om(t,n,r){var a=t.schema,i=Mo(a,n),o=i.attribute;return!i.overloadedBoolean||r!==o&&""!==r?(i.boolean||i.overloadedBoolean&&"string"!=typeof r)&&(r=Boolean(r)):r=!0,null==r||!1===r||"number"==typeof r&&isNaN(r)?"":(o=function(t,n){var r="html"===t.schema.space?t.valid:1,a=Em.name[r][t.safe];return em(n,e(t.entities,{subset:a}))}(t,o),!0===r?o:o+function(t,n,r,a){var i,o,s=t.entities,l=t.quote,c=t.alternative;"object"==typeof r&&"length"in r&&(r=(a.commaSeparated?Sm:hm)(r,{padLeft:!t.tightLists}));!(r=String(r))&&t.collapseEmpty||(i=r,t.unquoted&&(o=Em.unquoted[t.valid][t.safe],i=em(r,e(s,{subset:o,attribute:!0}))),t.unquoted&&i===r||(c&&Ss(r,l)>Ss(r,c)&&(l=c),o=(o=l===Cm?Em.single:Em.double)["html"===t.schema.space?t.valid:1][t.safe],r=em(r,e(s,{subset:o,attribute:!0})),r=l+r+l),r=r?Nm+r:r);return r}(t,0,r,i))}var ym=function(e,t){var n=e.tightDoctype?"":" ",r=t.name,a=t.public,i=t.system,o=["<!doctype"];r&&(o.push(n,r),null!=a?o.push(" public",n,Im(a)):null!=i&&o.push(" system"),null!=i&&o.push(n,Im(i)));return o.join("")+">"};function Im(e){var t=-1===e.indexOf('"')?'"':"'";return t+e+t}var Dm=function(e,t){return"\x3c!--"+t.value+"--\x3e"};var xm=function(e,t){return e.dangerous?t.value:cm(e,t)};var Mm=function(e,t,n,r){var a=t&&t.type;if(!a)throw new Error("Expected node, not `"+t+"`");if(!wm.call(Lm,a))throw new Error("Cannot compile unknown node `"+a+"`");return Lm[a](e,t,n,r)},wm={}.hasOwnProperty,Lm={};Lm.root=Gu,Lm.text=cm,Lm.element=fm,Lm.doctype=ym,Lm.comment=Dm,Lm.raw=xm;var Pm=function(e,t){var n=t||{},r=n.quote||km,a=r===km?Um:km,i=n.quoteSmart;if(r!==km&&r!==Um)throw new Error("Invalid quote `"+r+"`, expected `"+Um+"` or `"+km+"`");return Mm({valid:n.allowParseErrors?0:1,safe:n.allowDangerousCharacters?0:1,schema:"svg"===n.space?Do:vo,omit:n.omitOptionalTags&&Bu,quote:r,alternative:i?a:null,unquoted:Boolean(n.preferUnquoted),tight:n.tightAttributes,tightDoctype:Boolean(n.tightDoctype),tightLists:n.tightCommaSeparatedLists,tightClose:n.tightSelfClosing,collapseEmpty:n.collapseEmptyAttributes,dangerous:n.allowDangerousHTML,voids:n.voids||sl.concat(),entities:n.entities||{},close:n.closeSelfClosing,closeEmpty:n.closeEmptyElements},e)},km='"',Um="'";var Fm=Pm,Bm=function(t){var n=e(t,this.data("settings"));this.Compiler=function(e){return Fm(e,n)}};var Gm=b(function(e){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}),Hm=function(t){var n,r,a;for(r in Gm(o,t),Gm(i,o),n=o.prototype)(a=n[r])&&"object"==typeof a&&(n[r]="concat"in a?a.concat():e(a));return o;function i(e){return t.apply(this,e)}function o(){return this instanceof o?t.apply(this,arguments):new i(arguments)}};var Ym=function(e,t,n){return function(){var r=n||this,a=r[e];return r[e]=!t,function(){r[e]=a}}};var Vm=function(e){var t=function(e){var t=[],n=e.indexOf("\n");for(;-1!==n;)t.push(n+1),n=e.indexOf("\n",n+1);return t.push(e.length+1),t}(String(e));return{toPosition:function(e){return function(t){var n=-1,r=e.length;if(t<0)return{};for(;++n<r;)if(e[n]>t)return{line:n+1,column:t-(e[n-1]||0)+1,offset:t};return{}}}(t),toOffset:function(e){return function(t){var n=t&&t.line,r=t&&t.column;if(!isNaN(n)&&!isNaN(r)&&n-1 in e)return(e[n-2]||0)+r-1||0;return-1}}(t)}};var zm=function(e,t){return function(n){var r,a=0,i=n.indexOf(qm),o=e[t],s=[];for(;-1!==i;)s.push(n.slice(a,i)),a=i+1,(r=n.charAt(a))&&-1!==o.indexOf(r)||s.push(qm),i=n.indexOf(qm,a+1);return s.push(n.slice(a)),s.join("")}},qm="\\";var Km,Wm=59,Qm=function(e){var t,n="&"+e+";";if((Km=Km||document.createElement("i")).innerHTML=n,(t=Km.textContent).charCodeAt(t.length-1)===Wm&&"semi"!==e)return!1;return t!==n&&t};var $m=C(Object.freeze({default:{0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"}})),jm=function(e,t){var n,r,a={};t||(t={});for(r in ep)n=t[r],a[r]=null===n||void 0===n?ep[r]:n;(a.position.indent||a.position.start)&&(a.indent=a.position.indent||[],a.position=a.position.start);return function(e,t){var n,r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b=t.additional,C=t.nonTerminated,N=t.text,v=t.reference,R=t.warning,A=t.textContext,O=t.referenceContext,y=t.warningContext,I=t.position,D=t.indent||[],x=e.length,M=0,w=-1,L=I.column||1,P=I.line||1,k="",U=[];"string"==typeof b&&(b=b.charCodeAt(0));h=B(),c=R?function(e,t){var n=B();n.column+=t,n.offset+=t,R.call(y,Rp[e],n,e)}:Jm,M--,x++;for(;++M<x;)if(o===np&&(L=D[w]||1),(o=e.charCodeAt(M))===ip){if((l=e.charCodeAt(M+1))===tp||l===np||l===rp||l===ap||l===ip||l===sp||l!=l||b&&l===b){k+=Zm(o),L++;continue}for(m=p=M+1,T=p,l===cp?(T=++m,(l=e.charCodeAt(T))===dp||l===_p?(g=pp,T=++m):g=gp):g=mp,n="",u="",i="",E=hp[g],T--;++T<x&&(l=e.charCodeAt(T),E(l));)i+=Zm(l),g===mp&&Xm.call(Xu,i)&&(n=i,u=Xu[i]);(a=e.charCodeAt(T)===op)&&(T++,(r=g===mp&&Qm(i))&&(n=i,u=r)),f=1+T-p,(a||C)&&(i?g===mp?(a&&!u?c(Cp,1):(n!==i&&(T=m+n.length,f=1+T-m,a=!1),a||(d=n?Sp:Tp,t.attribute?(l=e.charCodeAt(T))===lp?(c(d,f),u=null):Qu(l)?u=null:c(d,f):c(d,f))),s=u):(a||c(fp,f),s=parseInt(i,Ep[g]),(F=s)>=55296&&F<=57343||F>1114111?(c(vp,f),s=Zm(up)):s in $m?(c(Np,f),s=$m[s]):(_="",Ap(s)&&c(Np,f),s>65535&&(_+=Zm((s-=65536)>>>10|55296),s=56320|1023&s),s=_+Zm(s))):g!==mp&&c(bp,f)),s?(G(),h=B(),M=T-1,L+=T-p+1,U.push(s),(S=B()).offset++,v&&v.call(O,s,{start:h,end:S},e.slice(p-1,T)),h=S):(i=e.slice(p-1,T),k+=i,L+=i.length,M=T-1)}else 10===o&&(P++,w++,L=0),o==o?(k+=Zm(o),L++):G();var F;return U.join("");function B(){return{line:P,column:L,offset:M+(I.offset||0)}}function G(){k&&(U.push(k),N&&N.call(A,k,{start:h,end:B()}),k="")}}(e,a)},Xm={}.hasOwnProperty,Zm=String.fromCharCode,Jm=Function.prototype,ep={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},tp=9,np=10,rp=12,ap=32,ip=38,op=59,sp=60,lp=61,cp=35,dp=88,_p=120,up=65533,mp="named",pp="hexadecimal",gp="decimal",Ep={};Ep[pp]=16,Ep[gp]=10;var hp={};hp[mp]=Qu,hp[gp]=Ku,hp[pp]=qu;var Sp=1,fp=2,Tp=3,bp=4,Cp=5,Np=6,vp=7,Rp={};function Ap(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||65535==(65535&e)||65534==(65535&e)}Rp[Sp]="Named character references must be terminated by a semicolon",Rp[fp]="Numeric character references must be terminated by a semicolon",Rp[Tp]="Named character references cannot be empty",Rp[bp]="Numeric character references cannot be empty",Rp[Cp]="Named character references must be known",Rp[Np]="Numeric character references cannot be disallowed",Rp[vp]="Numeric character references cannot be outside the permissible Unicode range";var Op=function(t){return r.raw=function(t,r,i){return jm(t,e(i,{position:n(r),warning:a}))},r;function n(e){for(var n=t.offset,r=e.line,a=[];++r&&r in n;)a.push((n[r]||0)+1);return{start:e,indent:a}}function r(e,r,i){jm(e,{position:n(r),warning:a,text:i,reference:i,textContext:t,referenceContext:t})}function a(e,n,r){3!==r&&t.file.message(e,n)}};var yp=function(e){return function(t,n){var r,a,i,o,s,l,c=this,d=c.offset,_=[],u=c[e+"Methods"],m=c[e+"Tokenizers"],p=n.line,g=n.column;if(!t)return _;f.now=h,f.file=c.file,E("");for(;t;){for(r=-1,a=u.length,s=!1;++r<a&&(o=u[r],!(i=m[o])||i.onlyAtStart&&!c.atStart||i.notInList&&c.inList||i.notInBlock&&c.inBlock||i.notInLink&&c.inLink||(l=t.length,i.apply(c,[f,t]),!(s=l!==t.length))););s||c.file.fail(new Error("Infinite loop"),f.now())}return c.eof=h(),_;function E(e){for(var t=-1,n=e.indexOf("\n");-1!==n;)p++,t=n,n=e.indexOf("\n",n+1);-1===t?g+=e.length:g=e.length-t,p in d&&(-1!==t?g+=d[p]:g<=d[p]&&(g=d[p]+1))}function h(){var e={line:p,column:g};return e.offset=c.toOffset(e),e}function S(){var e=h();return function(t,n){var r=t.position,a=r?r.start:e,i=[],o=r&&r.end.line,s=e.line;if(t.position=new function(e){this.start=e,this.end=h()}(a),r&&n&&r.indent){if(i=r.indent,o<s){for(;++o<s;)i.push((d[o]||0)+1);i.push(e.column)}n=i.concat(n)}return t.position.indent=n||[],t}}function f(e){var n=function(){var e=[],t=p+1;return function(){for(var n=p+1;t<n;)e.push((d[t]||0)+1),t++;return e}}(),r=S(),a=h();return function(e){t.slice(0,e.length)!==e&&c.file.fail(new Error("Incorrectly eaten value: please report this warning on https://git.io/vg5Ft"),h())}(e),i.reset=o,o.test=s,i.test=s,t=t.slice(e.length),E(e),n=n(),i;function i(e,t){return r(function(e,t){var n,r=t?t.children:_,a=r[r.length-1];a&&e.type===a.type&&("text"===e.type||"blockquote"===e.type)&&Ip(a)&&Ip(e)&&(n="text"===e.type?Dp:xp,e=n.call(c,a,e));e!==a&&r.push(e);c.atStart&&0!==_.length&&c.exitStart();return e}(r(e),t),n)}function o(){var n=i.apply(null,arguments);return p=a.line,g=a.column,t=e+t,n}function s(){var n=r({});return p=a.line,g=a.column,t=e+t,n.position}}}};function Ip(e){var t,n;return"text"!==e.type||!e.position||(t=e.position.start,n=e.position.end,t.line!==n.line||n.column-t.column===e.value.length)}function Dp(e,t){return e.value+=t.value,e}function xp(e,t){return this.options.commonmark||this.options.gfm?t:(e.children=e.children.concat(t.children),e)}var Mp=kp,wp=["\\","`","*","{","}","[","]","(",")","#","+","-",".","!","_",">"],Lp=wp.concat(["~","|"]),Pp=Lp.concat(["\n",'"',"$","%","&","'",",","/",":",";","<","=","?","@","^"]);function kp(e){var t=e||{};return t.commonmark?Pp:t.gfm?Lp:wp}kp.default=wp,kp.gfm=Lp,kp.commonmark=Pp;var Up={position:!0,gfm:!0,commonmark:!1,footnotes:!1,pedantic:!1,blocks:["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","pre","section","source","title","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},Fp=function(t){var n,r,a=this.options;if(null==t)t={};else{if("object"!=typeof t)throw new Error("Invalid value `"+t+"` for setting `options`");t=e(t)}for(n in Up){if(null==(r=t[n])&&(r=a[n]),"blocks"!==n&&"boolean"!=typeof r||"blocks"===n&&"object"!=typeof r)throw new Error("Invalid value `"+r+"` for setting `options."+n+"`");t[n]=r}return this.options=t,this.escape=Mp(t),this};var Bp=function(e,t){return E(e,t?Gp:Hp),e};function Gp(e){delete e.position}function Hp(e){e.position=void 0}var Yp=function(){var t,n=String(this.file),r={line:1,column:1,offset:0},a=e(r);65279===(n=n.replace(zp,Vp)).charCodeAt(0)&&(n=n.slice(1),a.column++,a.offset++);t={type:"root",children:this.tokenizeBlock(n,a),position:{start:r,end:this.eof||e(r)}},this.options.position||Bp(t,!0);return t},Vp="\n",zp=/\r\n|\r/g;var qp=function(e,t,n){var r,a,i,o,s=t.charAt(0);if(s!==Kp)return;if(n)return!0;o=1,r=t.length,a=s,i="";for(;o<r&&(s=t.charAt(o),pe(s));)i+=s,s===Kp&&(a+=i,i=""),o++;e(a)},Kp="\n";var Wp=function(e){var t=String(e),n=t.length;for(;t.charAt(--n)===Qp;);return t.slice(0,n+1)},Qp="\n";var $p=function(e,t,n){var r,a,i,o=-1,s=t.length,l="",c="",d="",_="";for(;++o<s;)if(r=t.charAt(o),i)if(i=!1,l+=d,c+=_,d="",_="",r===jp)d=r,_=r;else for(l+=r,c+=r;++o<s;){if(!(r=t.charAt(o))||r===jp){_=r,d=r;break}l+=r,c+=r}else if(r===Zp&&t.charAt(o+1)===r&&t.charAt(o+2)===r&&t.charAt(o+3)===r)d+=Jp,o+=3,i=!0;else if(r===Xp)d+=r,i=!0;else{for(a="";r===Xp||r===Zp;)a+=r,r=t.charAt(++o);if(r!==jp)break;d+=a+r,_+=r}if(c)return!!n||e(l)({type:"code",lang:null,meta:null,value:Wp(c)})},jp="\n",Xp="\t",Zp=" ",Jp=H(Zp,4);var eg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E=this.options.gfm,h=t.length+1,S=0,f="";if(!E)return;for(;S<h&&((i=t.charAt(S))===rg||i===ng);)f+=i,S++;if(p=S,(i=t.charAt(S))!==ag&&i!==ig)return;S++,a=i,r=1,f+=i;for(;S<h&&(i=t.charAt(S))===a;)f+=i,r++,S++;if(r<og)return;for(;S<h&&((i=t.charAt(S))===rg||i===ng);)f+=i,S++;o="",c="";for(;S<h&&(i=t.charAt(S))!==tg&&(a!==ig||i!==a);)i===rg||i===ng?c+=i:(o+=c+i,c=""),S++;if((i=t.charAt(S))&&i!==tg)return;if(n)return!0;(g=e.now()).column+=f.length,g.offset+=f.length,f+=o,o=this.decode.raw(this.unescape(o),g),c&&(f+=c);c="",u="",m="",d="",_="";var T=!0;for(;S<h;)if(i=t.charAt(S),d+=u,_+=m,u="",m="",i===tg){for(T?(f+=i,T=!1):(u+=i,m+=i),c="",S++;S<h&&(i=t.charAt(S))===rg;)c+=i,S++;if(u+=c,m+=c.slice(p),!(c.length>=sg)){for(c="";S<h&&(i=t.charAt(S))===a;)c+=i,S++;if(u+=c,m+=c,!(c.length<r)){for(c="";S<h&&((i=t.charAt(S))===rg||i===ng);)u+=i,m+=i,S++;if(!i||i===tg)break}}}else d+=i,m+=i,S++;f+=d+u,S=-1,h=o.length;for(;++S<h;)if((i=o.charAt(S))===rg||i===ng)s||(s=o.slice(0,S));else if(s){l=o.slice(S);break}return e(f)({type:"code",lang:s||o||null,meta:l||null,value:_})},tg="\n",ng="\t",rg=" ",ag="~",ig="`",og=3,sg=4;var lg=function(e,t,n,r){var a,i,o=e.length,s=-1;for(;++s<o;)if(a=e[s],(void 0===(i=a[1]||{}).pedantic||i.pedantic===n.options.pedantic)&&(void 0===i.commonmark||i.commonmark===n.options.commonmark)&&t[a[0]].apply(n,r))return!0;return!1};var cg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u=this.offset,m=this.blockTokenizers,p=this.interruptBlockquote,g=e.now(),E=g.line,h=t.length,S=[],f=[],T=[],b=0;for(;b<h&&((a=t.charAt(b))===ug||a===_g);)b++;if(t.charAt(b)!==mg)return;if(n)return!0;b=0;for(;b<h;){for(o=t.indexOf(dg,b),c=b,d=!1,-1===o&&(o=h);b<h&&((a=t.charAt(b))===ug||a===_g);)b++;if(t.charAt(b)===mg?(b++,d=!0,t.charAt(b)===ug&&b++):b=c,s=t.slice(b,o),!d&&!I(s)){b=c;break}if(!d&&(i=t.slice(b),lg(p,m,this,[e,i,!0])))break;l=c===b?s:t.slice(c,o),T.push(b-c),S.push(l),f.push(s),b=o+1}b=-1,h=T.length,r=e(S.join(dg));for(;++b<h;)u[E]=(u[E]||0)+T[b],E++;return _=this.enterBlock(),f=this.tokenizeBlock(f.join(dg),g),_(),r({type:"blockquote",children:f})},dg="\n",_g="\t",ug=" ",mg=">";var pg=function(e,t,n){var r,a,i,o=this.options.pedantic,s=t.length+1,l=-1,c=e.now(),d="",_="";for(;++l<s;){if((r=t.charAt(l))!==hg&&r!==Eg){l--;break}d+=r}i=0;for(;++l<=s;){if((r=t.charAt(l))!==Sg){l--;break}d+=r,i++}if(i>fg)return;if(!i||!o&&t.charAt(l+1)===Sg)return;s=t.length+1,a="";for(;++l<s;){if((r=t.charAt(l))!==hg&&r!==Eg){l--;break}a+=r}if(!o&&0===a.length&&r&&r!==gg)return;if(n)return!0;d+=a,a="",_="";for(;++l<s&&(r=t.charAt(l))&&r!==gg;)if(r===hg||r===Eg||r===Sg){for(;r===hg||r===Eg;)a+=r,r=t.charAt(++l);if(o||!_||a||r!==Sg){for(;r===Sg;)a+=r,r=t.charAt(++l);for(;r===hg||r===Eg;)a+=r,r=t.charAt(++l);l--}else _+=r}else _+=a+r,a="";return c.column+=d.length,c.offset+=d.length,e(d+=_+a)({type:"heading",depth:i,children:this.tokenizeInline(_,c)})},gg="\n",Eg="\t",hg=" ",Sg="#",fg=6;var Tg=function(e,t,n){var r,a,i,o,s=-1,l=t.length+1,c="";for(;++s<l&&((r=t.charAt(s))===bg||r===Ng);)c+=r;if(r!==vg&&r!==Rg&&r!==Ag)return;a=r,c+=r,i=1,o="";for(;++s<l;)if((r=t.charAt(s))===a)i++,c+=o+a,o="";else{if(r!==Ng)return i>=Og&&(!r||r===Cg)?(c+=o,!!n||e(c)({type:"thematicBreak"})):void 0;o+=r}},bg="\t",Cg="\n",Ng=" ",vg="*",Rg="-",Ag="_",Og=3;var yg=function(e){var t,n=0,r=0,a=e.charAt(n),i={};for(;a===Ig||a===Dg;)r+=t=a===Ig?Mg:xg,t>1&&(r=Math.floor(r/t)*t),i[r]=n,a=e.charAt(++n);return{indent:r,stops:i}},Ig="\t",Dg=" ",xg=1,Mg=4;var wg=function(e,t){var n,r,a,i,o=e.split(Pg),s=o.length+1,l=1/0,c=[];o.unshift(H(kg,t)+Ug);for(;s--;)if(r=yg(o[s]),c[s]=r.stops,0!==I(o[s]).length){if(!r.indent){l=1/0;break}r.indent>0&&r.indent<l&&(l=r.indent)}if(l!==1/0)for(s=o.length;s--;){for(a=c[s],n=l;n&&!(n in a);)n--;i=0!==I(o[s]).length&&l&&n!==l?Lg:"",o[s]=i+o[s].slice(n in a?a[n]+1:0)}return o.shift(),o.join(Pg)},Lg="\t",Pg="\n",kg=" ",Ug="!";var Fg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b,C,N,v,R=this.options.commonmark,A=this.options.pedantic,O=this.blockTokenizers,y=this.interruptList,D=0,x=t.length,M=null,w=0,L=!1;for(;D<x;){if((i=t.charAt(D))===Kg)w+=$g-w%$g;else{if(i!==zg)break;w++}D++}if(w>=$g)return;if((i=t.charAt(D))===Bg||i===Hg||i===Yg)o=i,a=!1;else{for(a=!0,r="";D<x&&(i=t.charAt(D),Ku(i));)r+=i,D++;if(i=t.charAt(D),!r||!(i===Vg||R&&i===Wg))return;M=parseInt(r,10),o=i}if((i=t.charAt(++D))!==zg&&i!==Kg&&(A||i!==qg&&""!==i))return;if(n)return!0;D=0,g=[],E=[],h=[];for(;D<x;){for(s=t.indexOf(qg,D),l=D,c=!1,v=!1,-1===s&&(s=x),N=D+$g,w=0;D<x;){if((i=t.charAt(D))===Kg)w+=$g-w%$g;else{if(i!==zg)break;w++}D++}if(w>=$g&&(v=!0),S&&w>=S.indent&&(v=!0),i=t.charAt(D),d=null,!v){if(i===Bg||i===Hg||i===Yg)d=i,D++,w++;else{for(r="";D<x&&(i=t.charAt(D),Ku(i));)r+=i,D++;i=t.charAt(D),D++,r&&(i===Vg||R&&i===Wg)&&(d=i,w+=r.length+1)}if(d)if((i=t.charAt(D))===Kg)w+=$g-w%$g,D++;else if(i===zg){for(N=D+$g;D<N&&t.charAt(D)===zg;)D++,w++;D===N&&t.charAt(D)===zg&&(D-=$g-1,w-=$g-1)}else i!==qg&&""!==i&&(d=null)}if(d){if(!A&&o!==d)break;c=!0}else R||v||t.charAt(l)!==zg?R&&S&&(v=w>=S.indent||w>$g):v=!0,c=!1,D=l;if(u=t.slice(l,s),_=l===D?u:t.slice(D,s),(d===Bg||d===Gg||d===Yg)&&O.thematicBreak.call(this,e,u,!0))break;if(m=p,p=!c&&!I(_).length,v&&S)S.value=S.value.concat(h,u),E=E.concat(h,u),h=[];else if(c)0!==h.length&&(L=!0,S.value.push(""),S.trail=h.concat()),S={value:[u],indent:w,trail:[]},g.push(S),E=E.concat(h,u),h=[];else if(p){if(m&&!R)break;h.push(u)}else{if(m)break;if(lg(y,O,this,[e,u,!0]))break;S.value=S.value.concat(h,u),E=E.concat(h,u),h=[]}D=s+1}b=e(E.join(qg)).reset({type:"list",ordered:a,start:M,spread:L,children:[]}),f=this.enterList(),T=this.enterBlock(),D=-1,x=g.length;for(;++D<x;)S=g[D].value.join(qg),C=e.now(),e(S)(tE(this,S,C),b),S=g[D].trail.join(qg),D!==x-1&&(S+=qg),e(S);return f(),T(),b},Bg="*",Gg="_",Hg="+",Yg="-",Vg=".",zg=" ",qg="\n",Kg="\t",Wg=")",Qg="x",$g=4,jg=/\n\n(?!\s*$)/,Xg=/^\[([ \t]|x|X)][ \t]/,Zg=/^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/,Jg=/^([ \t]*)([*+-]|\d+[.)])([ \t]+)/,eE=/^( {1,4}|\t)?/gm;function tE(e,t,n){var r,a,i=e.offset,o=null;return t=(e.options.pedantic?nE:rE).apply(null,arguments),e.options.gfm&&(r=t.match(Xg))&&(a=r[0].length,o=r[1].toLowerCase()===Qg,i[n.line]+=a,t=t.slice(a)),{type:"listItem",spread:jg.test(t),checked:o,children:e.tokenizeBlock(t,n)}}function nE(e,t,n){var r=e.offset,a=n.line;return t=t.replace(Jg,i),a=n.line,t.replace(eE,i);function i(e){return r[a]=(r[a]||0)+e.length,a++,""}}function rE(e,t,n){var r,a,i,o,s,l,c,d=e.offset,_=n.line;for(o=(t=t.replace(Zg,function(e,t,n,o,s){a=t+n+o,i=s,Number(n)<10&&a.length%2==1&&(n=zg+n);return(r=t+H(zg,n.length)+o)+i})).split(qg),(s=wg(t,yg(r).indent).split(qg))[0]=i,d[_]=(d[_]||0)+a.length,_++,l=0,c=o.length;++l<c;)d[_]=(d[_]||0)+o[l].length-s[l].length,_++;return s.join(qg)}var aE=function(e,t,n){var r,a,i,o,s,l=e.now(),c=t.length,d=-1,_="";for(;++d<c;){if((i=t.charAt(d))!==sE||d>=dE){d--;break}_+=i}r="",a="";for(;++d<c;){if((i=t.charAt(d))===iE){d--;break}i===sE||i===oE?a+=i:(r+=a+i,a="")}if(l.column+=_.length,l.offset+=_.length,_+=r+a,i=t.charAt(++d),o=t.charAt(++d),i!==iE||o!==lE&&o!==cE)return;_+=i,a=o,s=o===lE?_E:uE;for(;++d<c;){if((i=t.charAt(d))!==o){if(i!==iE)return;d--;break}a+=i}if(n)return!0;return e(_+a)({type:"heading",depth:s,children:this.tokenizeInline(r,l)})},iE="\n",oE="\t",sE=" ",lE="=",cE="-",dE=3,_E=1,uE=2;var mE="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",pE="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",gE={openCloseTag:new RegExp("^(?:"+mE+"|"+pE+")"),tag:new RegExp("^(?:"+mE+"|"+pE+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|<![A-Za-z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)")},EE=function(e,t,n){var r,a,i,o,s,l,c,d=this.options.blocks.join("|"),_=new RegExp("^</?("+d+")(?=(\\s|/?>|$))","i"),u=t.length,m=0,p=[[bE,CE,!0],[NE,vE,!0],[RE,AE,!0],[OE,yE,!0],[IE,DE,!0],[_,xE,!0],[ME,xE,!1]];for(;m<u&&((o=t.charAt(m))===hE||o===SE);)m++;if(t.charAt(m)!==TE)return;r=-1===(r=t.indexOf(fE,m+1))?u:r,a=t.slice(m,r),i=-1,s=p.length;for(;++i<s;)if(p[i][0].test(a)){l=p[i];break}if(!l)return;if(n)return l[2];if(m=r,!l[1].test(a))for(;m<u;){if(r=-1===(r=t.indexOf(fE,m+1))?u:r,a=t.slice(m+1,r),l[1].test(a)){a&&(m=r);break}m=r}return c=t.slice(0,m),e(c)({type:"html",value:c})},hE="\t",SE=" ",fE="\n",TE="<",bE=/^<(script|pre|style)(?=(\s|>|$))/i,CE=/<\/(script|pre|style)>/i,NE=/^<!--/,vE=/-->/,RE=/^<\?/,AE=/\?>/,OE=/^<![A-Za-z]/,yE=/>/,IE=/^<!\[CDATA\[/,DE=/\]\]>/,xE=/^$/,ME=new RegExp(gE.openCloseTag.source+"\\s*$");var wE=function(e){return re(e).toLowerCase()};var LE=zE;zE.notInList=!0,zE.notInBlock=!0;var PE="\\",kE="\n",UE="\t",FE=" ",BE="[",GE="]",HE="^",YE=":",VE=/^( {4}|\t)?/gm;function zE(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g=this.offset;if(this.options.footnotes){for(r=0,a=t.length,i="",o=e.now(),s=o.line;r<a&&(_=t.charAt(r),pe(_));)i+=_,r++;if(t.charAt(r)===BE&&t.charAt(r+1)===HE){for(r=(i+=BE+HE).length,c="";r<a&&(_=t.charAt(r))!==GE;)_===PE&&(c+=_,r++,_=t.charAt(r)),c+=_,r++;if(c&&t.charAt(r)===GE&&t.charAt(r+1)===YE){if(n)return!0;for(u=c,r=(i+=c+GE+YE).length;r<a&&((_=t.charAt(r))===UE||_===FE);)i+=_,r++;for(o.column+=i.length,o.offset+=i.length,c="",l="",d="";r<a;){if((_=t.charAt(r))===kE){for(d=_,r++;r<a&&(_=t.charAt(r))===kE;)d+=_,r++;for(c+=d,d="";r<a&&(_=t.charAt(r))===FE;)d+=_,r++;if(0===d.length)break;c+=d}c&&(l+=c,c=""),l+=_,r++}return i+=l,l=l.replace(VE,function(e){return g[s]=(g[s]||0)+e.length,s++,""}),m=e(i),p=this.enterBlock(),l=this.tokenizeBlock(l,o),p(),m({type:"footnoteDefinition",identifier:wE(u),label:u,children:l})}}}}var qE=function(e,t,n){var r,a,i,o,s,l,c,d,_=this.options.commonmark,u=0,m=t.length,p="";for(;u<m&&((o=t.charAt(u))===XE||o===jE);)p+=o,u++;if((o=t.charAt(u))!==ZE)return;u++,p+=o,i="";for(;u<m&&(o=t.charAt(u))!==JE;)o===QE&&(i+=o,u++,o=t.charAt(u)),i+=o,u++;if(!i||t.charAt(u)!==JE||t.charAt(u+1)!==nh)return;l=i,u=(p+=i+JE+nh).length,i="";for(;u<m&&((o=t.charAt(u))===jE||o===XE||o===$E);)p+=o,u++;if(o=t.charAt(u),i="",r=p,o===rh){for(u++;u<m&&ih(o=t.charAt(u));)i+=o,u++;if((o=t.charAt(u))===ih.delimiter)p+=rh+i+o,u++;else{if(_)return;u-=i.length+1,i=""}}if(!i){for(;u<m&&oh(o=t.charAt(u));)i+=o,u++;p+=i}if(!i)return;c=i,i="";for(;u<m&&((o=t.charAt(u))===jE||o===XE||o===$E);)i+=o,u++;o=t.charAt(u),s=null,o===KE?s=KE:o===WE?s=WE:o===eh&&(s=th);if(s){if(!i)return;for(u=(p+=i+o).length,i="";u<m&&(o=t.charAt(u))!==s;){if(o===$E){if(u++,(o=t.charAt(u))===$E||o===s)return;i+=$E}i+=o,u++}if((o=t.charAt(u))!==s)return;a=p,p+=i+o,u++,d=i,i=""}else i="",u=p.length;for(;u<m&&((o=t.charAt(u))===jE||o===XE);)p+=o,u++;if(!(o=t.charAt(u))||o===$E)return!!n||(r=e(r).test().end,c=this.decode.raw(this.unescape(c),r,{nonTerminated:!1}),d&&(a=e(a).test().end,d=this.decode.raw(this.unescape(d),a)),e(p)({type:"definition",identifier:wE(l),label:l,title:d||null,url:c}))},KE='"',WE="'",QE="\\",$E="\n",jE="\t",XE=" ",ZE="[",JE="]",eh="(",th=")",nh=":",rh="<",ah=">";function ih(e){return e!==ah&&e!==ZE&&e!==JE}function oh(e){return e!==ZE&&e!==JE&&!pe(e)}ih.delimiter=ah;var sh=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b,C,N,v;if(!this.options.gfm)return;r=0,S=0,l=t.length+1,c=[];for(;r<l;){if(C=t.indexOf(ch,r),N=t.indexOf(ph,r+1),-1===C&&(C=t.length),-1===N||N>C){if(S<Eh)return;break}c.push(t.slice(r,C)),S++,r=C+1}o=c.join(ch),a=c.splice(1,1)[0]||[],r=0,l=a.length,S--,i=!1,m=[];for(;r<l;){if((_=a.charAt(r))===ph){if(u=null,!1===i){if(!1===v)return}else m.push(i),i=!1;v=!1}else if(_===_h)u=!0,i=i||null;else if(_===uh)i=i===hh?Sh:u&&null===i?fh:hh;else if(!pe(_))return;r++}!1!==i&&m.push(i);if(m.length<gh)return;if(n)return!0;h=-1,T=[],b=e(o).reset({type:"table",align:m,children:T});for(;++h<S;){for(f=c[h],s={type:"tableRow",children:[]},h&&e(ch),e(f).reset(s,b),l=f.length+1,r=0,d="",p="",g=!0;r<l;)(_=f.charAt(r))!==lh&&_!==dh?(""===_||_===ph?g?e(_):(!p&&!_||g||(o=p,d.length>1&&(_?(o+=d.slice(0,d.length-1),d=d.charAt(d.length-1)):(o+=d,d="")),E=e.now(),e(o)({type:"tableCell",children:this.tokenizeInline(p,E)},s)),e(d+_),d="",p=""):(d&&(p+=d,d=""),p+=_,_===mh&&r!==l-2&&(p+=f.charAt(r+1),r++)),g=!1,r++):(p?d+=_:e(_),r++);h||e(ch+a)}return b},lh="\t",ch="\n",dh=" ",_h="-",uh=":",mh="\\",ph="|",gh=1,Eh=2,hh="left",Sh="center",fh="right";var Th=function(e,t,n){var r,a,i,o,s,l=this.options,c=l.commonmark,d=l.gfm,_=this.blockTokenizers,u=this.interruptParagraph,m=t.indexOf(Ch),p=t.length;for(;m<p;){if(-1===m){m=p;break}if(t.charAt(m+1)===Ch)break;if(c){for(o=0,r=m+1;r<p;){if((i=t.charAt(r))===bh){o=vh;break}if(i!==Nh)break;o++,r++}if(o>=vh&&i!==Ch){m=t.indexOf(Ch,m+1);continue}}if(a=t.slice(m+1),lg(u,_,this,[e,a,!0]))break;if(_.list.call(this,e,a,!0)&&(this.inList||c||d&&!Ku(I.left(a).charAt(0))))break;if(r=m,-1!==(m=t.indexOf(Ch,m+1))&&""===I(t.slice(r,m))){m=r;break}}if(a=t.slice(0,m),""===I(a))return e(a),null;if(n)return!0;return s=e.now(),a=Wp(a),e(a)({type:"paragraph",children:this.tokenizeInline(a,s)})},bh="\t",Ch="\n",Nh=" ",vh=4;var Rh=function(e,t){return e.indexOf("\\",t)};var Ah=Ih;Ih.locator=Rh;var Oh="\n",yh="\\";function Ih(e,t,n){var r,a;if(t.charAt(0)===yh&&(r=t.charAt(1),-1!==this.escape.indexOf(r)))return!!n||(a=r===Oh?{type:"break"}:{type:"text",value:r},e(yh+r)(a))}var Dh=function(e,t){return e.indexOf("<",t)};var xh=Fh;Fh.locator=Dh,Fh.notInLink=!0;var Mh="<",wh=">",Lh="@",Ph="/",kh="mailto:",Uh=kh.length;function Fh(e,t,n){var r,a,i,o,s,l="",c=t.length,d=0,_="",u=!1,m="";if(t.charAt(0)===Mh){for(d++,l=Mh;d<c&&(r=t.charAt(d),!(pe(r)||r===wh||r===Lh||":"===r&&t.charAt(d+1)===Ph));)_+=r,d++;if(_){if(m+=_,_="",m+=r=t.charAt(d),d++,r===Lh)u=!0;else{if(":"!==r||t.charAt(d+1)!==Ph)return;m+=Ph,d++}for(;d<c&&(r=t.charAt(d),!pe(r)&&r!==wh);)_+=r,d++;if(r=t.charAt(d),_&&r===wh)return!!n||(i=m+=_,l+=m+r,(a=e.now()).column++,a.offset++,u&&(m.slice(0,Uh).toLowerCase()===kh?(i=i.slice(Uh),a.column+=Uh,a.offset+=Uh):m=kh+m),o=this.inlineTokenizers,this.inlineTokenizers={text:o.text},s=this.enterLink(),i=this.tokenizeInline(i,a),this.inlineTokenizers=o,s(),e(l)({type:"link",title:null,url:jm(m,{nonTerminated:!1}),children:i}))}}}var Bh=function(e,t){var n,r=Gh.length,a=-1,i=-1;if(!this.options.gfm)return-1;for(;++a<r;)-1!==(n=e.indexOf(Gh[a],t))&&(n<i||-1===i)&&(i=n);return i},Gh=["https://","http://","mailto:"];var Hh=rS;rS.locator=Bh,rS.notInLink=!0;var Yh='"',Vh="'",zh="(",qh=")",Kh=",",Wh=".",Qh=":",$h=";",jh="<",Xh="@",Zh="[",Jh="]",eS="mailto:",tS=["http://","https://",eS],nS=tS.length;function rS(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g;if(this.options.gfm){for(r="",o=-1;++o<nS;)if(l=tS[o],(c=t.slice(0,l.length)).toLowerCase()===l){r=c;break}if(r){for(o=r.length,d=t.length,_="",u=0;o<d&&(i=t.charAt(o),!pe(i)&&i!==jh)&&(i!==Wh&&i!==Kh&&i!==Qh&&i!==$h&&i!==Yh&&i!==Vh&&i!==qh&&i!==Jh||(m=t.charAt(o+1))&&!pe(m))&&(i!==zh&&i!==Zh||u++,i!==qh&&i!==Jh||!(--u<0));)_+=i,o++;if(_){if(a=r+=_,l===eS){if(-1===(s=_.indexOf(Xh))||s===d-1)return;a=a.slice(eS.length)}return!!n||(g=this.enterLink(),p=this.inlineTokenizers,this.inlineTokenizers={text:p.text},a=this.tokenizeInline(a,e.now()),this.inlineTokenizers=p,g(),e(r)({type:"link",title:null,url:jm(r,{nonTerminated:!1}),children:a}))}}}}var aS=gE.tag,iS=uS;uS.locator=Dh;var oS="<",sS="?",lS="!",cS="/",dS=/^<a /i,_S=/^<\/a>/i;function uS(e,t,n){var r,a,i=t.length;if(!(t.charAt(0)!==oS||i<3)&&(r=t.charAt(1),(Wu(r)||r===sS||r===lS||r===cS)&&(a=t.match(aS))))return!!n||(a=a[0],!this.inLink&&dS.test(a)?this.inLink=!0:this.inLink&&_S.test(a)&&(this.inLink=!1),e(a)({type:"html",value:a}))}var mS=function(e,t){var n=e.indexOf("[",t),r=e.indexOf("![",t);if(-1===r)return n;return n<r?n:r};var pS=OS;OS.locator=mS;var gS="\n",ES="!",hS='"',SS="'",fS="(",TS=")",bS="<",CS=">",NS="[",vS="\\",RS="]",AS="`";function OS(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b="",C=0,N=t.charAt(0),v=this.options.pedantic,R=this.options.commonmark,A=this.options.gfm;if(N===ES&&(d=!0,b=N,N=t.charAt(++C)),N===NS&&(d||!this.inLink)){for(b+=N,E="",C++,m=t.length,g=0,(S=e.now()).column+=C,S.offset+=C;C<m;){if(l=N=t.charAt(C),N===AS){for(a=1;t.charAt(C+1)===AS;)l+=N,C++,a++;i?a>=i&&(i=0):i=a}else if(N===vS)C++,l+=t.charAt(C);else if(i&&!A||N!==NS){if((!i||A)&&N===RS){if(!g){if(!v)for(;C<m&&(N=t.charAt(C+1),pe(N));)l+=N,C++;if(t.charAt(C+1)!==fS)return;l+=fS,r=!0,C++;break}g--}}else g++;E+=l,l="",C++}if(r){for(_=E,b+=E+l,C++;C<m&&(N=t.charAt(C),pe(N));)b+=N,C++;if(E="",o=b,(N=t.charAt(C))===bS){for(C++,o+=bS;C<m&&(N=t.charAt(C))!==CS;){if(R&&N===gS)return;E+=N,C++}if(t.charAt(C)!==CS)return;b+=bS+E+CS,h=E,C++}else{for(N=null,l="";C<m&&(N=t.charAt(C),!l||!(N===hS||N===SS||R&&N===fS));){if(pe(N)){if(!v)break;l+=N}else{if(N===fS)g++;else if(N===TS){if(0===g)break;g--}E+=l,l="",N===vS&&(E+=vS,N=t.charAt(++C)),E+=N}C++}h=E,C=(b+=E).length}for(E="";C<m&&(N=t.charAt(C),pe(N));)E+=N,C++;if(N=t.charAt(C),b+=E,E&&(N===hS||N===SS||R&&N===fS))if(C++,b+=N,E="",u=N===fS?TS:N,s=b,R){for(;C<m&&(N=t.charAt(C))!==u;)N===vS&&(E+=vS,N=t.charAt(++C)),C++,E+=N;if((N=t.charAt(C))!==u)return;for(p=E,b+=E+N,C++;C<m&&(N=t.charAt(C),pe(N));)b+=N,C++}else for(l="";C<m;){if((N=t.charAt(C))===u)c&&(E+=u+l,l=""),c=!0;else if(c){if(N===TS){b+=E+u+l,p=E;break}pe(N)?l+=N:(E+=u+l+N,l="",c=!1)}else E+=N;C++}if(t.charAt(C)===TS)return!!n||(b+=TS,h=this.decode.raw(this.unescape(h),e(o).test().end,{nonTerminated:!1}),p&&(s=e(s).test().end,p=this.decode.raw(this.unescape(p),s)),T={type:d?"image":"link",title:p||null,url:h},d?T.alt=this.decode.raw(this.unescape(_),S)||null:(f=this.enterLink(),T.children=this.tokenizeInline(_,S),f()),e(b)(T))}}}var yS=HS;HS.locator=mS;var IS="link",DS="image",xS="footnote",MS="shortcut",wS="collapsed",LS="full",PS=" ",kS="!",US="[",FS="\\",BS="]",GS="^";function HS(e,t,n){var r,a,i,o,s,l,c,d,_=this.options.commonmark,u=this.options.footnotes,m=t.charAt(0),p=0,g=t.length,E="",h="",S=IS,f=MS;if(m===kS&&(S=DS,h=m,m=t.charAt(++p)),m===US){if(p++,h+=m,l="",u&&t.charAt(p)===GS){if(S===DS)return;h+=GS,p++,S=xS}for(d=0;p<g;){if((m=t.charAt(p))===US)c=!0,d++;else if(m===BS){if(!d)break;d--}m===FS&&(l+=FS,m=t.charAt(++p)),l+=m,p++}if(E=l,r=l,(m=t.charAt(p))===BS){if(p++,E+=m,l="",!_)for(;p<g&&(m=t.charAt(p),pe(m));)l+=m,p++;if(m=t.charAt(p),S===xS||m!==US||u&&t.charAt(p+1)===GS){if(!r)return;a=r}else{for(a="",l+=m,p++;p<g&&(m=t.charAt(p))!==US&&m!==BS;)m===FS&&(a+=FS,m=t.charAt(++p)),a+=m,p++;(m=t.charAt(p))===BS?(f=a?LS:wS,l+=a+m,p++):a="",E+=l,l=""}if(f===LS||!c)return E=h+E,S===IS&&this.inLink?null:!!n||(S===xS&&-1!==r.indexOf(PS)?e(E)({type:xS,children:this.tokenizeInline(r,e.now())}):((i=e.now()).column+=h.length,i.offset+=h.length,o={type:S+"Reference",identifier:wE(a=f===LS?a:r),label:a},S!==IS&&S!==DS||(o.referenceType=f),S===IS?(s=this.enterLink(),o.children=this.tokenizeInline(r,i),s()):S===DS&&(o.alt=this.decode.raw(this.unescape(r),i)||null),e(E)(o)))}}}var YS=function(e,t){var n=e.indexOf("**",t),r=e.indexOf("__",t);if(-1===r)return n;if(-1===n)return r;return r<n?r:n};var VS=WS;WS.locator=YS;var zS="\\",qS="*",KS="_";function WS(e,t,n){var r,a,i,o,s,l,c,d=0,_=t.charAt(d);if(!(_!==qS&&_!==KS||t.charAt(++d)!==_||(a=this.options.pedantic,s=(i=_)+i,l=t.length,d++,o="",_="",a&&pe(t.charAt(d)))))for(;d<l;){if(c=_,!((_=t.charAt(d))!==i||t.charAt(d+1)!==i||a&&pe(c))&&(_=t.charAt(d+2))!==i){if(!I(o))return;return!!n||((r=e.now()).column+=2,r.offset+=2,e(s+o+s)({type:"strong",children:this.tokenizeInline(o,r)}))}a||_!==zS||(o+=_,_=t.charAt(++d)),o+=_,d++}}var QS=function(e){return jS.test("number"==typeof e?$S(e):e.charAt(0))},$S=String.fromCharCode,jS=/\w/;var XS=function(e,t){var n=e.indexOf("*",t),r=e.indexOf("_",t);if(-1===r)return n;if(-1===n)return r;return r<n?r:n};var ZS=nf;nf.locator=XS;var JS="*",ef="_",tf="\\";function nf(e,t,n){var r,a,i,o,s,l,c,d=0,_=t.charAt(d);if(!(_!==JS&&_!==ef||(a=this.options.pedantic,s=_,i=_,l=t.length,d++,o="",_="",a&&pe(t.charAt(d)))))for(;d<l;){if(c=_,!((_=t.charAt(d))!==i||a&&pe(c))){if((_=t.charAt(++d))!==i){if(!I(o)||c===i)return;if(!a&&i===ef&&QS(_)){o+=i;continue}return!!n||((r=e.now()).column++,r.offset++,e(s+o+i)({type:"emphasis",children:this.tokenizeInline(o,r)}))}o+=i}a||_!==tf||(o+=_,_=t.charAt(++d)),o+=_,d++}}var rf=function(e,t){return e.indexOf("~~",t)};var af=lf;lf.locator=rf;var of="~",sf="~~";function lf(e,t,n){var r,a,i,o="",s="",l="",c="";if(this.options.gfm&&t.charAt(0)===of&&t.charAt(1)===of&&!pe(t.charAt(2)))for(r=1,a=t.length,(i=e.now()).column+=2,i.offset+=2;++r<a;){if(!((o=t.charAt(r))!==of||s!==of||l&&pe(l)))return!!n||e(sf+c+sf)({type:"delete",children:this.tokenizeInline(c,i)});c+=s,l=s,s=o}}var cf=function(e,t){return e.indexOf("`",t)};var df=pf;pf.locator=cf;var _f=10,uf=32,mf=96;function pf(e,t,n){for(var r,a,i,o,s,l,c=t.length,d=0;d<c&&t.charCodeAt(d)===mf;)d++;if(0!==d&&d!==c){for(r=d,s=t.charCodeAt(d);d<c;){if(o=s,s=t.charCodeAt(d+1),o===mf){if(void 0===a&&(a=d),i=d+1,s!==mf&&i-a===r){l=!0;break}}else void 0!==a&&(a=void 0,i=void 0);d++}if(l){if(n)return!0;if(d=r,c=a,o=t.charCodeAt(d),s=t.charCodeAt(c-1),l=!1,c-d>2&&(o===uf||o===_f)&&(s===uf||s===_f)){for(d++,c--;d<c;){if((o=t.charCodeAt(d))!==uf&&o!==_f){l=!0;break}d++}!0===l&&(r++,a--)}return e(t.slice(0,i))({type:"inlineCode",value:t.slice(r,a)})}}}var gf=function(e,t){var n=e.indexOf("\n",t);for(;n>t&&" "===e.charAt(n-1);)n--;return n};var Ef=Tf;Tf.locator=gf;var hf=" ",Sf="\n",ff=2;function Tf(e,t,n){for(var r,a=t.length,i=-1,o="";++i<a;){if((r=t.charAt(i))===Sf){if(i<ff)return;return!!n||e(o+=r)({type:"break"})}if(r!==hf)return;o+=r}}var bf=function(e,t,n){var r,a,i,o,s,l,c,d,_,u;if(n)return!0;r=this.inlineMethods,o=r.length,a=this.inlineTokenizers,i=-1,_=t.length;for(;++i<o;)"text"!==(d=r[i])&&a[d]&&((c=a[d].locator)||e.file.fail("Missing locator: `"+d+"`"),-1!==(l=c.call(this,t,1))&&l<_&&(_=l));s=t.slice(0,_),u=e.now(),this.decode(s,u,function(t,n,r){e(r||t)({type:"text",value:t})})};var Cf=Nf;function Nf(t,n){this.file=n,this.offset={},this.options=e(this.options),this.setOptions({}),this.inList=!1,this.inBlock=!1,this.inLink=!1,this.atStart=!0,this.toOffset=Vm(n).toOffset,this.unescape=zm(this,"escape"),this.decode=Op(this)}var vf=Nf.prototype;function Rf(e){var t,n=[];for(t in e)n.push(t);return n}vf.setOptions=Fp,vf.parse=Yp,vf.options=Up,vf.exitStart=Ym("atStart",!0),vf.enterList=Ym("inList",!1),vf.enterLink=Ym("inLink",!1),vf.enterBlock=Ym("inBlock",!1),vf.interruptParagraph=[["thematicBreak"],["atxHeading"],["fencedCode"],["blockquote"],["html"],["setextHeading",{commonmark:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],vf.interruptList=[["atxHeading",{pedantic:!1}],["fencedCode",{pedantic:!1}],["thematicBreak",{pedantic:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],vf.interruptBlockquote=[["indentedCode",{commonmark:!0}],["fencedCode",{commonmark:!0}],["atxHeading",{commonmark:!0}],["setextHeading",{commonmark:!0}],["thematicBreak",{commonmark:!0}],["html",{commonmark:!0}],["list",{commonmark:!0}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],vf.blockTokenizers={newline:qp,indentedCode:$p,fencedCode:eg,blockquote:cg,atxHeading:pg,thematicBreak:Tg,list:Fg,setextHeading:aE,html:EE,footnote:LE,definition:qE,table:sh,paragraph:Th},vf.inlineTokenizers={escape:Ah,autoLink:xh,url:Hh,html:iS,link:pS,reference:yS,strong:VS,emphasis:ZS,deletion:af,code:df,break:Ef,text:bf},vf.blockMethods=Rf(vf.blockTokenizers),vf.inlineMethods=Rf(vf.inlineTokenizers),vf.tokenizeBlock=yp("block"),vf.tokenizeInline=yp("inline"),vf.tokenizeFactory=yp;var Af=Of;function Of(t){var n=this.data("settings"),r=Hm(Cf);r.prototype.options=e(r.prototype.options,n,t),this.Parser=r}function yf(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function If(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function Df(e){return e.replace(new RegExp("[-[\\]{}()*+?.\\\\^$|/]","g"),"\\$&")}Of.Parser=Cf;var xf="\n",Mf="|";var wf=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(e).map(Df).join("|");if(!t)throw new Error("remark-custom-blocks needs to be passed a configuration object as option");var n=new RegExp("\\[\\[(".concat(t,")(?: *\\| *(.*))?\\]\\]\n"));var r=this.Parser,a=r.prototype.blockTokenizers,i=r.prototype.blockMethods;a.customBlocks=function(t,r,a){var i=t.now(),o=n.exec(r);if(o&&0===o.index){var s=If(o,3),l=s[0],c=s[1],d=s[2];if(a)return!0;for(var _=[],u=[],m=0;-1!==(m=r.indexOf(xf));){var p=r.indexOf(xf,m+1),g=-1!==p?r.slice(m+1,p):r.slice(m+1);if(g[0]!==Mf)break;var E=g.slice(g.startsWith("".concat(Mf," "))?2:1);_.push(g),u.push(E),r=r.slice(m+1)}var h=u.join(xf),S=l+_.join(xf),f=e[c],T=f.title&&["optional","required"].includes(f.title);if((!f.title||"required"!==f.title||d)&&(T||!d)){var b=t(S),C=this.enterBlock(),N={type:"".concat(c,"CustomBlockBody"),data:{hName:"div",hProperties:{className:"custom-block-body"}},children:this.tokenizeBlock(h,i)};C();var v=[N];if(T&&d){var R={type:"".concat(c,"CustomBlockHeading"),data:{hName:f.details?"summary":"div",hProperties:{className:"custom-block-heading"}},children:this.tokenizeInline(d,i)};v.unshift(R)}var A=ts.parse(f.classes||"");return b({type:"".concat(c,"CustomBlock"),children:v,data:{hName:f.details?"details":"div",hProperties:{className:["custom-block"].concat(yf(A))}}})}}},i.splice(i.indexOf("fencedCode")+1,0,"customBlocks");var o=this.Compiler;if(o){var s=o.prototype.visitors;if(!s)return;Object.keys(e).forEach(function(e){var t,n,r,a=(t=e,{blockHeading:function(e){return r=this.all(e).join(""),""},blockBody:function(e){return n=this.all(e).map(function(e){return e.replace(/\n/g,"\n| ")}).join("\n|\n| ")},block:function(e){return n="",r="",this.all(e),r?"[[".concat(t," | ").concat(r,"]]\n| ").concat(n):"[[".concat(t,"]]\n| ").concat(n)}});s["".concat(e,"CustomBlock")]=a.block,s["".concat(e,"CustomBlockHeading")]=a.blockHeading,s["".concat(e,"CustomBlockBody")]=a.blockBody})}var l=r.prototype.interruptParagraph,c=r.prototype.interruptList,d=r.prototype.interruptBlockquote;l.splice(l.indexOf("fencedCode")+1,0,["customBlocks"]),c.splice(c.indexOf("fencedCode")+1,0,["customBlocks"]),d.splice(d.indexOf("fencedCode")+1,0,["customBlocks"])},Lf=2147483647,Pf=36,kf=1,Uf=26,Ff=38,Bf=700,Gf=72,Hf=128,Yf="-",Vf=/[^\x20-\x7E]/,zf=/[\x2E\u3002\uFF0E\uFF61]/g,qf={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Kf=Pf-kf,Wf=Math.floor,Qf=String.fromCharCode;function $f(e){throw new RangeError(qf[e])}function jf(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function Xf(e,t,n){var r=0;for(e=n?Wf(e/Bf):e>>1,e+=Wf(e/t);e>Kf*Uf>>1;r+=Pf)e=Wf(e/Kf);return Wf(r+(Kf+1)*e/(e+Ff))}function Zf(e){return function(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]);var a=function(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}((e=e.replace(zf,".")).split("."),t).join(".");return r+a}(e,function(e){return Vf.test(e)?"xn--"+function(e){var t,n,r,a,i,o,s,l,c,d,_,u,m,p,g,E=[];for(u=(e=function(e){for(var t,n,r=[],a=0,i=e.length;a<i;)(t=e.charCodeAt(a++))>=55296&&t<=56319&&a<i?56320==(64512&(n=e.charCodeAt(a++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),a--):r.push(t);return r}(e)).length,t=Hf,n=0,i=Gf,o=0;o<u;++o)(_=e[o])<128&&E.push(Qf(_));for(r=a=E.length,a&&E.push(Yf);r<u;){for(s=Lf,o=0;o<u;++o)(_=e[o])>=t&&_<s&&(s=_);for(s-t>Wf((Lf-n)/(m=r+1))&&$f("overflow"),n+=(s-t)*m,t=s,o=0;o<u;++o)if((_=e[o])<t&&++n>Lf&&$f("overflow"),_==t){for(l=n,c=Pf;!(l<(d=c<=i?kf:c>=i+Uf?Uf:c-i));c+=Pf)g=l-d,p=Pf-d,E.push(Qf(jf(d+g%p,0))),l=Wf(g/p);E.push(Qf(jf(l,0))),i=Xf(n,m,r==a),n=0,++r}++n,++t}return E.join("")}(e):e})}var Jf=[],eT=[],tT="undefined"!=typeof Uint8Array?Uint8Array:Array,nT=!1;function rT(){nT=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)Jf[t]=e[t],eT[e.charCodeAt(t)]=t;eT["-".charCodeAt(0)]=62,eT["_".charCodeAt(0)]=63}function aT(e,t,n){for(var r,a,i=[],o=t;o<n;o+=3)r=(e[o]<<16)+(e[o+1]<<8)+e[o+2],i.push(Jf[(a=r)>>18&63]+Jf[a>>12&63]+Jf[a>>6&63]+Jf[63&a]);return i.join("")}function iT(e){var t;nT||rT();for(var n=e.length,r=n%3,a="",i=[],o=0,s=n-r;o<s;o+=16383)i.push(aT(e,o,o+16383>s?s:o+16383));return 1===r?(t=e[n-1],a+=Jf[t>>2],a+=Jf[t<<4&63],a+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],a+=Jf[t>>10],a+=Jf[t>>4&63],a+=Jf[t<<2&63],a+="="),i.push(a),i.join("")}function oT(e,t,n,r,a){var i,o,s=8*a-r-1,l=(1<<s)-1,c=l>>1,d=-7,_=n?a-1:0,u=n?-1:1,m=e[t+_];for(_+=u,i=m&(1<<-d)-1,m>>=-d,d+=s;d>0;i=256*i+e[t+_],_+=u,d-=8);for(o=i&(1<<-d)-1,i>>=-d,d+=r;d>0;o=256*o+e[t+_],_+=u,d-=8);if(0===i)i=1-c;else{if(i===l)return o?NaN:1/0*(m?-1:1);o+=Math.pow(2,r),i-=c}return(m?-1:1)*o*Math.pow(2,i-r)}function sT(e,t,n,r,a,i){var o,s,l,c=8*i-a-1,d=(1<<c)-1,_=d>>1,u=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,m=r?0:i-1,p=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=d):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+_>=1?u/l:u*Math.pow(2,1-_))*l>=2&&(o++,l/=2),o+_>=d?(s=0,o=d):o+_>=1?(s=(t*l-1)*Math.pow(2,a),o+=_):(s=t*Math.pow(2,_-1)*Math.pow(2,a),o=0));a>=8;e[n+m]=255&s,m+=p,s/=256,a-=8);for(o=o<<a|s,c+=a;c>0;e[n+m]=255&o,m+=p,o/=256,c-=8);e[n+m-p]|=128*g}var lT={}.toString,cT=Array.isArray||function(e){return"[object Array]"==lT.call(e)};function dT(){return uT.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function _T(e,t){if(dT()<t)throw new RangeError("Invalid typed array length");return uT.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=uT.prototype:(null===e&&(e=new uT(t)),e.length=t),e}function uT(e,t,n){if(!(uT.TYPED_ARRAY_SUPPORT||this instanceof uT))return new uT(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return gT(this,e)}return mT(this,e,t,n)}function mT(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);uT.TYPED_ARRAY_SUPPORT?(e=t).__proto__=uT.prototype:e=ET(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!uT.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|fT(t,n),a=(e=_T(e,r)).write(t,n);a!==r&&(e=e.slice(0,a));return e}(e,t,n):function(e,t){if(ST(t)){var n=0|hT(t.length);return 0===(e=_T(e,n)).length?e:(t.copy(e,0,0,n),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?_T(e,0):ET(e,t);if("Buffer"===t.type&&cT(t.data))return ET(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function pT(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function gT(e,t){if(pT(t),e=_T(e,t<0?0:0|hT(t)),!uT.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function ET(e,t){var n=t.length<0?0:0|hT(t.length);e=_T(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function hT(e){if(e>=dT())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+dT().toString(16)+" bytes");return 0|e}function ST(e){return!(null==e||!e._isBuffer)}function fT(e,t){if(ST(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return qT(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return KT(e).length;default:if(r)return qT(e).length;t=(""+t).toLowerCase(),r=!0}}function TT(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function bT(e,t,n,r,a){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=a?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(a)return-1;n=e.length-1}else if(n<0){if(!a)return-1;n=0}if("string"==typeof t&&(t=uT.from(t,r)),ST(t))return 0===t.length?-1:CT(e,t,n,r,a);if("number"==typeof t)return t&=255,uT.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):CT(e,[t],n,r,a);throw new TypeError("val must be string, number or Buffer")}function CT(e,t,n,r,a){var i,o=1,s=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,s/=2,l/=2,n/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(a){var d=-1;for(i=n;i<s;i++)if(c(e,i)===c(t,-1===d?0:i-d)){if(-1===d&&(d=i),i-d+1===l)return d*o}else-1!==d&&(i-=i-d),d=-1}else for(n+l>s&&(n=s-l),i=n;i>=0;i--){for(var _=!0,u=0;u<l;u++)if(c(e,i+u)!==c(t,u)){_=!1;break}if(_)return i}return-1}function NT(e,t,n,r){n=Number(n)||0;var a=e.length-n;r?(r=Number(r))>a&&(r=a):r=a;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var o=0;o<r;++o){var s=parseInt(t.substr(2*o,2),16);if(isNaN(s))return o;e[n+o]=s}return o}function vT(e,t,n,r){return WT(qT(t,e.length-n),e,n,r)}function RT(e,t,n,r){return WT(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function AT(e,t,n,r){return RT(e,t,n,r)}function OT(e,t,n,r){return WT(KT(t),e,n,r)}function yT(e,t,n,r){return WT(function(e,t){for(var n,r,a,i=[],o=0;o<e.length&&!((t-=2)<0);++o)n=e.charCodeAt(o),r=n>>8,a=n%256,i.push(a),i.push(r);return i}(t,e.length-n),e,n,r)}function IT(e,t,n){return 0===t&&n===e.length?iT(e):iT(e.slice(t,n))}function DT(e,t,n){n=Math.min(e.length,n);for(var r=[],a=t;a<n;){var i,o,s,l,c=e[a],d=null,_=c>239?4:c>223?3:c>191?2:1;if(a+_<=n)switch(_){case 1:c<128&&(d=c);break;case 2:128==(192&(i=e[a+1]))&&(l=(31&c)<<6|63&i)>127&&(d=l);break;case 3:i=e[a+1],o=e[a+2],128==(192&i)&&128==(192&o)&&(l=(15&c)<<12|(63&i)<<6|63&o)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:i=e[a+1],o=e[a+2],s=e[a+3],128==(192&i)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&i)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(d=l)}null===d?(d=65533,_=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),a+=_}return function(e){var t=e.length;if(t<=xT)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=xT));return n}(r)}uT.TYPED_ARRAY_SUPPORT=void 0===tc.TYPED_ARRAY_SUPPORT||tc.TYPED_ARRAY_SUPPORT,uT.poolSize=8192,uT._augment=function(e){return e.__proto__=uT.prototype,e},uT.from=function(e,t,n){return mT(null,e,t,n)},uT.TYPED_ARRAY_SUPPORT&&(uT.prototype.__proto__=Uint8Array.prototype,uT.__proto__=Uint8Array),uT.alloc=function(e,t,n){return function(e,t,n,r){return pT(t),t<=0?_T(e,t):void 0!==n?"string"==typeof r?_T(e,t).fill(n,r):_T(e,t).fill(n):_T(e,t)}(null,e,t,n)},uT.allocUnsafe=function(e){return gT(null,e)},uT.allocUnsafeSlow=function(e){return gT(null,e)},uT.isBuffer=function(e){return null!=e&&(!!e._isBuffer||QT(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&QT(e.slice(0,0))}(e))},uT.compare=function(e,t){if(!ST(e)||!ST(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,a=0,i=Math.min(n,r);a<i;++a)if(e[a]!==t[a]){n=e[a],r=t[a];break}return n<r?-1:r<n?1:0},uT.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},uT.concat=function(e,t){if(!cT(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return uT.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=uT.allocUnsafe(t),a=0;for(n=0;n<e.length;++n){var i=e[n];if(!ST(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,a),a+=i.length}return r},uT.byteLength=fT,uT.prototype._isBuffer=!0,uT.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)TT(this,t,t+1);return this},uT.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)TT(this,t,t+3),TT(this,t+1,t+2);return this},uT.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)TT(this,t,t+7),TT(this,t+1,t+6),TT(this,t+2,t+5),TT(this,t+3,t+4);return this},uT.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?DT(this,0,e):function(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return LT(this,t,n);case"utf8":case"utf-8":return DT(this,t,n);case"ascii":return MT(this,t,n);case"latin1":case"binary":return wT(this,t,n);case"base64":return IT(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return PT(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},uT.prototype.equals=function(e){if(!ST(e))throw new TypeError("Argument must be a Buffer");return this===e||0===uT.compare(this,e)},uT.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},uT.prototype.compare=function(e,t,n,r,a){if(!ST(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===a&&(a=this.length),t<0||n>e.length||r<0||a>this.length)throw new RangeError("out of range index");if(r>=a&&t>=n)return 0;if(r>=a)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,a>>>=0,this===e)return 0;for(var i=a-r,o=n-t,s=Math.min(i,o),l=this.slice(r,a),c=e.slice(t,n),d=0;d<s;++d)if(l[d]!==c[d]){i=l[d],o=c[d];break}return i<o?-1:o<i?1:0},uT.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},uT.prototype.indexOf=function(e,t,n){return bT(this,e,t,n,!0)},uT.prototype.lastIndexOf=function(e,t,n){return bT(this,e,t,n,!1)},uT.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var a=this.length-t;if((void 0===n||n>a)&&(n=a),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return NT(this,e,t,n);case"utf8":case"utf-8":return vT(this,e,t,n);case"ascii":return RT(this,e,t,n);case"latin1":case"binary":return AT(this,e,t,n);case"base64":return OT(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return yT(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},uT.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var xT=4096;function MT(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(127&e[a]);return r}function wT(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(e[a]);return r}function LT(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var a="",i=t;i<n;++i)a+=zT(e[i]);return a}function PT(e,t,n){for(var r=e.slice(t,n),a="",i=0;i<r.length;i+=2)a+=String.fromCharCode(r[i]+256*r[i+1]);return a}function kT(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function UT(e,t,n,r,a,i){if(!ST(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||t<i)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function FT(e,t,n,r){t<0&&(t=65535+t+1);for(var a=0,i=Math.min(e.length-n,2);a<i;++a)e[n+a]=(t&255<<8*(r?a:1-a))>>>8*(r?a:1-a)}function BT(e,t,n,r){t<0&&(t=4294967295+t+1);for(var a=0,i=Math.min(e.length-n,4);a<i;++a)e[n+a]=t>>>8*(r?a:3-a)&255}function GT(e,t,n,r,a,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function HT(e,t,n,r,a){return a||GT(e,0,n,4),sT(e,t,n,r,23,4),n+4}function YT(e,t,n,r,a){return a||GT(e,0,n,8),sT(e,t,n,r,52,8),n+8}uT.prototype.slice=function(e,t){var n,r=this.length;if(e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),uT.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=uT.prototype;else{var a=t-e;n=new uT(a,void 0);for(var i=0;i<a;++i)n[i]=this[i+e]}return n},uT.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=this[e],a=1,i=0;++i<t&&(a*=256);)r+=this[e+i]*a;return r},uT.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=this[e+--t],a=1;t>0&&(a*=256);)r+=this[e+--t]*a;return r},uT.prototype.readUInt8=function(e,t){return t||kT(e,1,this.length),this[e]},uT.prototype.readUInt16LE=function(e,t){return t||kT(e,2,this.length),this[e]|this[e+1]<<8},uT.prototype.readUInt16BE=function(e,t){return t||kT(e,2,this.length),this[e]<<8|this[e+1]},uT.prototype.readUInt32LE=function(e,t){return t||kT(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},uT.prototype.readUInt32BE=function(e,t){return t||kT(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},uT.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=this[e],a=1,i=0;++i<t&&(a*=256);)r+=this[e+i]*a;return r>=(a*=128)&&(r-=Math.pow(2,8*t)),r},uT.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=t,a=1,i=this[e+--r];r>0&&(a*=256);)i+=this[e+--r]*a;return i>=(a*=128)&&(i-=Math.pow(2,8*t)),i},uT.prototype.readInt8=function(e,t){return t||kT(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},uT.prototype.readInt16LE=function(e,t){t||kT(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},uT.prototype.readInt16BE=function(e,t){t||kT(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},uT.prototype.readInt32LE=function(e,t){return t||kT(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},uT.prototype.readInt32BE=function(e,t){return t||kT(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},uT.prototype.readFloatLE=function(e,t){return t||kT(e,4,this.length),oT(this,e,!0,23,4)},uT.prototype.readFloatBE=function(e,t){return t||kT(e,4,this.length),oT(this,e,!1,23,4)},uT.prototype.readDoubleLE=function(e,t){return t||kT(e,8,this.length),oT(this,e,!0,52,8)},uT.prototype.readDoubleBE=function(e,t){return t||kT(e,8,this.length),oT(this,e,!1,52,8)},uT.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||UT(this,e,t,n,Math.pow(2,8*n)-1,0);var a=1,i=0;for(this[t]=255&e;++i<n&&(a*=256);)this[t+i]=e/a&255;return t+n},uT.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||UT(this,e,t,n,Math.pow(2,8*n)-1,0);var a=n-1,i=1;for(this[t+a]=255&e;--a>=0&&(i*=256);)this[t+a]=e/i&255;return t+n},uT.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,1,255,0),uT.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},uT.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,65535,0),uT.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):FT(this,e,t,!0),t+2},uT.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,65535,0),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):FT(this,e,t,!1),t+2},uT.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,4294967295,0),uT.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):BT(this,e,t,!0),t+4},uT.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,4294967295,0),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):BT(this,e,t,!1),t+4},uT.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);UT(this,e,t,n,a-1,-a)}var i=0,o=1,s=0;for(this[t]=255&e;++i<n&&(o*=256);)e<0&&0===s&&0!==this[t+i-1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+n},uT.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);UT(this,e,t,n,a-1,-a)}var i=n-1,o=1,s=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+n},uT.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,1,127,-128),uT.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},uT.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,32767,-32768),uT.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):FT(this,e,t,!0),t+2},uT.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,32767,-32768),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):FT(this,e,t,!1),t+2},uT.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,2147483647,-2147483648),uT.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):BT(this,e,t,!0),t+4},uT.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):BT(this,e,t,!1),t+4},uT.prototype.writeFloatLE=function(e,t,n){return HT(this,e,t,!0,n)},uT.prototype.writeFloatBE=function(e,t,n){return HT(this,e,t,!1,n)},uT.prototype.writeDoubleLE=function(e,t,n){return YT(this,e,t,!0,n)},uT.prototype.writeDoubleBE=function(e,t,n){return YT(this,e,t,!1,n)},uT.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var a,i=r-n;if(this===e&&n<t&&t<r)for(a=i-1;a>=0;--a)e[a+t]=this[a+n];else if(i<1e3||!uT.TYPED_ARRAY_SUPPORT)for(a=0;a<i;++a)e[a+t]=this[a+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+i),t);return i},uT.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var a=e.charCodeAt(0);a<256&&(e=a)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!uT.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var i;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i<n;++i)this[i]=e;else{var o=ST(e)?e:qT(new uT(e,r).toString()),s=o.length;for(i=0;i<n-t;++i)this[i+t]=o[i%s]}return this};var VT=/[^+\/0-9A-Za-z-_]/g;function zT(e){return e<16?"0"+e.toString(16):e.toString(16)}function qT(e,t){var n;t=t||1/0;for(var r=e.length,a=null,i=[],o=0;o<r;++o){if((n=e.charCodeAt(o))>55295&&n<57344){if(!a){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&i.push(239,191,189);continue}a=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),a=n;continue}n=65536+(a-55296<<10|n-56320)}else a&&(t-=3)>-1&&i.push(239,191,189);if(a=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function KT(e){return function(e){var t,n,r,a,i,o;nT||rT();var s=e.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");i="="===e[s-2]?2:"="===e[s-1]?1:0,o=new tT(3*s/4-i),r=i>0?s-4:s;var l=0;for(t=0,n=0;t<r;t+=4,n+=3)a=eT[e.charCodeAt(t)]<<18|eT[e.charCodeAt(t+1)]<<12|eT[e.charCodeAt(t+2)]<<6|eT[e.charCodeAt(t+3)],o[l++]=a>>16&255,o[l++]=a>>8&255,o[l++]=255&a;return 2===i?(a=eT[e.charCodeAt(t)]<<2|eT[e.charCodeAt(t+1)]>>4,o[l++]=255&a):1===i&&(a=eT[e.charCodeAt(t)]<<10|eT[e.charCodeAt(t+1)]<<4|eT[e.charCodeAt(t+2)]>>2,o[l++]=a>>8&255,o[l++]=255&a),o}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(VT,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function WT(e,t,n,r){for(var a=0;a<r&&!(a+n>=t.length||a>=e.length);++a)t[a+n]=e[a];return a}function QT(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function $T(e){return null===e}function jT(e){return"string"==typeof e}function XT(e){return"object"==typeof e&&null!==e}function ZT(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var JT=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function eb(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}}function tb(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var nb=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t};function rb(e,t,n,r){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var i=/\+/g;e=e.split(t);var o=1e3;r&&"number"==typeof r.maxKeys&&(o=r.maxKeys);var s=e.length;o>0&&s>o&&(s=o);for(var l=0;l<s;++l){var c,d,_,u,m=e[l].replace(i,"%20"),p=m.indexOf(n);p>=0?(c=m.substr(0,p),d=m.substr(p+1)):(c=m,d=""),_=decodeURIComponent(c),u=decodeURIComponent(d),ZT(a,_)?JT(a[_])?a[_].push(u):a[_]=[a[_],u]:a[_]=u}return a}var ab={parse:fb,resolve:function(e,t){return fb(e,!1,!0).resolve(t)},resolveObject:function(e,t){return e?fb(e,!1,!0).resolveObject(t):t},format:function(e){jT(e)&&(e=Tb({},e));return bb(e)},Url:ib};function ib(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var ob=/^([a-z0-9.+-]+:)/i,sb=/:[0-9]*$/,lb=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,cb=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),db=["'"].concat(cb),_b=["%","/","?",";","#"].concat(db),ub=["/","?","#"],mb=255,pb=/^[+a-z0-9A-Z_-]{0,63}$/,gb=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Eb={javascript:!0,"javascript:":!0},hb={javascript:!0,"javascript:":!0},Sb={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function fb(e,t,n){if(e&&XT(e)&&e instanceof ib)return e;var r=new ib;return r.parse(e,t,n),r}function Tb(e,t,n,r){if(!jT(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var a=t.indexOf("?"),i=-1!==a&&a<t.indexOf("#")?"?":"#",o=t.split(i);o[0]=o[0].replace(/\\/g,"/");var s=t=o.join(i);if(s=s.trim(),!r&&1===t.split("#").length){var l=lb.exec(s);if(l)return e.path=s,e.href=s,e.pathname=l[1],l[2]?(e.search=l[2],e.query=n?rb(e.search.substr(1)):e.search.substr(1)):n&&(e.search="",e.query={}),e}var c,d,_,u,m=ob.exec(s);if(m){var p=(m=m[0]).toLowerCase();e.protocol=p,s=s.substr(m.length)}if(r||m||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var g="//"===s.substr(0,2);!g||m&&hb[m]||(s=s.substr(2),e.slashes=!0)}if(!hb[m]&&(g||m&&!Sb[m])){var E,h,S=-1;for(c=0;c<ub.length;c++)-1!==(d=s.indexOf(ub[c]))&&(-1===S||d<S)&&(S=d);for(-1!==(h=-1===S?s.lastIndexOf("@"):s.lastIndexOf("@",S))&&(E=s.slice(0,h),s=s.slice(h+1),e.auth=decodeURIComponent(E)),S=-1,c=0;c<_b.length;c++)-1!==(d=s.indexOf(_b[c]))&&(-1===S||d<S)&&(S=d);-1===S&&(S=s.length),e.host=s.slice(0,S),s=s.slice(S),Cb(e),e.hostname=e.hostname||"";var f="["===e.hostname[0]&&"]"===e.hostname[e.hostname.length-1];if(!f){var T=e.hostname.split(/\./);for(c=0,_=T.length;c<_;c++){var b=T[c];if(b&&!b.match(pb)){for(var C="",N=0,v=b.length;N<v;N++)b.charCodeAt(N)>127?C+="x":C+=b[N];if(!C.match(pb)){var R=T.slice(0,c),A=T.slice(c+1),O=b.match(gb);O&&(R.push(O[1]),A.unshift(O[2])),A.length&&(s="/"+A.join(".")+s),e.hostname=R.join(".");break}}}}e.hostname.length>mb?e.hostname="":e.hostname=e.hostname.toLowerCase(),f||(e.hostname=Zf(e.hostname)),u=e.port?":"+e.port:"";var y=e.hostname||"";e.host=y+u,e.href+=e.host,f&&(e.hostname=e.hostname.substr(1,e.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!Eb[p])for(c=0,_=db.length;c<_;c++){var I=db[c];if(-1!==s.indexOf(I)){var D=encodeURIComponent(I);D===I&&(D=escape(I)),s=s.split(I).join(D)}}var x=s.indexOf("#");-1!==x&&(e.hash=s.substr(x),s=s.slice(0,x));var M=s.indexOf("?");if(-1!==M?(e.search=s.substr(M),e.query=s.substr(M+1),n&&(e.query=rb(e.query)),s=s.slice(0,M)):n&&(e.search="",e.query={}),s&&(e.pathname=s),Sb[p]&&e.hostname&&!e.pathname&&(e.pathname="/"),e.pathname||e.search){u=e.pathname||"";var w=e.search||"";e.path=u+w}return e.href=bb(e),e}function bb(e){var t=e.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var n,r,a,i,o=e.protocol||"",s=e.pathname||"",l=e.hash||"",c=!1,d="";e.host?c=t+e.host:e.hostname&&(c=t+(-1===e.hostname.indexOf(":")?e.hostname:"["+this.hostname+"]"),e.port&&(c+=":"+e.port)),e.query&&XT(e.query)&&Object.keys(e.query).length&&(n=e.query,r=r||"&",a=a||"=",null===n&&(n=void 0),d="object"==typeof n?tb(nb(n),function(e){var t=encodeURIComponent(eb(e))+a;return JT(n[e])?tb(n[e],function(e){return t+encodeURIComponent(eb(e))}).join(r):t+encodeURIComponent(eb(n[e]))}).join(r):i?encodeURIComponent(eb(i))+a+encodeURIComponent(eb(n)):"");var _=e.search||d&&"?"+d||"";return o&&":"!==o.substr(-1)&&(o+=":"),e.slashes||(!o||Sb[o])&&!1!==c?(c="//"+(c||""),s&&"/"!==s.charAt(0)&&(s="/"+s)):c||(c=""),l&&"#"!==l.charAt(0)&&(l="#"+l),_&&"?"!==_.charAt(0)&&(_="?"+_),o+c+(s=s.replace(/[?#]/g,function(e){return encodeURIComponent(e)}))+(_=_.replace("#","%23"))+l}function Cb(e){var t=e.host,n=sb.exec(t);n&&(":"!==(n=n[0])&&(e.port=n.substr(1)),t=t.substr(0,t.length-n.length)),t&&(e.hostname=t)}function Nb(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function vb(e){return(vb="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}ib.prototype.parse=function(e,t,n){return Tb(this,e,t,n)},ib.prototype.format=function(){return bb(this)},ib.prototype.resolve=function(e){return this.resolveObject(fb(e,!1,!0)).format()},ib.prototype.resolveObject=function(e){if(jT(e)){var t=new ib;t.parse(e,!1,!0),e=t}for(var n,r=new ib,a=Object.keys(this),i=0;i<a.length;i++){var o=a[i];r[o]=this[o]}if(r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),l=0;l<s.length;l++){var c=s[l];"protocol"!==c&&(r[c]=e[c])}return Sb[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!Sb[e.protocol]){for(var d=Object.keys(e),_=0;_<d.length;_++){var u=d[_];r[u]=e[u]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||hb[e.protocol])r.pathname=e.pathname;else{for(n=(e.pathname||"").split("/");n.length&&!(e.host=n.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==n[0]&&n.unshift(""),n.length<2&&n.unshift(""),r.pathname=n.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",p=r.search||"";r.path=m+p}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var g,E=r.pathname&&"/"===r.pathname.charAt(0),h=e.host||e.pathname&&"/"===e.pathname.charAt(0),S=h||E||r.host&&e.pathname,f=S,T=r.pathname&&r.pathname.split("/")||[],b=r.protocol&&!Sb[r.protocol];if(n=e.pathname&&e.pathname.split("/")||[],b&&(r.hostname="",r.port=null,r.host&&(""===T[0]?T[0]=r.host:T.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===n[0]?n[0]=e.host:n.unshift(e.host)),e.host=null),S=S&&(""===n[0]||""===T[0])),h)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,T=n;else if(n.length)T||(T=[]),T.pop(),T=T.concat(n),r.search=e.search,r.query=e.query;else if(null!=e.search)return b&&(r.hostname=r.host=T.shift(),(g=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=g.shift(),r.host=r.hostname=g.shift())),r.search=e.search,r.query=e.query,$T(r.pathname)&&$T(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!T.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var C=T.slice(-1)[0],N=(r.host||e.host||T.length>1)&&("."===C||".."===C)||""===C,v=0,R=T.length;R>=0;R--)"."===(C=T[R])?T.splice(R,1):".."===C?(T.splice(R,1),v++):v&&(T.splice(R,1),v--);if(!S&&!f)for(;v--;v)T.unshift("..");!S||""===T[0]||T[0]&&"/"===T[0].charAt(0)||T.unshift(""),N&&"/"!==T.join("/").substr(-1)&&T.push("");var A=""===T[0]||T[0]&&"/"===T[0].charAt(0);return b&&(r.hostname=r.host=A?"":T.length?T.shift():"",(g=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=g.shift(),r.host=r.hostname=g.shift())),(S=S||r.host&&T.length)&&!A&&T.unshift(""),T.length?r.pathname=T.join("/"):(r.pathname=null,r.path=null),$T(r.pathname)&&$T(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},ib.prototype.parseHost=function(){return Cb(this)};var Rb=ab.format,Ab=ab.parse,Ob=ab.URLSearchParams,yb=function(e){if("object"!==vb(e)||!Object.keys(e).length)throw new Error("remark-iframes needs to be passed a configuration object as option");var t=this.Parser,n=t.prototype.blockTokenizers,r=t.prototype.blockMethods;n.iframes=function(t,n,r){if(n.startsWith("!(http")){for(var a="",i="",o=["!","(",")"],s=0;s<n.length&&")"!==n[s-1];s++)a+=n[s],o.includes(n[s])||(i+=n[s]);if(r)return!0;var l=function(t){var n=Ab(t).hostname;return e[n]}(i);if(!l||!0===l.disabled||l.match&&l.match instanceof RegExp&&!l.match.test(i))return t(a)({type:"paragraph",children:[{type:"text",value:a}]});var c=function(e,t){var n=t,r=Ab(n);if(e.droppedQueryParameters&&r.search){var a=new Ob(r.search);e.droppedQueryParameters.forEach(function(e){return a.delete(e)}),r.search=a.toString(),n=Rb(r)}return e.replace&&e.replace.length&&(e.replace.forEach(function(e){var t=Nb(e,2),a=t[0],i=t[1];a&&i&&(n=n.replace(a,i)),r=Ab(n)}),n=Rb(r)),e.removeFileName&&(r.pathname=r.pathname.substring(0,r.pathname.lastIndexOf("/")),n=Rb(r)),e.removeAfter&&n.includes(e.removeAfter)&&(n=n.substring(0,n.indexOf(e.removeAfter))),e.append&&(n+=e.append),n}(l,i),d=function(e,t){var n="",r=e.thumbnail;return r&&r.format&&(n=r.format,Object.keys(r).filter(function(e){return"format"!==e}).forEach(function(e){var a=new RegExp("{".concat(e,"}"),"g"),i=new RegExp(r[e]).exec(t);i&&(n=n.replace(a,i[1]))})),n}(l,c);t(a)({type:"iframe",src:i,data:{hName:l.tag,hProperties:{src:c,width:l.width,height:l.height,allowfullscreen:!0,frameborder:"0"},thumbnail:d}})}},r.splice(r.indexOf("blockquote")+1,0,"iframes");var a=this.Compiler;if(a){var i=a.prototype.visitors;if(!i)return;i.iframe=function(e){return"!(".concat(e.src,")")}}};return function(e,t){Jc().use(Af).use(At).use(Lt).use(Dt).use(ht).use(Be).use(Te).use(wf,{information:{classes:"special-box information",title:"optional"},comment:{classes:"special-box comment",title:"optional"},attention:{classes:"special-box attention",title:"optional"},question:{classes:"special-box question",title:"optional"},good:{classes:"special-box good"},secret:{classes:"special-box secret",title:"optional"},bad:{classes:"special-box bad"}}).use(Et).use(yb,{"www.youtube.com":{tag:"IFRAME",width:560,height:315,disabled:!1,replace:[["watch?v=","embed/"],["http://","https://"]],thumbnail:{format:"http://img.youtube.com/vi/{id}/0.jpg",id:".+/(.+)$"},removeAfter:"&"}}).use(me,{allowDangerousHTML:!0}).use(eu).use(fl).use(Bm).process(e,t)}}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1kLm1pbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3h0ZW5kL2ltbXV0YWJsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LWJ1aWxkZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1pcy9jb252ZXJ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtcG9zaXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1nZW5lcmF0ZWQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC1kZWZpbml0aW9ucy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmltL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvYWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvb25lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvdGhlbWF0aWMtYnJlYWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi93cmFwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGlzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2Zvb3Rlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2Jsb2NrcXVvdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZXBlYXQtc3RyaW5nL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RldGFiL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2RlbGV0ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2VtcGhhc2lzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvZm9vdG5vdGUtcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvZm9vdG5vdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9oZWFkaW5nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZHVybC9lbmNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9yZXZlcnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY29sbGFwc2Utd2hpdGUtc3BhY2UvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9saXN0LWl0ZW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHJpbS1saW5lcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaW1hZ2UtcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaW1hZ2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9pbmxpbmUtY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2xpbmstcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGluay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3BhcmFncmFwaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3Jvb3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9zdHJvbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy90YWJsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy13aGl0ZXNwYWNlLWNoYXJhY3Rlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmsta2JkL2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvdXRpbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbWF0aC9pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvYmxvY2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9oaWdobGlnaHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm9ybWF0L2Zvcm1hdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mYXVsdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9sb3dsaWdodC9saWIvY29yZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy8xYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9sb3dsaWdodC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstaGlnaGxpZ2h0LmpzL3NyYy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hYm5mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FjY2Vzc2xvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY3Rpb25zY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYWRhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FuZ2Vsc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FwYWNoZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcHBsZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcmNhZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3BwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FyZHVpbm8uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXJtYXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3htbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hc2NpaWRvYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hc3BlY3RqLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9ob3RrZXkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXV0b2l0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F2cmFzbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hd2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXhhcHRhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Jhc2guanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYmFzaWMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYm5mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2JyYWluZnVjay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jYWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2FwbnByb3RvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NleWxvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbGVhbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbG9qdXJlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nsb2p1cmUtcmVwbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbWFrZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb2ZmZWVzY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29xLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nvcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcm1zaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcnlzdGFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jc3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXJrZG93bi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kYXJ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RlbHBoaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kaWZmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RqYW5nby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kbnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9ja2VyZmlsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kb3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHNjb25maWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2R1c3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWJuZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbGl4aXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWxtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1YnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJiLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy1yZXBsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9leGNlbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9maXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZmxpeC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9mb3J0cmFuLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZzaGFycC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nYW1zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dhdXNzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2djb2RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2doZXJraW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2xzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ28uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ29sby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ncmFkbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3Jvb3Z5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaGFuZGxlYmFycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYXNrZWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hheGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHNwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0bWxiYXJzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0dHAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaW5mb3JtNy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pbmkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaXJwZjkwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2lzYmwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamF2YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2pib3NzLWNsaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qc29uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLXJlcGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMva290bGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xhc3NvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xkaWYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGVhZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sZXNzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpc3AuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGl2ZWNvZGVzZXJ2ZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGl2ZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sbHZtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sdWEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWFrZWZpbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF0aGVtYXRpY2EuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF0bGFiLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21heGltYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tZWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWVyY3VyeS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXBzYXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21pemFyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BlcmwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9qb2xpY2lvdXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9ua2V5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21vb25zY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbjFxbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uZ2lueC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uaW1yb2QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbml4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25zaXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb2JqZWN0aXZlYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vY2FtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vcGVuc2NhZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9veHlnZW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BhcnNlcjMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGdzcWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGhwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BsYWludGV4dC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wb255LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Bvd2Vyc2hlbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvY2Vzc2luZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9maWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb2xvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9wZXJ0aWVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb3RvYnVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3B1cHBldC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wdXJlYmFzaWMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHl0aG9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3EuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcW1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcmVhc29ubWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcmliLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvYm9jb25mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvdXRlcm9zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ydWxlc2xhbmd1YWdlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1c3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2FzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NjYWxhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NjaGVtZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2lsYWIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2Nzcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zaGVsbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWFsaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWFsbHRhbGsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NxZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zcWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3Rhbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGF0YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGVwMjEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3R5bHVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N1YnVuaXQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3dpZnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGFnZ2Vyc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3lhbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGFwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RjbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90ZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGhyaWZ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R3aWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdHlwZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YWxhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZibmV0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LWh0bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmVyaWxvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92aGRsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZpbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94ODZhc20uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveHF1ZXJ5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3plcGhpci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbXVsdGlwbGUtY2hvaWNlL2FwcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZC1hdHRyLXBhcnNlci9kaXN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1saW5lLWlucHV0L2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXNlbGVjdC9kaXN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay10ZXh0LWlucHV0L2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vdW5pY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9lcnJvci1jb2Rlcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3Rva2VuaXplci9wcmVwcm9jZXNzb3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvbmFtZWQtZW50aXR5LWRhdGEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3BhcnNlci9vcGVuLWVsZW1lbnQtc3RhY2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvZm9ybWF0dGluZy1lbGVtZW50LWxpc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi91dGlscy9taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9sb2NhdGlvbi1pbmZvL3Rva2VuaXplci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvbG9jYXRpb24taW5mby9vcGVuLWVsZW1lbnQtc3RhY2stbWl4aW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL2xvY2F0aW9uLWluZm8vcGFyc2VyLW1peGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9lcnJvci1yZXBvcnRpbmcvbWl4aW4tYmFzZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3ByZXByb2Nlc3Nvci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3Rva2VuaXplci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3BhcnNlci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3RyZWUtYWRhcHRlcnMvZGVmYXVsdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3V0aWxzL21lcmdlLW9wdGlvbnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vZG9jdHlwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3V0aWwvc2NoZW1hLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL21lcmdlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL25vcm1hbGl6ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvdXRpbC9pbmZvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL3R5cGVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL2RlZmluZWQtaW5mby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvdXRpbC9jcmVhdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3hsaW5rLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi94bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3V0aWwvY2FzZS1zZW5zaXRpdmUtdHJhbnNmb3JtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL2Nhc2UtaW5zZW5zaXRpdmUtdHJhbnNmb3JtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi94bWxucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvYXJpYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi9zdmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vc3ZnLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2ZpbmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXBhcnNlLXNlbGVjdG9yL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3NwYWNlLXNlcGFyYXRlZC10b2tlbnMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY29tbWEtc2VwYXJhdGVkLXRva2Vucy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0c2NyaXB0L2ZhY3RvcnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdHNjcmlwdC9zdmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdHNjcmlwdC9odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Njb3VudC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtZnJvbS1wYXJzZTUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaW5saW5lLXN0eWxlLXBhcnNlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS10by1vYmplY3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC10by1oeXBlcnNjcmlwdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy96d2l0Y2gvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLXBhcnNlNS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtcmF3L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlaHlwZS1yYXcvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLWlzL2NvbnZlcnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0LXBhcmVudHMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2thdGV4L2Rpc3Qva2F0ZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZXh0ZW5kL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JhaWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUtbWVzc2FnZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yb2xsdXAtcGx1Z2luLW5vZGUtZ2xvYmFscy9zcmMvZ2xvYmFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MtZXM2L2Jyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcGF0aC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZXBsYWNlLWV4dC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy1idWZmZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUvY29yZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy92ZmlsZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cm91Z2gvd3JhcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cm91Z2gvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtcGxhaW4tb2JqL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaWZpZWQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLXBhcnNlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1pcy1lbGVtZW50L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtZmluZC1hZnRlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8tdGV4dC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWh5cGUta2F0ZXgvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXdoaXRlc3BhY2UvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvc2libGluZ3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvZmlyc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvcGxhY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvd2hpdGUtc3BhY2UtbGVmdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvb21pc3Npb24vb21pc3Npb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL2Nsb3NpbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL29wZW5pbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9hbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtaGV4YWRlY2ltYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtZGVjaW1hbC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy1hbHBoYWJldGljYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtYWxwaGFudW1lcmljYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3RyaW5naWZ5LWVudGl0aWVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi90ZXh0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9jb25zdGFudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2VsZW1lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2RvY3R5cGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2NvbW1lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL3Jhdy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvb25lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWh5cGUtc3RyaW5naWZ5L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5oZXJpdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdGF0ZS10b2dnbGUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUtbG9jYXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91bmVzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZS1lbnRpdGllcy9kZWNvZGUtZW50aXR5LmJyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2UtZW50aXRpZXMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9kZWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWFya2Rvd24tZXNjYXBlcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2Jsb2NrLWVsZW1lbnRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvZGVmYXVsdHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9zZXQtb3B0aW9ucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXJlbW92ZS1wb3NpdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3BhcnNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvbmV3bGluZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmltLXRyYWlsaW5nLWxpbmVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmRlbnRlZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2NvZGUtZmVuY2VkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9pbnRlcnJ1cHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9ibG9ja3F1b3RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1hdHguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS90aGVtYXRpYy1icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3V0aWwvZ2V0LWluZGVudGF0aW9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9yZW1vdmUtaW5kZW50YXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9saXN0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1zZXRleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91dGlsL2h0bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9odG1sLWJsb2NrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9ub3JtYWxpemUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9mb290bm90ZS1kZWZpbml0aW9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZGVmaW5pdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RhYmxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvcGFyYWdyYXBoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2VzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS90YWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9hdXRvLWxpbmsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaHRtbC1pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvbGluay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2xpbmsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9yZWZlcmVuY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvc3Ryb25nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvc3Ryb25nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2lzLXdvcmQtY2hhcmFjdGVyL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VtcGhhc2lzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZW1waGFzaXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvZGVsZXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZGVsZXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2NvZGUtaW5saW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvYnJlYWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9wYXJzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1jdXN0b20tYmxvY2tzL2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcHVueWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnVmZmVyLWVzNi9iYXNlNjQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnVmZmVyLWVzNi9pZWVlNzU0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2J1ZmZlci1lczYvaXNBcnJheS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9idWZmZXItZXM2L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JvbGx1cC1wbHVnaW4tbm9kZS1idWlsdGlucy9zcmMvZXM2L3V0aWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1pZnJhbWVzL2Rpc3QvaW5kZXguanMiLCIuLi8uLi90b2h0bWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBleHRlbmRcblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gZXh0ZW5kKCkge1xuICAgIHZhciB0YXJnZXQgPSB7fVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRcbn1cbiIsIi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ldy13cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0bztcbn07XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVcblxuZnVuY3Rpb24gdSh0eXBlLCBwcm9wcywgdmFsdWUpIHtcbiAgdmFyIG5vZGVcblxuICBpZiAoXG4gICAgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpICYmXG4gICAgKHR5cGVvZiBwcm9wcyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShwcm9wcykpXG4gICkge1xuICAgIHZhbHVlID0gcHJvcHNcbiAgICBwcm9wcyA9IHt9XG4gIH1cblxuICBub2RlID0gYXNzaWduKHt0eXBlOiBTdHJpbmcodHlwZSl9LCBwcm9wcylcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBub2RlLmNoaWxkcmVuID0gdmFsdWVcbiAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbm9kZS52YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuXG4gIHJldHVybiBub2RlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0XG5cbmZ1bmN0aW9uIGNvbnZlcnQodGVzdCkge1xuICBpZiAodHlwZW9mIHRlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGVGYWN0b3J5KHRlc3QpXG4gIH1cblxuICBpZiAodGVzdCA9PT0gbnVsbCB8fCB0ZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gb2tcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gKCdsZW5ndGgnIGluIHRlc3QgPyBhbnlGYWN0b3J5IDogbWF0Y2hlc0ZhY3RvcnkpKHRlc3QpXG4gIH1cblxuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdGVzdFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiwgc3RyaW5nLCBvciBvYmplY3QgYXMgdGVzdCcpXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRBbGwodGVzdHMpIHtcbiAgdmFyIHJlc3VsdHMgPSBbXVxuICB2YXIgbGVuZ3RoID0gdGVzdHMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRzW2luZGV4XSA9IGNvbnZlcnQodGVzdHNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHNcbn1cblxuLy8gVXRpbGl0eSBhc3NlcnQgZWFjaCBwcm9wZXJ0eSBpbiBgdGVzdGAgaXMgcmVwcmVzZW50ZWQgaW4gYG5vZGVgLCBhbmQgZWFjaFxuLy8gdmFsdWVzIGFyZSBzdHJpY3RseSBlcXVhbC5cbmZ1bmN0aW9uIG1hdGNoZXNGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIG1hdGNoZXNcblxuICBmdW5jdGlvbiBtYXRjaGVzKG5vZGUpIHtcbiAgICB2YXIga2V5XG5cbiAgICBmb3IgKGtleSBpbiB0ZXN0KSB7XG4gICAgICBpZiAobm9kZVtrZXldICE9PSB0ZXN0W2tleV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG5mdW5jdGlvbiBhbnlGYWN0b3J5KHRlc3RzKSB7XG4gIHZhciBjaGVja3MgPSBjb252ZXJ0QWxsKHRlc3RzKVxuICB2YXIgbGVuZ3RoID0gY2hlY2tzLmxlbmd0aFxuXG4gIHJldHVybiBtYXRjaGVzXG5cbiAgZnVuY3Rpb24gbWF0Y2hlcygpIHtcbiAgICB2YXIgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjaGVja3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIGNvbnZlcnQgYSBzdHJpbmcgaW50byBhIGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBhIGdpdmVuIG5vZGXigJlzIHR5cGVcbi8vIGZvciBzYWlkIHN0cmluZy5cbmZ1bmN0aW9uIHR5cGVGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIHR5cGVcblxuICBmdW5jdGlvbiB0eXBlKG5vZGUpIHtcbiAgICByZXR1cm4gQm9vbGVhbihub2RlICYmIG5vZGUudHlwZSA9PT0gdGVzdClcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIHJldHVybiB0cnVlLlxuZnVuY3Rpb24gb2soKSB7XG4gIHJldHVybiB0cnVlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB2aXNpdFBhcmVudHNcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG52YXIgQ09OVElOVUUgPSB0cnVlXG52YXIgU0tJUCA9ICdza2lwJ1xudmFyIEVYSVQgPSBmYWxzZVxuXG52aXNpdFBhcmVudHMuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXRQYXJlbnRzLlNLSVAgPSBTS0lQXG52aXNpdFBhcmVudHMuRVhJVCA9IEVYSVRcblxuZnVuY3Rpb24gdmlzaXRQYXJlbnRzKHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgdmFyIGlzXG5cbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICBpcyA9IGNvbnZlcnQodGVzdClcblxuICBvbmUodHJlZSwgbnVsbCwgW10pXG5cbiAgLy8gVmlzaXQgYSBzaW5nbGUgbm9kZS5cbiAgZnVuY3Rpb24gb25lKG5vZGUsIGluZGV4LCBwYXJlbnRzKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdXG4gICAgdmFyIHN1YnJlc3VsdFxuXG4gICAgaWYgKCF0ZXN0IHx8IGlzKG5vZGUsIGluZGV4LCBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV0gfHwgbnVsbCkpIHtcbiAgICAgIHJlc3VsdCA9IHRvUmVzdWx0KHZpc2l0b3Iobm9kZSwgcGFyZW50cykpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLmNoaWxkcmVuICYmIHJlc3VsdFswXSAhPT0gU0tJUCkge1xuICAgICAgc3VicmVzdWx0ID0gdG9SZXN1bHQoYWxsKG5vZGUuY2hpbGRyZW4sIHBhcmVudHMuY29uY2F0KG5vZGUpKSlcbiAgICAgIHJldHVybiBzdWJyZXN1bHRbMF0gPT09IEVYSVQgPyBzdWJyZXN1bHQgOiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBWaXNpdCBjaGlsZHJlbiBpbiBgcGFyZW50YC5cbiAgZnVuY3Rpb24gYWxsKGNoaWxkcmVuLCBwYXJlbnRzKSB7XG4gICAgdmFyIG1pbiA9IC0xXG4gICAgdmFyIHN0ZXAgPSByZXZlcnNlID8gLTEgOiAxXG4gICAgdmFyIGluZGV4ID0gKHJldmVyc2UgPyBjaGlsZHJlbi5sZW5ndGggOiBtaW4pICsgc3RlcFxuICAgIHZhciByZXN1bHRcblxuICAgIHdoaWxlIChpbmRleCA+IG1pbiAmJiBpbmRleCA8IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmVzdWx0ID0gb25lKGNoaWxkcmVuW2luZGV4XSwgaW5kZXgsIHBhcmVudHMpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHR5cGVvZiByZXN1bHRbMV0gPT09ICdudW1iZXInID8gcmVzdWx0WzFdIDogaW5kZXggKyBzdGVwXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRvUmVzdWx0KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbQ09OVElOVUUsIHZhbHVlXVxuICB9XG5cbiAgcmV0dXJuIFt2YWx1ZV1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0XG5cbnZhciB2aXNpdFBhcmVudHMgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0LXBhcmVudHMnKVxuXG52YXIgQ09OVElOVUUgPSB2aXNpdFBhcmVudHMuQ09OVElOVUVcbnZhciBTS0lQID0gdmlzaXRQYXJlbnRzLlNLSVBcbnZhciBFWElUID0gdmlzaXRQYXJlbnRzLkVYSVRcblxudmlzaXQuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXQuU0tJUCA9IFNLSVBcbnZpc2l0LkVYSVQgPSBFWElUXG5cbmZ1bmN0aW9uIHZpc2l0KHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICB2aXNpdFBhcmVudHModHJlZSwgdGVzdCwgb3ZlcmxvYWQsIHJldmVyc2UpXG5cbiAgZnVuY3Rpb24gb3ZlcmxvYWQobm9kZSwgcGFyZW50cykge1xuICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV1cbiAgICB2YXIgaW5kZXggPSBwYXJlbnQgPyBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihub2RlKSA6IG51bGxcbiAgICByZXR1cm4gdmlzaXRvcihub2RlLCBpbmRleCwgcGFyZW50KVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHBvc2l0aW9uID0gZXhwb3J0c1xuXG5wb3NpdGlvbi5zdGFydCA9IGZhY3RvcnkoJ3N0YXJ0JylcbnBvc2l0aW9uLmVuZCA9IGZhY3RvcnkoJ2VuZCcpXG5cbmZ1bmN0aW9uIGZhY3RvcnkodHlwZSkge1xuICBwb2ludC5kaXNwbGF5TmFtZSA9IHR5cGVcblxuICByZXR1cm4gcG9pbnRcblxuICBmdW5jdGlvbiBwb2ludChub2RlKSB7XG4gICAgdmFyIHBvaW50ID0gKG5vZGUgJiYgbm9kZS5wb3NpdGlvbiAmJiBub2RlLnBvc2l0aW9uW3R5cGVdKSB8fCB7fVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IHBvaW50LmxpbmUgfHwgbnVsbCxcbiAgICAgIGNvbHVtbjogcG9pbnQuY29sdW1uIHx8IG51bGwsXG4gICAgICBvZmZzZXQ6IGlzTmFOKHBvaW50Lm9mZnNldCkgPyBudWxsIDogcG9pbnQub2Zmc2V0XG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBnZW5lcmF0ZWRcblxuZnVuY3Rpb24gZ2VuZXJhdGVkKG5vZGUpIHtcbiAgdmFyIHBvc2l0aW9uID0gb3B0aW9uYWwob3B0aW9uYWwobm9kZSkucG9zaXRpb24pXG4gIHZhciBzdGFydCA9IG9wdGlvbmFsKHBvc2l0aW9uLnN0YXJ0KVxuICB2YXIgZW5kID0gb3B0aW9uYWwocG9zaXRpb24uZW5kKVxuXG4gIHJldHVybiAhc3RhcnQubGluZSB8fCAhc3RhcnQuY29sdW1uIHx8ICFlbmQubGluZSB8fCAhZW5kLmNvbHVtblxufVxuXG5mdW5jdGlvbiBvcHRpb25hbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlIDoge31cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcblxubW9kdWxlLmV4cG9ydHMgPSBnZXREZWZpbml0aW9uRmFjdG9yeVxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gR2V0IGEgZGVmaW5pdGlvbiBpbiBgbm9kZWAgYnkgYGlkZW50aWZpZXJgLlxuZnVuY3Rpb24gZ2V0RGVmaW5pdGlvbkZhY3Rvcnkobm9kZSwgb3B0aW9ucykge1xuICByZXR1cm4gZ2V0dGVyRmFjdG9yeShnYXRoZXIobm9kZSwgb3B0aW9ucykpXG59XG5cbi8vIEdhdGhlciBhbGwgZGVmaW5pdGlvbnMgaW4gYG5vZGVgXG5mdW5jdGlvbiBnYXRoZXIobm9kZSwgb3B0aW9ucykge1xuICB2YXIgY2FjaGUgPSB7fVxuXG4gIGlmICghbm9kZSB8fCAhbm9kZS50eXBlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZGFzdC11dGlsLWRlZmluaXRpb25zIGV4cGVjdGVkIG5vZGUnKVxuICB9XG5cbiAgdmlzaXQobm9kZSwgJ2RlZmluaXRpb24nLCBvcHRpb25zICYmIG9wdGlvbnMuY29tbW9ubWFyayA/IGNvbW1vbm1hcmsgOiBub3JtYWwpXG5cbiAgcmV0dXJuIGNhY2hlXG5cbiAgZnVuY3Rpb24gY29tbW9ubWFyayhkZWZpbml0aW9uKSB7XG4gICAgdmFyIGlkID0gbm9ybWFsaXNlKGRlZmluaXRpb24uaWRlbnRpZmllcilcbiAgICBpZiAoIW93bi5jYWxsKGNhY2hlLCBpZCkpIHtcbiAgICAgIGNhY2hlW2lkXSA9IGRlZmluaXRpb25cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBub3JtYWwoZGVmaW5pdGlvbikge1xuICAgIGNhY2hlW25vcm1hbGlzZShkZWZpbml0aW9uLmlkZW50aWZpZXIpXSA9IGRlZmluaXRpb25cbiAgfVxufVxuXG4vLyBGYWN0b3J5IHRvIGdldCBhIG5vZGUgZnJvbSB0aGUgZ2l2ZW4gZGVmaW5pdGlvbi1jYWNoZS5cbmZ1bmN0aW9uIGdldHRlckZhY3RvcnkoY2FjaGUpIHtcbiAgcmV0dXJuIGdldHRlclxuXG4gIC8vIEdldCBhIG5vZGUgZnJvbSB0aGUgYm91bmQgZGVmaW5pdGlvbi1jYWNoZS5cbiAgZnVuY3Rpb24gZ2V0dGVyKGlkZW50aWZpZXIpIHtcbiAgICB2YXIgaWQgPSBpZGVudGlmaWVyICYmIG5vcm1hbGlzZShpZGVudGlmaWVyKVxuICAgIHJldHVybiBpZCAmJiBvd24uY2FsbChjYWNoZSwgaWQpID8gY2FjaGVbaWRdIDogbnVsbFxuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGlzZShpZGVudGlmaWVyKSB7XG4gIHJldHVybiBpZGVudGlmaWVyLnRvVXBwZXJDYXNlKClcbn1cbiIsIlxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gdHJpbTtcblxuZnVuY3Rpb24gdHJpbShzdHIpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMqfFxccyokL2csICcnKTtcbn1cblxuZXhwb3J0cy5sZWZ0ID0gZnVuY3Rpb24oc3RyKXtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzKi8sICcnKTtcbn07XG5cbmV4cG9ydHMucmlnaHQgPSBmdW5jdGlvbihzdHIpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xccyokLywgJycpO1xufTtcbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFsbFxuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIG9uZSA9IHJlcXVpcmUoJy4vb25lJylcblxuZnVuY3Rpb24gYWxsKGgsIHBhcmVudCkge1xuICB2YXIgbm9kZXMgPSBwYXJlbnQuY2hpbGRyZW4gfHwgW11cbiAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aFxuICB2YXIgdmFsdWVzID0gW11cbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHJlc3VsdFxuICB2YXIgaGVhZFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0ID0gb25lKGgsIG5vZGVzW2luZGV4XSwgcGFyZW50KVxuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgaWYgKGluZGV4ICYmIG5vZGVzW2luZGV4IC0gMV0udHlwZSA9PT0gJ2JyZWFrJykge1xuICAgICAgICBpZiAocmVzdWx0LnZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdHJpbS5sZWZ0KHJlc3VsdC52YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGhlYWQgPSByZXN1bHQuY2hpbGRyZW4gJiYgcmVzdWx0LmNoaWxkcmVuWzBdXG5cbiAgICAgICAgaWYgKGhlYWQgJiYgaGVhZC52YWx1ZSkge1xuICAgICAgICAgIGhlYWQudmFsdWUgPSB0cmltLmxlZnQoaGVhZC52YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KHJlc3VsdClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsdWVzXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBvbmVcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciBhbGwgPSByZXF1aXJlKCcuL2FsbCcpXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBUcmFuc2Zvcm0gYW4gdW5rbm93biBub2RlLlxuZnVuY3Rpb24gdW5rbm93bihoLCBub2RlKSB7XG4gIGlmICh0ZXh0KG5vZGUpKSB7XG4gICAgcmV0dXJuIGguYXVnbWVudChub2RlLCB1KCd0ZXh0Jywgbm9kZS52YWx1ZSkpXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnZGl2JywgYWxsKGgsIG5vZGUpKVxufVxuXG4vLyBWaXNpdCBhIG5vZGUuXG5mdW5jdGlvbiBvbmUoaCwgbm9kZSwgcGFyZW50KSB7XG4gIHZhciB0eXBlID0gbm9kZSAmJiBub2RlLnR5cGVcbiAgdmFyIGZuID0gb3duLmNhbGwoaC5oYW5kbGVycywgdHlwZSkgPyBoLmhhbmRsZXJzW3R5cGVdIDogbnVsbFxuXG4gIC8vIEZhaWwgb24gbm9uLW5vZGVzLlxuICBpZiAoIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG5vZGUsIGdvdCBgJyArIG5vZGUgKyAnYCcpXG4gIH1cblxuICByZXR1cm4gKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyA/IGZuIDogdW5rbm93bikoaCwgbm9kZSwgcGFyZW50KVxufVxuXG4vLyBDaGVjayBpZiB0aGUgbm9kZSBzaG91bGQgYmUgcmVuZGVyZXJlZCBhcyBhIHRleHQgbm9kZS5cbmZ1bmN0aW9uIHRleHQobm9kZSkge1xuICB2YXIgZGF0YSA9IG5vZGUuZGF0YSB8fCB7fVxuXG4gIGlmIChcbiAgICBvd24uY2FsbChkYXRhLCAnaE5hbWUnKSB8fFxuICAgIG93bi5jYWxsKGRhdGEsICdoUHJvcGVydGllcycpIHx8XG4gICAgb3duLmNhbGwoZGF0YSwgJ2hDaGlsZHJlbicpXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuICd2YWx1ZScgaW4gbm9kZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdGhlbWF0aWNCcmVha1xuXG5mdW5jdGlvbiB0aGVtYXRpY0JyZWFrKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2hyJylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXBcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcblxuLy8gV3JhcCBgbm9kZXNgIHdpdGggbGluZSBmZWVkcyBiZXR3ZWVuIGVhY2ggZW50cnkuXG4vLyBPcHRpb25hbGx5IGFkZHMgbGluZSBmZWVkcyBhdCB0aGUgc3RhcnQgYW5kIGVuZC5cbmZ1bmN0aW9uIHdyYXAobm9kZXMsIGxvb3NlKSB7XG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoID0gbm9kZXMubGVuZ3RoXG5cbiAgaWYgKGxvb3NlKSB7XG4gICAgcmVzdWx0LnB1c2godSgndGV4dCcsICdcXG4nKSlcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGluZGV4KSB7XG4gICAgICByZXN1bHQucHVzaCh1KCd0ZXh0JywgJ1xcbicpKVxuICAgIH1cblxuICAgIHJlc3VsdC5wdXNoKG5vZGVzW2luZGV4XSlcbiAgfVxuXG4gIGlmIChsb29zZSAmJiBub2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICByZXN1bHQucHVzaCh1KCd0ZXh0JywgJ1xcbicpKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdFxuXG52YXIgd3JhcCA9IHJlcXVpcmUoJy4uL3dyYXAnKVxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIGxpc3QoaCwgbm9kZSkge1xuICB2YXIgcHJvcHMgPSB7fVxuICB2YXIgbmFtZSA9IG5vZGUub3JkZXJlZCA/ICdvbCcgOiAndWwnXG4gIHZhciBpdGVtc1xuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoXG5cbiAgaWYgKHR5cGVvZiBub2RlLnN0YXJ0ID09PSAnbnVtYmVyJyAmJiBub2RlLnN0YXJ0ICE9PSAxKSB7XG4gICAgcHJvcHMuc3RhcnQgPSBub2RlLnN0YXJ0XG4gIH1cblxuICBpdGVtcyA9IGFsbChoLCBub2RlKVxuICBsZW5ndGggPSBpdGVtcy5sZW5ndGhcblxuICAvLyBMaWtlIEdpdEh1YiwgYWRkIGEgY2xhc3MgZm9yIGN1c3RvbSBzdHlsaW5nLlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChcbiAgICAgIGl0ZW1zW2luZGV4XS5wcm9wZXJ0aWVzLmNsYXNzTmFtZSAmJlxuICAgICAgaXRlbXNbaW5kZXhdLnByb3BlcnRpZXMuY2xhc3NOYW1lLmluZGV4T2YoJ3Rhc2stbGlzdC1pdGVtJykgIT09IC0xXG4gICAgKSB7XG4gICAgICBwcm9wcy5jbGFzc05hbWUgPSBbJ2NvbnRhaW5zLXRhc2stbGlzdCddXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsIG5hbWUsIHByb3BzLCB3cmFwKGl0ZW1zLCB0cnVlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdlbmVyYXRlRm9vdG5vdGVzXG5cbnZhciB0aGVtYXRpY0JyZWFrID0gcmVxdWlyZSgnLi9oYW5kbGVycy90aGVtYXRpYy1icmVhaycpXG52YXIgbGlzdCA9IHJlcXVpcmUoJy4vaGFuZGxlcnMvbGlzdCcpXG52YXIgd3JhcCA9IHJlcXVpcmUoJy4vd3JhcCcpXG5cbmZ1bmN0aW9uIGdlbmVyYXRlRm9vdG5vdGVzKGgpIHtcbiAgdmFyIGZvb3Rub3RlQnlJZCA9IGguZm9vdG5vdGVCeUlkXG4gIHZhciBmb290bm90ZU9yZGVyID0gaC5mb290bm90ZU9yZGVyXG4gIHZhciBsZW5ndGggPSBmb290bm90ZU9yZGVyLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGlzdEl0ZW1zID0gW11cbiAgdmFyIGRlZlxuICB2YXIgYmFja1JlZmVyZW5jZVxuICB2YXIgY29udGVudFxuICB2YXIgdGFpbFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGVmID0gZm9vdG5vdGVCeUlkW2Zvb3Rub3RlT3JkZXJbaW5kZXhdLnRvVXBwZXJDYXNlKCldXG5cbiAgICBpZiAoIWRlZikge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb250ZW50ID0gZGVmLmNoaWxkcmVuLmNvbmNhdCgpXG4gICAgdGFpbCA9IGNvbnRlbnRbY29udGVudC5sZW5ndGggLSAxXVxuICAgIGJhY2tSZWZlcmVuY2UgPSB7XG4gICAgICB0eXBlOiAnbGluaycsXG4gICAgICB1cmw6ICcjZm5yZWYtJyArIGRlZi5pZGVudGlmaWVyLFxuICAgICAgZGF0YToge2hQcm9wZXJ0aWVzOiB7Y2xhc3NOYW1lOiBbJ2Zvb3Rub3RlLWJhY2tyZWYnXX19LFxuICAgICAgY2hpbGRyZW46IFt7dHlwZTogJ3RleHQnLCB2YWx1ZTogJ+KGqSd9XVxuICAgIH1cblxuICAgIGlmICghdGFpbCB8fCB0YWlsLnR5cGUgIT09ICdwYXJhZ3JhcGgnKSB7XG4gICAgICB0YWlsID0ge3R5cGU6ICdwYXJhZ3JhcGgnLCBjaGlsZHJlbjogW119XG4gICAgICBjb250ZW50LnB1c2godGFpbClcbiAgICB9XG5cbiAgICB0YWlsLmNoaWxkcmVuLnB1c2goYmFja1JlZmVyZW5jZSlcblxuICAgIGxpc3RJdGVtcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdsaXN0SXRlbScsXG4gICAgICBkYXRhOiB7aFByb3BlcnRpZXM6IHtpZDogJ2ZuLScgKyBkZWYuaWRlbnRpZmllcn19LFxuICAgICAgY2hpbGRyZW46IGNvbnRlbnQsXG4gICAgICBwb3NpdGlvbjogZGVmLnBvc2l0aW9uXG4gICAgfSlcbiAgfVxuXG4gIGlmIChsaXN0SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBoKFxuICAgIG51bGwsXG4gICAgJ2RpdicsXG4gICAge2NsYXNzTmFtZTogWydmb290bm90ZXMnXX0sXG4gICAgd3JhcChcbiAgICAgIFtcbiAgICAgICAgdGhlbWF0aWNCcmVhayhoKSxcbiAgICAgICAgbGlzdChoLCB7dHlwZTogJ2xpc3QnLCBvcmRlcmVkOiB0cnVlLCBjaGlsZHJlbjogbGlzdEl0ZW1zfSlcbiAgICAgIF0sXG4gICAgICB0cnVlXG4gICAgKVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBibG9ja3F1b3RlXG5cbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gYmxvY2txdW90ZShoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdibG9ja3F1b3RlJywgd3JhcChhbGwoaCwgbm9kZSksIHRydWUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaGFyZEJyZWFrXG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbmZ1bmN0aW9uIGhhcmRCcmVhayhoLCBub2RlKSB7XG4gIHJldHVybiBbaChub2RlLCAnYnInKSwgdSgndGV4dCcsICdcXG4nKV1cbn1cbiIsIi8qIVxuICogcmVwZWF0LXN0cmluZyA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvcmVwZWF0LXN0cmluZz5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNSwgSm9uIFNjaGxpbmtlcnQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFJlc3VsdHMgY2FjaGVcbiAqL1xuXG52YXIgcmVzID0gJyc7XG52YXIgY2FjaGU7XG5cbi8qKlxuICogRXhwb3NlIGByZXBlYXRgXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSByZXBlYXQ7XG5cbi8qKlxuICogUmVwZWF0IHRoZSBnaXZlbiBgc3RyaW5nYCB0aGUgc3BlY2lmaWVkIGBudW1iZXJgXG4gKiBvZiB0aW1lcy5cbiAqXG4gKiAqKkV4YW1wbGU6KipcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKTtcbiAqIHJlcGVhdCgnQScsIDUpO1xuICogLy89PiBBQUFBQVxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJpbmdgIFRoZSBzdHJpbmcgdG8gcmVwZWF0XG4gKiBAcGFyYW0ge051bWJlcn0gYG51bWJlcmAgVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZ1xuICogQHJldHVybiB7U3RyaW5nfSBSZXBlYXRlZCBzdHJpbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcmVwZWF0KHN0ciwgbnVtKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIGEgc3RyaW5nJyk7XG4gIH1cblxuICAvLyBjb3ZlciBjb21tb24sIHF1aWNrIHVzZSBjYXNlc1xuICBpZiAobnVtID09PSAxKSByZXR1cm4gc3RyO1xuICBpZiAobnVtID09PSAyKSByZXR1cm4gc3RyICsgc3RyO1xuXG4gIHZhciBtYXggPSBzdHIubGVuZ3RoICogbnVtO1xuICBpZiAoY2FjaGUgIT09IHN0ciB8fCB0eXBlb2YgY2FjaGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgY2FjaGUgPSBzdHI7XG4gICAgcmVzID0gJyc7XG4gIH0gZWxzZSBpZiAocmVzLmxlbmd0aCA+PSBtYXgpIHtcbiAgICByZXR1cm4gcmVzLnN1YnN0cigwLCBtYXgpO1xuICB9XG5cbiAgd2hpbGUgKG1heCA+IHJlcy5sZW5ndGggJiYgbnVtID4gMSkge1xuICAgIGlmIChudW0gJiAxKSB7XG4gICAgICByZXMgKz0gc3RyO1xuICAgIH1cblxuICAgIG51bSA+Pj0gMTtcbiAgICBzdHIgKz0gc3RyO1xuICB9XG5cbiAgcmVzICs9IHN0cjtcbiAgcmVzID0gcmVzLnN1YnN0cigwLCBtYXgpO1xuICByZXR1cm4gcmVzO1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZGV0YWJcblxudmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKVxuXG52YXIgdGFiID0gMHgwOVxudmFyIGxpbmVGZWVkID0gMHgwYVxudmFyIGNhcnJpYWdlUmV0dXJuID0gMHgwZFxuXG4vLyBSZXBsYWNlIHRhYnMgd2l0aCBzcGFjZXMsIGJlaW5nIHNtYXJ0IGFib3V0IHdoaWNoIGNvbHVtbiB0aGUgdGFiIGlzIGF0IGFuZFxuLy8gd2hpY2ggc2l6ZSBzaG91bGQgYmUgdXNlZC5cbmZ1bmN0aW9uIGRldGFiKHZhbHVlLCBzaXplKSB7XG4gIHZhciBzdHJpbmcgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gIHZhciBsZW5ndGggPSBzdHJpbmcgJiYgdmFsdWUubGVuZ3RoXG4gIHZhciBzdGFydCA9IDBcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGNvbHVtbiA9IC0xXG4gIHZhciB0YWJTaXplID0gc2l6ZSB8fCA0XG4gIHZhciByZXN1bHRzID0gW11cbiAgdmFyIGNvZGVcbiAgdmFyIGFkZFxuXG4gIGlmICghc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZXRhYiBleHBlY3RlZCBzdHJpbmcnKVxuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgIGlmIChjb2RlID09PSB0YWIpIHtcbiAgICAgIGFkZCA9IHRhYlNpemUgLSAoKGNvbHVtbiArIDEpICUgdGFiU2l6ZSlcbiAgICAgIGNvbHVtbiArPSBhZGRcbiAgICAgIHJlc3VsdHMucHVzaCh2YWx1ZS5zbGljZShzdGFydCwgaW5kZXgpICsgcmVwZWF0KCcgJywgYWRkKSlcbiAgICAgIHN0YXJ0ID0gaW5kZXggKyAxXG4gICAgfSBlbHNlIGlmIChjb2RlID09PSBsaW5lRmVlZCB8fCBjb2RlID09PSBjYXJyaWFnZVJldHVybikge1xuICAgICAgY29sdW1uID0gLTFcbiAgICB9IGVsc2Uge1xuICAgICAgY29sdW1uKytcbiAgICB9XG4gIH1cblxuICByZXN1bHRzLnB1c2godmFsdWUuc2xpY2Uoc3RhcnQpKVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJycpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb2RlXG5cbnZhciBkZXRhYiA9IHJlcXVpcmUoJ2RldGFiJylcbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbmZ1bmN0aW9uIGNvZGUoaCwgbm9kZSkge1xuICB2YXIgdmFsdWUgPSBub2RlLnZhbHVlID8gZGV0YWIobm9kZS52YWx1ZSArICdcXG4nKSA6ICcnXG4gIHZhciBsYW5nID0gbm9kZS5sYW5nICYmIG5vZGUubGFuZy5tYXRjaCgvXlteIFxcdF0rKD89WyBcXHRdfCQpLylcbiAgdmFyIHByb3BzID0ge31cblxuICBpZiAobGFuZykge1xuICAgIHByb3BzLmNsYXNzTmFtZSA9IFsnbGFuZ3VhZ2UtJyArIGxhbmddXG4gIH1cblxuICByZXR1cm4gaChub2RlLnBvc2l0aW9uLCAncHJlJywgW2gobm9kZSwgJ2NvZGUnLCBwcm9wcywgW3UoJ3RleHQnLCB2YWx1ZSldKV0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpa2V0aHJvdWdoXG5cbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBzdHJpa2V0aHJvdWdoKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2RlbCcsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGhhc2lzXG5cbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBlbXBoYXNpcyhoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdlbScsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZvb3Rub3RlUmVmZXJlbmNlXG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbmZ1bmN0aW9uIGZvb3Rub3RlUmVmZXJlbmNlKGgsIG5vZGUpIHtcbiAgdmFyIGZvb3Rub3RlT3JkZXIgPSBoLmZvb3Rub3RlT3JkZXJcbiAgdmFyIGlkZW50aWZpZXIgPSBTdHJpbmcobm9kZS5pZGVudGlmaWVyKVxuXG4gIGlmIChmb290bm90ZU9yZGVyLmluZGV4T2YoaWRlbnRpZmllcikgPT09IC0xKSB7XG4gICAgZm9vdG5vdGVPcmRlci5wdXNoKGlkZW50aWZpZXIpXG4gIH1cblxuICByZXR1cm4gaChub2RlLnBvc2l0aW9uLCAnc3VwJywge2lkOiAnZm5yZWYtJyArIGlkZW50aWZpZXJ9LCBbXG4gICAgaChub2RlLCAnYScsIHtocmVmOiAnI2ZuLScgKyBpZGVudGlmaWVyLCBjbGFzc05hbWU6IFsnZm9vdG5vdGUtcmVmJ119LCBbXG4gICAgICB1KCd0ZXh0Jywgbm9kZS5sYWJlbCB8fCBpZGVudGlmaWVyKVxuICAgIF0pXG4gIF0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmb290bm90ZVxuXG52YXIgZm9vdG5vdGVSZWZlcmVuY2UgPSByZXF1aXJlKCcuL2Zvb3Rub3RlLXJlZmVyZW5jZScpXG5cbmZ1bmN0aW9uIGZvb3Rub3RlKGgsIG5vZGUpIHtcbiAgdmFyIGZvb3Rub3RlQnlJZCA9IGguZm9vdG5vdGVCeUlkXG4gIHZhciBmb290bm90ZU9yZGVyID0gaC5mb290bm90ZU9yZGVyXG4gIHZhciBpZGVudGlmaWVyID0gMVxuXG4gIHdoaWxlIChpZGVudGlmaWVyIGluIGZvb3Rub3RlQnlJZCkge1xuICAgIGlkZW50aWZpZXIrK1xuICB9XG5cbiAgaWRlbnRpZmllciA9IFN0cmluZyhpZGVudGlmaWVyKVxuXG4gIC8vIE5vIG5lZWQgdG8gY2hlY2sgaWYgYGlkZW50aWZpZXJgIGV4aXN0cyBpbiBgZm9vdG5vdGVPcmRlcmAsIGl04oCZcyBndWFyYW50ZWVkXG4gIC8vIHRvIG5vdCBleGlzdCBiZWNhdXNlIHdlIGp1c3QgZ2VuZXJhdGVkIGl0LlxuICBmb290bm90ZU9yZGVyLnB1c2goaWRlbnRpZmllcilcblxuICBmb290bm90ZUJ5SWRbaWRlbnRpZmllcl0gPSB7XG4gICAgdHlwZTogJ2Zvb3Rub3RlRGVmaW5pdGlvbicsXG4gICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICBjaGlsZHJlbjogW3t0eXBlOiAncGFyYWdyYXBoJywgY2hpbGRyZW46IG5vZGUuY2hpbGRyZW59XSxcbiAgICBwb3NpdGlvbjogbm9kZS5wb3NpdGlvblxuICB9XG5cbiAgcmV0dXJuIGZvb3Rub3RlUmVmZXJlbmNlKGgsIHtcbiAgICB0eXBlOiAnZm9vdG5vdGVSZWZlcmVuY2UnLFxuICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgcG9zaXRpb246IG5vZGUucG9zaXRpb25cbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGhlYWRpbmdcblxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIGhlYWRpbmcoaCwgbm9kZSkge1xuICByZXR1cm4gaChub2RlLCAnaCcgKyBub2RlLmRlcHRoLCBhbGwoaCwgbm9kZSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBodG1sXG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbi8vIFJldHVybiBlaXRoZXIgYSBgcmF3YCBub2RlIGluIGRhbmdlcm91cyBtb2RlLCBvdGhlcndpc2Ugbm90aGluZy5cbmZ1bmN0aW9uIGh0bWwoaCwgbm9kZSkge1xuICByZXR1cm4gaC5kYW5nZXJvdXMgPyBoLmF1Z21lbnQobm9kZSwgdSgncmF3Jywgbm9kZS52YWx1ZSkpIDogbnVsbFxufVxuIiwiXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIGVuY29kZUNhY2hlID0ge307XG5cblxuLy8gQ3JlYXRlIGEgbG9va3VwIGFycmF5IHdoZXJlIGFueXRoaW5nIGJ1dCBjaGFyYWN0ZXJzIGluIGBjaGFyc2Agc3RyaW5nXG4vLyBhbmQgYWxwaGFudW1lcmljIGNoYXJzIGlzIHBlcmNlbnQtZW5jb2RlZC5cbi8vXG5mdW5jdGlvbiBnZXRFbmNvZGVDYWNoZShleGNsdWRlKSB7XG4gIHZhciBpLCBjaCwgY2FjaGUgPSBlbmNvZGVDYWNoZVtleGNsdWRlXTtcbiAgaWYgKGNhY2hlKSB7IHJldHVybiBjYWNoZTsgfVxuXG4gIGNhY2hlID0gZW5jb2RlQ2FjaGVbZXhjbHVkZV0gPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgMTI4OyBpKyspIHtcbiAgICBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XG5cbiAgICBpZiAoL15bMC05YS16XSQvaS50ZXN0KGNoKSkge1xuICAgICAgLy8gYWx3YXlzIGFsbG93IHVuZW5jb2RlZCBhbHBoYW51bWVyaWMgY2hhcmFjdGVyc1xuICAgICAgY2FjaGUucHVzaChjaCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlLnB1c2goJyUnICsgKCcwJyArIGkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkpLnNsaWNlKC0yKSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGV4Y2x1ZGUubGVuZ3RoOyBpKyspIHtcbiAgICBjYWNoZVtleGNsdWRlLmNoYXJDb2RlQXQoaSldID0gZXhjbHVkZVtpXTtcbiAgfVxuXG4gIHJldHVybiBjYWNoZTtcbn1cblxuXG4vLyBFbmNvZGUgdW5zYWZlIGNoYXJhY3RlcnMgd2l0aCBwZXJjZW50LWVuY29kaW5nLCBza2lwcGluZyBhbHJlYWR5XG4vLyBlbmNvZGVkIHNlcXVlbmNlcy5cbi8vXG4vLyAgLSBzdHJpbmcgICAgICAgLSBzdHJpbmcgdG8gZW5jb2RlXG4vLyAgLSBleGNsdWRlICAgICAgLSBsaXN0IG9mIGNoYXJhY3RlcnMgdG8gaWdub3JlIChpbiBhZGRpdGlvbiB0byBhLXpBLVowLTkpXG4vLyAgLSBrZWVwRXNjYXBlZCAgLSBkb24ndCBlbmNvZGUgJyUnIGluIGEgY29ycmVjdCBlc2NhcGUgc2VxdWVuY2UgKGRlZmF1bHQ6IHRydWUpXG4vL1xuZnVuY3Rpb24gZW5jb2RlKHN0cmluZywgZXhjbHVkZSwga2VlcEVzY2FwZWQpIHtcbiAgdmFyIGksIGwsIGNvZGUsIG5leHRDb2RlLCBjYWNoZSxcbiAgICAgIHJlc3VsdCA9ICcnO1xuXG4gIGlmICh0eXBlb2YgZXhjbHVkZSAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBlbmNvZGUoc3RyaW5nLCBrZWVwRXNjYXBlZClcbiAgICBrZWVwRXNjYXBlZCAgPSBleGNsdWRlO1xuICAgIGV4Y2x1ZGUgPSBlbmNvZGUuZGVmYXVsdENoYXJzO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBrZWVwRXNjYXBlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBrZWVwRXNjYXBlZCA9IHRydWU7XG4gIH1cblxuICBjYWNoZSA9IGdldEVuY29kZUNhY2hlKGV4Y2x1ZGUpO1xuXG4gIGZvciAoaSA9IDAsIGwgPSBzdHJpbmcubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgY29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuXG4gICAgaWYgKGtlZXBFc2NhcGVkICYmIGNvZGUgPT09IDB4MjUgLyogJSAqLyAmJiBpICsgMiA8IGwpIHtcbiAgICAgIGlmICgvXlswLTlhLWZdezJ9JC9pLnRlc3Qoc3RyaW5nLnNsaWNlKGkgKyAxLCBpICsgMykpKSB7XG4gICAgICAgIHJlc3VsdCArPSBzdHJpbmcuc2xpY2UoaSwgaSArIDMpO1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlIDwgMTI4KSB7XG4gICAgICByZXN1bHQgKz0gY2FjaGVbY29kZV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY29kZSA+PSAweEQ4MDAgJiYgY29kZSA8PSAweERGRkYpIHtcbiAgICAgIGlmIChjb2RlID49IDB4RDgwMCAmJiBjb2RlIDw9IDB4REJGRiAmJiBpICsgMSA8IGwpIHtcbiAgICAgICAgbmV4dENvZGUgPSBzdHJpbmcuY2hhckNvZGVBdChpICsgMSk7XG4gICAgICAgIGlmIChuZXh0Q29kZSA+PSAweERDMDAgJiYgbmV4dENvZGUgPD0gMHhERkZGKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdbaV0gKyBzdHJpbmdbaSArIDFdKTtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc3VsdCArPSAnJUVGJUJGJUJEJztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc3VsdCArPSBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmVuY29kZS5kZWZhdWx0Q2hhcnMgICA9IFwiOy8/OkAmPSskLC1fLiF+KicoKSNcIjtcbmVuY29kZS5jb21wb25lbnRDaGFycyA9IFwiLV8uIX4qJygpXCI7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBlbmNvZGU7XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSByZXZlcnRcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciBhbGwgPSByZXF1aXJlKCcuL2FsbCcpXG5cbi8vIFJldHVybiB0aGUgY29udGVudCBvZiBhIHJlZmVyZW5jZSB3aXRob3V0IGRlZmluaXRpb24gYXMgTWFya2Rvd24uXG5mdW5jdGlvbiByZXZlcnQoaCwgbm9kZSkge1xuICB2YXIgc3VidHlwZSA9IG5vZGUucmVmZXJlbmNlVHlwZVxuICB2YXIgc3VmZml4ID0gJ10nXG4gIHZhciBjb250ZW50c1xuICB2YXIgaGVhZFxuICB2YXIgdGFpbFxuXG4gIGlmIChzdWJ0eXBlID09PSAnY29sbGFwc2VkJykge1xuICAgIHN1ZmZpeCArPSAnW10nXG4gIH0gZWxzZSBpZiAoc3VidHlwZSA9PT0gJ2Z1bGwnKSB7XG4gICAgc3VmZml4ICs9ICdbJyArIChub2RlLmxhYmVsIHx8IG5vZGUuaWRlbnRpZmllcikgKyAnXSdcbiAgfVxuXG4gIGlmIChub2RlLnR5cGUgPT09ICdpbWFnZVJlZmVyZW5jZScpIHtcbiAgICByZXR1cm4gdSgndGV4dCcsICchWycgKyBub2RlLmFsdCArIHN1ZmZpeClcbiAgfVxuXG4gIGNvbnRlbnRzID0gYWxsKGgsIG5vZGUpXG4gIGhlYWQgPSBjb250ZW50c1swXVxuXG4gIGlmIChoZWFkICYmIGhlYWQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgaGVhZC52YWx1ZSA9ICdbJyArIGhlYWQudmFsdWVcbiAgfSBlbHNlIHtcbiAgICBjb250ZW50cy51bnNoaWZ0KHUoJ3RleHQnLCAnWycpKVxuICB9XG5cbiAgdGFpbCA9IGNvbnRlbnRzW2NvbnRlbnRzLmxlbmd0aCAtIDFdXG5cbiAgaWYgKHRhaWwgJiYgdGFpbC50eXBlID09PSAndGV4dCcpIHtcbiAgICB0YWlsLnZhbHVlICs9IHN1ZmZpeFxuICB9IGVsc2Uge1xuICAgIGNvbnRlbnRzLnB1c2godSgndGV4dCcsIHN1ZmZpeCkpXG4gIH1cblxuICByZXR1cm4gY29udGVudHNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbGxhcHNlXG5cbi8vIGBjb2xsYXBzZSgnIFxcdFxcbmJhciBcXG5iYXpcXHQnKSAvLyAnIGJhciBiYXogJ2BcbmZ1bmN0aW9uIGNvbGxhcHNlKHZhbHVlKSB7XG4gIHJldHVybiBTdHJpbmcodmFsdWUpLnJlcGxhY2UoL1xccysvZywgJyAnKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdEl0ZW1cblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gbGlzdEl0ZW0oaCwgbm9kZSwgcGFyZW50KSB7XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW5cbiAgdmFyIGhlYWQgPSBjaGlsZHJlblswXVxuICB2YXIgcmF3ID0gYWxsKGgsIG5vZGUpXG4gIHZhciBsb29zZSA9IHBhcmVudCA/IGxpc3RMb29zZShwYXJlbnQpIDogbGlzdEl0ZW1Mb29zZShub2RlKVxuICB2YXIgcHJvcHMgPSB7fVxuICB2YXIgcmVzdWx0XG4gIHZhciBjb250YWluZXJcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcbiAgdmFyIGNoaWxkXG5cbiAgLy8gVGlnaHQgbGlzdHMgc2hvdWxkIG5vdCByZW5kZXIgYHBhcmFncmFwaGAgbm9kZXMgYXMgYHBgIGVsZW1lbnRzLlxuICBpZiAobG9vc2UpIHtcbiAgICByZXN1bHQgPSByYXdcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSBbXVxuICAgIGxlbmd0aCA9IHJhdy5sZW5ndGhcbiAgICBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hpbGQgPSByYXdbaW5kZXhdXG5cbiAgICAgIGlmIChjaGlsZC50YWdOYW1lID09PSAncCcpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChjaGlsZC5jaGlsZHJlbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygbm9kZS5jaGVja2VkID09PSAnYm9vbGVhbicpIHtcbiAgICBpZiAobG9vc2UgJiYgKCFoZWFkIHx8IGhlYWQudHlwZSAhPT0gJ3BhcmFncmFwaCcpKSB7XG4gICAgICByZXN1bHQudW5zaGlmdChoKG51bGwsICdwJywgW10pKVxuICAgIH1cblxuICAgIGNvbnRhaW5lciA9IGxvb3NlID8gcmVzdWx0WzBdLmNoaWxkcmVuIDogcmVzdWx0XG5cbiAgICBpZiAoY29udGFpbmVyLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY29udGFpbmVyLnVuc2hpZnQodSgndGV4dCcsICcgJykpXG4gICAgfVxuXG4gICAgY29udGFpbmVyLnVuc2hpZnQoXG4gICAgICBoKG51bGwsICdpbnB1dCcsIHtcbiAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgY2hlY2tlZDogbm9kZS5jaGVja2VkLFxuICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgfSlcbiAgICApXG5cbiAgICAvLyBBY2NvcmRpbmcgdG8gZ2l0aHViLW1hcmtkb3duLWNzcywgdGhpcyBjbGFzcyBoaWRlcyBidWxsZXQuXG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9naXRodWItbWFya2Rvd24tY3NzPi5cbiAgICBwcm9wcy5jbGFzc05hbWUgPSBbJ3Rhc2stbGlzdC1pdGVtJ11cbiAgfVxuXG4gIGlmIChsb29zZSAmJiByZXN1bHQubGVuZ3RoICE9PSAwKSB7XG4gICAgcmVzdWx0ID0gd3JhcChyZXN1bHQsIHRydWUpXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnbGknLCBwcm9wcywgcmVzdWx0KVxufVxuXG5mdW5jdGlvbiBsaXN0TG9vc2Uobm9kZSkge1xuICB2YXIgbG9vc2UgPSBub2RlLnNwcmVhZFxuICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuXG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcblxuICB3aGlsZSAoIWxvb3NlICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBsb29zZSA9IGxpc3RJdGVtTG9vc2UoY2hpbGRyZW5baW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIGxvb3NlXG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtTG9vc2Uobm9kZSkge1xuICB2YXIgc3ByZWFkID0gbm9kZS5zcHJlYWRcblxuICByZXR1cm4gc3ByZWFkID09PSB1bmRlZmluZWQgfHwgc3ByZWFkID09PSBudWxsXG4gICAgPyBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDFcbiAgICA6IHNwcmVhZFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbUxpbmVzXG5cbnZhciB3cyA9IC9bIFxcdF0qXFxuK1sgXFx0XSovZ1xudmFyIG5ld2xpbmUgPSAnXFxuJ1xuXG5mdW5jdGlvbiB0cmltTGluZXModmFsdWUpIHtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSkucmVwbGFjZSh3cywgbmV3bGluZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYmxvY2txdW90ZTogcmVxdWlyZSgnLi9ibG9ja3F1b3RlJyksXG4gIGJyZWFrOiByZXF1aXJlKCcuL2JyZWFrJyksXG4gIGNvZGU6IHJlcXVpcmUoJy4vY29kZScpLFxuICBkZWxldGU6IHJlcXVpcmUoJy4vZGVsZXRlJyksXG4gIGVtcGhhc2lzOiByZXF1aXJlKCcuL2VtcGhhc2lzJyksXG4gIGZvb3Rub3RlUmVmZXJlbmNlOiByZXF1aXJlKCcuL2Zvb3Rub3RlLXJlZmVyZW5jZScpLFxuICBmb290bm90ZTogcmVxdWlyZSgnLi9mb290bm90ZScpLFxuICBoZWFkaW5nOiByZXF1aXJlKCcuL2hlYWRpbmcnKSxcbiAgaHRtbDogcmVxdWlyZSgnLi9odG1sJyksXG4gIGltYWdlUmVmZXJlbmNlOiByZXF1aXJlKCcuL2ltYWdlLXJlZmVyZW5jZScpLFxuICBpbWFnZTogcmVxdWlyZSgnLi9pbWFnZScpLFxuICBpbmxpbmVDb2RlOiByZXF1aXJlKCcuL2lubGluZS1jb2RlJyksXG4gIGxpbmtSZWZlcmVuY2U6IHJlcXVpcmUoJy4vbGluay1yZWZlcmVuY2UnKSxcbiAgbGluazogcmVxdWlyZSgnLi9saW5rJyksXG4gIGxpc3RJdGVtOiByZXF1aXJlKCcuL2xpc3QtaXRlbScpLFxuICBsaXN0OiByZXF1aXJlKCcuL2xpc3QnKSxcbiAgcGFyYWdyYXBoOiByZXF1aXJlKCcuL3BhcmFncmFwaCcpLFxuICByb290OiByZXF1aXJlKCcuL3Jvb3QnKSxcbiAgc3Ryb25nOiByZXF1aXJlKCcuL3N0cm9uZycpLFxuICB0YWJsZTogcmVxdWlyZSgnLi90YWJsZScpLFxuICB0ZXh0OiByZXF1aXJlKCcuL3RleHQnKSxcbiAgdGhlbWF0aWNCcmVhazogcmVxdWlyZSgnLi90aGVtYXRpYy1icmVhaycpLFxuICB0b21sOiBpZ25vcmUsXG4gIHlhbWw6IGlnbm9yZSxcbiAgZGVmaW5pdGlvbjogaWdub3JlLFxuICBmb290bm90ZURlZmluaXRpb246IGlnbm9yZVxufVxuXG4vLyBSZXR1cm4gbm90aGluZyBmb3Igbm9kZXMgdGhhdCBhcmUgaWdub3JlZC5cbmZ1bmN0aW9uIGlnbm9yZSgpIHtcbiAgcmV0dXJuIG51bGxcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGltYWdlUmVmZXJlbmNlXG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdtZHVybC9lbmNvZGUnKVxudmFyIHJldmVydCA9IHJlcXVpcmUoJy4uL3JldmVydCcpXG5cbmZ1bmN0aW9uIGltYWdlUmVmZXJlbmNlKGgsIG5vZGUpIHtcbiAgdmFyIGRlZiA9IGguZGVmaW5pdGlvbihub2RlLmlkZW50aWZpZXIpXG4gIHZhciBwcm9wc1xuXG4gIGlmICghZGVmKSB7XG4gICAgcmV0dXJuIHJldmVydChoLCBub2RlKVxuICB9XG5cbiAgcHJvcHMgPSB7c3JjOiBub3JtYWxpemUoZGVmLnVybCB8fCAnJyksIGFsdDogbm9kZS5hbHR9XG5cbiAgaWYgKGRlZi50aXRsZSAhPT0gbnVsbCAmJiBkZWYudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gZGVmLnRpdGxlXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnaW1nJywgcHJvcHMpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJ21kdXJsL2VuY29kZScpXG5cbm1vZHVsZS5leHBvcnRzID0gaW1hZ2VcblxuZnVuY3Rpb24gaW1hZ2UoaCwgbm9kZSkge1xuICB2YXIgcHJvcHMgPSB7c3JjOiBub3JtYWxpemUobm9kZS51cmwpLCBhbHQ6IG5vZGUuYWx0fVxuXG4gIGlmIChub2RlLnRpdGxlICE9PSBudWxsICYmIG5vZGUudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gbm9kZS50aXRsZVxuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgJ2ltZycsIHByb3BzKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaW5saW5lQ29kZVxuXG52YXIgY29sbGFwc2UgPSByZXF1aXJlKCdjb2xsYXBzZS13aGl0ZS1zcGFjZScpXG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKVxuXG5mdW5jdGlvbiBpbmxpbmVDb2RlKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2NvZGUnLCBbdSgndGV4dCcsIGNvbGxhcHNlKG5vZGUudmFsdWUpKV0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsaW5rUmVmZXJlbmNlXG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdtZHVybC9lbmNvZGUnKVxudmFyIHJldmVydCA9IHJlcXVpcmUoJy4uL3JldmVydCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gbGlua1JlZmVyZW5jZShoLCBub2RlKSB7XG4gIHZhciBkZWYgPSBoLmRlZmluaXRpb24obm9kZS5pZGVudGlmaWVyKVxuICB2YXIgcHJvcHNcblxuICBpZiAoIWRlZikge1xuICAgIHJldHVybiByZXZlcnQoaCwgbm9kZSlcbiAgfVxuXG4gIHByb3BzID0ge2hyZWY6IG5vcm1hbGl6ZShkZWYudXJsIHx8ICcnKX1cblxuICBpZiAoZGVmLnRpdGxlICE9PSBudWxsICYmIGRlZi50aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvcHMudGl0bGUgPSBkZWYudGl0bGVcbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsICdhJywgcHJvcHMsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbm9ybWFsaXplID0gcmVxdWlyZSgnbWR1cmwvZW5jb2RlJylcbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpbmtcblxuZnVuY3Rpb24gbGluayhoLCBub2RlKSB7XG4gIHZhciBwcm9wcyA9IHtocmVmOiBub3JtYWxpemUobm9kZS51cmwpfVxuXG4gIGlmIChub2RlLnRpdGxlICE9PSBudWxsICYmIG5vZGUudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gbm9kZS50aXRsZVxuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgJ2EnLCBwcm9wcywgYWxsKGgsIG5vZGUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyYWdyYXBoXG5cbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBwYXJhZ3JhcGgoaCwgbm9kZSkge1xuICByZXR1cm4gaChub2RlLCAncCcsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3RcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gcm9vdChoLCBub2RlKSB7XG4gIHJldHVybiBoLmF1Z21lbnQobm9kZSwgdSgncm9vdCcsIHdyYXAoYWxsKGgsIG5vZGUpKSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJvbmdcblxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIHN0cm9uZyhoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdzdHJvbmcnLCBhbGwoaCwgbm9kZSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0YWJsZVxuXG52YXIgcG9zaXRpb24gPSByZXF1aXJlKCd1bmlzdC11dGlsLXBvc2l0aW9uJylcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gdGFibGUoaCwgbm9kZSkge1xuICB2YXIgcm93cyA9IG5vZGUuY2hpbGRyZW5cbiAgdmFyIGluZGV4ID0gcm93cy5sZW5ndGhcbiAgdmFyIGFsaWduID0gbm9kZS5hbGlnblxuICB2YXIgYWxpZ25MZW5ndGggPSBhbGlnbi5sZW5ndGhcbiAgdmFyIHJlc3VsdCA9IFtdXG4gIHZhciBwb3NcbiAgdmFyIHJvd1xuICB2YXIgb3V0XG4gIHZhciBuYW1lXG4gIHZhciBjZWxsXG5cbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICByb3cgPSByb3dzW2luZGV4XS5jaGlsZHJlblxuICAgIG5hbWUgPSBpbmRleCA9PT0gMCA/ICd0aCcgOiAndGQnXG4gICAgcG9zID0gYWxpZ25MZW5ndGhcbiAgICBvdXQgPSBbXVxuXG4gICAgd2hpbGUgKHBvcy0tKSB7XG4gICAgICBjZWxsID0gcm93W3Bvc11cbiAgICAgIG91dFtwb3NdID0gaChjZWxsLCBuYW1lLCB7YWxpZ246IGFsaWduW3Bvc119LCBjZWxsID8gYWxsKGgsIGNlbGwpIDogW10pXG4gICAgfVxuXG4gICAgcmVzdWx0W2luZGV4XSA9IGgocm93c1tpbmRleF0sICd0cicsIHdyYXAob3V0LCB0cnVlKSlcbiAgfVxuXG4gIHJldHVybiBoKFxuICAgIG5vZGUsXG4gICAgJ3RhYmxlJyxcbiAgICB3cmFwKFxuICAgICAgW1xuICAgICAgICBoKHJlc3VsdFswXS5wb3NpdGlvbiwgJ3RoZWFkJywgd3JhcChbcmVzdWx0WzBdXSwgdHJ1ZSkpLFxuICAgICAgICBoKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXJ0OiBwb3NpdGlvbi5zdGFydChyZXN1bHRbMV0pLFxuICAgICAgICAgICAgZW5kOiBwb3NpdGlvbi5lbmQocmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSlcbiAgICAgICAgICB9LFxuICAgICAgICAgICd0Ym9keScsXG4gICAgICAgICAgd3JhcChyZXN1bHQuc2xpY2UoMSksIHRydWUpXG4gICAgICAgIClcbiAgICAgIF0sXG4gICAgICB0cnVlXG4gICAgKVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0ZXh0XG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG52YXIgdHJpbUxpbmVzID0gcmVxdWlyZSgndHJpbS1saW5lcycpXG5cbmZ1bmN0aW9uIHRleHQoaCwgbm9kZSkge1xuICByZXR1cm4gaC5hdWdtZW50KG5vZGUsIHUoJ3RleHQnLCB0cmltTGluZXMobm9kZS52YWx1ZSkpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdG9IYXN0XG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcbnZhciBwb3NpdGlvbiA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtcG9zaXRpb24nKVxudmFyIGdlbmVyYXRlZCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtZ2VuZXJhdGVkJylcbnZhciBkZWZpbml0aW9ucyA9IHJlcXVpcmUoJ21kYXN0LXV0aWwtZGVmaW5pdGlvbnMnKVxudmFyIG9uZSA9IHJlcXVpcmUoJy4vb25lJylcbnZhciBmb290ZXIgPSByZXF1aXJlKCcuL2Zvb3RlcicpXG52YXIgaGFuZGxlcnMgPSByZXF1aXJlKCcuL2hhbmRsZXJzJylcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbi8vIEZhY3RvcnkgdG8gdHJhbnNmb3JtLlxuZnVuY3Rpb24gZmFjdG9yeSh0cmVlLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGRhbmdlcm91cyA9IHNldHRpbmdzLmFsbG93RGFuZ2Vyb3VzSFRNTFxuICB2YXIgZm9vdG5vdGVCeUlkID0ge31cblxuICBoLmRhbmdlcm91cyA9IGRhbmdlcm91c1xuICBoLmRlZmluaXRpb24gPSBkZWZpbml0aW9ucyh0cmVlLCBzZXR0aW5ncylcbiAgaC5mb290bm90ZUJ5SWQgPSBmb290bm90ZUJ5SWRcbiAgaC5mb290bm90ZU9yZGVyID0gW11cbiAgaC5hdWdtZW50ID0gYXVnbWVudFxuICBoLmhhbmRsZXJzID0geHRlbmQoaGFuZGxlcnMsIHNldHRpbmdzLmhhbmRsZXJzIHx8IHt9KVxuXG4gIHZpc2l0KHRyZWUsICdmb290bm90ZURlZmluaXRpb24nLCBvbmZvb3Rub3RlZGVmaW5pdGlvbilcblxuICByZXR1cm4gaFxuXG4gIC8vIEZpbmFsaXNlIHRoZSBjcmVhdGVkIGByaWdodGAsIGEgaGFzdCBub2RlLCBmcm9tIGBsZWZ0YCwgYW4gbWRhc3Qgbm9kZS5cbiAgZnVuY3Rpb24gYXVnbWVudChsZWZ0LCByaWdodCkge1xuICAgIHZhciBkYXRhXG4gICAgdmFyIGN0eFxuXG4gICAgLy8gSGFuZGxlIGBkYXRhLmhOYW1lYCwgYGRhdGEuaFByb3BlcnRpZXMsIGBkYXRhLmhDaGlsZHJlbmAuXG4gICAgaWYgKGxlZnQgJiYgJ2RhdGEnIGluIGxlZnQpIHtcbiAgICAgIGRhdGEgPSBsZWZ0LmRhdGFcblxuICAgICAgaWYgKHJpZ2h0LnR5cGUgPT09ICdlbGVtZW50JyAmJiBkYXRhLmhOYW1lKSB7XG4gICAgICAgIHJpZ2h0LnRhZ05hbWUgPSBkYXRhLmhOYW1lXG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodC50eXBlID09PSAnZWxlbWVudCcgJiYgZGF0YS5oUHJvcGVydGllcykge1xuICAgICAgICByaWdodC5wcm9wZXJ0aWVzID0geHRlbmQocmlnaHQucHJvcGVydGllcywgZGF0YS5oUHJvcGVydGllcylcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0LmNoaWxkcmVuICYmIGRhdGEuaENoaWxkcmVuKSB7XG4gICAgICAgIHJpZ2h0LmNoaWxkcmVuID0gZGF0YS5oQ2hpbGRyZW5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjdHggPSBsZWZ0ICYmIGxlZnQucG9zaXRpb24gPyBsZWZ0IDoge3Bvc2l0aW9uOiBsZWZ0fVxuXG4gICAgaWYgKCFnZW5lcmF0ZWQoY3R4KSkge1xuICAgICAgcmlnaHQucG9zaXRpb24gPSB7XG4gICAgICAgIHN0YXJ0OiBwb3NpdGlvbi5zdGFydChjdHgpLFxuICAgICAgICBlbmQ6IHBvc2l0aW9uLmVuZChjdHgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJpZ2h0XG4gIH1cblxuICAvLyBDcmVhdGUgYW4gZWxlbWVudCBmb3IgYG5vZGVgLlxuICBmdW5jdGlvbiBoKG5vZGUsIHRhZ05hbWUsIHByb3BzLCBjaGlsZHJlbikge1xuICAgIGlmIChcbiAgICAgIChjaGlsZHJlbiA9PT0gdW5kZWZpbmVkIHx8IGNoaWxkcmVuID09PSBudWxsKSAmJlxuICAgICAgdHlwZW9mIHByb3BzID09PSAnb2JqZWN0JyAmJlxuICAgICAgJ2xlbmd0aCcgaW4gcHJvcHNcbiAgICApIHtcbiAgICAgIGNoaWxkcmVuID0gcHJvcHNcbiAgICAgIHByb3BzID0ge31cbiAgICB9XG5cbiAgICByZXR1cm4gYXVnbWVudChub2RlLCB7XG4gICAgICB0eXBlOiAnZWxlbWVudCcsXG4gICAgICB0YWdOYW1lOiB0YWdOYW1lLFxuICAgICAgcHJvcGVydGllczogcHJvcHMgfHwge30sXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW4gfHwgW11cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25mb290bm90ZWRlZmluaXRpb24oZGVmaW5pdGlvbikge1xuICAgIHZhciBpZCA9IFN0cmluZyhkZWZpbml0aW9uLmlkZW50aWZpZXIpLnRvVXBwZXJDYXNlKClcblxuICAgIC8vIE1pbWljayBDTSBiZWhhdmlvciBvZiBsaW5rIGRlZmluaXRpb25zLlxuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9zeW50YXgtdHJlZS9tZGFzdC11dGlsLWRlZmluaXRpb25zL2Jsb2IvOGQ0OGU1Ny9pbmRleC5qcyNMMjY+LlxuICAgIGlmICghb3duLmNhbGwoZm9vdG5vdGVCeUlkLCBpZCkpIHtcbiAgICAgIGZvb3Rub3RlQnlJZFtpZF0gPSBkZWZpbml0aW9uXG4gICAgfVxuICB9XG59XG5cbi8vIFRyYW5zZm9ybSBgdHJlZWAsIHdoaWNoIGlzIGFuIG1kYXN0IG5vZGUsIHRvIGEgaGFzdCBub2RlLlxuZnVuY3Rpb24gdG9IYXN0KHRyZWUsIG9wdGlvbnMpIHtcbiAgdmFyIGggPSBmYWN0b3J5KHRyZWUsIG9wdGlvbnMpXG4gIHZhciBub2RlID0gb25lKGgsIHRyZWUpXG4gIHZhciBmb290ID0gZm9vdGVyKGgpXG5cbiAgaWYgKGZvb3QpIHtcbiAgICBub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5jb25jYXQodSgndGV4dCcsICdcXG4nKSwgZm9vdClcbiAgfVxuXG4gIHJldHVybiBub2RlXG59XG4iLCIndXNlIHN0cmljdCdcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWInKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBtZGFzdDJoYXN0ID0gcmVxdWlyZSgnbWRhc3QtdXRpbC10by1oYXN0JylcblxubW9kdWxlLmV4cG9ydHMgPSByZW1hcmsycmVoeXBlXG5cbi8vIEF0dGFjaGVyLlxuLy8gSWYgYSBkZXN0aW5hdGlvbiBpcyBnaXZlbiwgcnVucyB0aGUgZGVzdGluYXRpb24gd2l0aCB0aGUgbmV3IGhhc3QgdHJlZVxuLy8gKGJyaWRnZSBtb2RlKS5cbi8vIFdpdGhvdXQgZGVzdGluYXRpb24sIHJldHVybnMgdGhlIHRyZWU6IGZ1cnRoZXIgcGx1Z2lucyBydW4gb24gdGhhdCB0cmVlXG4vLyAobXV0YXRlIG1vZGUpLlxuZnVuY3Rpb24gcmVtYXJrMnJlaHlwZShkZXN0aW5hdGlvbiwgb3B0aW9ucykge1xuICBpZiAoZGVzdGluYXRpb24gJiYgIWRlc3RpbmF0aW9uLnByb2Nlc3MpIHtcbiAgICBvcHRpb25zID0gZGVzdGluYXRpb25cbiAgICBkZXN0aW5hdGlvbiA9IG51bGxcbiAgfVxuXG4gIHJldHVybiBkZXN0aW5hdGlvbiA/IGJyaWRnZShkZXN0aW5hdGlvbiwgb3B0aW9ucykgOiBtdXRhdGUob3B0aW9ucylcbn1cblxuLy8gQnJpZGdlIG1vZGUuXG4vLyBSdW5zIHRoZSBkZXN0aW5hdGlvbiB3aXRoIHRoZSBuZXcgaGFzdCB0cmVlLlxuZnVuY3Rpb24gYnJpZGdlKGRlc3RpbmF0aW9uLCBvcHRpb25zKSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lclxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybWVyKG5vZGUsIGZpbGUsIG5leHQpIHtcbiAgICBkZXN0aW5hdGlvbi5ydW4obWRhc3QyaGFzdChub2RlLCBvcHRpb25zKSwgZmlsZSwgZG9uZSlcblxuICAgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7XG4gICAgICBuZXh0KGVycilcbiAgICB9XG4gIH1cbn1cblxuLy8gTXV0YXRlLW1vZGUuXG4vLyBGdXJ0aGVyIHRyYW5zZm9ybWVycyBydW4gb24gdGhlIGhhc3QgdHJlZS5cbmZ1bmN0aW9uIG11dGF0ZShvcHRpb25zKSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lclxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybWVyKG5vZGUpIHtcbiAgICByZXR1cm4gbWRhc3QyaGFzdChub2RlLCBvcHRpb25zKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB3aGl0ZXNwYWNlXG5cbnZhciBmcm9tQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGVcbnZhciByZSA9IC9cXHMvXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuZnVuY3Rpb24gd2hpdGVzcGFjZShjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIHJlLnRlc3QoXG4gICAgdHlwZW9mIGNoYXJhY3RlciA9PT0gJ251bWJlcicgPyBmcm9tQ29kZShjaGFyYWN0ZXIpIDogY2hhcmFjdGVyLmNoYXJBdCgwKVxuICApXG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpO1xuXG52YXIgQ19QSVBFID0gJ3wnO1xudmFyIERPVUJMRSA9ICd8fCc7XG5cbmZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKERPVUJMRSwgZnJvbUluZGV4KTtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBwbHVnaW4oKSB7XG4gIGZ1bmN0aW9uIGlubGluZVRva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5nZm0gfHwgdmFsdWUuc3Vic3RyKDAsIDIpICE9PSBET1VCTEUgfHwgdmFsdWUuc3Vic3RyKDAsIDQpID09PSBET1VCTEUgKyBET1VCTEUgfHwgd2hpdGVzcGFjZSh2YWx1ZS5jaGFyQXQoMikpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNoYXJhY3RlciA9ICcnO1xuICAgIHZhciBwcmV2aW91cyA9ICcnO1xuICAgIHZhciBwcmVjZWRpbmcgPSAnJztcbiAgICB2YXIgc3VidmFsdWUgPSAnJztcbiAgICB2YXIgaW5kZXggPSAxO1xuICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgdmFyIG5vdyA9IGVhdC5ub3coKTtcbiAgICBub3cuY29sdW1uICs9IDI7XG4gICAgbm93Lm9mZnNldCArPSAyO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IENfUElQRSAmJiBwcmV2aW91cyA9PT0gQ19QSVBFICYmICghcHJlY2VkaW5nIHx8ICF3aGl0ZXNwYWNlKHByZWNlZGluZykpKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgICAgaWYgKHNpbGVudCkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBlYXQoRE9VQkxFICsgc3VidmFsdWUgKyBET1VCTEUpKHtcbiAgICAgICAgICB0eXBlOiAna2JkJyxcbiAgICAgICAgICBjaGlsZHJlbjogdGhpcy50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KSxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBoTmFtZTogJ2tiZCdcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBzdWJ2YWx1ZSArPSBwcmV2aW91cztcbiAgICAgIHByZWNlZGluZyA9IHByZXZpb3VzO1xuICAgICAgcHJldmlvdXMgPSBjaGFyYWN0ZXI7XG4gICAgfVxuICB9XG5cbiAgaW5saW5lVG9rZW5pemVyLmxvY2F0b3IgPSBsb2NhdG9yO1xuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBpbmxpbmVUb2tlbml6ZXJcblxuICB2YXIgaW5saW5lVG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuaW5saW5lVG9rZW5pemVycztcbiAgdmFyIGlubGluZU1ldGhvZHMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZU1ldGhvZHM7XG4gIGlubGluZVRva2VuaXplcnMua2JkID0gaW5saW5lVG9rZW5pemVyO1xuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3RleHQnKSwgMCwgJ2tiZCcpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyOyAvLyBTdHJpbmdpZnlcblxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICB2YXIgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnM7XG5cbiAgICB2aXNpdG9ycy5rYmQgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIFwifHxcIi5jb25jYXQodGhpcy5hbGwobm9kZSkuam9pbignJyksIFwifHxcIik7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBsdWdpbjsiLCJleHBvcnRzLmlzUmVtYXJrUGFyc2VyID0gaXNSZW1hcmtQYXJzZXJcbmV4cG9ydHMuaXNSZW1hcmtDb21waWxlciA9IGlzUmVtYXJrQ29tcGlsZXJcblxuZnVuY3Rpb24gaXNSZW1hcmtQYXJzZXIocGFyc2VyKSB7XG4gIHJldHVybiBCb29sZWFuKHBhcnNlciAmJiBwYXJzZXIucHJvdG90eXBlICYmIHBhcnNlci5wcm90b3R5cGUuYmxvY2tUb2tlbml6ZXJzKVxufVxuXG5mdW5jdGlvbiBpc1JlbWFya0NvbXBpbGVyKGNvbXBpbGVyKSB7XG4gIHJldHVybiBCb29sZWFuKGNvbXBpbGVyICYmIGNvbXBpbGVyLnByb3RvdHlwZSAmJiBjb21waWxlci5wcm90b3R5cGUudmlzaXRvcnMpXG59XG4iLCJ2YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpXG5cbm1vZHVsZS5leHBvcnRzID0gbWF0aElubGluZVxuXG5jb25zdCB0YWIgPSA5IC8vICdcXHQnXG5jb25zdCBzcGFjZSA9IDMyIC8vICcgJ1xuY29uc3QgZG9sbGFyU2lnbiA9IDM2IC8vICckJ1xuY29uc3QgZGlnaXQwID0gNDggLy8gJzAnXG5jb25zdCBkaWdpdDkgPSA1NyAvLyAnOSdcbmNvbnN0IGJhY2tzbGFzaCA9IDkyIC8vICdcXFxcJ1xuXG5jb25zdCBjbGFzc0xpc3QgPSBbJ21hdGgnLCAnbWF0aC1pbmxpbmUnXVxuY29uc3QgbWF0aERpc3BsYXkgPSAnbWF0aC1kaXNwbGF5J1xuXG5mdW5jdGlvbiBtYXRoSW5saW5lKG9wdGlvbnMpIHtcbiAgY29uc3QgcGFyc2VyID0gdGhpcy5QYXJzZXJcbiAgY29uc3QgY29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyXG5cbiAgaWYgKHV0aWwuaXNSZW1hcmtQYXJzZXIocGFyc2VyKSkge1xuICAgIGF0dGFjaFBhcnNlcihwYXJzZXIsIG9wdGlvbnMpXG4gIH1cblxuICBpZiAodXRpbC5pc1JlbWFya0NvbXBpbGVyKGNvbXBpbGVyKSkge1xuICAgIGF0dGFjaENvbXBpbGVyKGNvbXBpbGVyLCBvcHRpb25zKVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaFBhcnNlcihwYXJzZXIsIG9wdGlvbnMpIHtcbiAgY29uc3QgcHJvdG8gPSBwYXJzZXIucHJvdG90eXBlXG4gIGNvbnN0IGlubGluZU1ldGhvZHMgPSBwcm90by5pbmxpbmVNZXRob2RzXG5cbiAgbWF0aElubGluZVRva2VuaXplci5sb2NhdG9yID0gbG9jYXRvclxuXG4gIHByb3RvLmlubGluZVRva2VuaXplcnMubWF0aCA9IG1hdGhJbmxpbmVUb2tlbml6ZXJcblxuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3RleHQnKSwgMCwgJ21hdGgnKVxuXG4gIGZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKCckJywgZnJvbUluZGV4KVxuICB9XG5cbiAgZnVuY3Rpb24gbWF0aElubGluZVRva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBjb25zdCBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgICBsZXQgZG91YmxlID0gZmFsc2VcbiAgICBsZXQgZXNjYXBlZCA9IGZhbHNlXG4gICAgbGV0IGluZGV4ID0gMFxuICAgIGxldCBwcmV2XG4gICAgbGV0IGNvZGVcbiAgICBsZXQgbmV4dFxuICAgIGxldCBjb250ZW50U3RhcnRcbiAgICBsZXQgY29udGVudEVuZFxuICAgIGxldCB2YWx1ZUVuZFxuICAgIGxldCBjb250ZW50XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IGJhY2tzbGFzaCkge1xuICAgICAgZXNjYXBlZCA9IHRydWVcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgIT09IGRvbGxhclNpZ24pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGluZGV4KytcblxuICAgIC8vIFN1cHBvcnQgZXNjYXBlZCBkb2xsYXJzLlxuICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlYXQodmFsdWUuc2xpY2UoMCwgaW5kZXgpKSh7dHlwZTogJ3RleHQnLCB2YWx1ZTogJyQnfSlcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IGRvbGxhclNpZ24pIHtcbiAgICAgIGRvdWJsZSA9IHRydWVcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBuZXh0ID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgIC8vIE9wZW5pbmcgZmVuY2UgY2Fubm90IGJlIGZvbGxvd2VkIGJ5IGEgc3BhY2Ugb3IgYSB0YWIuXG4gICAgaWYgKG5leHQgPT09IHNwYWNlIHx8IG5leHQgPT09IHRhYikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29udGVudFN0YXJ0ID0gaW5kZXhcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY29kZSA9IG5leHRcbiAgICAgIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4ICsgMSlcblxuICAgICAgaWYgKGNvZGUgPT09IGRvbGxhclNpZ24pIHtcbiAgICAgICAgcHJldiA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggLSAxKVxuXG4gICAgICAgIC8vIENsb3NpbmcgZmVuY2UgY2Fubm90IGJlIHByZWNlZGVkIGJ5IGEgc3BhY2Ugb3IgYSB0YWIsIG9yIGZvbGxvd2VkIGJ5XG4gICAgICAgIC8vIGEgZGlnaXQuXG4gICAgICAgIC8vIElmIGEgZG91YmxlIG1hcmtlciB3YXMgdXNlZCB0byBvcGVuLCB0aGUgY2xvc2luZyBmZW5jZSBtdXN0IGNvbnNpc3RcbiAgICAgICAgLy8gb2YgdHdvIGRvbGxhcnMgYXMgd2VsbC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXYgIT09IHNwYWNlICYmXG4gICAgICAgICAgcHJldiAhPT0gdGFiICYmXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgICAgIChuZXh0ICE9PSBuZXh0IHx8IG5leHQgPCBkaWdpdDAgfHwgbmV4dCA+IGRpZ2l0OSkgJiZcbiAgICAgICAgICAoIWRvdWJsZSB8fCBuZXh0ID09PSBkb2xsYXJTaWduKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb250ZW50RW5kID0gaW5kZXggLSAxXG5cbiAgICAgICAgICBpbmRleCsrXG5cbiAgICAgICAgICBpZiAoZG91YmxlKSB7XG4gICAgICAgICAgICBpbmRleCsrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFsdWVFbmQgPSBpbmRleFxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gYmFja3NsYXNoKSB7XG4gICAgICAgIGluZGV4KytcbiAgICAgICAgbmV4dCA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggKyAxKVxuICAgICAgfVxuXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICBpZiAoc2lsZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnRlbnQgPSB2YWx1ZS5zbGljZShjb250ZW50U3RhcnQsIGNvbnRlbnRFbmQgKyAxKVxuXG4gICAgcmV0dXJuIGVhdCh2YWx1ZS5zbGljZSgwLCB2YWx1ZUVuZCkpKHtcbiAgICAgIHR5cGU6ICdpbmxpbmVNYXRoJyxcbiAgICAgIHZhbHVlOiBjb250ZW50LFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogJ3NwYW4nLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NMaXN0LmNvbmNhdChcbiAgICAgICAgICAgIGRvdWJsZSAmJiBvcHRpb25zLmlubGluZU1hdGhEb3VibGUgPyBbbWF0aERpc3BsYXldIDogW11cbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIGhDaGlsZHJlbjogW3t0eXBlOiAndGV4dCcsIHZhbHVlOiBjb250ZW50fV1cbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaENvbXBpbGVyKGNvbXBpbGVyKSB7XG4gIGNvbnN0IHByb3RvID0gY29tcGlsZXIucHJvdG90eXBlXG5cbiAgcHJvdG8udmlzaXRvcnMuaW5saW5lTWF0aCA9IGNvbXBpbGVJbmxpbmVNYXRoXG5cbiAgZnVuY3Rpb24gY29tcGlsZUlubGluZU1hdGgobm9kZSkge1xuICAgIGxldCBmZW5jZSA9ICckJ1xuICAgIGNvbnN0IGNsYXNzZXMgPVxuICAgICAgKG5vZGUuZGF0YSAmJiBub2RlLmRhdGEuaFByb3BlcnRpZXMgJiYgbm9kZS5kYXRhLmhQcm9wZXJ0aWVzLmNsYXNzTmFtZSkgfHxcbiAgICAgIFtdXG5cbiAgICBpZiAoY2xhc3Nlcy5pbmNsdWRlcyhtYXRoRGlzcGxheSkpIHtcbiAgICAgIGZlbmNlID0gJyQkJ1xuICAgIH1cblxuICAgIHJldHVybiBmZW5jZSArIG5vZGUudmFsdWUgKyBmZW5jZVxuICB9XG59XG4iLCJjb25zdCB1dGlsID0gcmVxdWlyZSgnLi91dGlsJylcblxubW9kdWxlLmV4cG9ydHMgPSBtYXRoQmxvY2tcblxuY29uc3QgbGluZUZlZWQgPSAxMCAvLyAgJ1xcbidcbmNvbnN0IHNwYWNlID0gMzIgLy8gJyAnXG5jb25zdCBkb2xsYXJTaWduID0gMzYgLy8gJyQnXG5cbmNvbnN0IGxpbmVGZWVkQ2hhciA9ICdcXG4nXG5jb25zdCBkb2xsYXJTaWduQ2hhciA9ICckJ1xuXG5jb25zdCBtaW5GZW5jZUNvdW50ID0gMlxuXG5jb25zdCBjbGFzc0xpc3QgPSBbJ21hdGgnLCAnbWF0aC1kaXNwbGF5J11cblxuZnVuY3Rpb24gbWF0aEJsb2NrKCkge1xuICBjb25zdCBwYXJzZXIgPSB0aGlzLlBhcnNlclxuICBjb25zdCBjb21waWxlciA9IHRoaXMuQ29tcGlsZXJcblxuICBpZiAodXRpbC5pc1JlbWFya1BhcnNlcihwYXJzZXIpKSB7XG4gICAgYXR0YWNoUGFyc2VyKHBhcnNlcilcbiAgfVxuXG4gIGlmICh1dGlsLmlzUmVtYXJrQ29tcGlsZXIoY29tcGlsZXIpKSB7XG4gICAgYXR0YWNoQ29tcGlsZXIoY29tcGlsZXIpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0YWNoUGFyc2VyKHBhcnNlcikge1xuICBjb25zdCBwcm90byA9IHBhcnNlci5wcm90b3R5cGVcbiAgY29uc3QgYmxvY2tNZXRob2RzID0gcHJvdG8uYmxvY2tNZXRob2RzXG4gIGNvbnN0IGludGVycnVwdFBhcmFncmFwaCA9IHByb3RvLmludGVycnVwdFBhcmFncmFwaFxuICBjb25zdCBpbnRlcnJ1cHRMaXN0ID0gcHJvdG8uaW50ZXJydXB0TGlzdFxuICBjb25zdCBpbnRlcnJ1cHRCbG9ja3F1b3RlID0gcHJvdG8uaW50ZXJydXB0QmxvY2txdW90ZVxuXG4gIHByb3RvLmJsb2NrVG9rZW5pemVycy5tYXRoID0gbWF0aEJsb2NrVG9rZW5pemVyXG5cbiAgYmxvY2tNZXRob2RzLnNwbGljZShibG9ja01ldGhvZHMuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgJ21hdGgnKVxuXG4gIC8vIEluamVjdCBtYXRoIHRvIGludGVycnVwdCBydWxlc1xuICBpbnRlcnJ1cHRQYXJhZ3JhcGguc3BsaWNlKGludGVycnVwdFBhcmFncmFwaC5pbmRleE9mKCdmZW5jZWRDb2RlJykgKyAxLCAwLCBbXG4gICAgJ21hdGgnXG4gIF0pXG4gIGludGVycnVwdExpc3Quc3BsaWNlKGludGVycnVwdExpc3QuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydtYXRoJ10pXG4gIGludGVycnVwdEJsb2NrcXVvdGUuc3BsaWNlKGludGVycnVwdEJsb2NrcXVvdGUuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgW1xuICAgICdtYXRoJ1xuICBdKVxuXG4gIGZ1bmN0aW9uIG1hdGhCbG9ja1Rva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gICAgdmFyIGluZGV4ID0gMFxuICAgIGxldCBjb2RlXG4gICAgbGV0IGNvbnRlbnRcbiAgICBsZXQgbGluZUVuZFxuICAgIGxldCBsaW5lSW5kZXhcbiAgICBsZXQgb3BlbmluZ0ZlbmNlSW5kZW50U2l6ZVxuICAgIGxldCBvcGVuaW5nRmVuY2VTaXplXG4gICAgbGV0IG9wZW5pbmdGZW5jZUNvbnRlbnRTdGFydFxuICAgIGxldCBjbG9zaW5nRmVuY2VcbiAgICBsZXQgY2xvc2luZ0ZlbmNlU2l6ZVxuICAgIGxldCBsaW5lQ29udGVudFN0YXJ0XG4gICAgbGV0IGxpbmVDb250ZW50RW5kXG5cbiAgICAvLyBTa2lwIGluaXRpYWwgc3BhY2luZy5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgdmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IHNwYWNlKSB7XG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgb3BlbmluZ0ZlbmNlSW5kZW50U2l6ZSA9IGluZGV4XG5cbiAgICAvLyBTa2lwIHRoZSBmZW5jZS5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgdmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IGRvbGxhclNpZ24pIHtcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBvcGVuaW5nRmVuY2VTaXplID0gaW5kZXggLSBvcGVuaW5nRmVuY2VJbmRlbnRTaXplXG5cbiAgICAvLyBFeGl0IGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggb2YgYSBmZW5jZS5cbiAgICBpZiAob3BlbmluZ0ZlbmNlU2l6ZSA8IG1pbkZlbmNlQ291bnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNraXAgc3BhY2luZyBhZnRlciB0aGUgZmVuY2UuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoICYmIHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpID09PSBzcGFjZSkge1xuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIG9wZW5pbmdGZW5jZUNvbnRlbnRTdGFydCA9IGluZGV4XG5cbiAgICAvLyBFYXQgZXZlcnl0aGluZyBhZnRlciB0aGUgZmVuY2UuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgICAgLy8gV2UgZG9u4oCZdCBhbGxvdyBkb2xsYXIgc2lnbnMgaGVyZSwgYXMgdGhhdCBjb3VsZCBpbnRlcmZlcmUgd2l0aCBpbmxpbmVcbiAgICAgIC8vIG1hdGguXG4gICAgICBpZiAoY29kZSA9PT0gZG9sbGFyU2lnbikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGNvZGUgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgIT09IGxpbmVGZWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoc2lsZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnRlbnQgPSBbXVxuXG4gICAgaWYgKG9wZW5pbmdGZW5jZUNvbnRlbnRTdGFydCAhPT0gaW5kZXgpIHtcbiAgICAgIGNvbnRlbnQucHVzaCh2YWx1ZS5zbGljZShvcGVuaW5nRmVuY2VDb250ZW50U3RhcnQsIGluZGV4KSlcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gICAgbGluZUVuZCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWRDaGFyLCBpbmRleCArIDEpXG4gICAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gbGVuZ3RoIDogbGluZUVuZFxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjbG9zaW5nRmVuY2UgPSBmYWxzZVxuICAgICAgbGluZUNvbnRlbnRTdGFydCA9IGluZGV4XG4gICAgICBsaW5lQ29udGVudEVuZCA9IGxpbmVFbmRcbiAgICAgIGxpbmVJbmRleCA9IGxpbmVFbmRcbiAgICAgIGNsb3NpbmdGZW5jZVNpemUgPSAwXG5cbiAgICAgIC8vIEZpcnN0LCBsZXTigJlzIHNlZSBpZiB0aGlzIGlzIGEgdmFsaWQgY2xvc2luZyBmZW5jZS5cbiAgICAgIC8vIFNraXAgdHJhaWxpbmcgd2hpdGUgc3BhY2VcbiAgICAgIHdoaWxlIChcbiAgICAgICAgbGluZUluZGV4ID4gbGluZUNvbnRlbnRTdGFydCAmJlxuICAgICAgICB2YWx1ZS5jaGFyQ29kZUF0KGxpbmVJbmRleCAtIDEpID09PSBzcGFjZVxuICAgICAgKSB7XG4gICAgICAgIGxpbmVJbmRleC0tXG4gICAgICB9XG5cbiAgICAgIC8vIFNraXAgdGhlIGZlbmNlLlxuICAgICAgd2hpbGUgKFxuICAgICAgICBsaW5lSW5kZXggPiBsaW5lQ29udGVudFN0YXJ0ICYmXG4gICAgICAgIHZhbHVlLmNoYXJDb2RlQXQobGluZUluZGV4IC0gMSkgPT09IGRvbGxhclNpZ25cbiAgICAgICkge1xuICAgICAgICBjbG9zaW5nRmVuY2VTaXplKytcbiAgICAgICAgbGluZUluZGV4LS1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIHZhbGlkIGNsb3NpbmcgZmVuY2UgbGluZS5cbiAgICAgIGlmIChcbiAgICAgICAgb3BlbmluZ0ZlbmNlU2l6ZSA8PSBjbG9zaW5nRmVuY2VTaXplICYmXG4gICAgICAgIHZhbHVlLmluZGV4T2YoZG9sbGFyU2lnbkNoYXIsIGxpbmVDb250ZW50U3RhcnQpID09PSBsaW5lSW5kZXhcbiAgICAgICkge1xuICAgICAgICBjbG9zaW5nRmVuY2UgPSB0cnVlXG4gICAgICAgIGxpbmVDb250ZW50RW5kID0gbGluZUluZGV4XG4gICAgICB9XG5cbiAgICAgIC8vIFN3ZWV0LCBuZXh0LCB3ZSBuZWVkIHRvIHRyaW0gdGhlIGxpbmUuXG4gICAgICAvLyBTa2lwIGluaXRpYWwgc3BhY2luZy5cbiAgICAgIHdoaWxlIChcbiAgICAgICAgbGluZUNvbnRlbnRTdGFydCA8PSBsaW5lQ29udGVudEVuZCAmJlxuICAgICAgICBsaW5lQ29udGVudFN0YXJ0IC0gaW5kZXggPCBvcGVuaW5nRmVuY2VJbmRlbnRTaXplICYmXG4gICAgICAgIHZhbHVlLmNoYXJDb2RlQXQobGluZUNvbnRlbnRTdGFydCkgPT09IHNwYWNlXG4gICAgICApIHtcbiAgICAgICAgbGluZUNvbnRlbnRTdGFydCsrXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoaXMgaXMgYSBjbG9zaW5nIGZlbmNlLCBza2lwIGZpbmFsIHNwYWNpbmcuXG4gICAgICBpZiAoY2xvc2luZ0ZlbmNlKSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICBsaW5lQ29udGVudEVuZCA+IGxpbmVDb250ZW50U3RhcnQgJiZcbiAgICAgICAgICB2YWx1ZS5jaGFyQ29kZUF0KGxpbmVDb250ZW50RW5kIC0gMSkgPT09IHNwYWNlXG4gICAgICAgICkge1xuICAgICAgICAgIGxpbmVDb250ZW50RW5kLS1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY29udGVudCBsaW5lLCBvciBpZiB0aGVyZSBpcyBjb250ZW50IGJlZm9yZSB0aGUgZmVuY2U6XG4gICAgICBpZiAoIWNsb3NpbmdGZW5jZSB8fCBsaW5lQ29udGVudFN0YXJ0ICE9PSBsaW5lQ29udGVudEVuZCkge1xuICAgICAgICBjb250ZW50LnB1c2godmFsdWUuc2xpY2UobGluZUNvbnRlbnRTdGFydCwgbGluZUNvbnRlbnRFbmQpKVxuICAgICAgfVxuXG4gICAgICBpZiAoY2xvc2luZ0ZlbmNlKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gbGluZUVuZCArIDFcbiAgICAgIGxpbmVFbmQgPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkQ2hhciwgaW5kZXggKyAxKVxuICAgICAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gbGVuZ3RoIDogbGluZUVuZFxuICAgIH1cblxuICAgIGNvbnRlbnQgPSBjb250ZW50LmpvaW4oJ1xcbicpXG5cbiAgICByZXR1cm4gZWF0KHZhbHVlLnNsaWNlKDAsIGxpbmVFbmQpKSh7XG4gICAgICB0eXBlOiAnbWF0aCcsXG4gICAgICB2YWx1ZTogY29udGVudCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaE5hbWU6ICdkaXYnLFxuICAgICAgICBoUHJvcGVydGllczoge2NsYXNzTmFtZTogY2xhc3NMaXN0LmNvbmNhdCgpfSxcbiAgICAgICAgaENoaWxkcmVuOiBbe3R5cGU6ICd0ZXh0JywgdmFsdWU6IGNvbnRlbnR9XVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0YWNoQ29tcGlsZXIoY29tcGlsZXIpIHtcbiAgY29uc3QgcHJvdG8gPSBjb21waWxlci5wcm90b3R5cGVcblxuICBwcm90by52aXNpdG9ycy5tYXRoID0gY29tcGlsZUJsb2NrTWF0aFxuXG4gIGZ1bmN0aW9uIGNvbXBpbGVCbG9ja01hdGgobm9kZSkge1xuICAgIHJldHVybiAnJCRcXG4nICsgbm9kZS52YWx1ZSArICdcXG4kJCdcbiAgfVxufVxuIiwiY29uc3QgaW5saW5lUGx1Z2luID0gcmVxdWlyZSgnLi9pbmxpbmUnKVxuY29uc3QgYmxvY2tQbHVnaW4gPSByZXF1aXJlKCcuL2Jsb2NrJylcblxubW9kdWxlLmV4cG9ydHMgPSBtYXRoXG5cbmZ1bmN0aW9uIG1hdGgob3B0cykge1xuICBpZiAob3B0cyA9PSBudWxsKSBvcHRzID0ge31cbiAgYmxvY2tQbHVnaW4uY2FsbCh0aGlzLCBvcHRzKVxuICBpbmxpbmVQbHVnaW4uY2FsbCh0aGlzLCBvcHRzKVxufVxuIiwiLypcblN5bnRheCBoaWdobGlnaHRpbmcgd2l0aCBsYW5ndWFnZSBhdXRvZGV0ZWN0aW9uLlxuaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvXG4qL1xuXG4oZnVuY3Rpb24oZmFjdG9yeSkge1xuXG4gIC8vIEZpbmQgdGhlIGdsb2JhbCBvYmplY3QgZm9yIGV4cG9ydCB0byBib3RoIHRoZSBicm93c2VyIGFuZCB3ZWIgd29ya2Vycy5cbiAgdmFyIGdsb2JhbE9iamVjdCA9IHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnICYmIHdpbmRvdyB8fFxuICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHNlbGYgPT09ICdvYmplY3QnICYmIHNlbGY7XG5cbiAgLy8gU2V0dXAgaGlnaGxpZ2h0LmpzIGZvciBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLiBGaXJzdCBpcyBOb2RlLmpzIG9yXG4gIC8vIENvbW1vbkpTLlxuICAvLyBgbm9kZVR5cGVgIGlzIGNoZWNrZWQgdG8gZW5zdXJlIHRoYXQgYGV4cG9ydHNgIGlzIG5vdCBhIEhUTUwgZWxlbWVudC5cbiAgaWYodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnICYmICFleHBvcnRzLm5vZGVUeXBlKSB7XG4gICAgZmFjdG9yeShleHBvcnRzKTtcbiAgfSBlbHNlIGlmKGdsb2JhbE9iamVjdCkge1xuICAgIC8vIEV4cG9ydCBobGpzIGdsb2JhbGx5IGV2ZW4gd2hlbiB1c2luZyBBTUQgZm9yIGNhc2VzIHdoZW4gdGhpcyBzY3JpcHRcbiAgICAvLyBpcyBsb2FkZWQgd2l0aCBvdGhlcnMgdGhhdCBtYXkgc3RpbGwgZXhwZWN0IGEgZ2xvYmFsIGhsanMuXG4gICAgZ2xvYmFsT2JqZWN0LmhsanMgPSBmYWN0b3J5KHt9KTtcblxuICAgIC8vIEZpbmFsbHkgcmVnaXN0ZXIgdGhlIGdsb2JhbCBobGpzIHdpdGggQU1ELlxuICAgIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgZGVmaW5lKFtdLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5obGpzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn0oZnVuY3Rpb24oaGxqcykge1xuICAvLyBDb252ZW5pZW5jZSB2YXJpYWJsZXMgZm9yIGJ1aWxkLWluIG9iamVjdHNcbiAgdmFyIEFycmF5UHJvdG8gPSBbXSxcbiAgICAgIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cztcblxuICAvLyBHbG9iYWwgaW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgd2l0aGluIHRoZSBoaWdobGlnaHQuanMgbGlicmFyeS5cbiAgdmFyIGxhbmd1YWdlcyA9IHt9LFxuICAgICAgYWxpYXNlcyAgID0ge307XG5cbiAgLy8gUmVndWxhciBleHByZXNzaW9ucyB1c2VkIHRocm91Z2hvdXQgdGhlIGhpZ2hsaWdodC5qcyBsaWJyYXJ5LlxuICB2YXIgbm9IaWdobGlnaHRSZSAgICA9IC9eKG5vLT9oaWdobGlnaHR8cGxhaW58dGV4dCkkL2ksXG4gICAgICBsYW5ndWFnZVByZWZpeFJlID0gL1xcYmxhbmcoPzp1YWdlKT8tKFtcXHctXSspXFxiL2ksXG4gICAgICBmaXhNYXJrdXBSZSAgICAgID0gLygoXig8W14+XSs+fFxcdHwpK3woPzpcXG4pKSkvZ207XG5cbiAgLy8gVGhlIG9iamVjdCB3aWxsIGJlIGFzc2lnbmVkIGJ5IHRoZSBidWlsZCB0b29sLiBJdCB1c2VkIHRvIHN5bmNocm9uaXplIEFQSVxuICAvLyBvZiBleHRlcm5hbCBsYW5ndWFnZSBmaWxlcyB3aXRoIG1pbmlmaWVkIHZlcnNpb24gb2YgdGhlIGhpZ2hsaWdodC5qcyBsaWJyYXJ5LlxuICB2YXIgQVBJX1JFUExBQ0VTO1xuXG4gIHZhciBzcGFuRW5kVGFnID0gJzwvc3Bhbj4nO1xuXG4gIC8vIEdsb2JhbCBvcHRpb25zIHVzZWQgd2hlbiB3aXRoaW4gZXh0ZXJuYWwgQVBJcy4gVGhpcyBpcyBtb2RpZmllZCB3aGVuXG4gIC8vIGNhbGxpbmcgdGhlIGBobGpzLmNvbmZpZ3VyZWAgZnVuY3Rpb24uXG4gIHZhciBvcHRpb25zID0ge1xuICAgIGNsYXNzUHJlZml4OiAnaGxqcy0nLFxuICAgIHRhYlJlcGxhY2U6IG51bGwsXG4gICAgdXNlQlI6IGZhbHNlLFxuICAgIGxhbmd1YWdlczogdW5kZWZpbmVkXG4gIH07XG5cbiAgLy8ga2V5d29yZHMgdGhhdCBzaG91bGQgaGF2ZSBubyBkZWZhdWx0IHJlbGV2YW5jZSB2YWx1ZVxuICB2YXIgQ09NTU9OX0tFWVdPUkRTID0gJ29mIGFuZCBmb3IgaW4gbm90IG9yIGlmIHRoZW4nLnNwbGl0KCcgJylcblxuXG4gIC8qIFV0aWxpdHkgZnVuY3Rpb25zICovXG5cbiAgZnVuY3Rpb24gZXNjYXBlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRhZyhub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRlc3RSZShyZSwgbGV4ZW1lKSB7XG4gICAgdmFyIG1hdGNoID0gcmUgJiYgcmUuZXhlYyhsZXhlbWUpO1xuICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaC5pbmRleCA9PT0gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzTm90SGlnaGxpZ2h0ZWQobGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gbm9IaWdobGlnaHRSZS50ZXN0KGxhbmd1YWdlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJsb2NrTGFuZ3VhZ2UoYmxvY2spIHtcbiAgICB2YXIgaSwgbWF0Y2gsIGxlbmd0aCwgX2NsYXNzO1xuICAgIHZhciBjbGFzc2VzID0gYmxvY2suY2xhc3NOYW1lICsgJyAnO1xuXG4gICAgY2xhc3NlcyArPSBibG9jay5wYXJlbnROb2RlID8gYmxvY2sucGFyZW50Tm9kZS5jbGFzc05hbWUgOiAnJztcblxuICAgIC8vIGxhbmd1YWdlLSogdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG5vbi1wcmVmaXhlZCBjbGFzcyBuYW1lcy5cbiAgICBtYXRjaCA9IGxhbmd1YWdlUHJlZml4UmUuZXhlYyhjbGFzc2VzKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBnZXRMYW5ndWFnZShtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICduby1oaWdobGlnaHQnO1xuICAgIH1cblxuICAgIGNsYXNzZXMgPSBjbGFzc2VzLnNwbGl0KC9cXHMrLyk7XG5cbiAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBjbGFzc2VzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBfY2xhc3MgPSBjbGFzc2VzW2ldO1xuXG4gICAgICBpZiAoaXNOb3RIaWdobGlnaHRlZChfY2xhc3MpIHx8IGdldExhbmd1YWdlKF9jbGFzcykpIHtcbiAgICAgICAgcmV0dXJuIF9jbGFzcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbmhlcml0KHBhcmVudCkgeyAgLy8gaW5oZXJpdChwYXJlbnQsIG92ZXJyaWRlX29iaiwgb3ZlcnJpZGVfb2JqLCAuLi4pXG4gICAgdmFyIGtleTtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIG9iamVjdHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gICAgZm9yIChrZXkgaW4gcGFyZW50KVxuICAgICAgcmVzdWx0W2tleV0gPSBwYXJlbnRba2V5XTtcbiAgICBvYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqKSB7XG4gICAgICBmb3IgKGtleSBpbiBvYmopXG4gICAgICAgIHJlc3VsdFtrZXldID0gb2JqW2tleV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qIFN0cmVhbSBtZXJnaW5nICovXG5cbiAgZnVuY3Rpb24gbm9kZVN0cmVhbShub2RlKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIChmdW5jdGlvbiBfbm9kZVN0cmVhbShub2RlLCBvZmZzZXQpIHtcbiAgICAgIGZvciAodmFyIGNoaWxkID0gbm9kZS5maXJzdENoaWxkOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZykge1xuICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT09IDMpXG4gICAgICAgICAgb2Zmc2V0ICs9IGNoaWxkLm5vZGVWYWx1ZS5sZW5ndGg7XG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgZXZlbnQ6ICdzdGFydCcsXG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgIG5vZGU6IGNoaWxkXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb2Zmc2V0ID0gX25vZGVTdHJlYW0oY2hpbGQsIG9mZnNldCk7XG4gICAgICAgICAgLy8gUHJldmVudCB2b2lkIGVsZW1lbnRzIGZyb20gaGF2aW5nIGFuIGVuZCB0YWcgdGhhdCB3b3VsZCBhY3R1YWxseVxuICAgICAgICAgIC8vIGRvdWJsZSB0aGVtIGluIHRoZSBvdXRwdXQuIFRoZXJlIGFyZSBtb3JlIHZvaWQgZWxlbWVudHMgaW4gSFRNTFxuICAgICAgICAgIC8vIGJ1dCB3ZSBsaXN0IG9ubHkgdGhvc2UgcmVhbGlzdGljYWxseSBleHBlY3RlZCBpbiBjb2RlIGRpc3BsYXkuXG4gICAgICAgICAgaWYgKCF0YWcoY2hpbGQpLm1hdGNoKC9icnxocnxpbWd8aW5wdXQvKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICBldmVudDogJ3N0b3AnLFxuICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgICAgbm9kZTogY2hpbGRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9KShub2RlLCAwKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbWVyZ2VTdHJlYW1zKG9yaWdpbmFsLCBoaWdobGlnaHRlZCwgdmFsdWUpIHtcbiAgICB2YXIgcHJvY2Vzc2VkID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgdmFyIG5vZGVTdGFjayA9IFtdO1xuXG4gICAgZnVuY3Rpb24gc2VsZWN0U3RyZWFtKCkge1xuICAgICAgaWYgKCFvcmlnaW5hbC5sZW5ndGggfHwgIWhpZ2hsaWdodGVkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gb3JpZ2luYWwubGVuZ3RoID8gb3JpZ2luYWwgOiBoaWdobGlnaHRlZDtcbiAgICAgIH1cbiAgICAgIGlmIChvcmlnaW5hbFswXS5vZmZzZXQgIT09IGhpZ2hsaWdodGVkWzBdLm9mZnNldCkge1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsWzBdLm9mZnNldCA8IGhpZ2hsaWdodGVkWzBdLm9mZnNldCkgPyBvcmlnaW5hbCA6IGhpZ2hsaWdodGVkO1xuICAgICAgfVxuXG4gICAgICAvKlxuICAgICAgVG8gYXZvaWQgc3RhcnRpbmcgdGhlIHN0cmVhbSBqdXN0IGJlZm9yZSBpdCBzaG91bGQgc3RvcCB0aGUgb3JkZXIgaXNcbiAgICAgIGVuc3VyZWQgdGhhdCBvcmlnaW5hbCBhbHdheXMgc3RhcnRzIGZpcnN0IGFuZCBjbG9zZXMgbGFzdDpcblxuICAgICAgaWYgKGV2ZW50MSA9PSAnc3RhcnQnICYmIGV2ZW50MiA9PSAnc3RhcnQnKVxuICAgICAgICByZXR1cm4gb3JpZ2luYWw7XG4gICAgICBpZiAoZXZlbnQxID09ICdzdGFydCcgJiYgZXZlbnQyID09ICdzdG9wJylcbiAgICAgICAgcmV0dXJuIGhpZ2hsaWdodGVkO1xuICAgICAgaWYgKGV2ZW50MSA9PSAnc3RvcCcgJiYgZXZlbnQyID09ICdzdGFydCcpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbDtcbiAgICAgIGlmIChldmVudDEgPT0gJ3N0b3AnICYmIGV2ZW50MiA9PSAnc3RvcCcpXG4gICAgICAgIHJldHVybiBoaWdobGlnaHRlZDtcblxuICAgICAgLi4uIHdoaWNoIGlzIGNvbGxhcHNlZCB0bzpcbiAgICAgICovXG4gICAgICByZXR1cm4gaGlnaGxpZ2h0ZWRbMF0uZXZlbnQgPT09ICdzdGFydCcgPyBvcmlnaW5hbCA6IGhpZ2hsaWdodGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9wZW4obm9kZSkge1xuICAgICAgZnVuY3Rpb24gYXR0cl9zdHIoYSkge3JldHVybiAnICcgKyBhLm5vZGVOYW1lICsgJz1cIicgKyBlc2NhcGUoYS52YWx1ZSkucmVwbGFjZSgnXCInLCAnJnF1b3Q7JykgKyAnXCInO31cbiAgICAgIHJlc3VsdCArPSAnPCcgKyB0YWcobm9kZSkgKyBBcnJheVByb3RvLm1hcC5jYWxsKG5vZGUuYXR0cmlidXRlcywgYXR0cl9zdHIpLmpvaW4oJycpICsgJz4nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb3NlKG5vZGUpIHtcbiAgICAgIHJlc3VsdCArPSAnPC8nICsgdGFnKG5vZGUpICsgJz4nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlcihldmVudCkge1xuICAgICAgKGV2ZW50LmV2ZW50ID09PSAnc3RhcnQnID8gb3BlbiA6IGNsb3NlKShldmVudC5ub2RlKTtcbiAgICB9XG5cbiAgICB3aGlsZSAob3JpZ2luYWwubGVuZ3RoIHx8IGhpZ2hsaWdodGVkLmxlbmd0aCkge1xuICAgICAgdmFyIHN0cmVhbSA9IHNlbGVjdFN0cmVhbSgpO1xuICAgICAgcmVzdWx0ICs9IGVzY2FwZSh2YWx1ZS5zdWJzdHJpbmcocHJvY2Vzc2VkLCBzdHJlYW1bMF0ub2Zmc2V0KSk7XG4gICAgICBwcm9jZXNzZWQgPSBzdHJlYW1bMF0ub2Zmc2V0O1xuICAgICAgaWYgKHN0cmVhbSA9PT0gb3JpZ2luYWwpIHtcbiAgICAgICAgLypcbiAgICAgICAgT24gYW55IG9wZW5pbmcgb3IgY2xvc2luZyB0YWcgb2YgdGhlIG9yaWdpbmFsIG1hcmt1cCB3ZSBmaXJzdCBjbG9zZVxuICAgICAgICB0aGUgZW50aXJlIGhpZ2hsaWdodGVkIG5vZGUgc3RhY2ssIHRoZW4gcmVuZGVyIHRoZSBvcmlnaW5hbCB0YWcgYWxvbmdcbiAgICAgICAgd2l0aCBhbGwgdGhlIGZvbGxvd2luZyBvcmlnaW5hbCB0YWdzIGF0IHRoZSBzYW1lIG9mZnNldCBhbmQgdGhlblxuICAgICAgICByZW9wZW4gYWxsIHRoZSB0YWdzIG9uIHRoZSBoaWdobGlnaHRlZCBzdGFjay5cbiAgICAgICAgKi9cbiAgICAgICAgbm9kZVN0YWNrLnJldmVyc2UoKS5mb3JFYWNoKGNsb3NlKTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIHJlbmRlcihzdHJlYW0uc3BsaWNlKDAsIDEpWzBdKTtcbiAgICAgICAgICBzdHJlYW0gPSBzZWxlY3RTdHJlYW0oKTtcbiAgICAgICAgfSB3aGlsZSAoc3RyZWFtID09PSBvcmlnaW5hbCAmJiBzdHJlYW0ubGVuZ3RoICYmIHN0cmVhbVswXS5vZmZzZXQgPT09IHByb2Nlc3NlZCk7XG4gICAgICAgIG5vZGVTdGFjay5yZXZlcnNlKCkuZm9yRWFjaChvcGVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzdHJlYW1bMF0uZXZlbnQgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICBub2RlU3RhY2sucHVzaChzdHJlYW1bMF0ubm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZVN0YWNrLnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcihzdHJlYW0uc3BsaWNlKDAsIDEpWzBdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdCArIGVzY2FwZSh2YWx1ZS5zdWJzdHIocHJvY2Vzc2VkKSk7XG4gIH1cblxuICAvKiBJbml0aWFsaXphdGlvbiAqL1xuXG4gIGZ1bmN0aW9uIGRlcGVuZGVuY3lPblBhcmVudChtb2RlKSB7XG4gICAgaWYgKCFtb2RlKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gbW9kZS5lbmRzV2l0aFBhcmVudCB8fCBkZXBlbmRlbmN5T25QYXJlbnQobW9kZS5zdGFydHMpXG4gIH1cblxuICBmdW5jdGlvbiBleHBhbmRfb3JfY2xvbmVfbW9kZShtb2RlKSB7XG4gICAgaWYgKG1vZGUudmFyaWFudHMgJiYgIW1vZGUuY2FjaGVkX3ZhcmlhbnRzKSB7XG4gICAgICBtb2RlLmNhY2hlZF92YXJpYW50cyA9IG1vZGUudmFyaWFudHMubWFwKGZ1bmN0aW9uKHZhcmlhbnQpIHtcbiAgICAgICAgcmV0dXJuIGluaGVyaXQobW9kZSwge3ZhcmlhbnRzOiBudWxsfSwgdmFyaWFudCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBFWFBBTkRcbiAgICAvLyBpZiB3ZSBoYXZlIHZhcmlhbnRzIHRoZW4gZXNzZW50dWFsbHkgXCJyZXBsYWNlXCIgdGhlIG1vZGUgd2l0aCB0aGUgdmFyaWFudHNcbiAgICAvLyB0aGlzIGhhcHBlbnMgaW4gY29tcGlsZU1vZGUsIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb21cbiAgICBpZiAobW9kZS5jYWNoZWRfdmFyaWFudHMpXG4gICAgICByZXR1cm4gbW9kZS5jYWNoZWRfdmFyaWFudHM7XG5cbiAgICAvLyBDTE9ORVxuICAgIC8vIGlmIHdlIGhhdmUgZGVwZW5kZW5jaWVzIG9uIHBhcmVudHMgdGhlbiB3ZSBuZWVkIGEgdW5pcXVlXG4gICAgLy8gaW5zdGFuY2Ugb2Ygb3Vyc2VsdmVzLCBzbyB3ZSBjYW4gYmUgcmV1c2VkIHdpdGggbWFueVxuICAgIC8vIGRpZmZlcmVudCBwYXJlbnRzIHdpdGhvdXQgaXNzdWVcbiAgICBpZiAoZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUpKVxuICAgICAgcmV0dXJuIFtpbmhlcml0KG1vZGUsIHsgc3RhcnRzOiBtb2RlLnN0YXJ0cyA/IGluaGVyaXQobW9kZS5zdGFydHMpIDogbnVsbCB9KV1cblxuICAgIC8vIG5vIHNwZWNpYWwgZGVwZW5kZW5jeSBpc3N1ZXMsIGp1c3QgcmV0dXJuIG91cnNlbHZlc1xuICAgIHJldHVybiBbbW9kZV1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3RvcmVMYW5ndWFnZUFwaShvYmopIHtcbiAgICBpZihBUElfUkVQTEFDRVMgJiYgIW9iai5sYW5nQXBpUmVzdG9yZWQpIHtcbiAgICAgIG9iai5sYW5nQXBpUmVzdG9yZWQgPSB0cnVlO1xuICAgICAgZm9yKHZhciBrZXkgaW4gQVBJX1JFUExBQ0VTKVxuICAgICAgICBvYmpba2V5XSAmJiAob2JqW0FQSV9SRVBMQUNFU1trZXldXSA9IG9ialtrZXldKTtcbiAgICAgIChvYmouY29udGFpbnMgfHwgW10pLmNvbmNhdChvYmoudmFyaWFudHMgfHwgW10pLmZvckVhY2gocmVzdG9yZUxhbmd1YWdlQXBpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjb21waWxlS2V5d29yZHMocmF3S2V5d29yZHMsIGNhc2VfaW5zZW5zaXRpdmUpIHtcbiAgICAgIHZhciBjb21waWxlZF9rZXl3b3JkcyA9IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIHJhd0tleXdvcmRzID09PSAnc3RyaW5nJykgeyAvLyBzdHJpbmdcbiAgICAgICAgc3BsaXRBbmRDb21waWxlKCdrZXl3b3JkJywgcmF3S2V5d29yZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqZWN0S2V5cyhyYXdLZXl3b3JkcykuZm9yRWFjaChmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgc3BsaXRBbmRDb21waWxlKGNsYXNzTmFtZSwgcmF3S2V5d29yZHNbY2xhc3NOYW1lXSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIHJldHVybiBjb21waWxlZF9rZXl3b3JkcztcblxuICAgIC8vIC0tLVxuXG4gICAgZnVuY3Rpb24gc3BsaXRBbmRDb21waWxlKGNsYXNzTmFtZSwgc3RyKSB7XG4gICAgICBpZiAoY2FzZV9pbnNlbnNpdGl2ZSkge1xuICAgICAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cbiAgICAgIHN0ci5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24oa2V5d29yZCkge1xuICAgICAgICB2YXIgcGFpciA9IGtleXdvcmQuc3BsaXQoJ3wnKTtcbiAgICAgICAgY29tcGlsZWRfa2V5d29yZHNbcGFpclswXV0gPSBbY2xhc3NOYW1lLCBzY29yZUZvcktleXdvcmQocGFpclswXSwgcGFpclsxXSldO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNjb3JlRm9yS2V5d29yZChrZXl3b3JkLCBwcm92aWRlZFNjb3JlKSB7XG4gICAgLy8gbWFudWFsIHNjb3JlcyBhbHdheXMgd2luIG92ZXIgY29tbW9uIGtleXdvcmRzXG4gICAgLy8gc28geW91IGNhbiBmb3JjZSBhIHNjb3JlIG9mIDEgaWYgeW91IHJlYWxseSBpbnNpc3RcbiAgICBpZiAocHJvdmlkZWRTY29yZSlcbiAgICAgIHJldHVybiBOdW1iZXIocHJvdmlkZWRTY29yZSlcblxuICAgIHJldHVybiBjb21tb25LZXl3b3JkKGtleXdvcmQpID8gMCA6IDE7XG4gIH1cblxuICBmdW5jdGlvbiBjb21tb25LZXl3b3JkKHdvcmQpIHtcbiAgICByZXR1cm4gQ09NTU9OX0tFWVdPUkRTLmluZGV4T2Yod29yZC50b0xvd2VyQ2FzZSgpKSAhPSAtMVxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKSB7XG5cbiAgICBmdW5jdGlvbiByZVN0cihyZSkge1xuICAgICAgICByZXR1cm4gKHJlICYmIHJlLnNvdXJjZSkgfHwgcmU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGFuZ1JlKHZhbHVlLCBnbG9iYWwpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnRXhwKFxuICAgICAgICByZVN0cih2YWx1ZSksXG4gICAgICAgICdtJyArIChsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlID8gJ2knIDogJycpICsgKGdsb2JhbCA/ICdnJyA6ICcnKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZUNvdW50TWF0Y2hHcm91cHMocmUpIHtcbiAgICAgIHJldHVybiAobmV3IFJlZ0V4cChyZS50b1N0cmluZygpICsgJ3wnKSkuZXhlYygnJykubGVuZ3RoIC0gMTtcbiAgICB9XG5cbiAgICAvLyBqb2luUmUgbG9naWNhbGx5IGNvbXB1dGVzIHJlZ2V4cHMuam9pbihzZXBhcmF0b3IpLCBidXQgZml4ZXMgdGhlXG4gICAgLy8gYmFja3JlZmVyZW5jZXMgc28gdGhleSBjb250aW51ZSB0byBtYXRjaC5cbiAgICAvLyBpdCBhbHNvIHBsYWNlcyBlYWNoIGluZGl2aWR1YWwgcmVndWxhciBleHByZXNzaW9uIGludG8gaXQncyBvd25cbiAgICAvLyBtYXRjaCBncm91cCwga2VlcGluZyB0cmFjayBvZiB0aGUgc2VxdWVuY2luZyBvZiB0aG9zZSBtYXRjaCBncm91cHNcbiAgICAvLyBpcyBjdXJyZW50bHkgYW4gZXhlcmNpc2UgZm9yIHRoZSBjYWxsZXIuIDotKVxuICAgIGZ1bmN0aW9uIGpvaW5SZShyZWdleHBzLCBzZXBhcmF0b3IpIHtcbiAgICAgIC8vIGJhY2tyZWZlcmVuY2VSZSBtYXRjaGVzIGFuIG9wZW4gcGFyZW50aGVzaXMgb3IgYmFja3JlZmVyZW5jZS4gVG8gYXZvaWRcbiAgICAgIC8vIGFuIGluY29ycmVjdCBwYXJzZSwgaXQgYWRkaXRpb25hbGx5IG1hdGNoZXMgdGhlIGZvbGxvd2luZzpcbiAgICAgIC8vIC0gWy4uLl0gZWxlbWVudHMsIHdoZXJlIHRoZSBtZWFuaW5nIG9mIHBhcmVudGhlc2VzIGFuZCBlc2NhcGVzIGNoYW5nZVxuICAgICAgLy8gLSBvdGhlciBlc2NhcGUgc2VxdWVuY2VzLCBzbyB3ZSBkbyBub3QgbWlzcGFyc2UgZXNjYXBlIHNlcXVlbmNlcyBhc1xuICAgICAgLy8gICBpbnRlcmVzdGluZyBlbGVtZW50c1xuICAgICAgLy8gLSBub24tbWF0Y2hpbmcgb3IgbG9va2FoZWFkIHBhcmVudGhlc2VzLCB3aGljaCBkbyBub3QgY2FwdHVyZS4gVGhlc2VcbiAgICAgIC8vICAgZm9sbG93IHRoZSAnKCcgd2l0aCBhICc/Jy5cbiAgICAgIHZhciBiYWNrcmVmZXJlbmNlUmUgPSAvXFxbKD86W15cXFxcXFxdXXxcXFxcLikqXFxdfFxcKFxcPz98XFxcXChbMS05XVswLTldKil8XFxcXC4vO1xuICAgICAgdmFyIG51bUNhcHR1cmVzID0gMDtcbiAgICAgIHZhciByZXQgPSAnJztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVnZXhwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBudW1DYXB0dXJlcyArPSAxO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gbnVtQ2FwdHVyZXM7XG4gICAgICAgIHZhciByZSA9IHJlU3RyKHJlZ2V4cHNbaV0pO1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICByZXQgKz0gc2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIHJldCArPSBcIihcIjtcbiAgICAgICAgd2hpbGUgKHJlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBiYWNrcmVmZXJlbmNlUmUuZXhlYyhyZSk7XG4gICAgICAgICAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldCArPSByZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXQgKz0gcmUuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KTtcbiAgICAgICAgICByZSA9IHJlLnN1YnN0cmluZyhtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgICAgaWYgKG1hdGNoWzBdWzBdID09ICdcXFxcJyAmJiBtYXRjaFsxXSkge1xuICAgICAgICAgICAgLy8gQWRqdXN0IHRoZSBiYWNrcmVmZXJlbmNlLlxuICAgICAgICAgICAgcmV0ICs9ICdcXFxcJyArIFN0cmluZyhOdW1iZXIobWF0Y2hbMV0pICsgb2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0ICs9IG1hdGNoWzBdO1xuICAgICAgICAgICAgaWYgKG1hdGNoWzBdID09ICcoJykge1xuICAgICAgICAgICAgICBudW1DYXB0dXJlcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXQgKz0gXCIpXCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTW9kZVJlZ2V4KG1vZGUpIHtcblxuICAgICAgdmFyIG1hdGNoSW5kZXhlcyA9IHt9O1xuICAgICAgdmFyIG1hdGNoZXJSZTtcbiAgICAgIHZhciByZWdleGVzID0gW107XG4gICAgICB2YXIgbWF0Y2hlciA9IHt9O1xuICAgICAgdmFyIG1hdGNoQXQgPSAxO1xuXG4gICAgICBmdW5jdGlvbiBhZGRSdWxlKHJ1bGUsIHJlZ2V4KSB7XG4gICAgICAgIG1hdGNoSW5kZXhlc1ttYXRjaEF0XSA9IHJ1bGU7XG4gICAgICAgIHJlZ2V4ZXMucHVzaChbcnVsZSwgcmVnZXhdKTtcbiAgICAgICAgbWF0Y2hBdCArPSByZUNvdW50TWF0Y2hHcm91cHMocmVnZXgpICsgMTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRlcm07XG4gICAgICBmb3IgKHZhciBpPTA7IGkgPCBtb2RlLmNvbnRhaW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByZTtcbiAgICAgICAgdGVybSA9IG1vZGUuY29udGFpbnNbaV07XG4gICAgICAgIGlmICh0ZXJtLmJlZ2luS2V5d29yZHMpIHtcbiAgICAgICAgICByZSA9ICdcXFxcLj8oPzonICsgdGVybS5iZWdpbiArICcpXFxcXC4/JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZSA9IHRlcm0uYmVnaW47XG4gICAgICAgIH1cbiAgICAgICAgYWRkUnVsZSh0ZXJtLCByZSk7XG4gICAgICB9XG4gICAgICBpZiAobW9kZS50ZXJtaW5hdG9yX2VuZClcbiAgICAgICAgYWRkUnVsZShcImVuZFwiLCBtb2RlLnRlcm1pbmF0b3JfZW5kKTtcbiAgICAgIGlmIChtb2RlLmlsbGVnYWwpXG4gICAgICAgIGFkZFJ1bGUoXCJpbGxlZ2FsXCIsIG1vZGUuaWxsZWdhbCk7XG5cbiAgICAgIHZhciB0ZXJtaW5hdG9ycyA9IHJlZ2V4ZXMubWFwKGZ1bmN0aW9uKGVsKSB7IHJldHVybiBlbFsxXSB9KTtcbiAgICAgIG1hdGNoZXJSZSA9IGxhbmdSZShqb2luUmUodGVybWluYXRvcnMsICd8JyksIHRydWUpO1xuXG4gICAgICBtYXRjaGVyLmxhc3RJbmRleCA9IDA7XG4gICAgICBtYXRjaGVyLmV4ZWMgPSBmdW5jdGlvbihzKSB7XG4gICAgICAgIHZhciBydWxlO1xuXG4gICAgICAgIGlmKCByZWdleGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbWF0Y2hlclJlLmxhc3RJbmRleCA9IG1hdGNoZXIubGFzdEluZGV4O1xuICAgICAgICB2YXIgbWF0Y2ggPSBtYXRjaGVyUmUuZXhlYyhzKTtcbiAgICAgICAgaWYgKCFtYXRjaCkgeyByZXR1cm4gbnVsbDsgfVxuXG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGk8bWF0Y2gubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAobWF0Y2hbaV0gIT0gdW5kZWZpbmVkICYmIG1hdGNoSW5kZXhlc1tcIlwiICtpXSAhPSB1bmRlZmluZWQgKSB7XG4gICAgICAgICAgICBydWxlID0gbWF0Y2hJbmRleGVzW1wiXCIraV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpbGxlZ2FsIG9yIGVuZCBtYXRjaFxuICAgICAgICBpZiAodHlwZW9mIHJ1bGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBtYXRjaC50eXBlID0gcnVsZTtcbiAgICAgICAgICBtYXRjaC5leHRyYSA9IFttb2RlLmlsbGVnYWwsIG1vZGUudGVybWluYXRvcl9lbmRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hdGNoLnR5cGUgPSBcImJlZ2luXCI7XG4gICAgICAgICAgbWF0Y2gucnVsZSA9IHJ1bGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWF0Y2hlcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21waWxlTW9kZShtb2RlLCBwYXJlbnQpIHtcbiAgICAgIGlmIChtb2RlLmNvbXBpbGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBtb2RlLmNvbXBpbGVkID0gdHJ1ZTtcblxuICAgICAgbW9kZS5rZXl3b3JkcyA9IG1vZGUua2V5d29yZHMgfHwgbW9kZS5iZWdpbktleXdvcmRzO1xuICAgICAgaWYgKG1vZGUua2V5d29yZHMpXG4gICAgICAgIG1vZGUua2V5d29yZHMgPSBjb21waWxlS2V5d29yZHMobW9kZS5rZXl3b3JkcywgbGFuZ3VhZ2UuY2FzZV9pbnNlbnNpdGl2ZSlcblxuICAgICAgbW9kZS5sZXhlbWVzUmUgPSBsYW5nUmUobW9kZS5sZXhlbWVzIHx8IC9cXHcrLywgdHJ1ZSk7XG5cbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKG1vZGUuYmVnaW5LZXl3b3Jkcykge1xuICAgICAgICAgIG1vZGUuYmVnaW4gPSAnXFxcXGIoJyArIG1vZGUuYmVnaW5LZXl3b3Jkcy5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcpXFxcXGInO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbW9kZS5iZWdpbilcbiAgICAgICAgICBtb2RlLmJlZ2luID0gL1xcQnxcXGIvO1xuICAgICAgICBtb2RlLmJlZ2luUmUgPSBsYW5nUmUobW9kZS5iZWdpbik7XG4gICAgICAgIGlmIChtb2RlLmVuZFNhbWVBc0JlZ2luKVxuICAgICAgICAgIG1vZGUuZW5kID0gbW9kZS5iZWdpbjtcbiAgICAgICAgaWYgKCFtb2RlLmVuZCAmJiAhbW9kZS5lbmRzV2l0aFBhcmVudClcbiAgICAgICAgICBtb2RlLmVuZCA9IC9cXEJ8XFxiLztcbiAgICAgICAgaWYgKG1vZGUuZW5kKVxuICAgICAgICAgIG1vZGUuZW5kUmUgPSBsYW5nUmUobW9kZS5lbmQpO1xuICAgICAgICBtb2RlLnRlcm1pbmF0b3JfZW5kID0gcmVTdHIobW9kZS5lbmQpIHx8ICcnO1xuICAgICAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCAmJiBwYXJlbnQudGVybWluYXRvcl9lbmQpXG4gICAgICAgICAgbW9kZS50ZXJtaW5hdG9yX2VuZCArPSAobW9kZS5lbmQgPyAnfCcgOiAnJykgKyBwYXJlbnQudGVybWluYXRvcl9lbmQ7XG4gICAgICB9XG4gICAgICBpZiAobW9kZS5pbGxlZ2FsKVxuICAgICAgICBtb2RlLmlsbGVnYWxSZSA9IGxhbmdSZShtb2RlLmlsbGVnYWwpO1xuICAgICAgaWYgKG1vZGUucmVsZXZhbmNlID09IG51bGwpXG4gICAgICAgIG1vZGUucmVsZXZhbmNlID0gMTtcbiAgICAgIGlmICghbW9kZS5jb250YWlucykge1xuICAgICAgICBtb2RlLmNvbnRhaW5zID0gW107XG4gICAgICB9XG4gICAgICBtb2RlLmNvbnRhaW5zID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgbW9kZS5jb250YWlucy5tYXAoZnVuY3Rpb24oYykge1xuICAgICAgICByZXR1cm4gZXhwYW5kX29yX2Nsb25lX21vZGUoYyA9PT0gJ3NlbGYnID8gbW9kZSA6IGMpO1xuICAgICAgfSkpO1xuICAgICAgbW9kZS5jb250YWlucy5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtjb21waWxlTW9kZShjLCBtb2RlKTt9KTtcblxuICAgICAgaWYgKG1vZGUuc3RhcnRzKSB7XG4gICAgICAgIGNvbXBpbGVNb2RlKG1vZGUuc3RhcnRzLCBwYXJlbnQpO1xuICAgICAgfVxuXG4gICAgICBtb2RlLnRlcm1pbmF0b3JzID0gYnVpbGRNb2RlUmVnZXgobW9kZSk7XG4gICAgfVxuXG4gICAgY29tcGlsZU1vZGUobGFuZ3VhZ2UpO1xuICB9XG5cbiAgLypcbiAgQ29yZSBoaWdobGlnaHRpbmcgZnVuY3Rpb24uIEFjY2VwdHMgYSBsYW5ndWFnZSBuYW1lLCBvciBhbiBhbGlhcywgYW5kIGFcbiAgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG8gaGlnaGxpZ2h0LiBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAgcHJvcGVydGllczpcblxuICAtIHJlbGV2YW5jZSAoaW50KVxuICAtIHZhbHVlIChhbiBIVE1MIHN0cmluZyB3aXRoIGhpZ2hsaWdodGluZyBtYXJrdXApXG5cbiAgKi9cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0KG5hbWUsIHZhbHVlLCBpZ25vcmVfaWxsZWdhbHMsIGNvbnRpbnVhdGlvbikge1xuXG4gICAgZnVuY3Rpb24gZXNjYXBlUmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpLCAnbScpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mTW9kZShtb2RlLCBsZXhlbWUpIHtcbiAgICAgIGlmICh0ZXN0UmUobW9kZS5lbmRSZSwgbGV4ZW1lKSkge1xuICAgICAgICB3aGlsZSAobW9kZS5lbmRzUGFyZW50ICYmIG1vZGUucGFyZW50KSB7XG4gICAgICAgICAgbW9kZSA9IG1vZGUucGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2RlO1xuICAgICAgfVxuICAgICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGVuZE9mTW9kZShtb2RlLnBhcmVudCwgbGV4ZW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrZXl3b3JkTWF0Y2gobW9kZSwgbWF0Y2gpIHtcbiAgICAgIHZhciBtYXRjaF9zdHIgPSBsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlID8gbWF0Y2hbMF0udG9Mb3dlckNhc2UoKSA6IG1hdGNoWzBdO1xuICAgICAgcmV0dXJuIG1vZGUua2V5d29yZHMuaGFzT3duUHJvcGVydHkobWF0Y2hfc3RyKSAmJiBtb2RlLmtleXdvcmRzW21hdGNoX3N0cl07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcGFuKGNsYXNzbmFtZSwgaW5zaWRlU3BhbiwgbGVhdmVPcGVuLCBub1ByZWZpeCkge1xuICAgICAgaWYgKCFsZWF2ZU9wZW4gJiYgaW5zaWRlU3BhbiA9PT0gJycpIHJldHVybiAnJztcbiAgICAgIGlmICghY2xhc3NuYW1lKSByZXR1cm4gaW5zaWRlU3BhbjtcblxuICAgICAgdmFyIGNsYXNzUHJlZml4ID0gbm9QcmVmaXggPyAnJyA6IG9wdGlvbnMuY2xhc3NQcmVmaXgsXG4gICAgICAgICAgb3BlblNwYW4gICAgPSAnPHNwYW4gY2xhc3M9XCInICsgY2xhc3NQcmVmaXgsXG4gICAgICAgICAgY2xvc2VTcGFuICAgPSBsZWF2ZU9wZW4gPyAnJyA6IHNwYW5FbmRUYWc7XG5cbiAgICAgIG9wZW5TcGFuICs9IGNsYXNzbmFtZSArICdcIj4nO1xuXG4gICAgICByZXR1cm4gb3BlblNwYW4gKyBpbnNpZGVTcGFuICsgY2xvc2VTcGFuO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NLZXl3b3JkcygpIHtcbiAgICAgIHZhciBrZXl3b3JkX21hdGNoLCBsYXN0X2luZGV4LCBtYXRjaCwgcmVzdWx0O1xuXG4gICAgICBpZiAoIXRvcC5rZXl3b3JkcylcbiAgICAgICAgcmV0dXJuIGVzY2FwZShtb2RlX2J1ZmZlcik7XG5cbiAgICAgIHJlc3VsdCA9ICcnO1xuICAgICAgbGFzdF9pbmRleCA9IDA7XG4gICAgICB0b3AubGV4ZW1lc1JlLmxhc3RJbmRleCA9IDA7XG4gICAgICBtYXRjaCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlX2J1ZmZlcik7XG5cbiAgICAgIHdoaWxlIChtYXRjaCkge1xuICAgICAgICByZXN1bHQgKz0gZXNjYXBlKG1vZGVfYnVmZmVyLnN1YnN0cmluZyhsYXN0X2luZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICBrZXl3b3JkX21hdGNoID0ga2V5d29yZE1hdGNoKHRvcCwgbWF0Y2gpO1xuICAgICAgICBpZiAoa2V5d29yZF9tYXRjaCkge1xuICAgICAgICAgIHJlbGV2YW5jZSArPSBrZXl3b3JkX21hdGNoWzFdO1xuICAgICAgICAgIHJlc3VsdCArPSBidWlsZFNwYW4oa2V5d29yZF9tYXRjaFswXSwgZXNjYXBlKG1hdGNoWzBdKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGVzY2FwZShtYXRjaFswXSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdF9pbmRleCA9IHRvcC5sZXhlbWVzUmUubGFzdEluZGV4O1xuICAgICAgICBtYXRjaCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlX2J1ZmZlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0ICsgZXNjYXBlKG1vZGVfYnVmZmVyLnN1YnN0cihsYXN0X2luZGV4KSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1N1Ykxhbmd1YWdlKCkge1xuICAgICAgdmFyIGV4cGxpY2l0ID0gdHlwZW9mIHRvcC5zdWJMYW5ndWFnZSA9PT0gJ3N0cmluZyc7XG4gICAgICBpZiAoZXhwbGljaXQgJiYgIWxhbmd1YWdlc1t0b3Auc3ViTGFuZ3VhZ2VdKSB7XG4gICAgICAgIHJldHVybiBlc2NhcGUobW9kZV9idWZmZXIpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVzdWx0ID0gZXhwbGljaXQgP1xuICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodCh0b3Auc3ViTGFuZ3VhZ2UsIG1vZGVfYnVmZmVyLCB0cnVlLCBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0pIDpcbiAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRBdXRvKG1vZGVfYnVmZmVyLCB0b3Auc3ViTGFuZ3VhZ2UubGVuZ3RoID8gdG9wLnN1Ykxhbmd1YWdlIDogdW5kZWZpbmVkKTtcblxuICAgICAgLy8gQ291bnRpbmcgZW1iZWRkZWQgbGFuZ3VhZ2Ugc2NvcmUgdG93YXJkcyB0aGUgaG9zdCBsYW5ndWFnZSBtYXkgYmUgZGlzYWJsZWRcbiAgICAgIC8vIHdpdGggemVyb2luZyB0aGUgY29udGFpbmluZyBtb2RlIHJlbGV2YW5jZS4gVXNlY2FzZSBpbiBwb2ludCBpcyBNYXJrZG93biB0aGF0XG4gICAgICAvLyBhbGxvd3MgWE1MIGV2ZXJ5d2hlcmUgYW5kIG1ha2VzIGV2ZXJ5IFhNTCBzbmlwcGV0IHRvIGhhdmUgYSBtdWNoIGxhcmdlciBNYXJrZG93blxuICAgICAgLy8gc2NvcmUuXG4gICAgICBpZiAodG9wLnJlbGV2YW5jZSA+IDApIHtcbiAgICAgICAgcmVsZXZhbmNlICs9IHJlc3VsdC5yZWxldmFuY2U7XG4gICAgICB9XG4gICAgICBpZiAoZXhwbGljaXQpIHtcbiAgICAgICAgY29udGludWF0aW9uc1t0b3Auc3ViTGFuZ3VhZ2VdID0gcmVzdWx0LnRvcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBidWlsZFNwYW4ocmVzdWx0Lmxhbmd1YWdlLCByZXN1bHQudmFsdWUsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzQnVmZmVyKCkge1xuICAgICAgcmVzdWx0ICs9ICh0b3Auc3ViTGFuZ3VhZ2UgIT0gbnVsbCA/IHByb2Nlc3NTdWJMYW5ndWFnZSgpIDogcHJvY2Vzc0tleXdvcmRzKCkpO1xuICAgICAgbW9kZV9idWZmZXIgPSAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE5ld01vZGUobW9kZSkge1xuICAgICAgcmVzdWx0ICs9IG1vZGUuY2xhc3NOYW1lPyBidWlsZFNwYW4obW9kZS5jbGFzc05hbWUsICcnLCB0cnVlKTogJyc7XG4gICAgICB0b3AgPSBPYmplY3QuY3JlYXRlKG1vZGUsIHtwYXJlbnQ6IHt2YWx1ZTogdG9wfX0pO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gZG9CZWdpbk1hdGNoKG1hdGNoKSB7XG4gICAgICB2YXIgbGV4ZW1lID0gbWF0Y2hbMF07XG4gICAgICB2YXIgbmV3X21vZGUgPSBtYXRjaC5ydWxlO1xuXG4gICAgICBpZiAobmV3X21vZGUgJiYgbmV3X21vZGUuZW5kU2FtZUFzQmVnaW4pIHtcbiAgICAgICAgbmV3X21vZGUuZW5kUmUgPSBlc2NhcGVSZSggbGV4ZW1lICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdfbW9kZS5za2lwKSB7XG4gICAgICAgIG1vZGVfYnVmZmVyICs9IGxleGVtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuZXdfbW9kZS5leGNsdWRlQmVnaW4pIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciArPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICBpZiAoIW5ld19tb2RlLnJldHVybkJlZ2luICYmICFuZXdfbW9kZS5leGNsdWRlQmVnaW4pIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciA9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhcnROZXdNb2RlKG5ld19tb2RlLCBsZXhlbWUpO1xuICAgICAgcmV0dXJuIG5ld19tb2RlLnJldHVybkJlZ2luID8gMCA6IGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZG9FbmRNYXRjaChtYXRjaCkge1xuICAgICAgdmFyIGxleGVtZSA9IG1hdGNoWzBdO1xuICAgICAgdmFyIGVuZF9tb2RlID0gZW5kT2ZNb2RlKHRvcCwgbGV4ZW1lKTtcbiAgICAgIGlmICghZW5kX21vZGUpIHsgcmV0dXJuOyB9XG5cbiAgICAgIHZhciBvcmlnaW4gPSB0b3A7XG4gICAgICBpZiAob3JpZ2luLnNraXApIHtcbiAgICAgICAgbW9kZV9idWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCEob3JpZ2luLnJldHVybkVuZCB8fCBvcmlnaW4uZXhjbHVkZUVuZCkpIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciArPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICBpZiAob3JpZ2luLmV4Y2x1ZGVFbmQpIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciA9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZG8ge1xuICAgICAgICBpZiAodG9wLmNsYXNzTmFtZSkge1xuICAgICAgICAgIHJlc3VsdCArPSBzcGFuRW5kVGFnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdG9wLnNraXAgJiYgIXRvcC5zdWJMYW5ndWFnZSkge1xuICAgICAgICAgIHJlbGV2YW5jZSArPSB0b3AucmVsZXZhbmNlO1xuICAgICAgICB9XG4gICAgICAgIHRvcCA9IHRvcC5wYXJlbnQ7XG4gICAgICB9IHdoaWxlICh0b3AgIT09IGVuZF9tb2RlLnBhcmVudCk7XG4gICAgICBpZiAoZW5kX21vZGUuc3RhcnRzKSB7XG4gICAgICAgIGlmIChlbmRfbW9kZS5lbmRTYW1lQXNCZWdpbikge1xuICAgICAgICAgIGVuZF9tb2RlLnN0YXJ0cy5lbmRSZSA9IGVuZF9tb2RlLmVuZFJlO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0TmV3TW9kZShlbmRfbW9kZS5zdGFydHMsICcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcmlnaW4ucmV0dXJuRW5kID8gMCA6IGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgdmFyIGxhc3RNYXRjaCA9IHt9O1xuICAgIGZ1bmN0aW9uIHByb2Nlc3NMZXhlbWUodGV4dF9iZWZvcmVfbWF0Y2gsIG1hdGNoKSB7XG5cbiAgICAgIHZhciBsZXhlbWUgPSBtYXRjaCAmJiBtYXRjaFswXTtcblxuICAgICAgLy8gYWRkIG5vbi1tYXRjaGVkIHRleHQgdG8gdGhlIGN1cnJlbnQgbW9kZSBidWZmZXJcbiAgICAgIG1vZGVfYnVmZmVyICs9IHRleHRfYmVmb3JlX21hdGNoO1xuXG4gICAgICBpZiAobGV4ZW1lID09IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgLy8gd2UndmUgZm91bmQgYSAwIHdpZHRoIG1hdGNoIGFuZCB3ZSdyZSBzdHVjaywgc28gd2UgbmVlZCB0byBhZHZhbmNlXG4gICAgICAvLyB0aGlzIGhhcHBlbnMgd2hlbiB3ZSBoYXZlIGJhZGx5IGJlaGF2ZWQgcnVsZXMgdGhhdCBoYXZlIG9wdGlvbmFsIG1hdGNoZXJzIHRvIHRoZSBkZWdyZWUgdGhhdFxuICAgICAgLy8gc29tZXRpbWVzIHRoZXkgY2FuIGVuZCB1cCBtYXRjaGluZyBub3RoaW5nIGF0IGFsbFxuICAgICAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8yMTQwXG4gICAgICBpZiAobGFzdE1hdGNoLnR5cGU9PVwiYmVnaW5cIiAmJiBtYXRjaC50eXBlPT1cImVuZFwiICYmIGxhc3RNYXRjaC5pbmRleCA9PSBtYXRjaC5pbmRleCAmJiBsZXhlbWUgPT09IFwiXCIpIHtcbiAgICAgICAgLy8gc3BpdCB0aGUgXCJza2lwcGVkXCIgY2hhcmFjdGVyIHRoYXQgb3VyIHJlZ2V4IGNob2tlZCBvbiBiYWNrIGludG8gdGhlIG91dHB1dCBzZXF1ZW5jZVxuICAgICAgICBtb2RlX2J1ZmZlciArPSB2YWx1ZS5zbGljZShtYXRjaC5pbmRleCwgbWF0Y2guaW5kZXggKyAxKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RNYXRjaCA9IG1hdGNoO1xuXG4gICAgICBpZiAobWF0Y2gudHlwZT09PVwiYmVnaW5cIikge1xuICAgICAgICByZXR1cm4gZG9CZWdpbk1hdGNoKG1hdGNoKTtcbiAgICAgIH0gZWxzZSBpZiAobWF0Y2gudHlwZT09PVwiaWxsZWdhbFwiICYmICFpZ25vcmVfaWxsZWdhbHMpIHtcbiAgICAgICAgLy8gaWxsZWdhbCBtYXRjaCwgd2UgZG8gbm90IGNvbnRpbnVlIHByb2Nlc3NpbmdcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGxleGVtZSBcIicgKyBsZXhlbWUgKyAnXCIgZm9yIG1vZGUgXCInICsgKHRvcC5jbGFzc05hbWUgfHwgJzx1bm5hbWVkPicpICsgJ1wiJyk7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoLnR5cGU9PT1cImVuZFwiKSB7XG4gICAgICAgIHZhciBwcm9jZXNzZWQgPSBkb0VuZE1hdGNoKG1hdGNoKTtcbiAgICAgICAgaWYgKHByb2Nlc3NlZCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgcmV0dXJuIHByb2Nlc3NlZDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgIFdoeSBtaWdodCBiZSBmaW5kIG91cnNlbHZlcyBoZXJlPyAgT25seSBvbmUgb2NjYXNpb24gbm93LiAgQW4gZW5kIG1hdGNoIHRoYXQgd2FzXG4gICAgICB0cmlnZ2VyZWQgYnV0IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQuICBXaGVuIG1pZ2h0IHRoaXMgaGFwcGVuPyAgV2hlbiBhbiBgZW5kU2FtZWFzQmVnaW5gXG4gICAgICBydWxlIHNldHMgdGhlIGVuZCBydWxlIHRvIGEgc3BlY2lmaWMgbWF0Y2guICBTaW5jZSB0aGUgb3ZlcmFsbCBtb2RlIHRlcm1pbmF0aW9uIHJ1bGUgdGhhdCdzXG4gICAgICBiZWluZyB1c2VkIHRvIHNjYW4gdGhlIHRleHQgaXNuJ3QgcmVjb21waWxlZCB0aGF0IG1lYW5zIHRoYXQgYW55IG1hdGNoIHRoYXQgTE9PS1MgbGlrZVxuICAgICAgdGhlIGVuZCAoYnV0IGlzIG5vdCwgYmVjYXVzZSBpdCBpcyBub3QgYW4gZXhhY3QgbWF0Y2ggdG8gdGhlIGJlZ2lubmluZykgd2lsbFxuICAgICAgZW5kIHVwIGhlcmUuICBBIGRlZmluaXRlIGVuZCBtYXRjaCwgYnV0IHdoZW4gYGRvRW5kTWF0Y2hgIHRyaWVzIHRvIFwicmVhcHBseVwiXG4gICAgICB0aGUgZW5kIHJ1bGUgYW5kIGZhaWxzIHRvIG1hdGNoLCB3ZSB3aW5kIHVwIGhlcmUsIGFuZCBqdXN0IHNpbGVudGx5IGlnbm9yZSB0aGUgZW5kLlxuXG4gICAgICBUaGlzIGNhdXNlcyBubyByZWFsIGhhcm0gb3RoZXIgdGhhbiBzdG9wcGluZyBhIGZldyB0aW1lcyB0b28gbWFueS5cbiAgICAgICovXG5cbiAgICAgIG1vZGVfYnVmZmVyICs9IGxleGVtZTtcbiAgICAgIHJldHVybiBsZXhlbWUubGVuZ3RoO1xuICAgIH1cblxuICAgIHZhciBsYW5ndWFnZSA9IGdldExhbmd1YWdlKG5hbWUpO1xuICAgIGlmICghbGFuZ3VhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBsYW5ndWFnZTogXCInICsgbmFtZSArICdcIicpO1xuICAgIH1cblxuICAgIGNvbXBpbGVMYW5ndWFnZShsYW5ndWFnZSk7XG4gICAgdmFyIHRvcCA9IGNvbnRpbnVhdGlvbiB8fCBsYW5ndWFnZTtcbiAgICB2YXIgY29udGludWF0aW9ucyA9IHt9OyAvLyBrZWVwIGNvbnRpbnVhdGlvbnMgZm9yIHN1Yi1sYW5ndWFnZXNcbiAgICB2YXIgcmVzdWx0ID0gJycsIGN1cnJlbnQ7XG4gICAgZm9yKGN1cnJlbnQgPSB0b3A7IGN1cnJlbnQgIT09IGxhbmd1YWdlOyBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQpIHtcbiAgICAgIGlmIChjdXJyZW50LmNsYXNzTmFtZSkge1xuICAgICAgICByZXN1bHQgPSBidWlsZFNwYW4oY3VycmVudC5jbGFzc05hbWUsICcnLCB0cnVlKSArIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1vZGVfYnVmZmVyID0gJyc7XG4gICAgdmFyIHJlbGV2YW5jZSA9IDA7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBtYXRjaCwgY291bnQsIGluZGV4ID0gMDtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHRvcC50ZXJtaW5hdG9ycy5sYXN0SW5kZXggPSBpbmRleDtcbiAgICAgICAgbWF0Y2ggPSB0b3AudGVybWluYXRvcnMuZXhlYyh2YWx1ZSk7XG4gICAgICAgIGlmICghbWF0Y2gpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNvdW50ID0gcHJvY2Vzc0xleGVtZSh2YWx1ZS5zdWJzdHJpbmcoaW5kZXgsIG1hdGNoLmluZGV4KSwgbWF0Y2gpO1xuICAgICAgICBpbmRleCA9IG1hdGNoLmluZGV4ICsgY291bnQ7XG4gICAgICB9XG4gICAgICBwcm9jZXNzTGV4ZW1lKHZhbHVlLnN1YnN0cihpbmRleCkpO1xuICAgICAgZm9yKGN1cnJlbnQgPSB0b3A7IGN1cnJlbnQucGFyZW50OyBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQpIHsgLy8gY2xvc2UgZGFuZ2xpbmcgbW9kZXNcbiAgICAgICAgaWYgKGN1cnJlbnQuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHNwYW5FbmRUYWc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbGV2YW5jZTogcmVsZXZhbmNlLFxuICAgICAgICB2YWx1ZTogcmVzdWx0LFxuICAgICAgICBpbGxlZ2FsOmZhbHNlLFxuICAgICAgICBsYW5ndWFnZTogbmFtZSxcbiAgICAgICAgdG9wOiB0b3BcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUubWVzc2FnZSAmJiBlLm1lc3NhZ2UuaW5kZXhPZignSWxsZWdhbCcpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlsbGVnYWw6IHRydWUsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIHZhbHVlOiBlc2NhcGUodmFsdWUpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qXG4gIEhpZ2hsaWdodGluZyB3aXRoIGxhbmd1YWdlIGRldGVjdGlvbi4gQWNjZXB0cyBhIHN0cmluZyB3aXRoIHRoZSBjb2RlIHRvXG4gIGhpZ2hsaWdodC4gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cbiAgLSBsYW5ndWFnZSAoZGV0ZWN0ZWQgbGFuZ3VhZ2UpXG4gIC0gcmVsZXZhbmNlIChpbnQpXG4gIC0gdmFsdWUgKGFuIEhUTUwgc3RyaW5nIHdpdGggaGlnaGxpZ2h0aW5nIG1hcmt1cClcbiAgLSBzZWNvbmRfYmVzdCAob2JqZWN0IHdpdGggdGhlIHNhbWUgc3RydWN0dXJlIGZvciBzZWNvbmQtYmVzdCBoZXVyaXN0aWNhbGx5XG4gICAgZGV0ZWN0ZWQgbGFuZ3VhZ2UsIG1heSBiZSBhYnNlbnQpXG5cbiAgKi9cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0QXV0byh0ZXh0LCBsYW5ndWFnZVN1YnNldCkge1xuICAgIGxhbmd1YWdlU3Vic2V0ID0gbGFuZ3VhZ2VTdWJzZXQgfHwgb3B0aW9ucy5sYW5ndWFnZXMgfHwgb2JqZWN0S2V5cyhsYW5ndWFnZXMpO1xuICAgIHZhciByZXN1bHQgPSB7XG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICB2YWx1ZTogZXNjYXBlKHRleHQpXG4gICAgfTtcbiAgICB2YXIgc2Vjb25kX2Jlc3QgPSByZXN1bHQ7XG4gICAgbGFuZ3VhZ2VTdWJzZXQuZmlsdGVyKGdldExhbmd1YWdlKS5maWx0ZXIoYXV0b0RldGVjdGlvbikuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB2YXIgY3VycmVudCA9IGhpZ2hsaWdodChuYW1lLCB0ZXh0LCBmYWxzZSk7XG4gICAgICBjdXJyZW50Lmxhbmd1YWdlID0gbmFtZTtcbiAgICAgIGlmIChjdXJyZW50LnJlbGV2YW5jZSA+IHNlY29uZF9iZXN0LnJlbGV2YW5jZSkge1xuICAgICAgICBzZWNvbmRfYmVzdCA9IGN1cnJlbnQ7XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudC5yZWxldmFuY2UgPiByZXN1bHQucmVsZXZhbmNlKSB7XG4gICAgICAgIHNlY29uZF9iZXN0ID0gcmVzdWx0O1xuICAgICAgICByZXN1bHQgPSBjdXJyZW50O1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChzZWNvbmRfYmVzdC5sYW5ndWFnZSkge1xuICAgICAgcmVzdWx0LnNlY29uZF9iZXN0ID0gc2Vjb25kX2Jlc3Q7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKlxuICBQb3N0LXByb2Nlc3Npbmcgb2YgdGhlIGhpZ2hsaWdodGVkIG1hcmt1cDpcblxuICAtIHJlcGxhY2UgVEFCcyB3aXRoIHNvbWV0aGluZyBtb3JlIHVzZWZ1bFxuICAtIHJlcGxhY2UgcmVhbCBsaW5lLWJyZWFrcyB3aXRoICc8YnI+JyBmb3Igbm9uLXByZSBjb250YWluZXJzXG5cbiAgKi9cbiAgZnVuY3Rpb24gZml4TWFya3VwKHZhbHVlKSB7XG4gICAgcmV0dXJuICEob3B0aW9ucy50YWJSZXBsYWNlIHx8IG9wdGlvbnMudXNlQlIpXG4gICAgICA/IHZhbHVlXG4gICAgICA6IHZhbHVlLnJlcGxhY2UoZml4TWFya3VwUmUsIGZ1bmN0aW9uKG1hdGNoLCBwMSkge1xuICAgICAgICAgIGlmIChvcHRpb25zLnVzZUJSICYmIG1hdGNoID09PSAnXFxuJykge1xuICAgICAgICAgICAgcmV0dXJuICc8YnI+JztcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMudGFiUmVwbGFjZSkge1xuICAgICAgICAgICAgcmV0dXJuIHAxLnJlcGxhY2UoL1xcdC9nLCBvcHRpb25zLnRhYlJlcGxhY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkQ2xhc3NOYW1lKHByZXZDbGFzc05hbWUsIGN1cnJlbnRMYW5nLCByZXN1bHRMYW5nKSB7XG4gICAgdmFyIGxhbmd1YWdlID0gY3VycmVudExhbmcgPyBhbGlhc2VzW2N1cnJlbnRMYW5nXSA6IHJlc3VsdExhbmcsXG4gICAgICAgIHJlc3VsdCAgID0gW3ByZXZDbGFzc05hbWUudHJpbSgpXTtcblxuICAgIGlmICghcHJldkNsYXNzTmFtZS5tYXRjaCgvXFxiaGxqc1xcYi8pKSB7XG4gICAgICByZXN1bHQucHVzaCgnaGxqcycpO1xuICAgIH1cblxuICAgIGlmIChwcmV2Q2xhc3NOYW1lLmluZGV4T2YobGFuZ3VhZ2UpID09PSAtMSkge1xuICAgICAgcmVzdWx0LnB1c2gobGFuZ3VhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQuam9pbignICcpLnRyaW0oKTtcbiAgfVxuXG4gIC8qXG4gIEFwcGxpZXMgaGlnaGxpZ2h0aW5nIHRvIGEgRE9NIG5vZGUgY29udGFpbmluZyBjb2RlLiBBY2NlcHRzIGEgRE9NIG5vZGUgYW5kXG4gIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBmaXhNYXJrdXAuXG4gICovXG4gIGZ1bmN0aW9uIGhpZ2hsaWdodEJsb2NrKGJsb2NrKSB7XG4gICAgdmFyIG5vZGUsIG9yaWdpbmFsU3RyZWFtLCByZXN1bHQsIHJlc3VsdE5vZGUsIHRleHQ7XG4gICAgdmFyIGxhbmd1YWdlID0gYmxvY2tMYW5ndWFnZShibG9jayk7XG5cbiAgICBpZiAoaXNOb3RIaWdobGlnaHRlZChsYW5ndWFnZSkpXG4gICAgICAgIHJldHVybjtcblxuICAgIGlmIChvcHRpb25zLnVzZUJSKSB7XG4gICAgICBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2RpdicpO1xuICAgICAgbm9kZS5pbm5lckhUTUwgPSBibG9jay5pbm5lckhUTUwucmVwbGFjZSgvXFxuL2csICcnKS5yZXBsYWNlKC88YnJbIFxcL10qPi9nLCAnXFxuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBibG9jaztcbiAgICB9XG4gICAgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQ7XG4gICAgcmVzdWx0ID0gbGFuZ3VhZ2UgPyBoaWdobGlnaHQobGFuZ3VhZ2UsIHRleHQsIHRydWUpIDogaGlnaGxpZ2h0QXV0byh0ZXh0KTtcblxuICAgIG9yaWdpbmFsU3RyZWFtID0gbm9kZVN0cmVhbShub2RlKTtcbiAgICBpZiAob3JpZ2luYWxTdHJlYW0ubGVuZ3RoKSB7XG4gICAgICByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2RpdicpO1xuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByZXN1bHQudmFsdWU7XG4gICAgICByZXN1bHQudmFsdWUgPSBtZXJnZVN0cmVhbXMob3JpZ2luYWxTdHJlYW0sIG5vZGVTdHJlYW0ocmVzdWx0Tm9kZSksIHRleHQpO1xuICAgIH1cbiAgICByZXN1bHQudmFsdWUgPSBmaXhNYXJrdXAocmVzdWx0LnZhbHVlKTtcblxuICAgIGJsb2NrLmlubmVySFRNTCA9IHJlc3VsdC52YWx1ZTtcbiAgICBibG9jay5jbGFzc05hbWUgPSBidWlsZENsYXNzTmFtZShibG9jay5jbGFzc05hbWUsIGxhbmd1YWdlLCByZXN1bHQubGFuZ3VhZ2UpO1xuICAgIGJsb2NrLnJlc3VsdCA9IHtcbiAgICAgIGxhbmd1YWdlOiByZXN1bHQubGFuZ3VhZ2UsXG4gICAgICByZTogcmVzdWx0LnJlbGV2YW5jZVxuICAgIH07XG4gICAgaWYgKHJlc3VsdC5zZWNvbmRfYmVzdCkge1xuICAgICAgYmxvY2suc2Vjb25kX2Jlc3QgPSB7XG4gICAgICAgIGxhbmd1YWdlOiByZXN1bHQuc2Vjb25kX2Jlc3QubGFuZ3VhZ2UsXG4gICAgICAgIHJlOiByZXN1bHQuc2Vjb25kX2Jlc3QucmVsZXZhbmNlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gIFVwZGF0ZXMgaGlnaGxpZ2h0LmpzIGdsb2JhbCBvcHRpb25zIHdpdGggdmFsdWVzIHBhc3NlZCBpbiB0aGUgZm9ybSBvZiBhbiBvYmplY3QuXG4gICovXG4gIGZ1bmN0aW9uIGNvbmZpZ3VyZSh1c2VyX29wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gaW5oZXJpdChvcHRpb25zLCB1c2VyX29wdGlvbnMpO1xuICB9XG5cbiAgLypcbiAgQXBwbGllcyBoaWdobGlnaHRpbmcgdG8gYWxsIDxwcmU+PGNvZGU+Li48L2NvZGU+PC9wcmU+IGJsb2NrcyBvbiBhIHBhZ2UuXG4gICovXG4gIGZ1bmN0aW9uIGluaXRIaWdobGlnaHRpbmcoKSB7XG4gICAgaWYgKGluaXRIaWdobGlnaHRpbmcuY2FsbGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGluaXRIaWdobGlnaHRpbmcuY2FsbGVkID0gdHJ1ZTtcblxuICAgIHZhciBibG9ja3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUgY29kZScpO1xuICAgIEFycmF5UHJvdG8uZm9yRWFjaC5jYWxsKGJsb2NrcywgaGlnaGxpZ2h0QmxvY2spO1xuICB9XG5cbiAgLypcbiAgQXR0YWNoZXMgaGlnaGxpZ2h0aW5nIHRvIHRoZSBwYWdlIGxvYWQgZXZlbnQuXG4gICovXG4gIGZ1bmN0aW9uIGluaXRIaWdobGlnaHRpbmdPbkxvYWQoKSB7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRIaWdobGlnaHRpbmcsIGZhbHNlKTtcbiAgICBhZGRFdmVudExpc3RlbmVyKCdsb2FkJywgaW5pdEhpZ2hsaWdodGluZywgZmFsc2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXJMYW5ndWFnZShuYW1lLCBsYW5ndWFnZSkge1xuICAgIHZhciBsYW5nID0gbGFuZ3VhZ2VzW25hbWVdID0gbGFuZ3VhZ2UoaGxqcyk7XG4gICAgcmVzdG9yZUxhbmd1YWdlQXBpKGxhbmcpO1xuICAgIGxhbmcucmF3RGVmaW5pdGlvbiA9IGxhbmd1YWdlLmJpbmQobnVsbCxobGpzKTtcblxuICAgIGlmIChsYW5nLmFsaWFzZXMpIHtcbiAgICAgIGxhbmcuYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKGFsaWFzKSB7YWxpYXNlc1thbGlhc10gPSBuYW1lO30pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RMYW5ndWFnZXMoKSB7XG4gICAgcmV0dXJuIG9iamVjdEtleXMobGFuZ3VhZ2VzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExhbmd1YWdlKG5hbWUpIHtcbiAgICBuYW1lID0gKG5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGxhbmd1YWdlc1tuYW1lXSB8fCBsYW5ndWFnZXNbYWxpYXNlc1tuYW1lXV07XG4gIH1cblxuICBmdW5jdGlvbiBhdXRvRGV0ZWN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbGFuZyA9IGdldExhbmd1YWdlKG5hbWUpO1xuICAgIHJldHVybiBsYW5nICYmICFsYW5nLmRpc2FibGVBdXRvZGV0ZWN0O1xuICB9XG5cbiAgLyogSW50ZXJmYWNlIGRlZmluaXRpb24gKi9cblxuICBobGpzLmhpZ2hsaWdodCA9IGhpZ2hsaWdodDtcbiAgaGxqcy5oaWdobGlnaHRBdXRvID0gaGlnaGxpZ2h0QXV0bztcbiAgaGxqcy5maXhNYXJrdXAgPSBmaXhNYXJrdXA7XG4gIGhsanMuaGlnaGxpZ2h0QmxvY2sgPSBoaWdobGlnaHRCbG9jaztcbiAgaGxqcy5jb25maWd1cmUgPSBjb25maWd1cmU7XG4gIGhsanMuaW5pdEhpZ2hsaWdodGluZyA9IGluaXRIaWdobGlnaHRpbmc7XG4gIGhsanMuaW5pdEhpZ2hsaWdodGluZ09uTG9hZCA9IGluaXRIaWdobGlnaHRpbmdPbkxvYWQ7XG4gIGhsanMucmVnaXN0ZXJMYW5ndWFnZSA9IHJlZ2lzdGVyTGFuZ3VhZ2U7XG4gIGhsanMubGlzdExhbmd1YWdlcyA9IGxpc3RMYW5ndWFnZXM7XG4gIGhsanMuZ2V0TGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZTtcbiAgaGxqcy5hdXRvRGV0ZWN0aW9uID0gYXV0b0RldGVjdGlvbjtcbiAgaGxqcy5pbmhlcml0ID0gaW5oZXJpdDtcblxuICAvLyBDb21tb24gcmVnZXhwc1xuICBobGpzLklERU5UX1JFID0gJ1thLXpBLVpdXFxcXHcqJztcbiAgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFID0gJ1thLXpBLVpfXVxcXFx3Kic7XG4gIGhsanMuTlVNQkVSX1JFID0gJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8nO1xuICBobGpzLkNfTlVNQkVSX1JFID0gJygtPykoXFxcXGIwW3hYXVthLWZBLUYwLTldK3woXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCopP3xcXFxcLlxcXFxkKykoW2VFXVstK10/XFxcXGQrKT8pJzsgLy8gMHguLi4sIDAuLi4sIGRlY2ltYWwsIGZsb2F0XG4gIGhsanMuQklOQVJZX05VTUJFUl9SRSA9ICdcXFxcYigwYlswMV0rKSc7IC8vIDBiLi4uXG4gIGhsanMuUkVfU1RBUlRFUlNfUkUgPSAnIXwhPXwhPT18JXwlPXwmfCYmfCY9fFxcXFwqfFxcXFwqPXxcXFxcK3xcXFxcKz18LHwtfC09fC89fC98Onw7fDw8fDw8PXw8PXw8fD09PXw9PXw9fD4+Pj18Pj49fD49fD4+Pnw+Pnw+fFxcXFw/fFxcXFxbfFxcXFx7fFxcXFwofFxcXFxefFxcXFxePXxcXFxcfHxcXFxcfD18XFxcXHxcXFxcfHx+JztcblxuICAvLyBDb21tb24gbW9kZXNcbiAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFID0ge1xuICAgIGJlZ2luOiAnXFxcXFxcXFxbXFxcXHNcXFxcU10nLCByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5BUE9TX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG4gIGhsanMuUVVPVEVfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG4gIGhsanMuUEhSQVNBTF9XT1JEU19NT0RFID0ge1xuICAgIGJlZ2luOiAvXFxiKGF8YW58dGhlfGFyZXxJJ218aXNuJ3R8ZG9uJ3R8ZG9lc24ndHx3b24ndHxidXR8anVzdHxzaG91bGR8cHJldHR5fHNpbXBseXxlbm91Z2h8Z29ubmF8Z29pbmd8d3RmfHNvfHN1Y2h8d2lsbHx5b3V8eW91cnx0aGV5fGxpa2V8bW9yZSlcXGIvXG4gIH07XG4gIGhsanMuQ09NTUVOVCA9IGZ1bmN0aW9uIChiZWdpbiwgZW5kLCBpbmhlcml0cykge1xuICAgIHZhciBtb2RlID0gaGxqcy5pbmhlcml0KFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46IGJlZ2luLCBlbmQ6IGVuZCxcbiAgICAgICAgY29udGFpbnM6IFtdXG4gICAgICB9LFxuICAgICAgaW5oZXJpdHMgfHwge31cbiAgICApO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChobGpzLlBIUkFTQUxfV09SRFNfTU9ERSk7XG4gICAgbW9kZS5jb250YWlucy5wdXNoKHtcbiAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICBiZWdpbjogJyg/OlRPRE98RklYTUV8Tk9URXxCVUd8WFhYKTonLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSk7XG4gICAgcmV0dXJuIG1vZGU7XG4gIH07XG4gIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnLy8nLCAnJCcpO1xuICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFID0gaGxqcy5DT01NRU5UKCcvXFxcXConLCAnXFxcXCovJyk7XG4gIGhsanMuSEFTSF9DT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJyMnLCAnJCcpO1xuICBobGpzLk5VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IGhsanMuTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLkNfTlVNQkVSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogaGxqcy5CSU5BUllfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLkNTU19OVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBobGpzLk5VTUJFUl9SRSArICcoJyArXG4gICAgICAnJXxlbXxleHxjaHxyZW0nICArXG4gICAgICAnfHZ3fHZofHZtaW58dm1heCcgK1xuICAgICAgJ3xjbXxtbXxpbnxwdHxwY3xweCcgK1xuICAgICAgJ3xkZWd8Z3JhZHxyYWR8dHVybicgK1xuICAgICAgJ3xzfG1zJyArXG4gICAgICAnfEh6fGtIeicgK1xuICAgICAgJ3xkcGl8ZHBjbXxkcHB4JyArXG4gICAgICAnKT8nLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLlJFR0VYUF9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgYmVnaW46IC9cXC8vLCBlbmQ6IC9cXC9bZ2ltdXldKi8sXG4gICAgaWxsZWdhbDogL1xcbi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgaGxqcy5USVRMRV9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICBiZWdpbjogaGxqcy5JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGhsanMuTUVUSE9EX0dVQVJEID0ge1xuICAgIC8vIGV4Y2x1ZGVzIG1ldGhvZCBuYW1lcyBmcm9tIGtleXdvcmQgcHJvY2Vzc2luZ1xuICAgIGJlZ2luOiAnXFxcXC5cXFxccyonICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHJldHVybiBobGpzO1xufSkpO1xuIiwiLy9cbi8vIGZvcm1hdCAtIHByaW50Zi1saWtlIHN0cmluZyBmb3JtYXR0aW5nIGZvciBKYXZhU2NyaXB0XG4vLyBnaXRodWIuY29tL3NhbXNvbmpzL2Zvcm1hdFxuLy8gQF9zanNcbi8vXG4vLyBDb3B5cmlnaHQgMjAxMCAtIDIwMTMgU2FtaSBTYW1odXJpIDxzYW1pQHNhbWh1cmkubmV0PlxuLy9cbi8vIE1JVCBMaWNlbnNlXG4vLyBodHRwOi8vc2pzLm1pdC1saWNlbnNlLm9yZ1xuLy9cblxuOyhmdW5jdGlvbigpIHtcblxuICAvLy8vIEV4cG9ydCB0aGUgQVBJXG4gIHZhciBuYW1lc3BhY2U7XG5cbiAgLy8gQ29tbW9uSlMgLyBOb2RlIG1vZHVsZVxuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBuYW1lc3BhY2UgPSBtb2R1bGUuZXhwb3J0cyA9IGZvcm1hdDtcbiAgfVxuXG4gIC8vIEJyb3dzZXJzIGFuZCBvdGhlciBlbnZpcm9ubWVudHNcbiAgZWxzZSB7XG4gICAgLy8gR2V0IHRoZSBnbG9iYWwgb2JqZWN0LiBXb3JrcyBpbiBFUzMsIEVTNSwgYW5kIEVTNSBzdHJpY3QgbW9kZS5cbiAgICBuYW1lc3BhY2UgPSAoZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXMgfHwgKDEsZXZhbCkoJ3RoaXMnKSB9KCkpO1xuICB9XG5cbiAgbmFtZXNwYWNlLmZvcm1hdCA9IGZvcm1hdDtcbiAgbmFtZXNwYWNlLnZzcHJpbnRmID0gdnNwcmludGY7XG5cbiAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT09ICdmdW5jdGlvbicpIHtcbiAgICBuYW1lc3BhY2UucHJpbnRmID0gcHJpbnRmO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJpbnRmKC8qIC4uLiAqLykge1xuICAgIGNvbnNvbGUubG9nKGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZzcHJpbnRmKGZtdCwgcmVwbGFjZW1lbnRzKSB7XG4gICAgcmV0dXJuIGZvcm1hdC5hcHBseShudWxsLCBbZm10XS5jb25jYXQocmVwbGFjZW1lbnRzKSk7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXQoZm10KSB7XG4gICAgdmFyIGFyZ0luZGV4ID0gMSAvLyBza2lwIGluaXRpYWwgZm9ybWF0IGFyZ3VtZW50XG4gICAgICAsIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cylcbiAgICAgICwgaSA9IDBcbiAgICAgICwgbiA9IGZtdC5sZW5ndGhcbiAgICAgICwgcmVzdWx0ID0gJydcbiAgICAgICwgY1xuICAgICAgLCBlc2NhcGVkID0gZmFsc2VcbiAgICAgICwgYXJnXG4gICAgICAsIHRtcFxuICAgICAgLCBsZWFkaW5nWmVybyA9IGZhbHNlXG4gICAgICAsIHByZWNpc2lvblxuICAgICAgLCBuZXh0QXJnID0gZnVuY3Rpb24oKSB7IHJldHVybiBhcmdzW2FyZ0luZGV4KytdOyB9XG4gICAgICAsIHNsdXJwTnVtYmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGRpZ2l0cyA9ICcnO1xuICAgICAgICAgIHdoaWxlICgvXFxkLy50ZXN0KGZtdFtpXSkpIHtcbiAgICAgICAgICAgIGRpZ2l0cyArPSBmbXRbaSsrXTtcbiAgICAgICAgICAgIGMgPSBmbXRbaV07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBkaWdpdHMubGVuZ3RoID4gMCA/IHBhcnNlSW50KGRpZ2l0cykgOiBudWxsO1xuICAgICAgICB9XG4gICAgICA7XG4gICAgZm9yICg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGMgPSBmbXRbaV07XG4gICAgICBpZiAoZXNjYXBlZCkge1xuICAgICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChjID09ICcuJykge1xuICAgICAgICAgIGxlYWRpbmdaZXJvID0gZmFsc2U7XG4gICAgICAgICAgYyA9IGZtdFsrK2ldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGMgPT0gJzAnICYmIGZtdFtpICsgMV0gPT0gJy4nKSB7XG4gICAgICAgICAgbGVhZGluZ1plcm8gPSB0cnVlO1xuICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgICBjID0gZm10W2ldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGxlYWRpbmdaZXJvID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBwcmVjaXNpb24gPSBzbHVycE51bWJlcigpO1xuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSAnYic6IC8vIG51bWJlciBpbiBiaW5hcnlcbiAgICAgICAgICByZXN1bHQgKz0gcGFyc2VJbnQobmV4dEFyZygpLCAxMCkudG9TdHJpbmcoMik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2MnOiAvLyBjaGFyYWN0ZXJcbiAgICAgICAgICBhcmcgPSBuZXh0QXJnKCk7XG4gICAgICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8IGFyZyBpbnN0YW5jZW9mIFN0cmluZylcbiAgICAgICAgICAgIHJlc3VsdCArPSBhcmc7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYXJnLCAxMCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkJzogLy8gbnVtYmVyIGluIGRlY2ltYWxcbiAgICAgICAgICByZXN1bHQgKz0gcGFyc2VJbnQobmV4dEFyZygpLCAxMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2YnOiAvLyBmbG9hdGluZyBwb2ludCBudW1iZXJcbiAgICAgICAgICB0bXAgPSBTdHJpbmcocGFyc2VGbG9hdChuZXh0QXJnKCkpLnRvRml4ZWQocHJlY2lzaW9uIHx8IDYpKTtcbiAgICAgICAgICByZXN1bHQgKz0gbGVhZGluZ1plcm8gPyB0bXAgOiB0bXAucmVwbGFjZSgvXjAvLCAnJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2onOiAvLyBKU09OXG4gICAgICAgICAgcmVzdWx0ICs9IEpTT04uc3RyaW5naWZ5KG5leHRBcmcoKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ28nOiAvLyBudW1iZXIgaW4gb2N0YWxcbiAgICAgICAgICByZXN1bHQgKz0gJzAnICsgcGFyc2VJbnQobmV4dEFyZygpLCAxMCkudG9TdHJpbmcoOCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3MnOiAvLyBzdHJpbmdcbiAgICAgICAgICByZXN1bHQgKz0gbmV4dEFyZygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd4JzogLy8gbG93ZXJjYXNlIGhleGFkZWNpbWFsXG4gICAgICAgICAgcmVzdWx0ICs9ICcweCcgKyBwYXJzZUludChuZXh0QXJnKCksIDEwKS50b1N0cmluZygxNik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1gnOiAvLyB1cHBlcmNhc2UgaGV4YWRlY2ltYWxcbiAgICAgICAgICByZXN1bHQgKz0gJzB4JyArIHBhcnNlSW50KG5leHRBcmcoKSwgMTApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlc3VsdCArPSBjO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGMgPT09ICclJykge1xuICAgICAgICBlc2NhcGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn0oKSk7XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGZvcm1hdHRlciA9IHJlcXVpcmUoJ2Zvcm1hdCcpXG5cbnZhciBmYXVsdCA9IGNyZWF0ZShFcnJvcilcblxubW9kdWxlLmV4cG9ydHMgPSBmYXVsdFxuXG5mYXVsdC5ldmFsID0gY3JlYXRlKEV2YWxFcnJvcilcbmZhdWx0LnJhbmdlID0gY3JlYXRlKFJhbmdlRXJyb3IpXG5mYXVsdC5yZWZlcmVuY2UgPSBjcmVhdGUoUmVmZXJlbmNlRXJyb3IpXG5mYXVsdC5zeW50YXggPSBjcmVhdGUoU3ludGF4RXJyb3IpXG5mYXVsdC50eXBlID0gY3JlYXRlKFR5cGVFcnJvcilcbmZhdWx0LnVyaSA9IGNyZWF0ZShVUklFcnJvcilcblxuZmF1bHQuY3JlYXRlID0gY3JlYXRlXG5cbi8vIENyZWF0ZSBhIG5ldyBgRUNvbnN0cnVjdG9yYCwgd2l0aCB0aGUgZm9ybWF0dGVkIGBmb3JtYXRgIGFzIGEgZmlyc3QgYXJndW1lbnQuXG5mdW5jdGlvbiBjcmVhdGUoRUNvbnN0cnVjdG9yKSB7XG4gIEZvcm1hdHRlZEVycm9yLmRpc3BsYXlOYW1lID0gRUNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IEVDb25zdHJ1Y3Rvci5uYW1lXG5cbiAgcmV0dXJuIEZvcm1hdHRlZEVycm9yXG5cbiAgZnVuY3Rpb24gRm9ybWF0dGVkRXJyb3IoZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCkge1xuICAgICAgZm9ybWF0ID0gZm9ybWF0dGVyLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEVDb25zdHJ1Y3Rvcihmb3JtYXQpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgaGlnaCA9IHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvaGlnaGxpZ2h0LmpzJylcbnZhciBmYXVsdCA9IHJlcXVpcmUoJ2ZhdWx0JylcblxuLy8gVGhlIGxvd2xpZ2h0IGludGVyZmFjZSwgd2hpY2ggaGFzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBoaWdobGlnaHQuanMsIGFzXG4vLyB0aGlzIG9iamVjdCBpcyBwYXNzZWQgdG8gaGlnaGxpZ2h0LmpzIHN5bnRheGVzLlxuXG5mdW5jdGlvbiBIaWdoKCkge31cblxuSGlnaC5wcm90b3R5cGUgPSBoaWdoXG5cbi8vIEV4cG9zZS5cbnZhciBsb3cgPSBuZXcgSGlnaCgpIC8vIEhhIVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxvd1xuXG5sb3cuaGlnaGxpZ2h0ID0gaGlnaGxpZ2h0XG5sb3cuaGlnaGxpZ2h0QXV0byA9IGF1dG9IaWdobGlnaHRcbmxvdy5yZWdpc3Rlckxhbmd1YWdlID0gcmVnaXN0ZXJMYW5ndWFnZVxubG93Lmxpc3RMYW5ndWFnZXMgPSBsaXN0TGFuZ3VhZ2VzXG5sb3cucmVnaXN0ZXJBbGlhcyA9IHJlZ2lzdGVyQWxpYXNcbmxvdy5nZXRMYW5ndWFnZSA9IGdldExhbmd1YWdlXG5cbnZhciBpbmhlcml0ID0gaGlnaC5pbmhlcml0XG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxudmFyIGRlZmF1bHRQcmVmaXggPSAnaGxqcy0nXG52YXIga2V5SW5zZW5zaXRpdmUgPSAnY2FzZV9pbnNlbnNpdGl2ZSdcbnZhciBrZXlDYWNoZWRWYXJpYW50cyA9ICdjYWNoZWRfdmFyaWFudHMnXG52YXIga2V5VGVybWluYXRvckVuZCA9ICd0ZXJtaW5hdG9yX2VuZCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIHZlcnRpY2FsQmFyID0gJ3wnXG52YXIgcGFyZW5PcGVuID0gJygnXG52YXIgcGFyZW5DbG9zZSA9ICcpJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIGNvbW1vbktleXdvcmRzID0gWydvZicsICdhbmQnLCAnZm9yJywgJ2luJywgJ25vdCcsICdvcicsICdpZicsICd0aGVuJ11cblxuLy8gTWFwcyBvZiBzeW50YXhlcy5cbnZhciBsYW5ndWFnZU5hbWVzID0gW11cbnZhciBsYW5ndWFnZXMgPSB7fVxudmFyIGFsaWFzZXMgPSB7fVxuXG4vLyBIaWdobGlnaHRpbmcgd2l0aCBsYW5ndWFnZSBkZXRlY3Rpb24uXG4vLyBBY2NlcHRzIGEgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG8gaGlnaGxpZ2h0LlxuLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4vL1xuLy8gKiAgIGBsYW5ndWFnZWAg4oCUIERldGVjdGVkIGxhbmd1YWdlXG4vLyAqICAgYHJlbGV2YW5jZWAg4oCUIEludGVnZXJcbi8vICogICBgdmFsdWVgIOKAlCBIQVNUIHRyZWUgd2l0aCBoaWdobGlnaHRpbmcgbWFya3VwXG4vLyAqICAgYHNlY29uZEJlc3RgIOKAlCBPYmplY3Qgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgZm9yIHNlY29uZC1iZXN0XG4vLyAgICAgaGV1cmlzdGljYWxseSBkZXRlY3RlZCBsYW5ndWFnZSwgbWF5IGJlIGFic2VudC5cbmZ1bmN0aW9uIGF1dG9IaWdobGlnaHQodmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgc3Vic2V0ID0gc2V0dGluZ3Muc3Vic2V0IHx8IGxhbmd1YWdlTmFtZXNcbiAgdmFyIHByZWZpeCA9IHNldHRpbmdzLnByZWZpeFxuICB2YXIgbGVuZ3RoID0gc3Vic2V0Lmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcmVzdWx0XG4gIHZhciBzZWNvbmRCZXN0XG4gIHZhciBjdXJyZW50XG4gIHZhciBuYW1lXG5cbiAgaWYgKHByZWZpeCA9PT0gbnVsbCB8fCBwcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZpeCA9IGRlZmF1bHRQcmVmaXhcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgZmF1bHQoJ0V4cGVjdGVkIGBzdHJpbmdgIGZvciB2YWx1ZSwgZ290IGAlc2AnLCB2YWx1ZSlcbiAgfVxuXG4gIHNlY29uZEJlc3QgPSBub3JtYWxpemUoe30pXG4gIHJlc3VsdCA9IG5vcm1hbGl6ZSh7fSlcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIG5hbWUgPSBzdWJzZXRbaW5kZXhdXG5cbiAgICBpZiAoIWdldExhbmd1YWdlKG5hbWUpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGN1cnJlbnQgPSBub3JtYWxpemUoY29yZUhpZ2hsaWdodChuYW1lLCB2YWx1ZSwgZmFsc2UsIHByZWZpeCkpXG5cbiAgICBjdXJyZW50Lmxhbmd1YWdlID0gbmFtZVxuXG4gICAgaWYgKGN1cnJlbnQucmVsZXZhbmNlID4gc2Vjb25kQmVzdC5yZWxldmFuY2UpIHtcbiAgICAgIHNlY29uZEJlc3QgPSBjdXJyZW50XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnQucmVsZXZhbmNlID4gcmVzdWx0LnJlbGV2YW5jZSkge1xuICAgICAgc2Vjb25kQmVzdCA9IHJlc3VsdFxuICAgICAgcmVzdWx0ID0gY3VycmVudFxuICAgIH1cbiAgfVxuXG4gIGlmIChzZWNvbmRCZXN0Lmxhbmd1YWdlKSB7XG4gICAgcmVzdWx0LnNlY29uZEJlc3QgPSBzZWNvbmRCZXN0XG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIEhpZ2hsaWdodGluZyBgdmFsdWVgIGluIHRoZSBsYW5ndWFnZSBgbGFuZ3VhZ2VgLlxuZnVuY3Rpb24gaGlnaGxpZ2h0KGxhbmd1YWdlLCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBwcmVmaXggPSBzZXR0aW5ncy5wcmVmaXhcblxuICBpZiAocHJlZml4ID09PSBudWxsIHx8IHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcHJlZml4ID0gZGVmYXVsdFByZWZpeFxuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShjb3JlSGlnaGxpZ2h0KGxhbmd1YWdlLCB2YWx1ZSwgdHJ1ZSwgcHJlZml4KSlcbn1cblxuLy8gUmVnaXN0ZXIgYSBsYW5ndWFnZS5cbmZ1bmN0aW9uIHJlZ2lzdGVyTGFuZ3VhZ2UobmFtZSwgc3ludGF4KSB7XG4gIHZhciBsYW5nID0gc3ludGF4KGxvdylcblxuICBsYW5nLnJhd0RlZmluaXRpb24gPSBzeW50YXguYmluZChudWxsLCBsb3cpXG5cbiAgbGFuZ3VhZ2VzW25hbWVdID0gbGFuZ1xuXG4gIGxhbmd1YWdlTmFtZXMucHVzaChuYW1lKVxuXG4gIGlmIChsYW5nLmFsaWFzZXMpIHtcbiAgICByZWdpc3RlckFsaWFzKG5hbWUsIGxhbmcuYWxpYXNlcylcbiAgfVxufVxuXG4vLyBHZXQgYSBsaXN0IG9mIGFsbCByZWdpc3RlcmVkIGxhbmd1YWdlcy5cbmZ1bmN0aW9uIGxpc3RMYW5ndWFnZXMoKSB7XG4gIHJldHVybiBsYW5ndWFnZU5hbWVzLmNvbmNhdCgpXG59XG5cbi8vIFJlZ2lzdGVyIG1vcmUgYWxpYXNlcyBmb3IgYW4gYWxyZWFkeSByZWdpc3RlcmVkIGxhbmd1YWdlLlxuZnVuY3Rpb24gcmVnaXN0ZXJBbGlhcyhuYW1lLCBhbGlhcykge1xuICB2YXIgbWFwID0gbmFtZVxuICB2YXIga2V5XG4gIHZhciBsaXN0XG4gIHZhciBsZW5ndGhcbiAgdmFyIGluZGV4XG5cbiAgaWYgKGFsaWFzKSB7XG4gICAgbWFwID0ge31cbiAgICBtYXBbbmFtZV0gPSBhbGlhc1xuICB9XG5cbiAgZm9yIChrZXkgaW4gbWFwKSB7XG4gICAgbGlzdCA9IG1hcFtrZXldXG4gICAgbGlzdCA9IHR5cGVvZiBsaXN0ID09PSAnc3RyaW5nJyA/IFtsaXN0XSA6IGxpc3RcbiAgICBsZW5ndGggPSBsaXN0Lmxlbmd0aFxuICAgIGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhbGlhc2VzW2xpc3RbaW5kZXhdXSA9IGtleVxuICAgIH1cbiAgfVxufVxuXG4vLyBDb3JlIGhpZ2hsaWdodGluZyBmdW5jdGlvbi5cbi8vIEFjY2VwdHMgYSBsYW5ndWFnZSBuYW1lLCBvciBhbiBhbGlhcywgYW5kIGEgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG9cbi8vIGhpZ2hsaWdodC5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zXG5mdW5jdGlvbiBjb3JlSGlnaGxpZ2h0KG5hbWUsIHZhbHVlLCBpZ25vcmUsIHByZWZpeCwgY29udGludWF0aW9uKSB7XG4gIHZhciBsYXN0TWF0Y2ggPSB7fVxuICB2YXIgY29udGludWF0aW9ucyA9IHt9XG4gIHZhciBzdGFjayA9IFtdXG4gIHZhciBtb2RlQnVmZmVyID0gJydcbiAgdmFyIHJlbGV2YW5jZSA9IDBcbiAgdmFyIGxhbmd1YWdlXG4gIHZhciB0b3BcbiAgdmFyIGN1cnJlbnRcbiAgdmFyIGN1cnJlbnRDaGlsZHJlblxuICB2YXIgb2Zmc2V0XG4gIHZhciBjb3VudFxuICB2YXIgbWF0Y2hcbiAgdmFyIGNoaWxkcmVuXG5cbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IGZhdWx0KCdFeHBlY3RlZCBgc3RyaW5nYCBmb3IgbmFtZSwgZ290IGAlc2AnLCBuYW1lKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBmYXVsdCgnRXhwZWN0ZWQgYHN0cmluZ2AgZm9yIHZhbHVlLCBnb3QgYCVzYCcsIHZhbHVlKVxuICB9XG5cbiAgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZShuYW1lKVxuICB0b3AgPSBjb250aW51YXRpb24gfHwgbGFuZ3VhZ2VcbiAgY2hpbGRyZW4gPSBbXVxuXG4gIGN1cnJlbnQgPSB0b3BcbiAgY3VycmVudENoaWxkcmVuID0gY2hpbGRyZW5cblxuICBpZiAoIWxhbmd1YWdlKSB7XG4gICAgdGhyb3cgZmF1bHQoJ1Vua25vd24gbGFuZ3VhZ2U6IGAlc2AgaXMgbm90IHJlZ2lzdGVyZWQnLCBuYW1lKVxuICB9XG5cbiAgY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKVxuXG4gIHRyeSB7XG4gICAgdG9wLnRlcm1pbmF0b3JzLmxhc3RJbmRleCA9IDBcbiAgICBvZmZzZXQgPSAwXG4gICAgbWF0Y2ggPSB0b3AudGVybWluYXRvcnMuZXhlYyh2YWx1ZSlcblxuICAgIHdoaWxlIChtYXRjaCkge1xuICAgICAgY291bnQgPSBwcm9jZXNzTGV4ZW1lKHZhbHVlLnNsaWNlKG9mZnNldCwgbWF0Y2guaW5kZXgpLCBtYXRjaClcbiAgICAgIG9mZnNldCA9IG1hdGNoLmluZGV4ICsgY291bnRcbiAgICAgIHRvcC50ZXJtaW5hdG9ycy5sYXN0SW5kZXggPSBvZmZzZXRcbiAgICAgIG1hdGNoID0gdG9wLnRlcm1pbmF0b3JzLmV4ZWModmFsdWUpXG4gICAgfVxuXG4gICAgcHJvY2Vzc0xleGVtZSh2YWx1ZS5zbGljZShvZmZzZXQpKVxuICAgIGN1cnJlbnQgPSB0b3BcblxuICAgIHdoaWxlIChjdXJyZW50LnBhcmVudCkge1xuICAgICAgaWYgKGN1cnJlbnQuY2xhc3NOYW1lKSB7XG4gICAgICAgIHBvcCgpXG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZWxldmFuY2U6IHJlbGV2YW5jZSxcbiAgICAgIHZhbHVlOiBjdXJyZW50Q2hpbGRyZW4sXG4gICAgICBpbGxlZ2FsOiBmYWxzZSxcbiAgICAgIGxhbmd1YWdlOiBuYW1lLFxuICAgICAgdG9wOiB0b3BcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gQ2F0Y2gtYWxsICAqL1xuICAgIGlmIChlcnJvci5tZXNzYWdlLmluZGV4T2YoJ0lsbGVnYWwnKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgcmV0dXJuIHtyZWxldmFuY2U6IDAsIGlsbGVnYWw6IHRydWUsIHZhbHVlOiBhZGRUZXh0KHZhbHVlLCBbXSl9XG4gIH1cblxuICBmdW5jdGlvbiBlc2NhcGVSZSh2YWx1ZSkge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLnJlcGxhY2UoL1stL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKSwgJ20nKVxuICB9XG5cbiAgZnVuY3Rpb24gZG9CZWdpbk1hdGNoKG1hdGNoKSB7XG4gICAgdmFyIGxleGVtZSA9IG1hdGNoWzBdXG4gICAgdmFyIG5ld01vZGUgPSBtYXRjaC5ydWxlXG5cbiAgICBpZiAobmV3TW9kZSAmJiBuZXdNb2RlLmVuZFNhbWVBc0JlZ2luKSB7XG4gICAgICBuZXdNb2RlLmVuZFJlID0gZXNjYXBlUmUobGV4ZW1lKVxuICAgIH1cblxuICAgIGlmIChuZXdNb2RlLnNraXApIHtcbiAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdNb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICBtb2RlQnVmZmVyICs9IGxleGVtZVxuICAgICAgfVxuXG4gICAgICBhZGRTaWJsaW5ncyhwcm9jZXNzQnVmZmVyKCksIGN1cnJlbnRDaGlsZHJlbilcblxuICAgICAgaWYgKCFuZXdNb2RlLnJldHVybkJlZ2luICYmICFuZXdNb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICBtb2RlQnVmZmVyID0gbGV4ZW1lXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RhcnROZXdNb2RlKG5ld01vZGUpXG5cbiAgICByZXR1cm4gbmV3TW9kZS5yZXR1cm5CZWdpbiA/IDAgOiBsZXhlbWUubGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiBkb0VuZE1hdGNoKG1hdGNoKSB7XG4gICAgdmFyIGxleGVtZSA9IG1hdGNoWzBdXG4gICAgdmFyIG1hdGNoUGx1c1JlbWFpbmRlciA9IHZhbHVlLnNsaWNlKG1hdGNoLmluZGV4KVxuICAgIHZhciBlbmRNb2RlID0gZW5kT2ZNb2RlKHRvcCwgbWF0Y2hQbHVzUmVtYWluZGVyKVxuXG4gICAgaWYgKCFlbmRNb2RlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgb3JpZ2luID0gdG9wXG5cbiAgICBpZiAob3JpZ2luLnNraXApIHtcbiAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKG9yaWdpbi5yZXR1cm5FbmQgfHwgb3JpZ2luLmV4Y2x1ZGVFbmQpKSB7XG4gICAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG4gICAgICB9XG5cbiAgICAgIGFkZFNpYmxpbmdzKHByb2Nlc3NCdWZmZXIoKSwgY3VycmVudENoaWxkcmVuKVxuXG4gICAgICBpZiAob3JpZ2luLmV4Y2x1ZGVFbmQpIHtcbiAgICAgICAgbW9kZUJ1ZmZlciA9IGxleGVtZVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIGlmICh0b3AuY2xhc3NOYW1lKSB7XG4gICAgICAgIHBvcCgpXG4gICAgICB9XG5cbiAgICAgIGlmICghdG9wLnNraXAgJiYgIXRvcC5zdWJMYW5ndWFnZSkge1xuICAgICAgICByZWxldmFuY2UgKz0gdG9wLnJlbGV2YW5jZVxuICAgICAgfVxuXG4gICAgICB0b3AgPSB0b3AucGFyZW50XG4gICAgfSB3aGlsZSAodG9wICE9PSBlbmRNb2RlLnBhcmVudClcblxuICAgIGlmIChlbmRNb2RlLnN0YXJ0cykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gaGxqcyA5LjE2IGFkZGVkIHN1cHBvcnQgZm9yIHRoaXMgYnV0IGRpZG7igJl0IHVzZSBpdCB5ZXQuICovXG4gICAgICBpZiAoZW5kTW9kZS5lbmRTYW1lQXNCZWdpbikge1xuICAgICAgICBlbmRNb2RlLnN0YXJ0cy5lbmRSZSA9IGVuZE1vZGUuZW5kUmVcbiAgICAgIH1cblxuICAgICAgc3RhcnROZXdNb2RlKGVuZE1vZGUuc3RhcnRzKVxuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW4ucmV0dXJuRW5kID8gMCA6IGxleGVtZS5sZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIHByb2Nlc3NMZXhlbWUodGV4dEJlZm9yZU1hdGNoLCBtYXRjaCkge1xuICAgIHZhciBsZXhlbWUgPSBtYXRjaCAmJiBtYXRjaFswXVxuICAgIHZhciBwcm9jZXNzZWRcblxuICAgIC8vIEFkZCBub24tbWF0Y2hlZCB0ZXh0IHRvIHRoZSBjdXJyZW50IG1vZGUgYnVmZmVyXG4gICAgbW9kZUJ1ZmZlciArPSB0ZXh0QmVmb3JlTWF0Y2hcblxuICAgIGlmIChsZXhlbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkU2libGluZ3MocHJvY2Vzc0J1ZmZlcigpLCBjdXJyZW50Q2hpbGRyZW4pXG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIC8vIFdlJ3ZlIGZvdW5kIGEgMCB3aWR0aCBtYXRjaCBhbmQgd2UncmUgc3R1Y2ssIHNvIHdlIG5lZWQgdG8gYWR2YW5jZVxuICAgIC8vIHRoaXMgaGFwcGVucyB3aGVuIHdlIGhhdmUgYmFkbHkgYmVoYXZlZCBydWxlcyB0aGF0IGhhdmUgb3B0aW9uYWwgbWF0Y2hlcnMgdG8gdGhlIGRlZ3JlZSB0aGF0XG4gICAgLy8gc29tZXRpbWVzIHRoZXkgY2FuIGVuZCB1cCBtYXRjaGluZyBub3RoaW5nIGF0IGFsbFxuICAgIC8vIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMjE0MFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIFVua25vd24gd2hhdCB0aGlzIGZpeGVzIG9yIHdoaWNoIGNhc2UgZml4ZXMgaXQgKi9cbiAgICBpZiAoXG4gICAgICBsYXN0TWF0Y2gudHlwZSA9PT0gJ2JlZ2luJyAmJlxuICAgICAgbWF0Y2gudHlwZSA9PT0gJ2VuZCcgJiZcbiAgICAgIGxhc3RNYXRjaC5pbmRleCA9PT0gbWF0Y2guaW5kZXggJiZcbiAgICAgIGxleGVtZSA9PT0gJydcbiAgICApIHtcbiAgICAgIC8vIFNwaXQgdGhlIOKAnHNraXBwZWTigJ0gY2hhcmFjdGVyIHRoYXQgb3VyIHJlZ2V4IGNob2tlZCBvbiBiYWNrIGludG8gdGhlIG91dHB1dCBzZXF1ZW5jZVxuICAgICAgbW9kZUJ1ZmZlciArPSB2YWx1ZS5zbGljZShtYXRjaC5pbmRleCwgbWF0Y2guaW5kZXggKyAxKVxuICAgICAgcmV0dXJuIDFcbiAgICB9XG5cbiAgICBsYXN0TWF0Y2ggPSBtYXRjaFxuXG4gICAgaWYgKG1hdGNoLnR5cGUgPT09ICdiZWdpbicpIHtcbiAgICAgIHJldHVybiBkb0JlZ2luTWF0Y2gobWF0Y2gpXG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLnR5cGUgPT09ICdlbmQnKSB7XG4gICAgICBwcm9jZXNzZWQgPSBkb0VuZE1hdGNoKG1hdGNoKVxuXG4gICAgICBpZiAocHJvY2Vzc2VkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtYXRjaC50eXBlID09PSAnaWxsZWdhbCcgJiYgIWlnbm9yZSkge1xuICAgICAgLy8gSWxsZWdhbCBtYXRjaCwgd2UgZG8gbm90IGNvbnRpbnVlIHByb2Nlc3NpbmdcbiAgICAgIHRocm93IGZhdWx0KFxuICAgICAgICAnSWxsZWdhbCBsZXhlbWUgXCIlc1wiIGZvciBtb2RlIFwiJXNcIicsXG4gICAgICAgIGxleGVtZSxcbiAgICAgICAgdG9wLmNsYXNzTmFtZSB8fCAnPHVubmFtZWQ+J1xuICAgICAgKVxuICAgIH1cblxuICAgIC8vIFdoeSBtaWdodCBiZSBmaW5kIG91cnNlbHZlcyBoZXJlP1xuICAgIC8vIE9ubHkgb25lIG9jY2FzaW9uIG5vdy5cbiAgICAvLyBBbiBlbmQgbWF0Y2ggdGhhdCB3YXMgdHJpZ2dlcmVkIGJ1dCBjb3VsZCBub3QgYmUgY29tcGxldGVkLlxuICAgIC8vIFdoZW4gbWlnaHQgdGhpcyBoYXBwZW4/XG4gICAgLy8gV2hlbiBhbiBgZW5kU2FtZWFzQmVnaW5gIHJ1bGUgc2V0cyB0aGUgZW5kIHJ1bGUgdG8gYSBzcGVjaWZpYyBtYXRjaC5cbiAgICAvLyBTaW5jZSB0aGUgb3ZlcmFsbCBtb2RlIHRlcm1pbmF0aW9uIHJ1bGUgdGhhdOKAmXMgYmVpbmcgdXNlZCB0byBzY2FuIHRoZVxuICAgIC8vIHRleHQgaXNu4oCZdCByZWNvbXBpbGVkIHRoYXQgbWVhbnMgdGhhdCBhbnkgbWF0Y2ggdGhhdCBMT09LUyBsaWtlIHRoZSBlbmRcbiAgICAvLyAoYnV0IGlzIG5vdCwgYmVjYXVzZSBpdCBpcyBub3QgYW4gZXhhY3QgbWF0Y2ggdG8gdGhlIGJlZ2lubmluZykgd2lsbCBlbmRcbiAgICAvLyB1cCBoZXJlLlxuICAgIC8vIEEgZGVmaW5pdGUgZW5kIG1hdGNoLCBidXQgd2hlbiBgZG9FbmRNYXRjaGAgdHJpZXMgdG8g4oCccmVhcHBseeKAnSB0aGUgZW5kXG4gICAgLy8gcnVsZSBhbmQgZmFpbHMgdG8gbWF0Y2gsIHdlIHdpbmQgdXAgaGVyZSwgYW5kIGp1c3Qgc2lsZW50bHkgaWdub3JlIHRoZVxuICAgIC8vIGVuZC5cbiAgICAvLyBUaGlzIGNhdXNlcyBubyByZWFsIGhhcm0gb3RoZXIgdGhhbiBzdG9wcGluZyBhIGZldyB0aW1lcyB0b28gbWFueS5cbiAgICBtb2RlQnVmZmVyICs9IGxleGVtZVxuXG4gICAgcmV0dXJuIGxleGVtZS5sZW5ndGhcbiAgfVxuXG4gIC8vIFN0YXJ0IGEgbmV3IG1vZGUgd2l0aCBhIGBsZXhlbWVgIHRvIHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHN0YXJ0TmV3TW9kZShtb2RlKSB7XG4gICAgdmFyIG5vZGVcblxuICAgIGlmIChtb2RlLmNsYXNzTmFtZSkge1xuICAgICAgbm9kZSA9IGJ1aWxkKG1vZGUuY2xhc3NOYW1lLCBbXSlcbiAgICB9XG5cbiAgICAvLyBFbnRlciBhIG5ldyBtb2RlLlxuICAgIGlmIChub2RlKSB7XG4gICAgICBjdXJyZW50Q2hpbGRyZW4ucHVzaChub2RlKVxuICAgICAgc3RhY2sucHVzaChjdXJyZW50Q2hpbGRyZW4pXG4gICAgICBjdXJyZW50Q2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuXG4gICAgfVxuXG4gICAgdG9wID0gT2JqZWN0LmNyZWF0ZShtb2RlLCB7cGFyZW50OiB7dmFsdWU6IHRvcH19KVxuICB9XG5cbiAgLy8gUHJvY2VzcyB0aGUgYnVmZmVyLlxuICBmdW5jdGlvbiBwcm9jZXNzQnVmZmVyKCkge1xuICAgIHZhciByZXN1bHQgPSB0b3Auc3ViTGFuZ3VhZ2UgPyBwcm9jZXNzU3ViTGFuZ3VhZ2UoKSA6IHByb2Nlc3NLZXl3b3JkcygpXG4gICAgbW9kZUJ1ZmZlciA9ICcnXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLy8gUHJvY2VzcyBhIHN1Ymxhbmd1YWdlIChyZXR1cm5zIGEgbGlzdCBvZiBub2RlcykuXG4gIGZ1bmN0aW9uIHByb2Nlc3NTdWJMYW5ndWFnZSgpIHtcbiAgICB2YXIgZXhwbGljaXQgPSB0eXBlb2YgdG9wLnN1Ykxhbmd1YWdlID09PSAnc3RyaW5nJ1xuICAgIHZhciBzdWJ2YWx1ZVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gc3VwcG9ydCBub24tbG9hZGVkIHN1Ymxhbmd1YWdlcyAqL1xuICAgIGlmIChleHBsaWNpdCAmJiAhbGFuZ3VhZ2VzW3RvcC5zdWJMYW5ndWFnZV0pIHtcbiAgICAgIHJldHVybiBhZGRUZXh0KG1vZGVCdWZmZXIsIFtdKVxuICAgIH1cblxuICAgIGlmIChleHBsaWNpdCkge1xuICAgICAgc3VidmFsdWUgPSBjb3JlSGlnaGxpZ2h0KFxuICAgICAgICB0b3Auc3ViTGFuZ3VhZ2UsXG4gICAgICAgIG1vZGVCdWZmZXIsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHByZWZpeCxcbiAgICAgICAgY29udGludWF0aW9uc1t0b3Auc3ViTGFuZ3VhZ2VdXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YnZhbHVlID0gYXV0b0hpZ2hsaWdodChtb2RlQnVmZmVyLCB7XG4gICAgICAgIHN1YnNldDogdG9wLnN1Ykxhbmd1YWdlLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHRvcC5zdWJMYW5ndWFnZSxcbiAgICAgICAgcHJlZml4OiBwcmVmaXhcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgY291bGRu4oCZdCBoaWdobGlnaHQsIGZvciBleGFtcGxlIGJlY2F1c2UgdGhlIHJlcXVlc3RzIHN1YnNldCBpc27igJl0XG4gICAgLy8gbG9hZGVkLCByZXR1cm4gYSB0ZXh0IG5vZGUuXG4gICAgaWYgKCFzdWJ2YWx1ZS5sYW5ndWFnZSkge1xuICAgICAgcmV0dXJuIFtidWlsZFRleHQobW9kZUJ1ZmZlcildXG4gICAgfVxuXG4gICAgLy8gQ291bnRpbmcgZW1iZWRkZWQgbGFuZ3VhZ2Ugc2NvcmUgdG93YXJkcyB0aGUgaG9zdCBsYW5ndWFnZSBtYXkgYmVcbiAgICAvLyBkaXNhYmxlZCB3aXRoIHplcm9pbmcgdGhlIGNvbnRhaW5pbmcgbW9kZSByZWxldmFuY2UuXG4gICAgLy8gVXNlY2FzZSBpbiBwb2ludCBpcyBNYXJrZG93biB0aGF0IGFsbG93cyBYTUwgZXZlcnl3aGVyZSBhbmQgbWFrZXMgZXZlcnlcbiAgICAvLyBYTUwgc25pcHBldCB0byBoYXZlIGEgbXVjaCBsYXJnZXIgTWFya2Rvd24gc2NvcmUuXG4gICAgaWYgKHRvcC5yZWxldmFuY2UgPiAwKSB7XG4gICAgICByZWxldmFuY2UgKz0gc3VidmFsdWUucmVsZXZhbmNlXG4gICAgfVxuXG4gICAgaWYgKGV4cGxpY2l0KSB7XG4gICAgICBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0gPSBzdWJ2YWx1ZS50b3BcbiAgICB9XG5cbiAgICByZXR1cm4gW2J1aWxkKHN1YnZhbHVlLmxhbmd1YWdlLCBzdWJ2YWx1ZS52YWx1ZSwgdHJ1ZSldXG4gIH1cblxuICAvLyBQcm9jZXNzIGtleXdvcmRzLiBSZXR1cm5zIG5vZGVzLlxuICBmdW5jdGlvbiBwcm9jZXNzS2V5d29yZHMoKSB7XG4gICAgdmFyIG5vZGVzID0gW11cbiAgICB2YXIgbGFzdEluZGV4XG4gICAgdmFyIGtleXdvcmRcbiAgICB2YXIgbm9kZVxuICAgIHZhciBzdWJtYXRjaFxuXG4gICAgaWYgKCF0b3Aua2V5d29yZHMpIHtcbiAgICAgIHJldHVybiBhZGRUZXh0KG1vZGVCdWZmZXIsIG5vZGVzKVxuICAgIH1cblxuICAgIGxhc3RJbmRleCA9IDBcblxuICAgIHRvcC5sZXhlbWVzUmUubGFzdEluZGV4ID0gMFxuXG4gICAga2V5d29yZCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlQnVmZmVyKVxuXG4gICAgd2hpbGUgKGtleXdvcmQpIHtcbiAgICAgIGFkZFRleHQobW9kZUJ1ZmZlci5zbGljZShsYXN0SW5kZXgsIGtleXdvcmQuaW5kZXgpLCBub2RlcylcblxuICAgICAgc3VibWF0Y2ggPSBrZXl3b3JkTWF0Y2godG9wLCBrZXl3b3JkKVxuXG4gICAgICBpZiAoc3VibWF0Y2gpIHtcbiAgICAgICAgcmVsZXZhbmNlICs9IHN1Ym1hdGNoWzFdXG5cbiAgICAgICAgbm9kZSA9IGJ1aWxkKHN1Ym1hdGNoWzBdLCBbXSlcblxuICAgICAgICBub2Rlcy5wdXNoKG5vZGUpXG5cbiAgICAgICAgYWRkVGV4dChrZXl3b3JkWzBdLCBub2RlLmNoaWxkcmVuKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkVGV4dChrZXl3b3JkWzBdLCBub2RlcylcbiAgICAgIH1cblxuICAgICAgbGFzdEluZGV4ID0gdG9wLmxleGVtZXNSZS5sYXN0SW5kZXhcbiAgICAgIGtleXdvcmQgPSB0b3AubGV4ZW1lc1JlLmV4ZWMobW9kZUJ1ZmZlcilcbiAgICB9XG5cbiAgICBhZGRUZXh0KG1vZGVCdWZmZXIuc2xpY2UobGFzdEluZGV4KSwgbm9kZXMpXG5cbiAgICByZXR1cm4gbm9kZXNcbiAgfVxuXG4gIC8vIEFkZCBzaWJsaW5ncy5cbiAgZnVuY3Rpb24gYWRkU2libGluZ3Moc2libGluZ3MsIG5vZGVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IHNpYmxpbmdzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIHNpYmxpbmdcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBzaWJsaW5nID0gc2libGluZ3NbaW5kZXhdXG5cbiAgICAgIGlmIChzaWJsaW5nLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICBhZGRUZXh0KHNpYmxpbmcudmFsdWUsIG5vZGVzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZXMucHVzaChzaWJsaW5nKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCBhIHRleHQuXG4gIGZ1bmN0aW9uIGFkZFRleHQodmFsdWUsIG5vZGVzKSB7XG4gICAgdmFyIHRhaWxcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGFpbCA9IG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdXG5cbiAgICAgIGlmICh0YWlsICYmIHRhaWwudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIHRhaWwudmFsdWUgKz0gdmFsdWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVzLnB1c2goYnVpbGRUZXh0KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXNcbiAgfVxuXG4gIC8vIEJ1aWxkIGEgdGV4dC5cbiAgZnVuY3Rpb24gYnVpbGRUZXh0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHt0eXBlOiAndGV4dCcsIHZhbHVlOiB2YWx1ZX1cbiAgfVxuXG4gIC8vIEJ1aWxkIGEgc3Bhbi5cbiAgZnVuY3Rpb24gYnVpbGQobmFtZSwgY29udGVudHMsIG5vUHJlZml4KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgIHRhZ05hbWU6ICdzcGFuJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiBbKG5vUHJlZml4ID8gJycgOiBwcmVmaXgpICsgbmFtZV1cbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogY29udGVudHNcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgZmlyc3Qgd29yZCBpbiBga2V5d29yZHNgIGlzIGEga2V5d29yZC5cbiAgZnVuY3Rpb24ga2V5d29yZE1hdGNoKG1vZGUsIGtleXdvcmRzKSB7XG4gICAgdmFyIGtleXdvcmQgPSBrZXl3b3Jkc1swXVxuXG4gICAgaWYgKGxhbmd1YWdlW2tleUluc2Vuc2l0aXZlXSkge1xuICAgICAga2V5d29yZCA9IGtleXdvcmQudG9Mb3dlckNhc2UoKVxuICAgIH1cblxuICAgIHJldHVybiBvd24uY2FsbChtb2RlLmtleXdvcmRzLCBrZXl3b3JkKSAmJiBtb2RlLmtleXdvcmRzW2tleXdvcmRdXG4gIH1cblxuICAvLyBDaGVjayBpZiBgbGV4ZW1lYCBlbmRzIGBtb2RlYC5cbiAgZnVuY3Rpb24gZW5kT2ZNb2RlKG1vZGUsIGxleGVtZSkge1xuICAgIGlmICh0ZXN0KG1vZGUuZW5kUmUsIGxleGVtZSkpIHtcbiAgICAgIHdoaWxlIChtb2RlLmVuZHNQYXJlbnQgJiYgbW9kZS5wYXJlbnQpIHtcbiAgICAgICAgbW9kZSA9IG1vZGUucGFyZW50XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtb2RlXG4gICAgfVxuXG4gICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQpIHtcbiAgICAgIHJldHVybiBlbmRPZk1vZGUobW9kZS5wYXJlbnQsIGxleGVtZSlcbiAgICB9XG4gIH1cblxuICAvLyBFeGl0IHRoZSBjdXJyZW50IGNvbnRleHQuXG4gIGZ1bmN0aW9uIHBvcCgpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIHJlbW92ZWQgaW4gaGxqcyA5LjMgKi9cbiAgICBjdXJyZW50Q2hpbGRyZW4gPSBzdGFjay5wb3AoKSB8fCBjaGlsZHJlblxuICB9XG59XG5cbi8vIENvbXBpbGUgYSBsYW5ndWFnZS5cbmZ1bmN0aW9uIGNvbXBpbGVMYW5ndWFnZShsYW5ndWFnZSkge1xuICBjb21waWxlTW9kZShsYW5ndWFnZSlcblxuICAvLyBDb21waWxlIGEgbGFuZ3VhZ2UgbW9kZSwgb3B0aW9uYWxseSB3aXRoIGEgcGFyZW50LlxuICBmdW5jdGlvbiBjb21waWxlTW9kZShtb2RlLCBwYXJlbnQpIHtcbiAgICBpZiAobW9kZS5jb21waWxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbW9kZS5jb21waWxlZCA9IHRydWVcblxuICAgIG1vZGUua2V5d29yZHMgPSBtb2RlLmtleXdvcmRzIHx8IG1vZGUuYmVnaW5LZXl3b3Jkc1xuXG4gICAgaWYgKG1vZGUua2V5d29yZHMpIHtcbiAgICAgIG1vZGUua2V5d29yZHMgPSBjb21waWxlS2V5d29yZHMobW9kZS5rZXl3b3JkcywgbGFuZ3VhZ2Vba2V5SW5zZW5zaXRpdmVdKVxuICAgIH1cblxuICAgIG1vZGUubGV4ZW1lc1JlID0gbGFuZ1JlKG1vZGUubGV4ZW1lcyB8fCAvXFx3Ky8sIHRydWUpXG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBpZiAobW9kZS5iZWdpbktleXdvcmRzKSB7XG4gICAgICAgIG1vZGUuYmVnaW4gPVxuICAgICAgICAgICdcXFxcYignICsgbW9kZS5iZWdpbktleXdvcmRzLnNwbGl0KHNwYWNlKS5qb2luKHZlcnRpY2FsQmFyKSArICcpXFxcXGInXG4gICAgICB9XG5cbiAgICAgIGlmICghbW9kZS5iZWdpbikge1xuICAgICAgICBtb2RlLmJlZ2luID0gL1xcQnxcXGIvXG4gICAgICB9XG5cbiAgICAgIG1vZGUuYmVnaW5SZSA9IGxhbmdSZShtb2RlLmJlZ2luKVxuXG4gICAgICBpZiAobW9kZS5lbmRTYW1lQXNCZWdpbikge1xuICAgICAgICBtb2RlLmVuZCA9IG1vZGUuYmVnaW5cbiAgICAgIH1cblxuICAgICAgaWYgKCFtb2RlLmVuZCAmJiAhbW9kZS5lbmRzV2l0aFBhcmVudCkge1xuICAgICAgICBtb2RlLmVuZCA9IC9cXEJ8XFxiL1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZS5lbmQpIHtcbiAgICAgICAgbW9kZS5lbmRSZSA9IGxhbmdSZShtb2RlLmVuZClcbiAgICAgIH1cblxuICAgICAgbW9kZVtrZXlUZXJtaW5hdG9yRW5kXSA9IHNvdXJjZShtb2RlLmVuZCkgfHwgJydcblxuICAgICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQgJiYgcGFyZW50W2tleVRlcm1pbmF0b3JFbmRdKSB7XG4gICAgICAgIG1vZGVba2V5VGVybWluYXRvckVuZF0gKz1cbiAgICAgICAgICAobW9kZS5lbmQgPyB2ZXJ0aWNhbEJhciA6ICcnKSArIHBhcmVudFtrZXlUZXJtaW5hdG9yRW5kXVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlLmlsbGVnYWwpIHtcbiAgICAgIG1vZGUuaWxsZWdhbFJlID0gbGFuZ1JlKG1vZGUuaWxsZWdhbClcbiAgICB9XG5cbiAgICBpZiAobW9kZS5yZWxldmFuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZS5yZWxldmFuY2UgPSAxXG4gICAgfVxuXG4gICAgbW9kZS5jb250YWlucyA9IGNvbXBpbGVDb250YWlucyhtb2RlLmNvbnRhaW5zIHx8IFtdLCBtb2RlKVxuXG4gICAgaWYgKG1vZGUuc3RhcnRzKSB7XG4gICAgICBjb21waWxlTW9kZShtb2RlLnN0YXJ0cywgcGFyZW50KVxuICAgIH1cblxuICAgIG1vZGUudGVybWluYXRvcnMgPSBidWlsZE1vZGVSZWdleChtb2RlKVxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGlsZUNvbnRhaW5zKGNvbnRhaW5zLCBtb2RlKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdXG4gICAgdmFyIGxlbmd0aCA9IGNvbnRhaW5zLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIGNvbnRhaW5lZFxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNvbnRhaW5lZCA9IGNvbnRhaW5zW2luZGV4XVxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChcbiAgICAgICAgZXhwYW5kT3JDbG9uZU1vZGUoY29udGFpbmVkID09PSAnc2VsZicgPyBtb2RlIDogY29udGFpbmVkKVxuICAgICAgKVxuICAgIH1cblxuICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGhcbiAgICBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY29tcGlsZU1vZGUocmVzdWx0W2luZGV4XSwgbW9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZE1vZGVSZWdleChtb2RlKSB7XG4gICAgdmFyIGluZGljZXMgPSB7fVxuICAgIHZhciBleHByZXNzaW9uXG4gICAgdmFyIHJlZ2V4ZXMgPSBbXVxuICAgIHZhciBtYXRjaGVyID0ge31cbiAgICB2YXIgbWF0Y2hBdCA9IDFcbiAgICB2YXIgdGVybVxuICAgIHZhciB2YWx1ZXMgPSBtb2RlLmNvbnRhaW5zXG4gICAgdmFyIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGhcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciB0ZXJtaW5hdG9ycyA9IFtdXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdGVybSA9IHZhbHVlc1tpbmRleF1cblxuICAgICAgYWRkUnVsZShcbiAgICAgICAgdGVybSxcbiAgICAgICAgdGVybS5iZWdpbktleXdvcmRzID8gJ1xcXFwuPyg/OicgKyB0ZXJtLmJlZ2luICsgJylcXFxcLj8nIDogdGVybS5iZWdpblxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChtb2RlW2tleVRlcm1pbmF0b3JFbmRdKSB7XG4gICAgICBhZGRSdWxlKCdlbmQnLCBtb2RlW2tleVRlcm1pbmF0b3JFbmRdKVxuICAgIH1cblxuICAgIGlmIChtb2RlLmlsbGVnYWwpIHtcbiAgICAgIGFkZFJ1bGUoJ2lsbGVnYWwnLCBtb2RlLmlsbGVnYWwpXG4gICAgfVxuXG4gICAgbGVuZ3RoID0gcmVnZXhlcy5sZW5ndGhcbiAgICBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdGVybWluYXRvcnNbaW5kZXhdID0gcmVnZXhlc1tpbmRleF1bMV1cbiAgICB9XG5cbiAgICBleHByZXNzaW9uID0gbGFuZ1JlKGpvaW5SZSh0ZXJtaW5hdG9ycywgdmVydGljYWxCYXIpLCB0cnVlKVxuXG4gICAgbWF0Y2hlciA9IHtsYXN0SW5kZXg6IDAsIGV4ZWM6IGV4ZWN9XG5cbiAgICByZXR1cm4gbWF0Y2hlclxuXG4gICAgZnVuY3Rpb24gZXhlYyh2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aFxuICAgICAgdmFyIGluZGV4XG4gICAgICB2YXIgcnVsZVxuICAgICAgdmFyIG1hdGNoXG4gICAgICB2YXIgc3VibWF0Y2hcblxuICAgICAgaWYgKHJlZ2V4ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuXG4gICAgICBleHByZXNzaW9uLmxhc3RJbmRleCA9IG1hdGNoZXIubGFzdEluZGV4XG4gICAgICBtYXRjaCA9IGV4cHJlc3Npb24uZXhlYyh2YWx1ZSlcblxuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICBsZW5ndGggPSBtYXRjaC5sZW5ndGhcbiAgICAgIGluZGV4ID0gLTFcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgc3VibWF0Y2ggPSBtYXRjaFtpbmRleF1cblxuICAgICAgICBpZiAoc3VibWF0Y2ggIT09IHVuZGVmaW5lZCAmJiBpbmRpY2VzW2luZGV4XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcnVsZSA9IGluZGljZXNbaW5kZXhdXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJbGxlZ2FsIG9yIGVuZCBtYXRjaFxuICAgICAgaWYgKHR5cGVvZiBydWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICBtYXRjaC50eXBlID0gcnVsZVxuICAgICAgICBtYXRjaC5leHRyYSA9IFttb2RlLmlsbGVnYWwsIG1vZGUudGVybWluYXRvcl9lbmRdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXRjaC50eXBlID0gJ2JlZ2luJ1xuICAgICAgICBtYXRjaC5ydWxlID0gcnVsZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWF0Y2hcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRSdWxlKHJ1bGUsIHJlZ2V4KSB7XG4gICAgICBpbmRpY2VzW21hdGNoQXRdID0gcnVsZVxuICAgICAgcmVnZXhlcy5wdXNoKFtydWxlLCByZWdleF0pXG4gICAgICBtYXRjaEF0ICs9IG5ldyBSZWdFeHAocmVnZXgudG9TdHJpbmcoKSArIHZlcnRpY2FsQmFyKS5leGVjKCcnKS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBqb2luUmUocmVnZXhlcywgc2VwYXJhdG9yKSB7XG4gICAgdmFyIGJhY2tyZWZlcmVuY2VSZSA9IC9cXFsoPzpbXlxcXFxcXF1dfFxcXFwuKSpcXF18XFwoXFw/P3xcXFxcKFsxLTldXFxkKil8XFxcXC4vXG4gICAgdmFyIGNhcHR1cmVzID0gMFxuICAgIHZhciByZXN1bHQgPSAnJ1xuICAgIHZhciBsZW5ndGggPSByZWdleGVzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIHJlZ2V4XG4gICAgdmFyIG9mZnNldFxuICAgIHZhciBleHByZXNzaW9uXG4gICAgdmFyIG1hdGNoXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVnZXggPSByZWdleGVzW2luZGV4XVxuICAgICAgZXhwcmVzc2lvbiA9IHNvdXJjZShyZWdleClcbiAgICAgIGNhcHR1cmVzICs9IDFcbiAgICAgIG9mZnNldCA9IGNhcHR1cmVzXG5cbiAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICByZXN1bHQgKz0gc2VwYXJhdG9yXG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBwYXJlbk9wZW5cblxuICAgICAgd2hpbGUgKGV4cHJlc3Npb24ubGVuZ3RoID4gMCkge1xuICAgICAgICBtYXRjaCA9IGJhY2tyZWZlcmVuY2VSZS5leGVjKGV4cHJlc3Npb24pXG5cbiAgICAgICAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGV4cHJlc3Npb25cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ICs9IGV4cHJlc3Npb24uc2xpY2UoMCwgbWF0Y2guaW5kZXgpXG4gICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uLnNsaWNlKG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKVxuXG4gICAgICAgIGlmIChtYXRjaFswXVswXSA9PT0gYmFja3NsYXNoICYmIG1hdGNoWzFdKSB7XG4gICAgICAgICAgLy8gQWRqdXN0IHRoZSBiYWNrcmVmZXJlbmNlLlxuICAgICAgICAgIHJlc3VsdCArPSBiYWNrc2xhc2ggKyBTdHJpbmcoTnVtYmVyKG1hdGNoWzFdKSArIG9mZnNldClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgKz0gbWF0Y2hbMF1cblxuICAgICAgICAgIGlmIChtYXRjaFswXSA9PT0gcGFyZW5PcGVuKSB7XG4gICAgICAgICAgICBjYXB0dXJlcysrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBwYXJlbkNsb3NlXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgcmVnZXggZm9yIGB2YWx1ZWAuXG4gIGZ1bmN0aW9uIGxhbmdSZSh2YWx1ZSwgZ2xvYmFsKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoXG4gICAgICBzb3VyY2UodmFsdWUpLFxuICAgICAgJ20nICsgKGxhbmd1YWdlW2tleUluc2Vuc2l0aXZlXSA/ICdpJyA6ICcnKSArIChnbG9iYWwgPyAnZycgOiAnJylcbiAgICApXG4gIH1cblxuICAvLyBHZXQgdGhlIHNvdXJjZSBvZiBhbiBleHByZXNzaW9uIG9yIHN0cmluZy5cbiAgZnVuY3Rpb24gc291cmNlKHJlKSB7XG4gICAgcmV0dXJuIChyZSAmJiByZS5zb3VyY2UpIHx8IHJlXG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGlsZUtleXdvcmRzKHZhbHVlcywgY2FzZUluc2Vuc2l0aXZlKSB7XG4gIHZhciBjb21waWxlZCA9IHt9XG4gIHZhciBrZXlcblxuICBpZiAodHlwZW9mIHZhbHVlcyA9PT0gJ3N0cmluZycpIHtcbiAgICBmbGF0dGVuKCdrZXl3b3JkJywgdmFsdWVzKVxuICB9IGVsc2Uge1xuICAgIGZvciAoa2V5IGluIHZhbHVlcykge1xuICAgICAgZmxhdHRlbihrZXksIHZhbHVlc1trZXldKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb21waWxlZFxuXG4gIGZ1bmN0aW9uIGZsYXR0ZW4oa2V5LCB2YWx1ZSkge1xuICAgIHZhciB2YWwgPSBjYXNlSW5zZW5zaXRpdmUgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpIDogdmFsdWVcbiAgICBhbGwoa2V5LCB2YWwuc3BsaXQoc3BhY2UpKVxuICB9XG5cbiAgZnVuY3Rpb24gYWxsKGtleSwgdmFsdWVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGhcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciBwYWlyXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcGFpciA9IHZhbHVlc1tpbmRleF0uc3BsaXQodmVydGljYWxCYXIpXG4gICAgICBjb21waWxlZFtwYWlyWzBdXSA9IFtrZXksIE51bWJlcihwYWlyWzFdKSB8fCBjb21tb24ocGFpclswXSkgPyAwIDogMV1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tbW9uKHZhbHVlKSB7XG4gIHJldHVybiBjb21tb25LZXl3b3Jkcy5pbmRleE9mKHZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSAtMVxufVxuXG5mdW5jdGlvbiBleHBhbmRPckNsb25lTW9kZShtb2RlKSB7XG4gIHZhciBsZW5ndGhcbiAgdmFyIGluZGV4XG4gIHZhciB2YXJpYW50c1xuICB2YXIgcmVzdWx0XG5cbiAgaWYgKG1vZGUudmFyaWFudHMgJiYgIW1vZGVba2V5Q2FjaGVkVmFyaWFudHNdKSB7XG4gICAgdmFyaWFudHMgPSBtb2RlLnZhcmlhbnRzXG4gICAgbGVuZ3RoID0gdmFyaWFudHMubGVuZ3RoXG4gICAgaW5kZXggPSAtMVxuICAgIHJlc3VsdCA9IFtdXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGluaGVyaXQobW9kZSwge3ZhcmlhbnRzOiBudWxsfSwgdmFyaWFudHNbaW5kZXhdKVxuICAgIH1cblxuICAgIG1vZGVba2V5Q2FjaGVkVmFyaWFudHNdID0gcmVzdWx0XG4gIH1cblxuICAvLyBFeHBhbmQuXG4gIGlmIChtb2RlLmNhY2hlZF92YXJpYW50cykgcmV0dXJuIG1vZGUuY2FjaGVkX3ZhcmlhbnRzXG5cbiAgLy8gQ2xvbmUuXG4gIGlmIChkZXBlbmRlbmN5T25QYXJlbnQobW9kZSkpXG4gICAgcmV0dXJuIFtpbmhlcml0KG1vZGUsIHtzdGFydHM6IG1vZGUuc3RhcnRzID8gaW5oZXJpdChtb2RlLnN0YXJ0cykgOiBudWxsfSldXG5cbiAgcmV0dXJuIFttb2RlXVxufVxuXG5mdW5jdGlvbiBkZXBlbmRlbmN5T25QYXJlbnQobW9kZSkge1xuICByZXR1cm4gbW9kZSA/IG1vZGUuZW5kc1dpdGhQYXJlbnQgfHwgZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUuc3RhcnRzKSA6IGZhbHNlXG59XG5cbi8vIE5vcm1hbGl6ZSBhIHN5bnRheCByZXN1bHQuXG5mdW5jdGlvbiBub3JtYWxpemUocmVzdWx0KSB7XG4gIHJldHVybiB7XG4gICAgcmVsZXZhbmNlOiByZXN1bHQucmVsZXZhbmNlIHx8IDAsXG4gICAgbGFuZ3VhZ2U6IHJlc3VsdC5sYW5ndWFnZSB8fCBudWxsLFxuICAgIHZhbHVlOiByZXN1bHQudmFsdWUgfHwgW11cbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgZXhwcmVzc2lvbmAgbWF0Y2hlcyBgbGV4ZW1lYC5cbmZ1bmN0aW9uIHRlc3QoZXhwcmVzc2lvbiwgbGV4ZW1lKSB7XG4gIHZhciBtYXRjaCA9IGV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi5leGVjKGxleGVtZSlcbiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoLmluZGV4ID09PSAwXG59XG5cbi8vIEdldCBhIGxhbmd1YWdlIGJ5IGBuYW1lYC5cbmZ1bmN0aW9uIGdldExhbmd1YWdlKG5hbWUpIHtcbiAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKVxuXG4gIHJldHVybiBsYW5ndWFnZXNbbmFtZV0gfHwgbGFuZ3VhZ2VzW2FsaWFzZXNbbmFtZV1dXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpe1xuXG4gIC8vINC+0LHRidC40Lkg0L/QsNGC0YLQtdGA0L0g0LTQu9GPINC+0L/RgNC10LTQtdC70LXQvdC40Y8g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQvtCyXG4gIHZhciBVTkRFUlNDT1JFX0lERU5UX1JFID0gJ1tBLVphLXrQkC3Qr9CwLdGP0ZHQgV9dW0EtWmEtetCQLdCv0LAt0Y/RkdCBXzAtOV0rJztcbiAgXG4gIC8vIHY3INGD0L3QuNC60LDQu9GM0L3Ri9C1INC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsCwg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0LIgdjggPT0+IGtleXdvcmRcbiAgdmFyIHY3X2tleXdvcmRzID1cbiAgJ9C00LDQu9C10LUgJztcblxuICAvLyB2OCDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAgPT0+IGtleXdvcmRcbiAgdmFyIHY4X2tleXdvcmRzID1cbiAgJ9Cy0L7Qt9Cy0YDQsNGCINCy0YvQt9Cy0LDRgtGM0LjRgdC60LvRjtGH0LXQvdC40LUg0LLRi9C/0L7Qu9C90LjRgtGMINC00LvRjyDQtdGB0LvQuCDQuCDQuNC3INC40LvQuCDQuNC90LDRh9C1INC40L3QsNGH0LXQtdGB0LvQuCDQuNGB0LrQu9GO0YfQtdC90LjQtSDQutCw0LbQtNC+0LPQviDQutC+0L3QtdGG0LXRgdC70LggJyArXG4gICfQutC+0L3QtdGG0L/QvtC/0YvRgtC60Lgg0LrQvtC90LXRhtGG0LjQutC70LAg0L3QtSDQvdC+0LLRi9C5INC/0LXRgNC10LnRgtC4INC/0LXRgNC10Lwg0L/QviDQv9C+0LrQsCDQv9C+0L/Ri9GC0LrQsCDQv9GA0LXRgNCy0LDRgtGMINC/0YDQvtC00L7Qu9C20LjRgtGMINGC0L7Qs9C00LAg0YbQuNC60Lsg0Y3QutGB0L/QvtGA0YIgJztcblxuICAvLyBrZXl3b3JkIDog0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwXG4gIHZhciBLRVlXT1JEID0gdjdfa2V5d29yZHMgKyB2OF9rZXl3b3JkcztcbiAgXG4gIC8vIHY3INGD0L3QuNC60LDQu9GM0L3Ri9C1INC00LjRgNC10LrRgtC40LLRiywg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0LIgdjggPT0+IG1ldGEta2V5d29yZFxuICB2YXIgdjdfbWV0YV9rZXl3b3JkcyA9XG4gICfQt9Cw0LPRgNGD0LfQuNGC0YzQuNC30YTQsNC50LvQsCAnO1xuXG4gIC8vIHY4INC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsCDQsiDQuNC90YHRgtGA0YPQutGG0LjRj9GFINC/0YDQtdC/0YDQvtGG0LXRgdGB0L7RgNCwLCDQtNC40YDQtdC60YLQuNCy0LDRhSDQutC+0LzQv9C40LvRj9GG0LjQuCwg0LDQvdC90L7RgtCw0YbQuNGP0YUgPT0+IG1ldGEta2V5d29yZFxuICB2YXIgdjhfbWV0YV9rZXl3b3JkcyA9XG4gICfQstC10LHQutC70LjQtdC90YIg0LLQvNC10YHRgtC+INCy0L3QtdGI0L3QtdC10YHQvtC10LTQuNC90LXQvdC40LUg0LrQu9C40LXQvdGCINC60L7QvdC10YbQvtCx0LvQsNGB0YLQuCDQvNC+0LHQuNC70YzQvdC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtdC60LvQuNC10L3RgiDQvNC+0LHQuNC70YzQvdC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtdGB0LXRgNCy0LXRgCAnICtcbiAgJ9C90LDQutC70LjQtdC90YLQtSDQvdCw0LrQu9C40LXQvdGC0LXQvdCw0YHQtdGA0LLQtdGA0LUg0L3QsNC60LvQuNC10L3RgtC10L3QsNGB0LXRgNCy0LXRgNC10LHQtdC30LrQvtC90YLQtdC60YHRgtCwINC90LDRgdC10YDQstC10YDQtSDQvdCw0YHQtdGA0LLQtdGA0LXQsdC10LfQutC+0L3RgtC10LrRgdGC0LAg0L7QsdC70LDRgdGC0Ywg0L/QtdGA0LXQtCAnICtcbiAgJ9C/0L7RgdC70LUg0YHQtdGA0LLQtdGAINGC0L7Qu9GB0YLRi9C50LrQu9C40LXQvdGC0L7QsdGL0YfQvdC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtSDRgtC+0LvRgdGC0YvQudC60LvQuNC10L3RgtGD0L/RgNCw0LLQu9GP0LXQvNC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtSDRgtC+0L3QutC40LnQutC70LjQtdC90YIgJztcblxuICAvLyBtZXRhLWtleXdvcmQgOiDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAg0LIg0LjQvdGB0YLRgNGD0LrRhtC40Y/RhSDQv9GA0LXQv9GA0L7RhtC10YHRgdC+0YDQsCwg0LTQuNGA0LXQutGC0LjQstCw0YUg0LrQvtC80L/QuNC70Y/RhtC40LgsINCw0L3QvdC+0YLQsNGG0LjRj9GFXG4gIHZhciBNRVRBS0VZV09SRCA9IHY3X21ldGFfa2V5d29yZHMgKyB2OF9tZXRhX2tleXdvcmRzO1xuXG4gIC8vIHY3INGB0LjRgdGC0LXQvNC90YvQtSDQutC+0L3RgdGC0LDQvdGC0YsgPT0+IGJ1aWx0X2luXG4gIHZhciB2N19zeXN0ZW1fY29uc3RhbnRzID1cbiAgJ9GA0LDQt9C00LXQu9C40YLQtdC70YzRgdGC0YDQsNC90LjRhiDRgNCw0LfQtNC10LvQuNGC0LXQu9GM0YHRgtGA0L7QuiDRgdC40LzQstC+0LvRgtCw0LHRg9C70Y/RhtC40LggJztcbiAgXG4gIC8vIHY3INGD0L3QuNC60LDQu9GM0L3Ri9C1INC80LXRgtC+0LTRiyDQs9C70L7QsdCw0LvRjNC90L7Qs9C+INC60L7QvdGC0LXQutGB0YLQsCwg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0LIgdjggPT0+IGJ1aWx0X2luXG4gIHZhciB2N19nbG9iYWxfY29udGV4dF9tZXRob2RzID1cbiAgJ2Fuc2l0b29lbSBvZW10b2Fuc2kg0LLQstC10YHRgtC40LLQuNC00YHRg9Cx0LrQvtC90YLQviDQstCy0LXRgdGC0LjQv9C10YDQtdGH0LjRgdC70LXQvdC40LUg0LLQstC10YHRgtC40L/QtdGA0LjQvtC0INCy0LLQtdGB0YLQuNC/0LvQsNC90YHRh9C10YLQvtCyINCy0YvQsdGA0LDQvdC90YvQudC/0LvQsNC90YHRh9C10YLQvtCyICcgK1xuICAn0LTQsNGC0LDQs9C+0LQg0LTQsNGC0LDQvNC10YHRj9GGINC00LDRgtCw0YfQuNGB0LvQviDQt9Cw0LPQvtC70L7QstC+0LrRgdC40YHRgtC10LzRiyDQt9C90LDRh9C10L3QuNC10LLRgdGC0YDQvtC60YMg0LfQvdCw0YfQtdC90LjQtdC40LfRgdGC0YDQvtC60Lgg0LrQsNGC0LDQu9C+0LPQuNCxINC60LDRgtCw0LvQvtCz0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0LrQvtC00YHQuNC80LIg0LrQvtC90LPQvtC00LAg0LrQvtC90LXRhtC/0LXRgNC40L7QtNCw0LHQuCDQutC+0L3QtdGG0YDQsNGB0YHRh9C40YLQsNC90L3QvtCz0L7Qv9C10YDQuNC+0LTQsNCx0Lgg0LrQvtC90LXRhtGB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtC40L3RgtC10YDQstCw0LvQsCDQutC+0L3QutCy0LDRgNGC0LDQu9CwINC60L7QvdC80LXRgdGP0YbQsCAnICtcbiAgJ9C60L7QvdC90LXQtNC10LvQuCDQu9C+0LMg0LvQvtCzMTAg0LzQsNC60YHQuNC80LDQu9GM0L3QvtC10LrQvtC70LjRh9C10YHRgtCy0L7RgdGD0LHQutC+0L3RgtC+INC90LDQt9Cy0LDQvdC40LXQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCw0LfQstCw0L3QuNC10L3QsNCx0L7RgNCw0L/RgNCw0LIg0L3QsNC30L3QsNGH0LjRgtGM0LLQuNC0ICcgK1xuICAn0L3QsNC30L3QsNGH0LjRgtGM0YHRh9C10YIg0L3QsNC50YLQuNGB0YHRi9C70LrQuCDQvdCw0YfQsNC70L7Qv9C10YDQuNC+0LTQsNCx0Lgg0L3QsNGH0LDQu9C+0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LjQvdGC0LXRgNCy0LDQu9CwINC90LDRh9Cz0L7QtNCwINC90LDRh9C60LLQsNGA0YLQsNC70LAg0L3QsNGH0LzQtdGB0Y/RhtCwICcgK1xuICAn0L3QsNGH0L3QtdC00LXQu9C4INC90L7QvNC10YDQtNC90Y/Qs9C+0LTQsCDQvdC+0LzQtdGA0LTQvdGP0L3QtdC00LXQu9C4INC90L7QvNC10YDQvdC10LTQtdC70LjQs9C+0LTQsCDQvtCx0YDQsNCx0L7RgtC60LDQvtC20LjQtNCw0L3QuNGPINC+0YHQvdC+0LLQvdC+0LnQttGD0YDQvdCw0LvRgNCw0YHRh9C10YLQvtCyICcgK1xuICAn0L7RgdC90L7QstC90L7QudC/0LvQsNC90YHRh9C10YLQvtCyINC+0YHQvdC+0LLQvdC+0LnRj9C30YvQuiDQvtGH0LjRgdGC0LjRgtGM0L7QutC90L7RgdC+0L7QsdGJ0LXQvdC40Lkg0L/QtdGA0LjQvtC00YHRgtGAINC/0L7Qu9GD0YfQuNGC0YzQstGA0LXQvNGP0YLQsCDQv9C+0LvRg9GH0LjRgtGM0LTQsNGC0YPRgtCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC00L7QutGD0LzQtdC90YLRgtCwINC/0L7Qu9GD0YfQuNGC0YzQt9C90LDRh9C10L3QuNGP0L7RgtCx0L7RgNCwINC/0L7Qu9GD0YfQuNGC0YzQv9C+0LfQuNGG0LjRjtGC0LAg0L/QvtC70YPRh9C40YLRjNC/0YPRgdGC0L7QtdC30L3QsNGH0LXQvdC40LUg0L/QvtC70YPRh9C40YLRjNGC0LAgJyArXG4gICfQv9GA0LXRhNC40LrRgdCw0LLRgtC+0L3Rg9C80LXRgNCw0YbQuNC4INC/0YDQvtC/0LjRgdGMINC/0YPRgdGC0L7QtdC30L3QsNGH0LXQvdC40LUg0YDQsNC30Lwg0YDQsNC30L7QsdGA0LDRgtGM0L/QvtC30LjRhtC40Y7QtNC+0LrRg9C80LXQvdGC0LAg0YDQsNGB0YHRh9C40YLQsNGC0YzRgNC10LPQuNGB0YLRgNGL0L3QsCAnICtcbiAgJ9GA0LDRgdGB0YfQuNGC0LDRgtGM0YDQtdCz0LjRgdGC0YDRi9C/0L4g0YHQuNC80LIg0YHQvtC30LTQsNGC0YzQvtCx0YrQtdC60YIg0YHRgtCw0YLRg9GB0LLQvtC30LLRgNCw0YLQsCDRgdGC0YDQutC+0LvQuNGH0LXRgdGC0LLQvtGB0YLRgNC+0Log0YHRhNC+0YDQvNC40YDQvtCy0LDRgtGM0L/QvtC30LjRhtC40Y7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgdGH0LXRgtC/0L7QutC+0LTRgyDRgtC10LrRg9GJ0LXQtdCy0YDQtdC80Y8g0YLQuNC/0LfQvdCw0YfQtdC90LjRjyDRgtC40L/Qt9C90LDRh9C10L3QuNGP0YHRgtGAINGD0YHRgtCw0L3QvtCy0LjRgtGM0YLQsNC90LAg0YPRgdGC0LDQvdC+0LLQuNGC0YzRgtCw0L/QviDRhNC40LrRgdGI0LDQsdC70L7QvSDRiNCw0LHQu9C+0L0gJztcbiAgXG4gIC8vIHY4INC80LXRgtC+0LTRiyDQs9C70L7QsdCw0LvRjNC90L7Qs9C+INC60L7QvdGC0LXQutGB0YLQsCA9PT4gYnVpbHRfaW5cbiAgdmFyIHY4X2dsb2JhbF9jb250ZXh0X21ldGhvZHMgPVxuICAnYWNvcyBhc2luIGF0YW4gYmFzZTY00LfQvdCw0YfQtdC90LjQtSBiYXNlNjTRgdGC0YDQvtC60LAgY29zIGV4cCBsb2cgbG9nMTAgcG93IHNpbiBzcXJ0IHRhbiB4bWzQt9C90LDRh9C10L3QuNC1IHhtbNGB0YLRgNC+0LrQsCAnICtcbiAgJ3htbNGC0LjQvyB4bWzRgtC40L/Qt9C90Ycg0LDQutGC0LjQstC90L7QtdC+0LrQvdC+INCx0LXQt9C+0L/QsNGB0L3Ri9C50YDQtdC20LjQvCDQsdC10LfQvtC/0LDRgdC90YvQudGA0LXQttC40LzRgNCw0LfQtNC10LvQtdC90LjRj9C00LDQvdC90YvRhSDQsdGD0LvQtdCy0L4g0LLQstC10YHRgtC40LTQsNGC0YMg0LLQstC10YHRgtC40LfQvdCw0YfQtdC90LjQtSAnICtcbiAgJ9Cy0LLQtdGB0YLQuNGB0YLRgNC+0LrRgyDQstCy0LXRgdGC0LjRh9C40YHQu9C+INCy0L7Qt9C80L7QttC90L7RgdGC0YzRh9GC0LXQvdC40Y94bWwg0LLQvtC/0YDQvtGBINCy0L7RgdGB0YLQsNC90L7QstC40YLRjNC30L3QsNGH0LXQvdC40LUg0LLRgNC10LMg0LLRi9Cz0YDRg9C30LjRgtGM0LbRg9GA0L3QsNC70YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnICtcbiAgJ9Cy0YvQv9C+0LvQvdC40YLRjNC+0LHRgNCw0LHQvtGC0LrRg9C+0L/QvtCy0LXRidC10L3QuNGPINCy0YvQv9C+0LvQvdC40YLRjNC/0YDQvtCy0LXRgNC60YPQv9GA0LDQstC00L7RgdGC0YPQv9CwINCy0YvRh9C40YHQu9C40YLRjCDQs9C+0LQg0LTQsNC90L3Ri9C10YTQvtGA0LzRi9Cy0LfQvdCw0YfQtdC90LjQtSDQtNCw0YLQsCDQtNC10L3RjCDQtNC10L3RjNCz0L7QtNCwICcgK1xuICAn0LTQtdC90YzQvdC10LTQtdC70Lgg0LTQvtCx0LDQstC40YLRjNC80LXRgdGP0YYg0LfQsNCx0LvQvtC60LjRgNC+0LLQsNGC0YzQtNCw0L3QvdGL0LXQtNC70Y/RgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC30LDQsdC70L7QutC40YDQvtCy0LDRgtGM0YDQsNCx0L7RgtGD0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC30LDQstC10YDRiNC40YLRjNGA0LDQsdC+0YLRg9GB0LjRgdGC0LXQvNGLICcgK1xuICAn0LfQsNCz0YDRg9C30LjRgtGM0LLQvdC10YjQvdGO0Y7QutC+0LzQv9C+0L3QtdC90YLRgyDQt9Cw0LrRgNGL0YLRjNGB0L/RgNCw0LLQutGDINC30LDQv9C40YHQsNGC0Yxqc29uINC30LDQv9C40YHQsNGC0Yx4bWwg0LfQsNC/0LjRgdCw0YLRjNC00LDRgtGDanNvbiDQt9Cw0L/QuNGB0YzQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfQt9Cw0L/QvtC70L3QuNGC0YzQt9C90LDRh9C10L3QuNGP0YHQstC+0LnRgdGC0LIg0LfQsNC/0YDQvtGB0LjRgtGM0YDQsNC30YDQtdGI0LXQvdC40LXQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LfQsNC/0YPRgdGC0LjRgtGM0L/RgNC40LvQvtC20LXQvdC40LUg0LfQsNC/0YPRgdGC0LjRgtGM0YHQuNGB0YLQtdC80YMg0LfQsNGE0LjQutGB0LjRgNC+0LLQsNGC0YzRgtGA0LDQvdC30LDQutGG0LjRjiAnICtcbiAgJ9C30L3QsNGH0LXQvdC40LXQstC00LDQvdC90YvQtdGE0L7RgNC80Ysg0LfQvdCw0YfQtdC90LjQtdCy0YHRgtGA0L7QutGD0LLQvdGD0YLRgCDQt9C90LDRh9C10L3QuNC10LLRhNCw0LnQuyDQt9C90LDRh9C10L3QuNC10LfQsNC/0L7Qu9C90LXQvdC+INC30L3QsNGH0LXQvdC40LXQuNC30YHRgtGA0L7QutC40LLQvdGD0YLRgCDQt9C90LDRh9C10L3QuNC10LjQt9GE0LDQudC70LAgJyArXG4gICfQuNC3eG1s0YLQuNC/0LAg0LjQvNC/0L7RgNGC0LzQvtC00LXQu9C4eGR0byDQuNC80Y/QutC+0LzQv9GM0Y7RgtC10YDQsCDQuNC80Y/Qv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LjQvdC40YbQuNCw0LvQuNC30LjRgNC+0LLQsNGC0YzQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvQtdC00LDQvdC90YvQtSDQuNC90YTQvtGA0LzQsNGG0LjRj9C+0LHQvtGI0LjQsdC60LUgJyArXG4gICfQutCw0YLQsNC70L7Qs9Cx0LjQsdC70LjQvtGC0LXQutC40LzQvtCx0LjQu9GM0L3QvtCz0L7Rg9GB0YLRgNC+0LnRgdGC0LLQsCDQutCw0YLQsNC70L7Qs9Cy0YDQtdC80LXQvdC90YvRhdGE0LDQudC70L7QsiDQutCw0YLQsNC70L7Qs9C00L7QutGD0LzQtdC90YLQvtCyINC60LDRgtCw0LvQvtCz0L/RgNC+0LPRgNCw0LzQvNGLINC60L7QtNC40YDQvtCy0LDRgtGM0YHRgtGA0L7QutGDICcgK1xuICAn0LrQvtC00LvQvtC60LDQu9C40LfQsNGG0LjQuNC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQutC+0LTRgdC40LzQstC+0LvQsCDQutC+0LzQsNC90LTQsNGB0LjRgdGC0LXQvNGLINC60L7QvdC10YbQs9C+0LTQsCDQutC+0L3QtdGG0LTQvdGPINC60L7QvdC10YbQutCy0LDRgNGC0LDQu9CwINC60L7QvdC10YbQvNC10YHRj9GG0LAg0LrQvtC90LXRhtC80LjQvdGD0YLRiyAnICtcbiAgJ9C60L7QvdC10YbQvdC10LTQtdC70Lgg0LrQvtC90LXRhtGH0LDRgdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9Cx0LDQt9GL0LTQsNC90L3Ri9GF0LjQt9C80LXQvdC10L3QsNC00LjQvdCw0LzQuNGH0LXRgdC60Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0LjQt9C80LXQvdC10L3QsCDQutC+0L/QuNGA0L7QstCw0YLRjNC00LDQvdC90YvQtdGE0L7RgNC80YsgJyArXG4gICfQutC+0L/QuNGA0L7QstCw0YLRjNGE0LDQudC7INC60YDQsNGC0LrQvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQvtGI0LjQsdC60Lgg0LvQtdCyINC80LDQutGBINC80LXRgdGC0L3QvtC10LLRgNC10LzRjyDQvNC10YHRj9GGINC80LjQvSDQvNC40L3Rg9GC0LAg0LzQvtC90L7Qv9C+0LvRjNC90YvQudGA0LXQttC40Lwg0L3QsNC50YLQuCAnICtcbiAgJ9C90LDQudGC0LjQvdC10LTQvtC/0YPRgdGC0LjQvNGL0LXRgdC40LzQstC+0LvRi3htbCDQvdCw0LnRgtC40L7QutC90L7Qv9C+0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdC+0LnRgdGB0YvQu9C60LUg0L3QsNC50YLQuNC/0L7QvNC10YfQtdC90L3Ri9C10L3QsNGD0LTQsNC70LXQvdC40LUg0L3QsNC50YLQuNC/0L7RgdGB0YvQu9C60LDQvCDQvdCw0LnRgtC40YTQsNC50LvRiyAnICtcbiAgJ9C90LDRh9Cw0LvQvtCz0L7QtNCwINC90LDRh9Cw0LvQvtC00L3RjyDQvdCw0YfQsNC70L7QutCy0LDRgNGC0LDQu9CwINC90LDRh9Cw0LvQvtC80LXRgdGP0YbQsCDQvdCw0YfQsNC70L7QvNC40L3Rg9GC0Ysg0L3QsNGH0LDQu9C+0L3QtdC00LXQu9C4INC90LDRh9Cw0LvQvtGH0LDRgdCwINC90LDRh9Cw0YLRjNC30LDQv9GA0L7RgdGA0LDQt9GA0LXRiNC10L3QuNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0L3QsNGH0LDRgtGM0LfQsNC/0YPRgdC60L/RgNC40LvQvtC20LXQvdC40Y8g0L3QsNGH0LDRgtGM0LrQvtC/0LjRgNC+0LLQsNC90LjQtdGE0LDQudC70LAg0L3QsNGH0LDRgtGM0L/QtdGA0LXQvNC10YnQtdC90LjQtdGE0LDQudC70LAg0L3QsNGH0LDRgtGM0L/QvtC00LrQu9GO0YfQtdC90LjQtdCy0L3QtdGI0L3QtdC50LrQvtC80L/QvtC90LXQvdGC0YsgJyArXG4gICfQvdCw0YfQsNGC0YzQv9C+0LTQutC70Y7Rh9C10L3QuNC10YDQsNGB0YjQuNGA0LXQvdC40Y/RgNCw0LHQvtGC0YvRgdC60YDQuNC/0YLQvtCz0YDQsNGE0LjQtdC5INC90LDRh9Cw0YLRjNC/0L7QtNC60LvRjtGH0LXQvdC40LXRgNCw0YHRiNC40YDQtdC90LjRj9GA0LDQsdC+0YLRi9GB0YTQsNC50LvQsNC80Lgg0L3QsNGH0LDRgtGM0L/QvtC40YHQutGE0LDQudC70L7QsiAnICtcbiAgJ9C90LDRh9Cw0YLRjNC/0L7Qu9GD0YfQtdC90LjQtdC60LDRgtCw0LvQvtCz0LDQstGA0LXQvNC10L3QvdGL0YXRhNCw0LnQu9C+0LIg0L3QsNGH0LDRgtGM0L/QvtC70YPRh9C10L3QuNC10LrQsNGC0LDQu9C+0LPQsNC00L7QutGD0LzQtdC90YLQvtCyINC90LDRh9Cw0YLRjNC/0L7Qu9GD0YfQtdC90LjQtdGA0LDQsdC+0YfQtdCz0L7QutCw0YLQsNC70L7Qs9Cw0LTQsNC90L3Ri9GF0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0L3QsNGH0LDRgtGM0L/QvtC70YPRh9C10L3QuNC10YTQsNC50LvQvtCyINC90LDRh9Cw0YLRjNC/0L7QvNC10YnQtdC90LjQtdGE0LDQudC70LAg0L3QsNGH0LDRgtGM0L/QvtC80LXRidC10L3QuNC10YTQsNC50LvQvtCyINC90LDRh9Cw0YLRjNGB0L7Qt9C00LDQvdC40LXQtNCy0L7QuNGH0L3Ri9GF0LTQsNC90L3Ri9GF0LjQt9GE0LDQudC70LAg0L3QsNGH0LDRgtGM0YHQvtC30LTQsNC90LjQtdC60LDRgtCw0LvQvtCz0LAgJyArXG4gICfQvdCw0YfQsNGC0YzRgtGA0LDQvdC30LDQutGG0LjRjiDQvdCw0YfQsNGC0YzRg9C00LDQu9C10L3QuNC10YTQsNC50LvQvtCyINC90LDRh9Cw0YLRjNGD0YHRgtCw0L3QvtCy0LrRg9Cy0L3QtdGI0L3QtdC50LrQvtC80L/QvtC90LXQvdGC0Ysg0L3QsNGH0LDRgtGM0YPRgdGC0LDQvdC+0LLQutGD0YDQsNGB0YjQuNGA0LXQvdC40Y/RgNCw0LHQvtGC0YvRgdC60YDQuNC/0YLQvtCz0YDQsNGE0LjQtdC5ICcgK1xuICAn0L3QsNGH0LDRgtGM0YPRgdGC0LDQvdC+0LLQutGD0YDQsNGB0YjQuNGA0LXQvdC40Y/RgNCw0LHQvtGC0YvRgdGE0LDQudC70LDQvNC4INC90LXQtNC10LvRj9Cz0L7QtNCwINC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtGM0LfQsNCy0LXRgNGI0LXQvdC40Y/RgdC+0LXQtNC40L3QtdC90LjRjyDQvdC+0LzQtdGA0YHQtdCw0L3RgdCw0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLICcgK1xuICAn0L3QvtC80LXRgNGB0L7QtdC00LjQvdC10L3QuNGP0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC90YDQtdCzINC90YHRgtGAINC+0LHQvdC+0LLQuNGC0YzQuNC90YLQtdGA0YTQtdC50YEg0L7QsdC90L7QstC40YLRjNC90YPQvNC10YDQsNGG0LjRjtC+0LHRitC10LrRgtC+0LIg0L7QsdC90L7QstC40YLRjNC/0L7QstGC0L7RgNC90L7QuNGB0L/QvtC70YzQt9GD0LXQvNGL0LXQt9C90LDRh9C10L3QuNGPICcgK1xuICAn0L7QsdGA0LDQsdC+0YLQutCw0L/RgNC10YDRi9Cy0LDQvdC40Y/Qv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L7QsdGK0LXQtNC40L3QuNGC0YzRhNCw0LnQu9GLINC+0LrRgCDQvtC/0LjRgdCw0L3QuNC10L7RiNC40LHQutC4INC+0L/QvtCy0LXRgdGC0LjRgtGMINC+0L/QvtCy0LXRgdGC0LjRgtGM0L7QsdC40LfQvNC10L3QtdC90LjQuCAnICtcbiAgJ9C+0YLQutC70Y7Rh9C40YLRjNC+0LHRgNCw0LHQvtGC0YfQuNC60LfQsNC/0YDQvtGB0LDQvdCw0YHRgtGA0L7QtdC60LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPINC+0YLQutC70Y7Rh9C40YLRjNC+0LHRgNCw0LHQvtGC0YfQuNC60L7QttC40LTQsNC90LjRjyDQvtGC0LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC+0L/QvtCy0LXRidC10L3QuNGPICcgK1xuICAn0L7RgtC60YDRi9GC0YzQt9C90LDRh9C10L3QuNC1INC+0YLQutGA0YvRgtGM0LjQvdC00LXQutGB0YHQv9GA0LDQstC60Lgg0L7RgtC60YDRi9GC0YzRgdC+0LTQtdGA0LbQsNC90LjQtdGB0L/RgNCw0LLQutC4INC+0YLQutGA0YvRgtGM0YHQv9GA0LDQstC60YMg0L7RgtC60YDRi9GC0YzRhNC+0YDQvNGDINC+0YLQutGA0YvRgtGM0YTQvtGA0LzRg9C80L7QtNCw0LvRjNC90L4gJyArXG4gICfQvtGC0LzQtdC90LjRgtGM0YLRgNCw0L3Qt9Cw0LrRhtC40Y4g0L7Rh9C40YHRgtC40YLRjNC20YPRgNC90LDQu9GA0LXQs9C40YHRgtGA0LDRhtC40Lgg0L7Rh9C40YHRgtC40YLRjNC90LDRgdGC0YDQvtC50LrQuNC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQvtGH0LjRgdGC0LjRgtGM0YHQvtC+0LHRidC10L3QuNGPINC/0LDRgNCw0LzQtdGC0YDRi9C00L7RgdGC0YPQv9CwICcgK1xuICAn0L/QtdGA0LXQudGC0LjQv9C+0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdC+0LnRgdGB0YvQu9C60LUg0L/QtdGA0LXQvNC10YHRgtC40YLRjNGE0LDQudC7INC/0L7QtNC60LvRjtGH0LjRgtGM0LLQvdC10YjQvdGO0Y7QutC+0LzQv9C+0L3QtdC90YLRgyAnICtcbiAgJ9C/0L7QtNC60LvRjtGH0LjRgtGM0L7QsdGA0LDQsdC+0YLRh9C40LrQt9Cw0L/RgNC+0YHQsNC90LDRgdGC0YDQvtC10LrQutC70LjQtdC90YLQsNC70LjRhtC10L3Qt9C40YDQvtCy0LDQvdC40Y8g0L/QvtC00LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC+0LbQuNC00LDQvdC40Y8g0L/QvtC00LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC+0L/QvtCy0LXRidC10L3QuNGPICcgK1xuICAn0L/QvtC00LrQu9GO0YfQuNGC0YzRgNCw0YHRiNC40YDQtdC90LjQtdGA0LDQsdC+0YLRi9GB0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC10Lkg0L/QvtC00LrQu9GO0YfQuNGC0YzRgNCw0YHRiNC40YDQtdC90LjQtdGA0LDQsdC+0YLRi9GB0YTQsNC50LvQsNC80Lgg0L/QvtC00YDQvtCx0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQvtGI0LjQsdC60LggJyArXG4gICfQv9C+0LrQsNC30LDRgtGM0LLQstC+0LTQtNCw0YLRiyDQv9C+0LrQsNC30LDRgtGM0LLQstC+0LTQt9C90LDRh9C10L3QuNGPINC/0L7QutCw0LfQsNGC0YzQstCy0L7QtNGB0YLRgNC+0LrQuCDQv9C+0LrQsNC30LDRgtGM0LLQstC+0LTRh9C40YHQu9CwINC/0L7QutCw0LfQsNGC0YzQstC+0L/RgNC+0YEg0L/QvtC60LDQt9Cw0YLRjNC30L3QsNGH0LXQvdC40LUgJyArXG4gICfQv9C+0LrQsNC30LDRgtGM0LjQvdGE0L7RgNC80LDRhtC40Y7QvtCx0L7RiNC40LHQutC1INC/0L7QutCw0LfQsNGC0YzQvdCw0LrQsNGA0YLQtSDQv9C+0LrQsNC30LDRgtGM0L7Qv9C+0LLQtdGJ0LXQvdC40LXQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L/QvtC60LDQt9Cw0YLRjNC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LUg0L/QvtC70L3QvtC10LjQvNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0L/QvtC70YPRh9C40YLRjGNvbdC+0LHRitC10LrRgiDQv9C+0LvRg9GH0LjRgtGMeG1s0YLQuNC/INC/0L7Qu9GD0YfQuNGC0YzQsNC00YDQtdGB0L/QvtC80LXRgdGC0L7Qv9C+0LvQvtC20LXQvdC40Y4g0L/QvtC70YPRh9C40YLRjNCx0LvQvtC60LjRgNC+0LLQutGD0YHQtdCw0L3RgdC+0LIg0L/QvtC70YPRh9C40YLRjNCy0YDQtdC80Y/Qt9Cw0LLQtdGA0YjQtdC90LjRj9GB0L/Rj9GJ0LXQs9C+0YHQtdCw0L3RgdCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNCy0YDQtdC80Y/Qt9Cw0YHRi9C/0LDQvdC40Y/Qv9Cw0YHRgdC40LLQvdC+0LPQvtGB0LXQsNC90YHQsCDQv9C+0LvRg9GH0LjRgtGM0LLRgNC10LzRj9C+0LbQuNC00LDQvdC40Y/QsdC70L7QutC40YDQvtCy0LrQuNC00LDQvdC90YvRhSDQv9C+0LvRg9GH0LjRgtGM0LTQsNC90L3Ri9C10LLRi9Cx0L7RgNCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LnQv9Cw0YDQsNC80LXRgtGA0LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzQtNC+0L/Rg9GB0YLQuNC80YvQtdC60L7QtNGL0LvQvtC60LDQu9C40LfQsNGG0LjQuCDQv9C+0LvRg9GH0LjRgtGM0LTQvtC/0YPRgdGC0LjQvNGL0LXRh9Cw0YHQvtCy0YvQtdC/0L7Rj9GB0LAgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LfQsNCz0L7Qu9C+0LLQvtC60LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzQt9Cw0LPQvtC70L7QstC+0LrRgdC40YHRgtC10LzRiyDQv9C+0LvRg9GH0LjRgtGM0LfQvdCw0YfQtdC90LjRj9C+0YLQsdC+0YDQsNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+0LvRg9GH0LjRgtGM0LjQt9Cy0YDQtdC80LXQvdC90L7Qs9C+0YXRgNCw0L3QuNC70LjRidCwINC/0L7Qu9GD0YfQuNGC0YzQuNC80Y/QstGA0LXQvNC10L3QvdC+0LPQvtGE0LDQudC70LAgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LjQvNGP0LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzQuNC90YTQvtGA0LzQsNGG0LjRjtGN0LrRgNCw0L3QvtCy0LrQu9C40LXQvdGC0LAg0L/QvtC70YPRh9C40YLRjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4ICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHQvtCx0YvRgtC40Y/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0L/QvtC70YPRh9C40YLRjNC60YDQsNGC0LrQuNC50LfQsNCz0L7Qu9C+0LLQvtC60L/RgNC40LvQvtC20LXQvdC40Y8g0L/QvtC70YPRh9C40YLRjNC80LDQutC10YLQvtGE0L7RgNC80LvQtdC90LjRjyAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQvNCw0YHQutGD0LLRgdC10YTQsNC50LvRiyDQv9C+0LvRg9GH0LjRgtGM0LzQsNGB0LrRg9Cy0YHQtdGE0LDQudC70YvQutC70LjQtdC90YLQsCDQv9C+0LvRg9GH0LjRgtGM0LzQsNGB0LrRg9Cy0YHQtdGE0LDQudC70YvRgdC10YDQstC10YDQsCDQv9C+0LvRg9GH0LjRgtGM0LzQtdGB0YLQvtC/0L7Qu9C+0LbQtdC90LjQtdC/0L7QsNC00YDQtdGB0YMgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LzQuNC90LjQvNCw0LvRjNC90YPRjtC00LvQuNC90YPQv9Cw0YDQvtC70LXQudC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC/0L7Qu9GD0YfQuNGC0YzQvdCw0LLQuNCz0LDRhtC40L7QvdC90YPRjtGB0YHRi9C70LrRgyDQv9C+0LvRg9GH0LjRgtGM0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdGD0Y7RgdGB0YvQu9C60YPQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30YsgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0L7QsdC90L7QstC70LXQvdC40LXQutC+0L3RhNC40LPRg9GA0LDRhtC40LjQsdCw0LfRi9C00LDQvdC90YvRhSDQv9C+0LvRg9GH0LjRgtGM0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvRhdC00LDQvdC90YvRhdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQv9C+0LvRg9GH0LjRgtGM0L7QsdGJ0LjQudC80LDQutC10YIgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0L7QsdGJ0YPRjtGE0L7RgNC80YMg0L/QvtC70YPRh9C40YLRjNC+0LrQvdCwINC/0L7Qu9GD0YfQuNGC0YzQvtC/0LXRgNCw0YLQuNCy0L3Rg9GO0L7RgtC80LXRgtC60YPQstGA0LXQvNC10L3QuCDQv9C+0LvRg9GH0LjRgtGM0L7RgtC60LvRjtGH0LXQvdC40LXQsdC10LfQvtC/0LDRgdC90L7Qs9C+0YDQtdC20LjQvNCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC/0LDRgNCw0LzQtdGC0YDRi9GE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGL0YXQvtC/0YbQuNC50LjQvdGC0LXRgNGE0LXQudGB0LAg0L/QvtC70YPRh9C40YLRjNC/0L7Qu9C90L7QtdC40LzRj9C/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3QvtCz0L7Qt9C90LDRh9C10L3QuNGPICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNGP0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdGL0YXRgdGB0YvQu9C+0Log0L/QvtC70YPRh9C40YLRjNC/0YDQvtCy0LXRgNC60YPRgdC70L7QttC90L7RgdGC0LjQv9Cw0YDQvtC70LXQudC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC/0L7Qu9GD0YfQuNGC0YzRgNCw0LfQtNC10LvQuNGC0LXQu9GM0L/Rg9GC0LggJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0YDQsNC30LTQtdC70LjRgtC10LvRjNC/0YPRgtC40LrQu9C40LXQvdGC0LAg0L/QvtC70YPRh9C40YLRjNGA0LDQt9C00LXQu9C40YLQtdC70YzQv9GD0YLQuNGB0LXRgNCy0LXRgNCwINC/0L7Qu9GD0YfQuNGC0YzRgdC10LDQvdGB0YvQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30YsgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0YHQutC+0YDQvtGB0YLRjNC60LvQuNC10L3RgtGB0LrQvtCz0L7RgdC+0LXQtNC40L3QtdC90LjRjyDQv9C+0LvRg9GH0LjRgtGM0YHQvtC10LTQuNC90LXQvdC40Y/QuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0L/QvtC70YPRh9C40YLRjNGB0L7QvtCx0YnQtdC90LjRj9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjiAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzRgdC+0L7RgtCy0LXRgtGB0YLQstC40LXQvtCx0YrQtdC60YLQsNC40YTQvtGA0LzRiyDQv9C+0LvRg9GH0LjRgtGM0YHQvtGB0YLQsNCy0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LjQvdGC0LXRgNGE0LXQudGB0LBvZGF0YSDQv9C+0LvRg9GH0LjRgtGM0YHRgtGA0YPQutGC0YPRgNGD0YXRgNCw0L3QtdC90LjRj9Cx0LDQt9GL0LTQsNC90L3Ri9GFICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNGC0LXQutGD0YnQuNC50YHQtdCw0L3RgdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQv9C+0LvRg9GH0LjRgtGM0YTQsNC50Lsg0L/QvtC70YPRh9C40YLRjNGE0LDQudC70Ysg0L/QvtC70YPRh9C40YLRjNGE0L7RgNC80YMg0L/QvtC70YPRh9C40YLRjNGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGD0Y7QvtC/0YbQuNGOICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGD0Y7QvtC/0YbQuNGO0LjQvdGC0LXRgNGE0LXQudGB0LAg0L/QvtC70YPRh9C40YLRjNGH0LDRgdC+0LLQvtC50L/QvtGP0YHQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C40L7RgSDQv9C+0LzQtdGB0YLQuNGC0YzQstC+0LLRgNC10LzQtdC90L3QvtC10YXRgNCw0L3QuNC70LjRidC1ICcgK1xuICAn0L/QvtC80LXRgdGC0LjRgtGM0YTQsNC50Lsg0L/QvtC80LXRgdGC0LjRgtGM0YTQsNC50LvRiyDQv9GA0LDQsiDQv9GA0LDQstC+0LTQvtGB0YLRg9C/0LAg0L/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdC+0LXQt9C90LDRh9C10L3QuNC1INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10LrQvtC00LDQu9C+0LrQsNC70LjQt9Cw0YbQuNC4INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10L/QtdGA0LjQvtC00LAgJyArXG4gICfQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC/0YDQsNCy0LAg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQv9GA0LjQu9C+0LbQtdC90LjRjyDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdGB0L7QsdGL0YLQuNGP0LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10YfQsNGB0L7QstC+0LPQvtC/0L7Rj9GB0LAg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSAnICtcbiAgJ9C/0YDQtdC60YDQsNGC0LjRgtGM0YDQsNCx0L7RgtGD0YHQuNGB0YLQtdC80Ysg0L/RgNC40LLQuNC70LXQs9C40YDQvtCy0LDQvdC90YvQudGA0LXQttC40Lwg0L/RgNC+0LTQvtC70LbQuNGC0YzQstGL0LfQvtCyINC/0YDQvtGH0LjRgtCw0YLRjGpzb24g0L/RgNC+0YfQuNGC0LDRgtGMeG1sINC/0YDQvtGH0LjRgtCw0YLRjNC00LDRgtGDanNvbiDQv9GD0YHRgtCw0Y/RgdGC0YDQvtC60LAgJyArXG4gICfRgNCw0LHQvtGH0LjQudC60LDRgtCw0LvQvtCz0LTQsNC90L3Ri9GF0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGA0LDQt9Cx0LvQvtC60LjRgNC+0LLQsNGC0YzQtNCw0L3QvdGL0LXQtNC70Y/RgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINGA0LDQt9C00LXQu9C40YLRjNGE0LDQudC7INGA0LDQt9C+0YDQstCw0YLRjNGB0L7QtdC00LjQvdC10L3QuNC10YHQstC90LXRiNC90LjQvNC40YHRgtC+0YfQvdC40LrQvtC80LTQsNC90L3Ri9GFICcgK1xuICAn0YDQsNGB0LrQvtC00LjRgNC+0LLQsNGC0YzRgdGC0YDQvtC60YMg0YDQvtC70YzQtNC+0YHRgtGD0L/QvdCwINGB0LXQutGD0L3QtNCwINGB0LjQs9C90LDQuyDRgdC40LzQstC+0Lsg0YHQutC+0L/QuNGA0L7QstCw0YLRjNC20YPRgNC90LDQu9GA0LXQs9C40YHRgtGA0LDRhtC40Lgg0YHQvNC10YnQtdC90LjQtdC70LXRgtC90LXQs9C+0LLRgNC10LzQtdC90LggJyArXG4gICfRgdC80LXRidC10L3QuNC10YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LLRgNC10LzQtdC90Lgg0YHQvtC10LTQuNC90LjRgtGM0LHRg9GE0LXRgNGL0LTQstC+0LjRh9C90YvRhdC00LDQvdC90YvRhSDRgdC+0LfQtNCw0YLRjNC60LDRgtCw0LvQvtCzINGB0L7Qt9C00LDRgtGM0YTQsNCx0YDQuNC60YN4ZHRvINGB0L7QutGA0Lsg0YHQvtC60YDQu9C/INGB0L7QutGA0L8g0YHQvtC+0LHRidC40YLRjCAnICtcbiAgJ9GB0L7RgdGC0L7Rj9C90LjQtSDRgdC+0YXRgNCw0L3QuNGC0YzQt9C90LDRh9C10L3QuNC1INGB0L7RhdGA0LDQvdC40YLRjNC90LDRgdGC0YDQvtC50LrQuNC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRgdGA0LXQtCDRgdGC0YDQtNC70LjQvdCwINGB0YLRgNC30LDQutCw0L3Rh9C40LLQsNC10YLRgdGP0L3QsCDRgdGC0YDQt9Cw0LzQtdC90LjRgtGMINGB0YLRgNC90LDQudGC0Lgg0YHRgtGA0L3QsNGH0LjQvdCw0LXRgtGB0Y/RgSAnICtcbiAgJ9GB0YLRgNC+0LrQsCDRgdGC0YDQvtC60LDRgdC+0LXQtNC40L3QtdC90LjRj9C40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDRgdGC0YDQv9C+0LvRg9GH0LjRgtGM0YHRgtGA0L7QutGDINGB0YLRgNGA0LDQt9C00LXQu9C40YLRjCDRgdGC0YDRgdC+0LXQtNC40L3QuNGC0Ywg0YHRgtGA0YHRgNCw0LLQvdC40YLRjCDRgdGC0YDRh9C40YHQu9C+0LLRhdC+0LbQtNC10L3QuNC5ICcrXG4gICfRgdGC0YDRh9C40YHQu9C+0YHRgtGA0L7QuiDRgdGC0YDRiNCw0LHQu9C+0L0g0YLQtdC60YPRidCw0Y/QtNCw0YLQsCDRgtC10LrRg9GJ0LDRj9C00LDRgtCw0YHQtdCw0L3RgdCwINGC0LXQutGD0YnQsNGP0YPQvdC40LLQtdGA0YHQsNC70YzQvdCw0Y/QtNCw0YLQsCDRgtC10LrRg9GJ0LDRj9GD0L3QuNCy0LXRgNGB0LDQu9GM0L3QsNGP0LTQsNGC0LDQstC80LjQu9C70LjRgdC10LrRg9C90LTQsNGFICcgK1xuICAn0YLQtdC60YPRidC40LnQstCw0YDQuNCw0L3RgtC40L3RgtC10YDRhNC10LnRgdCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINGC0LXQutGD0YnQuNC50LLQsNGA0LjQsNC90YLQvtGB0L3QvtCy0L3QvtCz0L7RiNGA0LjRhNGC0LDQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0YLQtdC60YPRidC40LnQutC+0LTQu9C+0LrQsNC70LjQt9Cw0YbQuNC4ICcgK1xuICAn0YLQtdC60YPRidC40LnRgNC10LbQuNC80LfQsNC/0YPRgdC60LAg0YLQtdC60YPRidC40LnRj9C30YvQuiDRgtC10LrRg9GJ0LjQudGP0LfRi9C60YHQuNGB0YLQtdC80Ysg0YLQuNC/INGC0LjQv9C30L3RhyDRgtGA0LDQvdC30LDQutGG0LjRj9Cw0LrRgtC40LLQvdCwINGC0YDQtdCzINGD0LTQsNC70LjRgtGM0LTQsNC90L3Ri9C10LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLICcgK1xuICAn0YPQtNCw0LvQuNGC0YzQuNC30LLRgNC10LzQtdC90L3QvtCz0L7RhdGA0LDQvdC40LvQuNGJ0LAg0YPQtNCw0LvQuNGC0YzQvtCx0YrQtdC60YLRiyDRg9C00LDQu9C40YLRjNGE0LDQudC70Ysg0YPQvdC40LLQtdGA0YHQsNC70YzQvdC+0LXQstGA0LXQvNGPINGD0YHRgtCw0L3QvtCy0LjRgtGM0LHQtdC30L7Qv9Cw0YHQvdGL0LnRgNC10LbQuNC8ICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQsdC10LfQvtC/0LDRgdC90YvQudGA0LXQttC40LzRgNCw0LfQtNC10LvQtdC90LjRj9C00LDQvdC90YvRhSDRg9GB0YLQsNC90L7QstC40YLRjNCx0LvQvtC60LjRgNC+0LLQutGD0YHQtdCw0L3RgdC+0LIg0YPRgdGC0LDQvdC+0LLQuNGC0YzQstC90LXRiNC90Y7RjtC60L7QvNC/0L7QvdC10L3RgtGDICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQstGA0LXQvNGP0LfQsNCy0LXRgNGI0LXQvdC40Y/RgdC/0Y/RidC10LPQvtGB0LXQsNC90YHQsCDRg9GB0YLQsNC90L7QstC40YLRjNCy0YDQtdC80Y/Qt9Cw0YHRi9C/0LDQvdC40Y/Qv9Cw0YHRgdC40LLQvdC+0LPQvtGB0LXQsNC90YHQsCDRg9GB0YLQsNC90L7QstC40YLRjNCy0YDQtdC80Y/QvtC20LjQtNCw0L3QuNGP0LHQu9C+0LrQuNGA0L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNC30LDQs9C+0LvQvtCy0L7QutC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDRg9GB0YLQsNC90L7QstC40YLRjNC30LDQs9C+0LvQvtCy0L7QutGB0LjRgdGC0LXQvNGLINGD0YHRgtCw0L3QvtCy0LjRgtGM0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHQvtCx0YvRgtC40Y/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0YPRgdGC0LDQvdC+0LLQuNGC0YzQutGA0LDRgtC60LjQudC30LDQs9C+0LvQvtCy0L7QutC/0YDQuNC70L7QttC10L3QuNGPICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQvNC40L3QuNC80LDQu9GM0L3Rg9GO0LTQu9C40L3Rg9C/0LDRgNC+0LvQtdC50L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0YPRgdGC0LDQvdC+0LLQuNGC0YzQvNC+0L3QvtC/0L7Qu9GM0L3Ri9C50YDQtdC20LjQvCDRg9GB0YLQsNC90L7QstC40YLRjNC90LDRgdGC0YDQvtC50LrQuNC60LvQuNC10L3RgtCw0LvQuNGG0LXQvdC30LjRgNC+0LLQsNC90LjRjyAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvRhdC00LDQvdC90YvRhdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDRg9GB0YLQsNC90L7QstC40YLRjNC+0YLQutC70Y7Rh9C10L3QuNC10LHQtdC30L7Qv9Cw0YHQvdC+0LPQvtGA0LXQttC40LzQsCAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0L/QsNGA0LDQvNC10YLRgNGL0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90YvRhdC+0L/RhtC40LnQuNC90YLQtdGA0YTQtdC50YHQsCDRg9GB0YLQsNC90L7QstC40YLRjNC/0YDQuNCy0LjQu9C10LPQuNGA0L7QstCw0L3QvdGL0LnRgNC10LbQuNC8ICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQv9GA0L7QstC10YDQutGD0YHQu9C+0LbQvdC+0YHRgtC40L/QsNGA0L7Qu9C10LnQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDRg9GB0YLQsNC90L7QstC40YLRjNGA0LDRgdGI0LjRgNC10L3QuNC10YDQsNCx0L7RgtGL0YHQutGA0LjQv9GC0L7Qs9GA0LDRhNC40LXQuSAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0YDQsNGB0YjQuNGA0LXQvdC40LXRgNCw0LHQvtGC0YvRgdGE0LDQudC70LDQvNC4INGD0YHRgtCw0L3QvtCy0LjRgtGM0YHQvtC10LTQuNC90LXQvdC40LXRgdCy0L3QtdGI0L3QuNC80LjRgdGC0L7Rh9C90LjQutC+0LzQtNCw0L3QvdGL0YUg0YPRgdGC0LDQvdC+0LLQuNGC0YzRgdC+0L7RgtCy0LXRgtGB0YLQstC40LXQvtCx0YrQtdC60YLQsNC40YTQvtGA0LzRiyAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0YHQvtGB0YLQsNCy0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LjQvdGC0LXRgNGE0LXQudGB0LBvZGF0YSDRg9GB0YLQsNC90L7QstC40YLRjNGH0LDRgdC+0LLQvtC50L/QvtGP0YHQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0YPRgdGC0LDQvdC+0LLQuNGC0YzRh9Cw0YHQvtCy0L7QudC/0L7Rj9GB0YHQtdCw0L3RgdCwICcgK1xuICAn0YTQvtGA0LzQsNGCINGG0LXQuyDRh9Cw0YEg0YfQsNGB0L7QstC+0LnQv9C+0Y/RgSDRh9Cw0YHQvtCy0L7QudC/0L7Rj9GB0YHQtdCw0L3RgdCwINGH0LjRgdC70L4g0YfQuNGB0LvQvtC/0YDQvtC/0LjRgdGM0Y4g0Y3RgtC+0LDQtNGA0LXRgdCy0YDQtdC80LXQvdC90L7Qs9C+0YXRgNCw0L3QuNC70LjRidCwICc7XG5cbiAgLy8gdjgg0YHQstC+0LnRgdGC0LLQsCDQs9C70L7QsdCw0LvRjNC90L7Qs9C+INC60L7QvdGC0LXQutGB0YLQsCA9PT4gYnVpbHRfaW5cbiAgdmFyIHY4X2dsb2JhbF9jb250ZXh0X3Byb3BlcnR5ID1cbiAgJ3dz0YHRgdGL0LvQutC4INCx0LjQsdC70LjQvtGC0LXQutCw0LrQsNGA0YLQuNC90L7QuiDQsdC40LHQu9C40L7RgtC10LrQsNC80LDQutC10YLQvtCy0L7RhNC+0YDQvNC70LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQsdC40LHQu9C40L7RgtC10LrQsNGB0YLQuNC70LXQuSDQsdC40LfQvdC10YHQv9GA0L7RhtC10YHRgdGLICcgK1xuICAn0LLQvdC10YjQvdC40LXQuNGB0YLQvtGH0L3QuNC60LjQtNCw0L3QvdGL0YUg0LLQvdC10YjQvdC40LXQvtCx0YDQsNCx0L7RgtC60Lgg0LLQvdC10YjQvdC40LXQvtGC0YfQtdGC0Ysg0LLRgdGC0YDQvtC10L3QvdGL0LXQv9C+0LrRg9C/0LrQuCDQs9C70LDQstC90YvQudC40L3RgtC10YDRhNC10LnRgSDQs9C70LDQstC90YvQudGB0YLQuNC70YwgJyArXG4gICfQtNC+0LrRg9C80LXQvdGC0Ysg0LTQvtGB0YLQsNCy0LvRj9C10LzRi9C10YPQstC10LTQvtC80LvQtdC90LjRjyDQttGD0YDQvdCw0LvRi9C00L7QutGD0LzQtdC90YLQvtCyINC30LDQtNCw0YfQuCDQuNC90YTQvtGA0LzQsNGG0LjRj9C+0LHQuNC90YLQtdGA0L3QtdGC0YHQvtC10LTQuNC90LXQvdC40Lgg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNCw0LHQvtGH0LXQudC00LDRgtGLICcgK1xuICAn0LjRgdGC0L7RgNC40Y/RgNCw0LHQvtGC0YvQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LrQvtC90YHRgtCw0L3RgtGLINC60YDQuNGC0LXRgNC40LjQvtGC0LHQvtGA0LAg0LzQtdGC0LDQtNCw0L3QvdGL0LUg0L7QsdGA0LDQsdC+0YLQutC4INC+0YLQvtCx0YDQsNC20LXQvdC40LXRgNC10LrQu9Cw0LzRiyDQvtGC0L/RgNCw0LLQutCw0LTQvtGB0YLQsNCy0LvRj9C10LzRi9GF0YPQstC10LTQvtC80LvQtdC90LjQuSAnICtcbiAgJ9C+0YLRh9C10YLRiyDQv9Cw0L3QtdC70YzQt9Cw0LTQsNGH0L7RgSDQv9Cw0YDQsNC80LXRgtGA0LfQsNC/0YPRgdC60LAg0L/QsNGA0LDQvNC10YLRgNGL0YHQtdCw0L3RgdCwINC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyDQv9C70LDQvdGL0LLQuNC00L7QstGA0LDRgdGH0LXRgtCwINC/0LvQsNC90YvQstC40LTQvtCy0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40LogJyArXG4gICfQv9C70LDQvdGL0L7QsdC80LXQvdCwINC/0LvQsNC90YvRgdGH0LXRgtC+0LIg0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0YvQudC/0L7QuNGB0Log0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C40LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLQuCDQv9GA0L7QstC10YDQutCw0LLRgdGC0YDQvtC10L3QvdGL0YXQv9C+0LrRg9C/0L7QuiAnICtcbiAgJ9GA0LDQsdC+0YfQsNGP0LTQsNGC0LAg0YDQsNGB0YjQuNGA0LXQvdC40Y/QutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0YDQtdCz0LjRgdGC0YDRi9Cx0YPRhdCz0LDQu9GC0LXRgNC40Lgg0YDQtdCz0LjRgdGC0YDRi9C90LDQutC+0L/Qu9C10L3QuNGPINGA0LXQs9C40YHRgtGA0YvRgNCw0YHRh9C10YLQsCDRgNC10LPQuNGB0YLRgNGL0YHQstC10LTQtdC90LjQuSAnICtcbiAgJ9GA0LXQs9C70LDQvNC10L3RgtC90YvQtdC30LDQtNCw0L3QuNGPINGB0LXRgNC40LDQu9C40LfQsNGC0L7RgHhkdG8g0YHQv9GA0LDQstC+0YfQvdC40LrQuCDRgdGA0LXQtNGB0YLQstCw0LPQtdC+0L/QvtC30LjRhtC40L7QvdC40YDQvtCy0LDQvdC40Y8g0YHRgNC10LTRgdGC0LLQsNC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDRgdGA0LXQtNGB0YLQstCw0LzRg9C70YzRgtC40LzQtdC00LjQsCAnICtcbiAgJ9GB0YDQtdC00YHRgtCy0LDQvtGC0L7QsdGA0LDQttC10L3QuNGP0YDQtdC60LvQsNC80Ysg0YHRgNC10LTRgdGC0LLQsNC/0L7Rh9GC0Ysg0YHRgNC10LTRgdGC0LLQsNGC0LXQu9C10YTQvtC90LjQuCDRhNCw0LHRgNC40LrQsHhkdG8g0YTQsNC50LvQvtCy0YvQtdC/0L7RgtC+0LrQuCDRhNC+0L3QvtCy0YvQtdC30LDQtNCw0L3QuNGPINGF0YDQsNC90LjQu9C40YnQsNC90LDRgdGC0YDQvtC10LogJyArXG4gICfRhdGA0LDQvdC40LvQuNGJ0LXQstCw0YDQuNCw0L3RgtC+0LLQvtGC0YfQtdGC0L7QsiDRhdGA0LDQvdC40LvQuNGJ0LXQvdCw0YHRgtGA0L7QtdC60LTQsNC90L3Ri9GF0YTQvtGA0Lwg0YXRgNCw0L3QuNC70LjRidC10L7QsdGJ0LjRhdC90LDRgdGC0YDQvtC10Log0YXRgNCw0L3QuNC70LjRidC10L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40YXQvdCw0YHRgtGA0L7QtdC60LTQuNC90LDQvNC40YfQtdGB0LrQuNGF0YHQv9C40YHQutC+0LIgJyArXG4gICfRhdGA0LDQvdC40LvQuNGJ0LXQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjRhdC90LDRgdGC0YDQvtC10LrQvtGC0YfQtdGC0L7QsiDRhdGA0LDQvdC40LvQuNGJ0LXRgdC40YHRgtC10LzQvdGL0YXQvdCw0YHRgtGA0L7QtdC6ICc7XG5cbiAgLy8gYnVpbHRfaW4gOiDQstGB0YLRgNC+0LXQvdC90YvQtSDQuNC70Lgg0LHQuNCx0LvQuNC+0YLQtdGH0L3Ri9C1INC+0LHRitC10LrRgtGLICjQutC+0L3RgdGC0LDQvdGC0YssINC60LvQsNGB0YHRiywg0YTRg9C90LrRhtC40LgpXG4gIHZhciBCVUlMVElOID1cbiAgdjdfc3lzdGVtX2NvbnN0YW50cyArXG4gIHY3X2dsb2JhbF9jb250ZXh0X21ldGhvZHMgKyB2OF9nbG9iYWxfY29udGV4dF9tZXRob2RzICtcbiAgdjhfZ2xvYmFsX2NvbnRleHRfcHJvcGVydHk7XG4gIFxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L3QsNCx0L7RgNGLINC30L3QsNGH0LXQvdC40LkgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fc2V0c19vZl92YWx1ZXMgPVxuICAnd2Vi0YbQstC10YLQsCB3aW5kb3dz0YbQstC10YLQsCB3aW5kb3dz0YjRgNC40YTRgtGLINCx0LjQsdC70LjQvtGC0LXQutCw0LrQsNGA0YLQuNC90L7QuiDRgNCw0LzQutC40YHRgtC40LvRjyDRgdC40LzQstC+0LvRiyDRhtCy0LXRgtCw0YHRgtC40LvRjyDRiNGA0LjRhNGC0YvRgdGC0LjQu9GPICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC40L3RgtC10YDRhNC10LnRgdC90YvQtSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19pbnRlcmZhY2UgPVxuICAn0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7QtdGB0L7RhdGA0LDQvdC10L3QuNC10LTQsNC90L3Ri9GF0YTQvtGA0LzRi9Cy0L3QsNGB0YLRgNC+0LnQutCw0YUg0LDQstGC0L7QvdGD0LzQtdGA0LDRhtC40Y/QstGE0L7RgNC80LUg0LDQstGC0L7RgNCw0LfQtNCy0LjQttC10L3QuNC10YHQtdGA0LjQuSAnICtcbiAgJ9Cw0L3QuNC80LDRhtC40Y/QtNC40LDQs9GA0LDQvNC80Ysg0LLQsNGA0LjQsNC90YLQstGL0YDQsNCy0L3QuNCy0LDQvdC40Y/RjdC70LXQvNC10L3RgtC+0LLQuNC30LDQs9C+0LvQvtCy0LrQvtCyINCy0LDRgNC40LDQvdGC0YPQv9GA0LDQstC70LXQvdC40Y/QstGL0YHQvtGC0L7QudGC0LDQsdC70LjRhtGLICcgK1xuICAn0LLQtdGA0YLQuNC60LDQu9GM0L3QsNGP0L/RgNC+0LrRgNGD0YLQutCw0YTQvtGA0LzRiyDQstC10YDRgtC40LrQsNC70YzQvdC+0LXQv9C+0LvQvtC20LXQvdC40LUg0LLQtdGA0YLQuNC60LDQu9GM0L3QvtC10L/QvtC70L7QttC10L3QuNC10Y3Qu9C10LzQtdC90YLQsCDQstC40LTQs9GA0YPQv9C/0YvRhNC+0YDQvNGLICcgK1xuICAn0LLQuNC00LTQtdC60L7RgNCw0YbQuNC40YTQvtGA0LzRiyDQstC40LTQtNC+0L/QvtC70L3QtdC90LjRj9GN0LvQtdC80LXQvdGC0LDRhNC+0YDQvNGLINCy0LjQtNC40LfQvNC10L3QtdC90LjRj9C00LDQvdC90YvRhSDQstC40LTQutC90L7Qv9C60LjRhNC+0YDQvNGLINCy0LjQtNC/0LXRgNC10LrQu9GO0YfQsNGC0LXQu9GPICcgK1xuICAn0LLQuNC00L/QvtC00L/QuNGB0LXQudC60LTQuNCw0LPRgNCw0LzQvNC1INCy0LjQtNC/0L7Qu9GP0YTQvtGA0LzRiyDQstC40LTRhNC70LDQttC60LAg0LLQu9C40Y/QvdC40LXRgNCw0LfQvNC10YDQsNC90LDQv9GD0LfRi9GA0LXQutC00LjQsNCz0YDQsNC80LzRiyDQs9C+0YDQuNC30L7QvdGC0LDQu9GM0L3QvtC10L/QvtC70L7QttC10L3QuNC1ICcgK1xuICAn0LPQvtGA0LjQt9C+0L3RgtCw0LvRjNC90L7QtdC/0L7Qu9C+0LbQtdC90LjQtdGN0LvQtdC80LXQvdGC0LAg0LPRgNGD0L/Qv9C40YDQvtCy0LrQsNC60L7Qu9C+0L3QvtC6INCz0YDRg9C/0L/QuNGA0L7QstC60LDQv9C+0LTRh9C40L3QtdC90L3Ri9GF0Y3Qu9C10LzQtdC90YLQvtCy0YTQvtGA0LzRiyAnICtcbiAgJ9Cz0YDRg9C/0L/Ri9C40Y3Qu9C10LzQtdC90YLRiyDQtNC10LnRgdGC0LLQuNC10L/QtdGA0LXRgtCw0YHQutC40LLQsNC90LjRjyDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C50YDQtdC20LjQvNC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LTQvtC/0YPRgdGC0LjQvNGL0LXQtNC10LnRgdGC0LLQuNGP0L/QtdGA0LXRgtCw0YHQutC40LLQsNC90LjRjyAnICtcbiAgJ9C40L3RgtC10YDQstCw0LvQvNC10LbQtNGD0Y3Qu9C10LzQtdC90YLQsNC80LjRhNC+0YDQvNGLINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LLRi9Cy0L7QtNCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L/QvtC70L7RgdGL0L/RgNC+0LrRgNGD0YLQutC4ICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfRg9C10LzQvtC10LfQvdCw0YfQtdC90LjQtdGC0L7Rh9C60LjQsdC40YDQttC10LLQvtC50LTQuNCw0LPRgNCw0LzQvNGLINC40YHRgtC+0YDQuNGP0LLRi9Cx0L7RgNCw0L/RgNC40LLQstC+0LTQtSDQuNGB0YLQvtGH0L3QuNC60LfQvdCw0YfQtdC90LjQudC+0YHQuNGC0L7Rh9C10LrQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfQuNGB0YLQvtGH0L3QuNC60LfQvdCw0YfQtdC90LjRj9GA0LDQt9C80LXRgNCw0L/Rg9C30YvRgNGM0LrQsNC00LjQsNCz0YDQsNC80LzRiyDQutCw0YLQtdCz0L7RgNC40Y/Qs9GA0YPQv9C/0YvQutC+0LzQsNC90LQg0LzQsNC60YHQuNC80YPQvNGB0LXRgNC40Lkg0L3QsNGH0LDQu9GM0L3QvtC10L7RgtC+0LHRgNCw0LbQtdC90LjQtdC00LXRgNC10LLQsCAnICtcbiAgJ9C90LDRh9Cw0LvRjNC90L7QtdC+0YLQvtCx0YDQsNC20LXQvdC40LXRgdC/0LjRgdC60LAg0L7QsdC90L7QstC70LXQvdC40LXRgtC10LrRgdGC0LDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC+0YDQuNC10L3RgtCw0YbQuNGP0LTQtdC90LTRgNC+0LPRgNCw0LzQvNGLINC+0YDQuNC10L3RgtCw0YbQuNGP0LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0L7RgNC40LXQvdGC0LDRhtC40Y/QvNC10YLQvtC60LTQuNCw0LPRgNCw0LzQvNGLINC+0YDQuNC10L3RgtCw0YbQuNGP0LzQtdGC0L7QutGB0LLQvtC00L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLINC+0YDQuNC10L3RgtCw0YbQuNGP0Y3Qu9C10LzQtdC90YLQsNGE0L7RgNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdCy0LTQuNCw0LPRgNCw0LzQvNC1ICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdCy0LvQtdCz0LXQvdC00LXQtNC40LDQs9GA0LDQvNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdCz0YDRg9C/0L/Ri9C60L3QvtC/0L7QuiDQvtGC0L7QsdGA0LDQttC10L3QuNC10LfQsNCz0L7Qu9C+0LLQutCw0YjQutCw0LvRi9C00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQt9C90LDRh9C10L3QuNC50YHQstC+0LTQvdC+0LnQtNC40LDQs9GA0LDQvNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC30L3QsNGH0LXQvdC40Y/QuNC30LzQtdGA0LjRgtC10LvRjNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQuNC90YLQtdGA0LLQsNC70LDQtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwINC+0YLQvtCx0YDQsNC20LXQvdC40LXQutC90L7Qv9C60Lgg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC60L3QvtC/0LrQuNCy0YvQsdC+0YDQsCDQvtGC0L7QsdGA0LDQttC10L3QuNC10L7QsdGB0YPQttC00LXQvdC40LnRhNC+0YDQvNGLICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC+0LHRi9GH0L3QvtC50LPRgNGD0L/Qv9GLINC+0YLQvtCx0YDQsNC20LXQvdC40LXQvtGC0YDQuNGG0LDRgtC10LvRjNC90YvRhdC30L3QsNGH0LXQvdC40LnQv9GD0LfRi9GA0YzQutC+0LLQvtC50LTQuNCw0LPRgNCw0LzQvNGLINC+0YLQvtCx0YDQsNC20LXQvdC40LXQv9Cw0L3QtdC70LjQv9C+0LjRgdC60LAgJyArXG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10L/QvtC00YHQutCw0LfQutC4INC+0YLQvtCx0YDQsNC20LXQvdC40LXQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNGP0L/RgNC40YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjQuCDQvtGC0L7QsdGA0LDQttC10L3QuNC10YDQsNC30LzQtdGC0LrQuNC/0L7Qu9C+0YHRi9GA0LXQs9GD0LvQuNGA0L7QstCw0L3QuNGPICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGB0YLRgNCw0L3QuNGG0YTQvtGA0LzRiyDQvtGC0L7QsdGA0LDQttC10L3QuNC10YLQsNCx0LvQuNGG0Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGC0LXQutGB0YLQsNC30L3QsNGH0LXQvdC40Y/QtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGD0L/RgNCw0LLQu9C10L3QuNGP0L7QsdGL0YfQvdC+0LnQs9GA0YPQv9C/0Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGE0LjQs9GD0YDRi9C60L3QvtC/0LrQuCDQv9Cw0LvQuNGC0YDQsNGG0LLQtdGC0L7QstC00LjQsNCz0YDQsNC80LzRiyDQv9C+0LLQtdC00LXQvdC40LXQvtCx0YvRh9C90L7QudCz0YDRg9C/0L/RiyAnICtcbiAgJ9C/0L7QtNC00LXRgNC20LrQsNC80LDRgdGI0YLQsNCx0LDQtNC10L3QtNGA0L7Qs9GA0LDQvNC80Ysg0L/QvtC00LTQtdGA0LbQutCw0LzQsNGB0YjRgtCw0LHQsNC00LjQsNCz0YDQsNC80LzRi9Cz0LDQvdGC0LAg0L/QvtC00LTQtdGA0LbQutCw0LzQsNGB0YjRgtCw0LHQsNGB0LLQvtC00L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0L/QvtC40YHQutCy0YLQsNCx0LvQuNGG0LXQv9GA0LjQstCy0L7QtNC1INC/0L7Qu9C+0LbQtdC90LjQtdC30LDQs9C+0LvQvtCy0LrQsNGN0LvQtdC80LXQvdGC0LDRhNC+0YDQvNGLINC/0L7Qu9C+0LbQtdC90LjQtdC60LDRgNGC0LjQvdC60LjQutC90L7Qv9C60LjRhNC+0YDQvNGLICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10LrQsNGA0YLQuNC90LrQuNGN0LvQtdC80LXQvdGC0LDQs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDQv9C+0LvQvtC20LXQvdC40LXQutC+0LzQsNC90LTQvdC+0LnQv9Cw0L3QtdC70LjRhNC+0YDQvNGLINC/0L7Qu9C+0LbQtdC90LjQtdC60L7QvNCw0L3QtNC90L7QudC/0LDQvdC10LvQuNGN0LvQtdC80LXQvdGC0LDRhNC+0YDQvNGLICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10L7Qv9C+0YDQvdC+0LnRgtC+0YfQutC40L7RgtGA0LjRgdC+0LLQutC4INC/0L7Qu9C+0LbQtdC90LjQtdC/0L7QtNC/0LjRgdC10LnQutC00LjQsNCz0YDQsNC80LzQtSDQv9C+0LvQvtC20LXQvdC40LXQv9C+0LTQv9C40YHQtdC50YjQutCw0LvRi9C30L3QsNGH0LXQvdC40LnQuNC30LzQtdGA0LjRgtC10LvRjNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C/0L7Qu9C+0LbQtdC90LjQtdGB0L7RgdGC0L7Rj9C90LjRj9C/0YDQvtGB0LzQvtGC0YDQsCDQv9C+0LvQvtC20LXQvdC40LXRgdGC0YDQvtC60LjQv9C+0LjRgdC60LAg0L/QvtC70L7QttC10L3QuNC10YLQtdC60YHRgtCw0YHQvtC10LTQuNC90LjRgtC10LvRjNC90L7QudC70LjQvdC40Lgg0L/QvtC70L7QttC10L3QuNC10YPQv9GA0LDQstC70LXQvdC40Y/Qv9C+0LjRgdC60L7QvCAnICtcbiAgJ9C/0L7Qu9C+0LbQtdC90LjQtdGI0LrQsNC70YvQstGA0LXQvNC10L3QuCDQv9C+0YDRj9C00L7QutC+0YLQvtCx0YDQsNC20LXQvdC40Y/RgtC+0YfQtdC60LPQvtGA0LjQt9C+0L3RgtCw0LvRjNC90L7QudCz0LjRgdGC0L7Qs9GA0LDQvNC80Ysg0L/QvtGA0Y/QtNC+0LrRgdC10YDQuNC50LLQu9C10LPQtdC90LTQtdC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GA0LDQt9C80LXRgNC60LDRgNGC0LjQvdC60Lgg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10LfQsNCz0L7Qu9C+0LLQutCw0YjQutCw0LvRi9C00LjQsNCz0YDQsNC80LzRiyDRgNCw0YHRgtGP0LPQuNCy0LDQvdC40LXQv9C+0LLQtdGA0YLQuNC60LDQu9C40LTQuNCw0LPRgNCw0LzQvNGL0LPQsNC90YLQsCAnICtcbiAgJ9GA0LXQttC40LzQsNCy0YLQvtC+0YLQvtCx0YDQsNC20LXQvdC40Y/RgdC+0YHRgtC+0Y/QvdC40Y8g0YDQtdC20LjQvNCy0LLQvtC00LDRgdGC0YDQvtC60YLQsNCx0LvQuNGG0Ysg0YDQtdC20LjQvNCy0YvQsdC+0YDQsNC90LXQt9Cw0L/QvtC70L3QtdC90L3QvtCz0L4g0YDQtdC20LjQvNCy0YvQtNC10LvQtdC90LjRj9C00LDRgtGLICcgK1xuICAn0YDQtdC20LjQvNCy0YvQtNC10LvQtdC90LjRj9GB0YLRgNC+0LrQuNGC0LDQsdC70LjRhtGLINGA0LXQttC40LzQstGL0LTQtdC70LXQvdC40Y/RgtCw0LHQu9C40YbRiyDRgNC10LbQuNC80LjQt9C80LXQvdC10L3QuNGP0YDQsNC30LzQtdGA0LAg0YDQtdC20LjQvNC40LfQvNC10L3QtdC90LjRj9GB0LLRj9C30LDQvdC90L7Qs9C+0LfQvdCw0YfQtdC90LjRjyAnICtcbiAgJ9GA0LXQttC40LzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C00LjQsNC70L7Qs9Cw0L/QtdGH0LDRgtC4INGA0LXQttC40LzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C/0LDRgNCw0LzQtdGC0YDQsNC60L7QvNCw0L3QtNGLINGA0LXQttC40LzQvNCw0YHRiNGC0LDQsdC40YDQvtCy0LDQvdC40Y/Qv9GA0L7RgdC80L7RgtGA0LAgJyArXG4gICfRgNC10LbQuNC80L7RgdC90L7QstC90L7Qs9C+0L7QutC90LDQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0YDQtdC20LjQvNC+0YLQutGA0YvRgtC40Y/QvtC60L3QsNGE0L7RgNC80Ysg0YDQtdC20LjQvNC+0YLQvtCx0YDQsNC20LXQvdC40Y/QstGL0LTQtdC70LXQvdC40Y8gJyArXG4gICfRgNC10LbQuNC80L7RgtC+0LHRgNCw0LbQtdC90LjRj9Cz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGA0LXQttC40LzQvtGC0L7QsdGA0LDQttC10L3QuNGP0LfQvdCw0YfQtdC90LjQudGB0LXRgNC40Lgg0YDQtdC20LjQvNC+0YLRgNC40YHQvtCy0LrQuNGB0LXRgtC60LjQs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyAnICtcbiAgJ9GA0LXQttC40LzQv9C+0LvRg9C/0YDQvtC30YDQsNGH0L3QvtGB0YLQuNC00LjQsNCz0YDQsNC80LzRiyDRgNC10LbQuNC80L/RgNC+0LHQtdC70L7QstC00LjQsNCz0YDQsNC80LzRiyDRgNC10LbQuNC80YDQsNC30LzQtdGJ0LXQvdC40Y/QvdCw0YHRgtGA0LDQvdC40YbQtSDRgNC10LbQuNC80YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRj9C60L7Qu9C+0L3QutC4ICcgK1xuICAn0YDQtdC20LjQvNGB0LPQu9Cw0LbQuNCy0LDQvdC40Y/QtNC40LDQs9GA0LDQvNC80Ysg0YDQtdC20LjQvNGB0LPQu9Cw0LbQuNCy0LDQvdC40Y/QuNC90LTQuNC60LDRgtC+0YDQsCDRgNC10LbQuNC80YHQv9C40YHQutCw0LfQsNC00LDRhyDRgdC60LLQvtC30L3QvtC10LLRi9GA0LDQstC90LjQstCw0L3QuNC1ICcgK1xuICAn0YHQvtGF0YDQsNC90LXQvdC40LXQtNCw0L3QvdGL0YXRhNC+0YDQvNGL0LLQvdCw0YHRgtGA0L7QudC60LDRhSDRgdC/0L7RgdC+0LHQt9Cw0L/QvtC70L3QtdC90LjRj9GC0LXQutGB0YLQsNC30LDQs9C+0LvQvtCy0LrQsNGI0LrQsNC70YvQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfRgdC/0L7RgdC+0LHQvtC/0YDQtdC00LXQu9C10L3QuNGP0L7Qs9GA0LDQvdC40YfQuNCy0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj9C00LjQsNCz0YDQsNC80LzRiyDRgdGC0LDQvdC00LDRgNGC0L3QsNGP0LPRgNGD0L/Qv9Cw0LrQvtC80LDQvdC0INGB0YLQsNC90LTQsNGA0YLQvdC+0LXQvtGE0L7RgNC80LvQtdC90LjQtSAnICtcbiAgJ9GB0YLQsNGC0YPRgdC+0L/QvtCy0LXRidC10L3QuNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGB0YLQuNC70YzRgdGC0YDQtdC70LrQuCDRgtC40L/QsNC/0L/RgNC+0LrRgdC40LzQsNGG0LjQuNC70LjQvdC40LjRgtGA0LXQvdC00LDQtNC40LDQs9GA0LDQvNC80Ysg0YLQuNC/0LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YLQuNC/0LXQtNC40L3QuNGG0YvRiNC60LDQu9GL0LLRgNC10LzQtdC90Lgg0YLQuNC/0LjQvNC/0L7RgNGC0LDRgdC10YDQuNC50YHQu9C+0Y/Qs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/Qu9C40L3QuNC40LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0LvQuNC90LjQuNC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GC0LjQv9C80LDRgNC60LXRgNCw0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0LzQsNGA0LrQtdGA0LDQtNC40LDQs9GA0LDQvNC80Ysg0YLQuNC/0L7QsdC70LDRgdGC0LjQvtGE0L7RgNC80LvQtdC90LjRjyAnICtcbiAgJ9GC0LjQv9C+0YDQs9Cw0L3QuNC30LDRhtC40LjQuNGB0YLQvtGH0L3QuNC60LDQtNCw0L3QvdGL0YXQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0YHQtdGA0LjQuNGB0LvQvtGP0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80YsgJyArXG4gICfRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0YLQvtGH0LXRh9C90L7Qs9C+0L7QsdGK0LXQutGC0LDQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0YjQutCw0LvRi9GN0LvQtdC80LXQvdGC0LDQu9C10LPQtdC90LTRi9Cz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLICcgK1xuICAn0YLQuNC/0L/QvtC40YHQutCw0L7QsdGK0LXQutGC0L7QstCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGC0LjQv9C/0YDQvtC10LrRhtC40LjQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9C40LfQvNC10YDQtdC90LjQuSAnICtcbiAgJ9GC0LjQv9GA0LDQt9C80LXRidC10L3QuNGP0YDQtdC60LLQuNC30LjRgtC+0LLQuNC30LzQtdGA0LXQvdC40Lkg0YLQuNC/0YDQsNC80LrQuNGN0LvQtdC80LXQvdGC0LDRg9C/0YDQsNCy0LvQtdC90LjRjyDRgtC40L/RgdCy0L7QtNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GC0LjQv9GB0LLRj9C30LjQtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwINGC0LjQv9GB0L7QtdC00LjQvdC10L3QuNGP0LfQvdCw0YfQtdC90LjQudC/0L7RgdC10YDQuNGP0LzQtNC40LDQs9GA0LDQvNC80Ysg0YLQuNC/0YHQvtC10LTQuNC90LXQvdC40Y/RgtC+0YfQtdC60LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YLQuNC/0YHQvtC10LTQuNC90LjRgtC10LvRjNC90L7QudC70LjQvdC40Lgg0YLQuNC/0YHRgtC+0YDQvtC90YvRjdC70LXQvNC10L3RgtCw0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0YTQvtGA0LzRi9C+0YLRh9C10YLQsCDRgtC40L/RiNC60LDQu9GL0YDQsNC00LDRgNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GE0LDQutGC0L7RgNC70LjQvdC40LjRgtGA0LXQvdC00LDQtNC40LDQs9GA0LDQvNC80Ysg0YTQuNCz0YPRgNCw0LrQvdC+0L/QutC4INGE0LjQs9GD0YDRi9Cz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGE0LjQutGB0LDRhtC40Y/QstGC0LDQsdC70LjRhtC1INGE0L7RgNC80LDRgtC00L3Rj9GI0LrQsNC70YvQstGA0LXQvNC10L3QuCAnICtcbiAgJ9GE0L7RgNC80LDRgtC60LDRgNGC0LjQvdC60Lgg0YjQuNGA0LjQvdCw0L/QvtC00YfQuNC90LXQvdC90YvRhdGN0LvQtdC80LXQvdGC0L7QstGE0L7RgNC80YsgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YHQstC+0LnRgdGC0LLQsCDQv9GA0LjQutC70LDQtNC90YvRhSDQvtCx0YrQtdC60YLQvtCyID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX29iamVjdHNfcHJvcGVydGllcyA9XG4gICfQstC40LTQtNCy0LjQttC10L3QuNGP0LHRg9GF0LPQsNC70YLQtdGA0LjQuCDQstC40LTQtNCy0LjQttC10L3QuNGP0L3QsNC60L7Qv9C70LXQvdC40Y8g0LLQuNC00L/QtdGA0LjQvtC00LDRgNC10LPQuNGB0YLRgNCw0YDQsNGB0YfQtdGC0LAg0LLQuNC00YHRh9C10YLQsCDQstC40LTRgtC+0YfQutC40LzQsNGA0YjRgNGD0YLQsNCx0LjQt9C90LXRgdC/0YDQvtGG0LXRgdGB0LAgJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCw0LPRgNC10LPQsNGC0LDRgNC10LPQuNGB0YLRgNCw0L3QsNC60L7Qv9C70LXQvdC40Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQs9GA0YPQv9C/0LjRjdC70LXQvNC10L3RgtC+0LIg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNC10LbQuNC80LDQv9GA0L7QstC10LTQtdC90LjRjyAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHRgNC10LfQsCDQv9C10YDQuNC+0LTQuNGH0L3QvtGB0YLRjNCw0LPRgNC10LPQsNGC0LDRgNC10LPQuNGB0YLRgNCw0L3QsNC60L7Qv9C70LXQvdC40Y8g0YDQtdC20LjQvNCw0LLRgtC+0LLRgNC10LzRjyDRgNC10LbQuNC80LfQsNC/0LjRgdC40LTQvtC60YPQvNC10L3RgtCwINGA0LXQttC40LzQv9GA0L7QstC10LTQtdC90LjRj9C00L7QutGD0LzQtdC90YLQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C70LDQvdGLINC+0LHQvNC10L3QsCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19leGNoYW5nZV9wbGFucyA9XG4gICfQsNCy0YLQvtGA0LXQs9C40YHRgtGA0LDRhtC40Y/QuNC30LzQtdC90LXQvdC40Lkg0LTQvtC/0YPRgdGC0LjQvNGL0LnQvdC+0LzQtdGA0YHQvtC+0LHRidC10L3QuNGPINC+0YLQv9GA0LDQstC60LDRjdC70LXQvNC10L3RgtCw0LTQsNC90L3Ri9GFINC/0L7Qu9GD0YfQtdC90LjQtdGN0LvQtdC80LXQvdGC0LDQtNCw0L3QvdGL0YUgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YLQsNCx0LvQuNGH0L3Ri9C5INC00L7QutGD0LzQtdC90YIgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfdGFidWxhcl9kb2N1bWVudCA9XG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGA0LDRgdGI0LjRhNGA0L7QstC60LjRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDQvtGA0LjQtdC90YLQsNGG0LjRj9GB0YLRgNCw0L3QuNGG0Ysg0L/QvtC70L7QttC10L3QuNC10LjRgtC+0LPQvtCy0LrQvtC70L7QvdC+0LrRgdCy0L7QtNC90L7QudGC0LDQsdC70LjRhtGLICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10LjRgtC+0LPQvtCy0YHRgtGA0L7QutGB0LLQvtC00L3QvtC50YLQsNCx0LvQuNGG0Ysg0L/QvtC70L7QttC10L3QuNC10YLQtdC60YHRgtCw0L7RgtC90L7RgdC40YLQtdC70YzQvdC+0LrQsNGA0YLQuNC90LrQuCDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQt9Cw0LPQvtC70L7QstC60LDQs9GA0YPQv9C/0LjRgNC+0LLQutC40YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgdC/0L7RgdC+0LHRh9GC0LXQvdC40Y/Qt9C90LDRh9C10L3QuNC50YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0LTQstGD0YHRgtC+0YDQvtC90L3QtdC50L/QtdGH0LDRgtC4INGC0LjQv9C30LDQv9C+0LvQvdC10L3QuNGP0L7QsdC70LDRgdGC0LjRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCAnICtcbiAgJ9GC0LjQv9C60YPRgNGB0L7RgNC+0LLRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/Qu9C40L3QuNC40YDQuNGB0YPQvdC60LDRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/Qu9C40L3QuNC40Y/Rh9C10LnQutC40YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgtC40L/QvdCw0L/RgNCw0LLQu9C10L3QuNGP0L/QtdGA0LXRhdC+0LTQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9C+0YLQvtCx0YDQsNC20LXQvdC40Y/QstGL0LTQtdC70LXQvdC40Y/RgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0LvQuNC90LjQudGB0LLQvtC00L3QvtC50YLQsNCx0LvQuNGG0YsgJyArXG4gICfRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9GC0LXQutGB0YLQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9GA0LjRgdGD0L3QutCw0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0YHQvNC10YnQtdC90LjRj9GC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwICcgK1xuICAn0YLQuNC/0YPQt9C+0YDQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9GE0LDQudC70LDRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC+0YfQvdC+0YHRgtGM0L/QtdGH0LDRgtC4INGH0LXRgNC10LTQvtCy0LDQvdC40LXRgNCw0YHQv9C+0LvQvtC20LXQvdC40Y/RgdGC0YDQsNC90LjRhiAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C70LDQvdC40YDQvtCy0YnQuNC6ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3NoZWR1bGVyID1cbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQstGA0LXQvNC10L3QuNGN0LvQtdC80LXQvdGC0L7QstC/0LvQsNC90LjRgNC+0LLRidC40LrQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QvdGL0Lkg0LTQvtC60YPQvNC10L3RgiA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19mb3JtYXR0ZWRfZG9jdW1lbnQgPVxuICAn0YLQuNC/0YTQsNC50LvQsNGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC30LDQv9GA0L7RgSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19xdWVyeSA9XG4gICfQvtCx0YXQvtC00YDQtdC30YPQu9GM0YLQsNGC0LDQt9Cw0L/RgNC+0YHQsCDRgtC40L/Qt9Cw0L/QuNGB0LjQt9Cw0L/RgNC+0YHQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C+0YHRgtGA0L7QuNGC0LXQu9GMINC+0YLRh9C10YLQsCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19yZXBvcnRfYnVpbGRlciA9XG4gICfQstC40LTQt9Cw0L/QvtC70L3QtdC90LjRj9GA0LDRgdGI0LjRhNGA0L7QstC60LjQv9C+0YHRgtGA0L7QuNGC0LXQu9GP0L7RgtGH0LXRgtCwINGC0LjQv9C00L7QsdCw0LLQu9C10L3QuNGP0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lkg0YLQuNC/0LjQt9C80LXRgNC10L3QuNGP0L/QvtGB0YLRgNC+0LjRgtC10LvRj9C+0YLRh9C10YLQsCDRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9C40YLQvtCz0L7QsiAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgNCw0LHQvtGC0LAg0YEg0YTQsNC50LvQsNC80LggPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZmlsZXMgPVxuICAn0LTQvtGB0YLRg9C/0LrRhNCw0LnQu9GDINGA0LXQttC40LzQtNC40LDQu9C+0LPQsNCy0YvQsdC+0YDQsNGE0LDQudC70LAg0YDQtdC20LjQvNC+0YLQutGA0YvRgtC40Y/RhNCw0LnQu9CwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC/0L7RgdGC0YDQvtC40YLQtdC70Ywg0LfQsNC/0YDQvtGB0LAgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfcXVlcnlfYnVpbGRlciA9XG4gICfRgtC40L/QuNC30LzQtdGA0LXQvdC40Y/Qv9C+0YHRgtGA0L7QuNGC0LXQu9GP0LfQsNC/0YDQvtGB0LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0LDQvdCw0LvQuNC3INC00LDQvdC90YvRhSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19kYXRhX2FuYWx5c2lzID1cbiAgJ9Cy0LjQtNC00LDQvdC90YvRhdCw0L3QsNC70LjQt9CwINC80LXRgtC+0LTQutC70LDRgdGC0LXRgNC40LfQsNGG0LjQuCDRgtC40L/QtdC00LjQvdC40YbRi9C40L3RgtC10YDQstCw0LvQsNCy0YDQtdC80LXQvdC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0LfQsNC/0L7Qu9C90LXQvdC40Y/RgtCw0LHQu9C40YbRi9GA0LXQt9GD0LvRjNGC0LDRgtCw0LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUgJyArXG4gICfRgtC40L/QuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9GH0LjRgdC70L7QstGL0YXQt9C90LDRh9C10L3QuNC50LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0LjRgdGC0L7Rh9C90LjQutCw0LTQsNC90L3Ri9GF0L/QvtC40YHQutCw0LDRgdGB0L7RhtC40LDRhtC40Lkg0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC00LXRgNC10LLQvtGA0LXRiNC10L3QuNC5ICcgK1xuICAn0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC60LvQsNGB0YLQtdGA0LjQt9Cw0YbQuNGPINGC0LjQv9C60L7Qu9C+0L3QutC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YXQvtCx0YnQsNGP0YHRgtCw0YLQuNGB0YLQuNC60LAg0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC/0L7QuNGB0LrQsNGB0YHQvtGG0LjQsNGG0LjQuSAnICtcbiAgJ9GC0LjQv9C60L7Qu9C+0L3QutC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YXQv9C+0LjRgdC60L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC10Lkg0YLQuNC/0LrQvtC70L7QvdC60LjQvNC+0LTQtdC70LjQv9GA0L7Qs9C90L7Qt9CwINGC0LjQv9C80LXRgNGL0YDQsNGB0YHRgtC+0Y/QvdC40Y/QsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9C+0YLRgdC10YfQtdC90LjRj9C/0YDQsNCy0LjQu9Cw0YHRgdC+0YbQuNCw0YbQuNC4INGC0LjQv9C/0L7Qu9GP0LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0YHRgtCw0L3QtNCw0YDRgtC40LfQsNGG0LjQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFINGC0LjQv9GD0L/QvtGA0Y/QtNC+0YfQuNCy0LDQvdC40Y/Qv9GA0LDQstC40LvQsNGB0YHQvtGG0LjQsNGG0LjQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFICcgK1xuICAn0YLQuNC/0YPQv9C+0YDRj9C00L7Rh9C40LLQsNC90LjRj9GI0LDQsdC70L7QvdC+0LLQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LXQudCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFINGC0LjQv9GD0L/RgNC+0YnQtdC90LjRj9C00LXRgNC10LLQsNGA0LXRiNC10L3QuNC5ICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtIHhtbCwganNvbiwgeHMsIGRvbSwgeGR0bywgd2ViLdGB0LXRgNCy0LjRgdGLID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3htbF9qc29uX3hzX2RvbV94ZHRvX3dzID1cbiAgJ3dz0L3QsNC/0YDQsNCy0LvQtdC90LjQtdC/0LDRgNCw0LzQtdGC0YDQsCDQstCw0YDQuNCw0L3RgnhwYXRoeHMg0LLQsNGA0LjQsNC90YLQt9Cw0L/QuNGB0LjQtNCw0YLRi2pzb24g0LLQsNGA0LjQsNC90YLQv9GA0L7RgdGC0L7Qs9C+0YLQuNC/0LB4cyDQstC40LTQs9GA0YPQv9C/0YvQvNC+0LTQtdC70Lh4cyDQstC40LTRhNCw0YHQtdGC0LB4ZHRvICcgK1xuICAn0LTQtdC50YHRgtCy0LjQtdC/0L7RgdGC0YDQvtC40YLQtdC70Y9kb20g0LfQsNCy0LXRgNGI0LXQvdC90L7RgdGC0YzQv9GA0L7RgdGC0L7Qs9C+0YLQuNC/0LB4cyDQt9Cw0LLQtdGA0YjQtdC90L3QvtGB0YLRjNGB0L7RgdGC0LDQstC90L7Qs9C+0YLQuNC/0LB4cyDQt9Cw0LLQtdGA0YjQtdC90L3QvtGB0YLRjNGB0YXQtdC80Yt4cyDQt9Cw0L/RgNC10YnQtdC90L3Ri9C10L/QvtC00YHRgtCw0L3QvtCy0LrQuHhzICcgK1xuICAn0LjRgdC60LvRjtGH0LXQvdC40Y/Qs9GA0YPQv9C/0L/QvtC00YHRgtCw0L3QvtCy0LrQuHhzINC60LDRgtC10LPQvtGA0LjRj9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0LDRgtGA0LjQsdGD0YLQsHhzINC60LDRgtC10LPQvtGA0LjRj9C+0LPRgNCw0L3QuNGH0LXQvdC40Y/QuNC00LXQvdGC0LjRh9C90L7RgdGC0Lh4cyDQutCw0YLQtdCz0L7RgNC40Y/QvtCz0YDQsNC90LjRh9C10L3QuNGP0L/RgNC+0YHRgtGA0LDQvdGB0YLQstC40LzQtdC9eHMgJyArXG4gICfQvNC10YLQvtC00L3QsNGB0LvQtdC00L7QstCw0L3QuNGPeHMg0LzQvtC00LXQu9GM0YHQvtC00LXRgNC20LjQvNC+0LPQvnhzINC90LDQt9C90LDRh9C10L3QuNC10YLQuNC/0LB4bWwg0L3QtdC00L7Qv9GD0YHRgtC40LzRi9C10L/QvtC00YHRgtCw0L3QvtCy0LrQuHhzINC+0LHRgNCw0LHQvtGC0LrQsNC/0YDQvtCx0LXQu9GM0L3Ri9GF0YHQuNC80LLQvtC70L7QsnhzINC+0LHRgNCw0LHQvtGC0LrQsNGB0L7QtNC10YDQttC40LzQvtCz0L54cyAnICtcbiAgJ9C+0LPRgNCw0L3QuNGH0LXQvdC40LXQt9C90LDRh9C10L3QuNGPeHMg0L/QsNGA0LDQvNC10YLRgNGL0L7RgtCx0L7RgNCw0YPQt9C70L7QsmRvbSDQv9C10YDQtdC90L7RgdGB0YLRgNC+0Lpqc29uINC/0L7Qt9C40YbQuNGP0LLQtNC+0LrRg9C80LXQvdGC0LVkb20g0L/RgNC+0LHQtdC70YzQvdGL0LXRgdC40LzQstC+0LvRi3htbCDRgtC40L/QsNGC0YDQuNCx0YPRgtCweG1sINGC0LjQv9C30L3QsNGH0LXQvdC40Y9qc29uICcgK1xuICAn0YLQuNC/0LrQsNC90L7QvdC40YfQtdGB0LrQvtCz0L54bWwg0YLQuNC/0LrQvtC80L/QvtC90LXQvdGC0Yt4cyDRgtC40L/Qv9GA0L7QstC10YDQutC4eG1sINGC0LjQv9GA0LXQt9GD0LvRjNGC0LDRgtCwZG9teHBhdGgg0YLQuNC/0YPQt9C70LBkb20g0YLQuNC/0YPQt9C70LB4bWwg0YTQvtGA0LzQsHhtbCDRhNC+0YDQvNCw0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y94cyAnICtcbiAgJ9GE0L7RgNC80LDRgtC00LDRgtGLanNvbiDRjdC60YDQsNC90LjRgNC+0LLQsNC90LjQtdGB0LjQvNCy0L7Qu9C+0LJqc29uICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINGB0LjRgdGC0LXQvNCwINC60L7QvNC/0L7QvdC+0LLQutC4INC00LDQvdC90YvRhSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19kYXRhX2NvbXBvc2l0aW9uX3N5c3RlbSA9XG4gICfQstC40LTRgdGA0LDQstC90LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQtNC10LnRgdGC0LLQuNC10L7QsdGA0LDQsdC+0YLQutC40YDQsNGB0YjQuNGE0YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC90LDQv9GA0LDQstC70LXQvdC40LXRgdC+0YDRgtC40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YDQsNGB0L/QvtC70L7QttC10L3QuNC10LLQu9C+0LbQtdC90L3Ri9GF0Y3Qu9C10LzQtdC90YLQvtCy0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQuNGC0L7Qs9C+0LLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQs9GA0YPQv9C/0LjRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQv9C+0LvQtdC50LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdC/0L7Qu9GP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10YDQtdC60LLQuNC30LjRgtC+0LLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdGA0LXRgdGD0YDRgdC+0LLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QsdGD0YXQs9Cw0LvRgtC10YDRgdC60L7Qs9C+0L7RgdGC0LDRgtC60LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QstGL0LLQvtC00LDRgtC10LrRgdGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9Cz0YDRg9C/0L/QuNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/Qs9GA0YPQv9C/0YvRjdC70LXQvNC10L3RgtC+0LLQvtGC0LHQvtGA0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QtNC+0L/QvtC70L3QtdC90LjRj9C/0LXRgNC40L7QtNCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgtC40L/Qt9Cw0LPQvtC70L7QstC60LDQv9C+0LvQtdC50LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0LzQsNC60LXRgtCw0LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9C80LDQutC10YLQsNC+0LHQu9Cw0YHRgtC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0L7RgdGC0LDRgtC60LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9C/0LXRgNC40L7QtNCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0YDQsNC30LzQtdGJ0LXQvdC40Y/RgtC10LrRgdGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/RgdCy0Y/Qt9C40L3QsNCx0L7RgNC+0LLQtNCw0L3QvdGL0YXQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/RjdC70LXQvNC10L3RgtCw0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdC70LXQs9C10L3QtNGL0LTQuNCw0LPRgNCw0LzQvNGL0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0L/RgNC40LzQtdC90LXQvdC40Y/QvtGC0LHQvtGA0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNC10LbQuNC80L7RgtC+0LHRgNCw0LbQtdC90LjRj9GN0LvQtdC80LXQvdGC0LDQvdCw0YHRgtGA0L7QudC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LXQttC40LzQvtGC0L7QsdGA0LDQttC10L3QuNGP0L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGB0L7RgdGC0L7Rj9C90LjQtdGN0LvQtdC80LXQvdGC0LDQvdCw0YHRgtGA0L7QudC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgdC/0L7RgdC+0LHQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNGP0L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YDQtdC20LjQvNC60L7QvNC/0L7QvdC+0LLQutC40YDQtdC30YPQu9GM0YLQsNGC0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQv9Cw0YDQsNC80LXRgtGA0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQsNCy0YLQvtC/0L7Qt9C40YbQuNGP0YDQtdGB0YPRgNGB0L7QstC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcrXG4gICfQstCw0YDQuNCw0L3RgtC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdGA0LXRgdGD0YDRgdC+0LLQstC00LjQsNCz0YDQsNC80LzQtdC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGE0LjQutGB0LDRhtC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YPRgdC70L7QstC90L7Qs9C+0L7RhNC+0YDQvNC70LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C+0YfRgtCwID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2VtYWlsID1cbiAgJ9Cy0LDQttC90L7RgdGC0YzQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7Qs9C+0YHQvtC+0LHRidC10L3QuNGPINC+0LHRgNCw0LHQvtGC0LrQsNGC0LXQutGB0YLQsNC40L3RgtC10YDQvdC10YLQv9C+0YfRgtC+0LLQvtCz0L7RgdC+0L7QsdGJ0LXQvdC40Y8g0YHQv9C+0YHQvtCx0LrQvtC00LjRgNC+0LLQsNC90LjRj9C40L3RgtC10YDQvdC10YLQv9C+0YfRgtC+0LLQvtCz0L7QstC70L7QttC10L3QuNGPICcgK1xuICAn0YHQv9C+0YHQvtCx0LrQvtC00LjRgNC+0LLQsNC90LjRj9C90LVhc2NpadGB0LjQvNCy0L7Qu9C+0LLQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7Qs9C+0YHQvtC+0LHRidC10L3QuNGPINGC0LjQv9GC0LXQutGB0YLQsNC/0L7Rh9GC0L7QstC+0LPQvtGB0L7QvtCx0YnQtdC90LjRjyDQv9GA0L7RgtC+0LrQvtC70LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0YsgJyArXG4gICfRgdGC0LDRgtGD0YHRgNCw0LfQsdC+0YDQsNC/0L7Rh9GC0L7QstC+0LPQvtGB0L7QvtCx0YnQtdC90LjRjyAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQttGD0YDQvdCw0Lsg0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19sb2dib29rID1cbiAgJ9GA0LXQttC40LzRgtGA0LDQvdC30LDQutGG0LjQuNC30LDQv9C40YHQuNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDRgdGC0LDRgtGD0YHRgtGA0LDQvdC30LDQutGG0LjQuNC30LDQv9C40YHQuNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDRg9GA0L7QstC10L3RjNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQutGA0LjQv9GC0L7Qs9GA0LDRhNC40Y8gPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfY3J5cHRvZ3JhcGh5ID1cbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdGF0YDQsNC90LjQu9C40YnQsNGB0LXRgNGC0LjRhNC40LrQsNGC0L7QstC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDRgNC10LbQuNC80LLQutC70Y7Rh9C10L3QuNGP0YHQtdGA0YLQuNGE0LjQutCw0YLQvtCy0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC4INGA0LXQttC40LzQv9GA0L7QstC10YDQutC40YHQtdGA0YLQuNGE0LjQutCw0YLQsNC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCAnICtcbiAgJ9GC0LjQv9GF0YDQsNC90LjQu9C40YnQsNGB0LXRgNGC0LjRhNC40LrQsNGC0L7QstC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSBaSVAgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfemlwID1cbiAgJ9C60L7QtNC40YDQvtCy0LrQsNC40LzQtdC90YTQsNC50LvQvtCy0LJ6aXDRhNCw0LnQu9C1INC80LXRgtC+0LTRgdC20LDRgtC40Y96aXAg0LzQtdGC0L7QtNGI0LjRhNGA0L7QstCw0L3QuNGPemlwINGA0LXQttC40LzQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNGP0L/Rg9GC0LXQudGE0LDQudC70L7QsnppcCDRgNC10LbQuNC80L7QsdGA0LDQsdC+0YLQutC40L/QvtC00LrQsNGC0LDQu9C+0LPQvtCyemlwICcgK1xuICAn0YDQtdC20LjQvNGB0L7RhdGA0LDQvdC10L3QuNGP0L/Rg9GC0LXQuXppcCDRg9GA0L7QstC10L3RjNGB0LbQsNGC0LjRj3ppcCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSBcbiAgLy8g0JHQu9C+0LrQuNGA0L7QstC60LAg0LTQsNC90L3Ri9GFLCDQpNC+0L3QvtCy0YvQtSDQt9Cw0LTQsNC90LjRjywg0JDQstGC0L7QvNCw0YLQuNC30LjRgNC+0LLQsNC90L3QvtC1INGC0LXRgdGC0LjRgNC+0LLQsNC90LjQtSxcbiAgLy8g0JTQvtGB0YLQsNCy0LvRj9C10LzRi9C1INGD0LLQtdC00L7QvNC70LXQvdC40Y8sINCS0YHRgtGA0L7QtdC90L3Ri9C1INC/0L7QutGD0L/QutC4LCDQmNC90YLQtdGA0L3QtdGCLCDQoNCw0LHQvtGC0LAg0YEg0LTQstC+0LjRh9C90YvQvNC4INC00LDQvdC90YvQvNC4ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX290aGVyID1cbiAgJ9C30LLRg9C60L7QstC+0LXQvtC/0L7QstC10YnQtdC90LjQtSDQvdCw0L/RgNCw0LLQu9C10L3QuNC10L/QtdGA0LXRhdC+0LTQsNC60YHRgtGA0L7QutC1INC/0L7Qt9C40YbQuNGP0LLQv9C+0YLQvtC60LUg0L/QvtGA0Y/QtNC+0LrQsdCw0LnRgtC+0LIg0YDQtdC20LjQvNCx0LvQvtC60LjRgNC+0LLQutC40LTQsNC90L3Ri9GFINGA0LXQttC40LzRg9C/0YDQsNCy0LvQtdC90LjRj9Cx0LvQvtC60LjRgNC+0LLQutC+0LnQtNCw0L3QvdGL0YUgJyArXG4gICfRgdC10YDQstC40YHQstGB0YLRgNC+0LXQvdC90YvRhdC/0L7QutGD0L/QvtC6INGB0L7RgdGC0L7Rj9C90LjQtdGE0L7QvdC+0LLQvtCz0L7Qt9Cw0LTQsNC90LjRjyDRgtC40L/Qv9C+0LTQv9C40YHRh9C40LrQsNC00L7RgdGC0LDQstC70Y/QtdC80YvRhdGD0LLQtdC00L7QvNC70LXQvdC40Lkg0YPRgNC+0LLQtdC90YzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C30LDRidC40YnQtdC90L3QvtCz0L7RgdC+0LXQtNC40L3QtdC90LjRj2Z0cCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgdGF0LXQvNCwINC30LDQv9GA0L7RgdCwID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3JlcXVlc3Rfc2NoZW1hID1cbiAgJ9C90LDQv9GA0LDQstC70LXQvdC40LXQv9C+0YDRj9C00LrQsNGB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCDRgtC40L/QtNC+0L/QvtC70L3QtdC90LjRj9C/0LXRgNC40L7QtNCw0LzQuNGB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCDRgtC40L/QutC+0L3RgtGA0L7Qu9GM0L3QvtC50YLQvtGH0LrQuNGB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCDRgtC40L/QvtCx0YrQtdC00LjQvdC10L3QuNGP0YHRhdC10LzRi9C30LDQv9GA0L7RgdCwICcgK1xuICAn0YLQuNC/0L/QsNGA0LDQvNC10YLRgNCw0LTQvtGB0YLRg9C/0L3QvtC50YLQsNCx0LvQuNGG0YvRgdGF0LXQvNGL0LfQsNC/0YDQvtGB0LAg0YLQuNC/0YHQvtC10LTQuNC90LXQvdC40Y/RgdGF0LXQvNGL0LfQsNC/0YDQvtGB0LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YHQstC+0LnRgdGC0LLQsCDQvtCx0YrQtdC60YLQvtCyINC80LXRgtCw0LTQsNC90L3Ri9GFID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3Byb3BlcnRpZXNfb2ZfbWV0YWRhdGFfb2JqZWN0cyA9XG4gICdodHRw0LzQtdGC0L7QtCDQsNCy0YLQvtC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L7QsdGJ0LXQs9C+0YDQtdC60LLQuNC30LjRgtCwINCw0LLRgtC+0L/RgNC10YTQuNC60YHQvdC+0LzQtdGA0LDQt9Cw0LTQsNGH0Lgg0LLQsNGA0LjQsNC90YLQstGB0YLRgNC+0LXQvdC90L7Qs9C+0Y/Qt9GL0LrQsCDQstC40LTQuNC10YDQsNGA0YXQuNC4INCy0LjQtNGA0LXQs9C40YHRgtGA0LDQvdCw0LrQvtC/0LvQtdC90LjRjyAnICtcbiAgJ9Cy0LjQtNGC0LDQsdC70LjRhtGL0LLQvdC10YjQvdC10LPQvtC40YHRgtC+0YfQvdC40LrQsNC00LDQvdC90YvRhSDQt9Cw0L/QuNGB0YzQtNCy0LjQttC10L3QuNC50L/RgNC40L/RgNC+0LLQtdC00LXQvdC40Lgg0LfQsNC/0L7Qu9C90LXQvdC40LXQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LXQuSDQuNC90LTQtdC60YHQuNGA0L7QstCw0L3QuNC1ICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQsdCw0LfRi9C/0LvQsNC90LDQstC40LTQvtCy0YDQsNGB0YfQtdGC0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQsdGL0YHRgtGA0L7Qs9C+0LLRi9Cx0L7RgNCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L7QsdGJ0LXQs9C+0YDQtdC60LLQuNC30LjRgtCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L/QvtC00YfQuNC90LXQvdC40Y8gJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC/0L7Qu9C90L7RgtC10LrRgdGC0L7QstC+0LPQvtC/0L7QuNGB0LrQsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGA0LDQt9C00LXQu9GP0LXQvNGL0YXQtNCw0L3QvdGL0YXQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNC10LrQstC40LfQuNGC0LAgJyArXG4gICfQvdCw0LfQvdCw0YfQtdC90LjQtdC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0L/RgNC40LvQvtC20LXQvdC40Y8g0L3QsNC30L3QsNGH0LXQvdC40LXRgNCw0YHRiNC40YDQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQvdCw0L/RgNCw0LLQu9C10L3QuNC10L/QtdGA0LXQtNCw0YfQuCDQvtCx0L3QvtCy0LvQtdC90LjQtdC/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3Ri9GF0LTQsNC90L3Ri9GFICcgK1xuICAn0L7Qv9C10YDQsNGC0LjQstC90L7QtdC/0YDQvtCy0LXQtNC10L3QuNC1INC+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdCy0LjQtNCw0YDQsNGB0YfQtdGC0LAg0L7RgdC90L7QstC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10LLQuNC00LDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQutC4INC+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC30LDQtNCw0YfQuCAnICtcbiAgJ9C+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC/0LvQsNC90LDQvtCx0LzQtdC90LAg0L7RgdC90L7QstC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10YHQv9GA0LDQstC+0YfQvdC40LrQsCDQvtGB0L3QvtCy0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXRgdGH0LXRgtCwINC/0LXRgNC10LzQtdGJ0LXQvdC40LXQs9GA0LDQvdC40YbRi9C/0YDQuNC/0YDQvtCy0LXQtNC10L3QuNC4ICcgK1xuICAn0L/QtdGA0LjQvtC00LjRh9C90L7RgdGC0YzQvdC+0LzQtdGA0LDQsdC40LfQvdC10YHQv9GA0L7RhtC10YHRgdCwINC/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0L3QvtC80LXRgNCw0LTQvtC60YPQvNC10L3RgtCwINC/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0YDQtdCz0LjRgdGC0YDQsNGA0LDRgdGH0LXRgtCwINC/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0YDQtdCz0LjRgdGC0YDQsNGB0LLQtdC00LXQvdC40LkgJyArXG4gICfQv9C+0LLRgtC+0YDQvdC+0LXQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCy0L7Qt9Cy0YDQsNGJ0LDQtdC80YvRhdC30L3QsNGH0LXQvdC40Lkg0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0YvQudC/0L7QuNGB0LrQv9GA0LjQstCy0L7QtNC10L/QvtGB0YLRgNC+0LrQtSDQv9GA0LjQvdCw0LTQu9C10LbQvdC+0YHRgtGM0L7QsdGK0LXQutGC0LAg0L/RgNC+0LLQtdC00LXQvdC40LUgJyArXG4gICfRgNCw0LfQtNC10LvQtdC90LjQtdCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LjQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0YDQsNC30LTQtdC70LXQvdC40LXQtNCw0L3QvdGL0YXQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0YDQsNC30LTQtdC70LXQvdC40LXRgNCw0YHRiNC40YDQtdC90LjQudC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuNC+0LHRidC10LPQvtGA0LXQutCy0LjQt9C40YLQsCAnK1xuICAn0YDQtdC20LjQvNCw0LLRgtC+0L3Rg9C80LXRgNCw0YbQuNC40L7QsdGK0LXQutGC0L7QsiDRgNC10LbQuNC80LfQsNC/0LjRgdC40YDQtdCz0LjRgdGC0YDQsCDRgNC10LbQuNC80LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/QvNC+0LTQsNC70YzQvdC+0YHRgtC4ICcgK1xuICAn0YDQtdC20LjQvNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0YHQuNC90YXRgNC+0L3QvdGL0YXQstGL0LfQvtCy0L7QstGA0LDRgdGI0LjRgNC10L3QuNC50L/Qu9Cw0YLRhNC+0YDQvNGL0LjQstC90LXRiNC90LjRhdC60L7QvNC/0L7QvdC10L3RgiDRgNC10LbQuNC80L/QvtCy0YLQvtGA0L3QvtCz0L7QuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9GB0LXQsNC90YHQvtCyICcgK1xuICAn0YDQtdC20LjQvNC/0L7Qu9GD0YfQtdC90LjRj9C00LDQvdC90YvRhdCy0YvQsdC+0YDQsNC/0YDQuNCy0LLQvtC00LXQv9C+0YHRgtGA0L7QutC1INGA0LXQttC40LzRgdC+0LLQvNC10YHRgtC40LzQvtGB0YLQuCDRgNC10LbQuNC80YHQvtCy0LzQtdGB0YLQuNC80L7RgdGC0LjQuNC90YLQtdGA0YTQtdC50YHQsCAnICtcbiAgJ9GA0LXQttC40LzRg9C/0YDQsNCy0LvQtdC90LjRj9Cx0LvQvtC60LjRgNC+0LLQutC+0LnQtNCw0L3QvdGL0YXQv9C+0YPQvNC+0LvRh9Cw0L3QuNGOINGB0LXRgNC40LjQutC+0LTQvtCy0L/Qu9Cw0L3QsNCy0LjQtNC+0LLRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDRgdC10YDQuNC40LrQvtC00L7QstC/0LvQsNC90LDRgdGH0LXRgtC+0LIgJyArXG4gICfRgdC10YDQuNC40LrQvtC00L7QstGB0L/RgNCw0LLQvtGH0L3QuNC60LAg0YHQvtC30LTQsNC90LjQtdC/0YDQuNCy0LLQvtC00LUg0YHQv9C+0YHQvtCx0LLRi9Cx0L7RgNCwINGB0L/QvtGB0L7QsdC/0L7QuNGB0LrQsNGB0YLRgNC+0LrQuNC/0YDQuNCy0LLQvtC00LXQv9C+0YHRgtGA0L7QutC1INGB0L/QvtGB0L7QsdGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8gJyArXG4gICfRgtC40L/QtNCw0L3QvdGL0YXRgtCw0LHQu9C40YbRi9Cy0L3QtdGI0L3QtdCz0L7QuNGB0YLQvtGH0L3QuNC60LDQtNCw0L3QvdGL0YUg0YLQuNC/0LrQvtC00LDQv9C70LDQvdCw0LLQuNC00L7QstGA0LDRgdGH0LXRgtCwINGC0LjQv9C60L7QtNCw0YHQv9GA0LDQstC+0YfQvdC40LrQsCDRgtC40L/QvNCw0LrQtdGC0LAg0YLQuNC/0L3QvtC80LXRgNCw0LHQuNC30L3QtdGB0L/RgNC+0YbQtdGB0YHQsCAnICtcbiAgJ9GC0LjQv9C90L7QvNC10YDQsNC00L7QutGD0LzQtdC90YLQsCDRgtC40L/QvdC+0LzQtdGA0LDQt9Cw0LTQsNGH0Lgg0YLQuNC/0YTQvtGA0LzRiyDRg9C00LDQu9C10L3QuNC10LTQstC40LbQtdC90LjQuSAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgNCw0LfQvdGL0LUgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZGlmZmVyZW50cyA9XG4gICfQstCw0LbQvdC+0YHRgtGM0L/RgNC+0LHQu9C10LzRi9C/0YDQuNC80LXQvdC10L3QuNGP0YDQsNGB0YjQuNGA0LXQvdC40Y/QutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LLQsNGA0LjQsNC90YLQuNC90YLQtdGA0YTQtdC50YHQsNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDQstCw0YDQuNCw0L3RgtC80LDRgdGI0YLQsNCx0LDRhNC+0YDQvNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyAnICtcbiAgJ9Cy0LDRgNC40LDQvdGC0L7RgdC90L7QstC90L7Qs9C+0YjRgNC40YTRgtCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINCy0LDRgNC40LDQvdGC0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0L/QtdGA0LjQvtC00LAg0LLQsNGA0LjQsNC90YLRgdGC0LDQvdC00LDRgNGC0L3QvtC50LTQsNGC0YvQvdCw0YfQsNC70LAg0LLQuNC00LPRgNCw0L3QuNGG0Ysg0LLQuNC00LrQsNGA0YLQuNC90LrQuCAnICtcbiAgJ9Cy0LjQtNC+0YLQvtCx0YDQsNC20LXQvdC40Y/Qv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L7Qv9C+0LjRgdC60LAg0LLQuNC00YDQsNC80LrQuCDQstC40LTRgdGA0LDQstC90LXQvdC40Y8g0LLQuNC00YbQstC10YLQsCDQstC40LTRh9C40YHQu9C+0LLQvtCz0L7Qt9C90LDRh9C10L3QuNGPINCy0LjQtNGI0YDQuNGE0YLQsCDQtNC+0L/Rg9GB0YLQuNC80LDRj9C00LvQuNC90LAg0LTQvtC/0YPRgdGC0LjQvNGL0LnQt9C90LDQuiAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC1Ynl0ZW9yZGVybWFyayDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC80LXRgtCw0LTQsNC90L3Ri9GF0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+0L/QvtC40YHQutCwINC40YHRgtC+0YfQvdC40LrRgNCw0YHRiNC40YDQtdC90LjQudC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQutC70LDQstC40YjQsCDQutC+0LTQstC+0LfQstGA0LDRgtCw0LTQuNCw0LvQvtCz0LAgJyArXG4gICfQutC+0LTQuNGA0L7QstC60LB4YmFzZSDQutC+0LTQuNGA0L7QstC60LDRgtC10LrRgdGC0LAg0L3QsNC/0YDQsNCy0LvQtdC90LjQtdC/0L7QuNGB0LrQsCDQvdCw0L/RgNCw0LLQu9C10L3QuNC10YHQvtGA0YLQuNGA0L7QstC60Lgg0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvRhdC00LDQvdC90YvRhSDQvtCx0L3QvtCy0LvQtdC90LjQtdC/0YDQuNC40LfQvNC10L3QtdC90LjQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQv9Cw0L3QtdC70LjRgNCw0LfQtNC10LvQvtCyINC/0YDQvtCy0LXRgNC60LDQt9Cw0L/QvtC70L3QtdC90LjRjyDRgNC10LbQuNC80LTQuNCw0LvQvtCz0LDQstC+0L/RgNC+0YEg0YDQtdC20LjQvNC30LDQv9GD0YHQutCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINGA0LXQttC40LzQvtC60YDRg9Cz0LvQtdC90LjRjyDRgNC10LbQuNC80L7RgtC60YDRi9GC0LjRj9GE0L7RgNC80L/RgNC40LvQvtC20LXQvdC40Y8gJyArXG4gICfRgNC10LbQuNC80L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+0L/QvtC40YHQutCwINGB0LrQvtGA0L7RgdGC0YzQutC70LjQtdC90YLRgdC60L7Qs9C+0YHQvtC10LTQuNC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNC10LLQvdC10YjQvdC10LPQvtC40YHRgtC+0YfQvdC40LrQsNC00LDQvdC90YvRhSDRgdC+0YHRgtC+0Y/QvdC40LXQvtCx0L3QvtCy0LvQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuNCx0LDQt9GL0LTQsNC90L3Ri9GFICcgK1xuICAn0YHQv9C+0YHQvtCx0LLRi9Cx0L7RgNCw0YHQtdGA0YLQuNGE0LjQutCw0YLQsHdpbmRvd3Mg0YHQv9C+0YHQvtCx0LrQvtC00LjRgNC+0LLQsNC90LjRj9GB0YLRgNC+0LrQuCDRgdGC0LDRgtGD0YHRgdC+0L7QsdGJ0LXQvdC40Y8g0YLQuNC/0LLQvdC10YjQvdC10LnQutC+0LzQv9C+0L3QtdC90YLRiyDRgtC40L/Qv9C70LDRgtGE0L7RgNC80Ysg0YLQuNC/0L/QvtCy0LXQtNC10L3QuNGP0LrQu9Cw0LLQuNGI0LhlbnRlciAnICtcbiAgJ9GC0LjQv9GN0LvQtdC80LXQvdGC0LDQuNC90YTQvtGA0LzQsNGG0LjQuNC+0LLRi9C/0L7Qu9C90LXQvdC40LjQvtCx0L3QvtCy0LvQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuNCx0LDQt9GL0LTQsNC90L3Ri9GFINGD0YDQvtCy0LXQvdGM0LjQt9C+0LvRj9GG0LjQuNGC0YDQsNC90LfQsNC60YbQuNC5INGF0LXRiNGE0YPQvdC60YbQuNGPINGH0LDRgdGC0LjQtNCw0YLRiyc7XG5cbiAgLy8gY2xhc3M6INCy0YHRgtGA0L7QtdC90L3Ri9C1INC90LDQsdC+0YDRiyDQt9C90LDRh9C10L3QuNC5LCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPICjRgdC+0LTQtdGA0LbQsNGCINC00L7Rh9C10YDQvdC40LUg0LfQvdCw0YfQtdC90LjRjywg0L7QsdGA0LDRidC10L3QuNGPINC6INC60L7RgtC+0YDRi9C8INGH0LXRgNC10Lcg0YDQsNC30YvQvNC10L3QvtCy0LDQvdC40LUpXG4gIHZhciBDTEFTUyA9XG4gIHY4X3N5c3RlbV9zZXRzX29mX3ZhbHVlcyArXG4gIHY4X3N5c3RlbV9lbnVtc19pbnRlcmZhY2UgK1xuICB2OF9zeXN0ZW1fZW51bXNfb2JqZWN0c19wcm9wZXJ0aWVzICtcbiAgdjhfc3lzdGVtX2VudW1zX2V4Y2hhbmdlX3BsYW5zICtcbiAgdjhfc3lzdGVtX2VudW1zX3RhYnVsYXJfZG9jdW1lbnQgK1xuICB2OF9zeXN0ZW1fZW51bXNfc2hlZHVsZXIgK1xuICB2OF9zeXN0ZW1fZW51bXNfZm9ybWF0dGVkX2RvY3VtZW50ICtcbiAgdjhfc3lzdGVtX2VudW1zX3F1ZXJ5ICtcbiAgdjhfc3lzdGVtX2VudW1zX3JlcG9ydF9idWlsZGVyICtcbiAgdjhfc3lzdGVtX2VudW1zX2ZpbGVzICtcbiAgdjhfc3lzdGVtX2VudW1zX3F1ZXJ5X2J1aWxkZXIgK1xuICB2OF9zeXN0ZW1fZW51bXNfZGF0YV9hbmFseXNpcyArXG4gIHY4X3N5c3RlbV9lbnVtc194bWxfanNvbl94c19kb21feGR0b193cyArXG4gIHY4X3N5c3RlbV9lbnVtc19kYXRhX2NvbXBvc2l0aW9uX3N5c3RlbSArXG4gIHY4X3N5c3RlbV9lbnVtc19lbWFpbCArXG4gIHY4X3N5c3RlbV9lbnVtc19sb2dib29rICtcbiAgdjhfc3lzdGVtX2VudW1zX2NyeXB0b2dyYXBoeSArXG4gIHY4X3N5c3RlbV9lbnVtc196aXAgK1xuICB2OF9zeXN0ZW1fZW51bXNfb3RoZXIgK1xuICB2OF9zeXN0ZW1fZW51bXNfcmVxdWVzdF9zY2hlbWEgK1xuICB2OF9zeXN0ZW1fZW51bXNfcHJvcGVydGllc19vZl9tZXRhZGF0YV9vYmplY3RzICtcbiAgdjhfc3lzdGVtX2VudW1zX2RpZmZlcmVudHM7XG5cbiAgLy8gdjgg0L7QsdGJ0LjQtSDQvtCx0YrQtdC60YLRiyAo0YMg0L7QsdGK0LXQutGC0L7QsiDQtdGB0YLRjCDQutC+0L3RgdGC0YDRg9C60YLQvtGALCDRjdC60LfQtdC80L/Qu9GP0YDRiyDRgdC+0LfQtNCw0Y7RgtGB0Y8g0LzQtdGC0L7QtNC+0Lwg0J3QntCS0KvQmSkgPT0+IHR5cGVcbiAgdmFyIHY4X3NoYXJlZF9vYmplY3QgPVxuICAnY29t0L7QsdGK0LXQutGCIGZ0cNGB0L7QtdC00LjQvdC10L3QuNC1IGh0dHDQt9Cw0L/RgNC+0YEgaHR0cNGB0LXRgNCy0LjRgdC+0YLQstC10YIgaHR0cNGB0L7QtdC00LjQvdC10L3QuNC1IHdz0L7Qv9GA0LXQtNC10LvQtdC90LjRjyB3c9C/0YDQvtC60YHQuCB4YmFzZSDQsNC90LDQu9C40LfQtNCw0L3QvdGL0YUg0LDQvdC90L7RgtCw0YbQuNGPeHMgJyArXG4gICfQsdC70L7QutC40YDQvtCy0LrQsNC00LDQvdC90YvRhSDQsdGD0YTQtdGA0LTQstC+0LjRh9C90YvRhdC00LDQvdC90YvRhSDQstC60LvRjtGH0LXQvdC40LV4cyDQstGL0YDQsNC20LXQvdC40LXQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQs9C10L3QtdGA0LDRgtC+0YDRgdC70YPRh9Cw0LnQvdGL0YXRh9C40YHQtdC7INCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutCw0Y/RgdGF0LXQvNCwICcgK1xuICAn0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60LjQtdC60L7QvtGA0LTQuNC90LDRgtGLINCz0YDQsNGE0LjRh9C10YHQutCw0Y/RgdGF0LXQvNCwINCz0YDRg9C/0L/QsNC80L7QtNC10LvQuHhzINC00LDQvdC90YvQtdGA0LDRgdGI0LjRhNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQtNCy0L7QuNGH0L3Ri9C10LTQsNC90L3Ri9C1INC00LXQvdC00YDQvtCz0YDQsNC80LzQsCAnICtcbiAgJ9C00LjQsNCz0YDQsNC80LzQsCDQtNC40LDQs9GA0LDQvNC80LDQs9Cw0L3RgtCwINC00LjQsNC70L7Qs9Cy0YvQsdC+0YDQsNGE0LDQudC70LAg0LTQuNCw0LvQvtCz0LLRi9Cx0L7RgNCw0YbQstC10YLQsCDQtNC40LDQu9C+0LPQstGL0LHQvtGA0LDRiNGA0LjRhNGC0LAg0LTQuNCw0LvQvtCz0YDQsNGB0L/QuNGB0LDQvdC40Y/RgNC10LPQu9Cw0LzQtdC90YLQvdC+0LPQvtC30LDQtNCw0L3QuNGPICcgK1xuICAn0LTQuNCw0LvQvtCz0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRj9GB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtC/0LXRgNC40L7QtNCwINC00LjQsNC/0LDQt9C+0L0g0LTQvtC60YPQvNC10L3RgmRvbSDQtNC+0LrRg9C80LXQvdGCaHRtbCDQtNC+0LrRg9C80LXQvdGC0LDRhtC40Y94cyDQtNC+0YHRgtCw0LLQu9GP0LXQvNC+0LXRg9Cy0LXQtNC+0LzQu9C10L3QuNC1ICcgK1xuICAn0LfQsNC/0LjRgdGMZG9tINC30LDQv9C40YHRjGZhc3RpbmZvc2V0INC30LDQv9C40YHRjGh0bWwg0LfQsNC/0LjRgdGManNvbiDQt9Cw0L/QuNGB0Yx4bWwg0LfQsNC/0LjRgdGMemlw0YTQsNC50LvQsCDQt9Cw0L/QuNGB0YzQtNCw0L3QvdGL0YUg0LfQsNC/0LjRgdGM0YLQtdC60YHRgtCwINC30LDQv9C40YHRjNGD0LfQu9C+0LJkb20gJyArXG4gICfQt9Cw0L/RgNC+0YEg0LfQsNGJ0LjRidC10L3QvdC+0LXRgdC+0LXQtNC40L3QtdC90LjQtW9wZW5zc2wg0LfQvdCw0YfQtdC90LjRj9C/0L7Qu9C10LnRgNCw0YHRiNC40YTRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LjQt9Cy0LvQtdGH0LXQvdC40LXRgtC10LrRgdGC0LAg0LjQvNC/0L7RgNGCeHMg0LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0LAgJyArXG4gICfQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7QtdGB0L7QvtCx0YnQtdC90LjQtSDQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0YvQudC/0YDQvtGE0LjQu9GMINC40L3RgtC10YDQvdC10YLQv9GA0L7QutGB0Lgg0LjQvdGC0LXRgNC90LXRgtGB0L7QtdC00LjQvdC10L3QuNC1INC40L3RhNC+0YDQvNCw0YbQuNGP0LTQu9GP0L/RgNC40LvQvtC20LXQvdC40Y94cyAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LDRgtGA0LjQsdGD0YLQsHhzINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHQvtCx0YvRgtC40Y/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0LjRgdGC0L7Rh9C90LjQutC00L7RgdGC0YPQv9C90YvRhdC90LDRgdGC0YDQvtC10LrQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C40YLQtdGA0LDRgtC+0YDRg9C30LvQvtCyZG9tINC60LDRgNGC0LjQvdC60LAg0LrQstCw0LvQuNGE0LjQutCw0YLQvtGA0YvQtNCw0YLRiyDQutCy0LDQu9C40YTQuNC60LDRgtC+0YDRi9C00LLQvtC40YfQvdGL0YXQtNCw0L3QvdGL0YUg0LrQstCw0LvQuNGE0LjQutCw0YLQvtGA0YvRgdGC0YDQvtC60Lgg0LrQstCw0LvQuNGE0LjQutCw0YLQvtGA0YvRh9C40YHQu9CwICcgK1xuICAn0LrQvtC80L/QvtC90L7QstGJ0LjQutC80LDQutC10YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC60L7QvNC/0L7QvdC+0LLRidC40LrQvdCw0YHRgtGA0L7QtdC60LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LrQvtC90YHRgtGA0YPQutGC0L7RgNC80LDQutC10YLQsNC+0YTQvtGA0LzQu9C10L3QuNGP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQutC+0L3RgdGC0YDRg9C60YLQvtGA0L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC60L7QvdGB0YLRgNGD0LrRgtC+0YDRhNC+0YDQvNCw0YLQvdC+0LnRgdGC0YDQvtC60Lgg0LvQuNC90LjRjyDQvNCw0LrQtdGC0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LzQsNC60LXRgtC+0LHQu9Cw0YHRgtC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQvNCw0LrQtdGC0L7RhNC+0YDQvNC70LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQvNCw0YHQutCweHMg0LzQtdC90LXQtNC20LXRgNC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDQvdCw0LHQvtGA0YHRhdC10Lx4bWwg0L3QsNGB0YLRgNC+0LnQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0L3QsNGB0YLRgNC+0LnQutC40YHQtdGA0LjQsNC70LjQt9Cw0YbQuNC4anNvbiAnICtcbiAgJ9C+0LHRgNCw0LHQvtGC0LrQsNC60LDRgNGC0LjQvdC+0Log0L7QsdGA0LDQsdC+0YLQutCw0YDQsNGB0YjQuNGE0YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC+0LHRhdC+0LTQtNC10YDQtdCy0LBkb20g0L7QsdGK0Y/QstC70LXQvdC40LXQsNGC0YDQuNCx0YPRgtCweHMg0L7QsdGK0Y/QstC70LXQvdC40LXQvdC+0YLQsNGG0LjQuHhzICcgK1xuICAn0L7QsdGK0Y/QstC70LXQvdC40LXRjdC70LXQvNC10L3RgtCweHMg0L7Qv9C40YHQsNC90LjQtdC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0YHQvtCx0YvRgtC40Y/QtNC+0YHRgtGD0L/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfQvtC/0LjRgdCw0L3QuNC10LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/RgdC+0LHRi9GC0LjRj9C+0YLQutCw0LfQstC00L7RgdGC0YPQv9C10LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INC+0L/QuNGB0LDQvdC40LXQvtCx0YDQsNCx0L7RgtC60LjRgNCw0YHRiNC40YTRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQvtC/0LjRgdCw0L3QuNC10L/QtdGA0LXQtNCw0LLQsNC10LzQvtCz0L7RhNCw0LnQu9CwINC+0L/QuNGB0LDQvdC40LXRgtC40L/QvtCyINC+0L/RgNC10LTQtdC70LXQvdC40LXQs9GA0YPQv9C/0YvQsNGC0YDQuNCx0YPRgtC+0LJ4cyDQvtC/0YDQtdC00LXQu9C10L3QuNC10LPRgNGD0L/Qv9GL0LzQvtC00LXQu9C4eHMgJyArXG4gICfQvtC/0YDQtdC00LXQu9C10L3QuNC10L7Qs9GA0LDQvdC40YfQtdC90LjRj9C40LTQtdC90YLQuNGH0L3QvtGB0YLQuHhzINC+0L/RgNC10LTQtdC70LXQvdC40LXQv9GA0L7RgdGC0L7Qs9C+0YLQuNC/0LB4cyDQvtC/0YDQtdC00LXQu9C10L3QuNC10YHQvtGB0YLQsNCy0L3QvtCz0L7RgtC40L/QsHhzINC+0L/RgNC10LTQtdC70LXQvdC40LXRgtC40L/QsNC00L7QutGD0LzQtdC90YLQsGRvbSAnICtcbiAgJ9C+0L/RgNC10LTQtdC70LXQvdC40Y94cGF0aHhzINC+0YLQsdC+0YDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQv9Cw0LrQtdGC0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GF0LTQvtC60YPQvNC10L3RgtC+0LIg0L/QsNGA0LDQvNC10YLRgNCy0YvQsdC+0YDQsCDQv9Cw0YDQsNC80LXRgtGA0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQv9Cw0YDQsNC80LXRgtGA0YvQt9Cw0L/QuNGB0Lhqc29uINC/0LDRgNCw0LzQtdGC0YDRi9C30LDQv9C40YHQuHhtbCDQv9Cw0YDQsNC80LXRgtGA0YvRh9GC0LXQvdC40Y94bWwg0L/QtdGA0LXQvtC/0YDQtdC00LXQu9C10L3QuNC1eHMg0L/Qu9Cw0L3QuNGA0L7QstGJ0LjQuiDQv9C+0LvQtdCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFICcgK1xuICAn0L/QvtC70LXQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQv9C+0YHRgtGA0L7QuNGC0LXQu9GMZG9tINC/0L7RgdGC0YDQvtC40YLQtdC70YzQt9Cw0L/RgNC+0YHQsCDQv9C+0YHRgtGA0L7QuNGC0LXQu9GM0L7RgtGH0LXRgtCwINC/0L7RgdGC0YDQvtC40YLQtdC70YzQvtGC0YfQtdGC0LDQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSAnICtcbiAgJ9C/0L7RgdGC0YDQvtC40YLQtdC70YzRgdGF0LXQvHhtbCDQv9C+0YLQvtC6INC/0L7RgtC+0LrQstC/0LDQvNGP0YLQuCDQv9C+0YfRgtCwINC/0L7Rh9GC0L7QstC+0LXRgdC+0L7QsdGJ0LXQvdC40LUg0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjQtXhzbCDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNC10LrQutCw0L3QvtC90LjRh9C10YHQutC+0LzRg3htbCAnICtcbiAgJ9C/0YDQvtGG0LXRgdGB0L7RgNCy0YvQstC+0LTQsNGA0LXQt9GD0LvRjNGC0LDRgtCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YXQstC60L7Qu9C70LXQutGG0LjRjtC30L3QsNGH0LXQvdC40Lkg0L/RgNC+0YbQtdGB0YHQvtGA0LLRi9Cy0L7QtNCw0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhdCy0YLQsNCx0LvQuNGH0L3Ri9C50LTQvtC60YPQvNC10L3RgiAnICtcbiAgJ9C/0YDQvtGG0LXRgdGB0L7RgNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDQt9GL0LzQtdC90L7QstCw0YLQtdC70YzQv9GA0L7RgdGC0YDQsNC90YHRgtCy0LjQvNC10L1kb20g0YDQsNC80LrQsCDRgNCw0YHQv9C40YHQsNC90LjQtdGA0LXQs9C70LDQvNC10L3RgtC90L7Qs9C+0LfQsNC00LDQvdC40Y8g0YDQsNGB0YjQuNGA0LXQvdC90L7QtdC40LzRj3htbCAnICtcbiAgJ9GA0LXQt9GD0LvRjNGC0LDRgtGH0YLQtdC90LjRj9C00LDQvdC90YvRhSDRgdCy0L7QtNC90LDRj9C00LjQsNCz0YDQsNC80LzQsCDRgdCy0Y/Qt9GM0L/QsNGA0LDQvNC10YLRgNCw0LLRi9Cx0L7RgNCwINGB0LLRj9C30YzQv9C+0YLQuNC/0YMg0YHQstGP0LfRjNC/0L7RgtC40L/Rg9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGB0LXRgNC40LDQu9C40LfQsNGC0L7RgHhkdG8gJyArXG4gICfRgdC10YDRgtC40YTQuNC60LDRgtC60LvQuNC10L3RgtCwd2luZG93cyDRgdC10YDRgtC40YTQuNC60LDRgtC60LvQuNC10L3RgtCw0YTQsNC50Lsg0YHQtdGA0YLQuNGE0LjQutCw0YLQutGA0LjQv9GC0L7Qs9GA0LDRhNC40Lgg0YHQtdGA0YLQuNGE0LjQutCw0YLRi9GD0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40YXRhtC10L3RgtGA0L7QsndpbmRvd3MgJyArXG4gICfRgdC10YDRgtC40YTQuNC60LDRgtGL0YPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjRhdGG0LXQvdGC0YDQvtCy0YTQsNC50Lsg0YHQttCw0YLQuNC10LTQsNC90L3Ri9GFINGB0LjRgdGC0LXQvNC90LDRj9C40L3RhNC+0YDQvNCw0YbQuNGPINGB0L7QvtCx0YnQtdC90LjQtdC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjiDRgdC+0YfQtdGC0LDQvdC40LXQutC70LDQstC40YggJyArXG4gICfRgdGA0LDQstC90LXQvdC40LXQt9C90LDRh9C10L3QuNC5INGB0YLQsNC90LTQsNGA0YLQvdCw0Y/QtNCw0YLQsNC90LDRh9Cw0LvQsCDRgdGC0LDQvdC00LDRgNGC0L3Ri9C50L/QtdGA0LjQvtC0INGB0YXQtdC80LB4bWwg0YHRhdC10LzQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LDQsdC70LjRh9C90YvQudC00L7QutGD0LzQtdC90YIgJyArXG4gICfRgtC10LrRgdGC0L7QstGL0LnQtNC+0LrRg9C80LXQvdGCINGC0LXRgdGC0LjRgNGD0LXQvNC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtSDRgtC40L/QtNCw0L3QvdGL0YV4bWwg0YPQvdC40LrQsNC70YzQvdGL0LnQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRhNCw0LHRgNC40LrQsHhkdG8g0YTQsNC50Lsg0YTQsNC50LvQvtCy0YvQudC/0L7RgtC+0LogJyArXG4gICfRhNCw0YHQtdGC0LTQu9C40L3Ri3hzINGE0LDRgdC10YLQutC+0LvQuNGH0LXRgdGC0LLQsNGA0LDQt9GA0Y/QtNC+0LLQtNGA0L7QsdC90L7QudGH0LDRgdGC0Lh4cyDRhNCw0YHQtdGC0LzQsNC60YHQuNC80LDQu9GM0L3QvtCz0L7QstC60LvRjtGH0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj3hzICcgK1xuICAn0YTQsNGB0LXRgtC80LDQutGB0LjQvNCw0LvRjNC90L7Qs9C+0LjRgdC60LvRjtGH0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj3hzINGE0LDRgdC10YLQvNCw0LrRgdC40LzQsNC70YzQvdC+0LnQtNC70LjQvdGLeHMg0YTQsNGB0LXRgtC80LjQvdC40LzQsNC70YzQvdC+0LPQvtCy0LrQu9GO0YfQsNGO0YnQtdCz0L7Qt9C90LDRh9C10L3QuNGPeHMgJyArXG4gICfRhNCw0YHQtdGC0LzQuNC90LjQvNCw0LvRjNC90L7Qs9C+0LjRgdC60LvRjtGH0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj3hzINGE0LDRgdC10YLQvNC40L3QuNC80LDQu9GM0L3QvtC50LTQu9C40L3Ri3hzINGE0LDRgdC10YLQvtCx0YDQsNC30YbQsHhzINGE0LDRgdC10YLQvtCx0YnQtdCz0L7QutC+0LvQuNGH0LXRgdGC0LLQsNGA0LDQt9GA0Y/QtNC+0LJ4cyAnICtcbiAgJ9GE0LDRgdC10YLQv9C10YDQtdGH0LjRgdC70LXQvdC40Y94cyDRhNCw0YHQtdGC0L/RgNC+0LHQtdC70YzQvdGL0YXRgdC40LzQstC+0LvQvtCyeHMg0YTQuNC70YzRgtGA0YPQt9C70L7QsmRvbSDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QvdCw0Y/RgdGC0YDQvtC60LAg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90L3Ri9C50LTQvtC60YPQvNC10L3RgiAnICtcbiAgJ9GE0YDQsNCz0LzQtdC90YJ4cyDRhdC10YjQuNGA0L7QstCw0L3QuNC10LTQsNC90L3Ri9GFINGF0YDQsNC90LjQu9C40YnQtdC30L3QsNGH0LXQvdC40Y8g0YbQstC10YIg0YfRgtC10L3QuNC1ZmFzdGluZm9zZXQg0YfRgtC10L3QuNC1aHRtbCDRh9GC0LXQvdC40LVqc29uINGH0YLQtdC90LjQtXhtbCDRh9GC0LXQvdC40LV6aXDRhNCw0LnQu9CwICcgK1xuICAn0YfRgtC10L3QuNC10LTQsNC90L3Ri9GFINGH0YLQtdC90LjQtdGC0LXQutGB0YLQsCDRh9GC0LXQvdC40LXRg9C30LvQvtCyZG9tINGI0YDQuNGE0YIg0Y3Qu9C10LzQtdC90YLRgNC10LfRg9C70YzRgtCw0YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICc7XG5cbiAgLy8gdjgg0YPQvdC40LLQtdGA0YHQsNC70YzQvdGL0LUg0LrQvtC70LvQtdC60YbQuNC4INC30L3QsNGH0LXQvdC40LkgPT0+IHR5cGVcbiAgdmFyIHY4X3VuaXZlcnNhbF9jb2xsZWN0aW9uID1cbiAgJ2NvbXNhZmVhcnJheSDQtNC10YDQtdCy0L7Qt9C90LDRh9C10L3QuNC5INC80LDRgdGB0LjQsiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40LUg0YHQv9C40YHQvtC60LfQvdCw0YfQtdC90LjQuSDRgdGC0YDRg9C60YLRg9GA0LAg0YLQsNCx0LvQuNGG0LDQt9C90LDRh9C10L3QuNC5INGE0LjQutGB0LjRgNC+0LLQsNC90L3QsNGP0YHRgtGA0YPQutGC0YPRgNCwICcgK1xuICAn0YTQuNC60YHQuNGA0L7QstCw0L3QvdC+0LXRgdC+0L7RgtCy0LXRgtGB0YLQstC40LUg0YTQuNC60YHQuNGA0L7QstCw0L3QvdGL0LnQvNCw0YHRgdC40LIgJztcblxuICAvLyB0eXBlIDog0LLRgdGC0YDQvtC10L3QvdGL0LUg0YLQuNC/0YtcbiAgdmFyIFRZUEUgPVxuICB2OF9zaGFyZWRfb2JqZWN0ICtcbiAgdjhfdW5pdmVyc2FsX2NvbGxlY3Rpb247XG5cbiAgLy8gbGl0ZXJhbCA6INC/0YDQuNC80LjRgtC40LLQvdGL0LUg0YLQuNC/0YtcbiAgdmFyIExJVEVSQUwgPSAnbnVsbCDQuNGB0YLQuNC90LAg0LvQvtC20Ywg0L3QtdC+0L/RgNC10LTQtdC70LXQvdC+JztcbiAgXG4gIC8vIG51bWJlciA6INGH0LjRgdC70LBcbiAgdmFyIE5VTUJFUlMgPSBobGpzLmluaGVyaXQoaGxqcy5OVU1CRVJfTU9ERSk7XG5cbiAgLy8gc3RyaW5nIDog0YHRgtGA0L7QutC4XG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcInxcXFxcfCcsIGVuZDogJ1wifCQnLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XVxuICB9O1xuXG4gIC8vIG51bWJlciA6INC00LDRgtGLXG4gIHZhciBEQVRFID0ge1xuICAgIGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIiwgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGR7NH0oW1xcXFwuXFxcXFxcXFwvOi1dP1xcXFxkezJ9KXswLDV9J1xuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgXG4gIC8vIGNvbW1lbnQgOiDQutC+0LzQvNC10L3RgtCw0YDQuNC4XG4gIHZhciBDT01NRU5UUyA9IGhsanMuaW5oZXJpdChobGpzLkNfTElORV9DT01NRU5UX01PREUpO1xuICBcbiAgLy8gbWV0YSA6INC40L3RgdGC0YDRg9C60YbQuNC4INC/0YDQtdC/0YDQvtGG0LXRgdGB0L7RgNCwLCDQtNC40YDQtdC60YLQuNCy0Ysg0LrQvtC80L/QuNC70Y/RhtC40LhcbiAgdmFyIE1FVEEgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBiZWdpbjogJyN8JicsIGVuZDogJyQnLFxuICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6IEtFWVdPUkQgKyBNRVRBS0VZV09SRH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIENPTU1FTlRTXG4gICAgXVxuICB9O1xuICBcbiAgLy8gc3ltYm9sIDog0LzQtdGC0LrQsCBnb3RvXG4gIHZhciBTWU1CT0wgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ34nLCBlbmQ6ICc7fDonLCBleGNsdWRlRW5kOiB0cnVlXG4gIH07ICBcbiAgXG4gIC8vIGZ1bmN0aW9uIDog0L7QsdGK0Y/QstC70LXQvdC40LUg0L/RgNC+0YbQtdC00YPRgCDQuCDRhNGD0L3QutGG0LjQuVxuICB2YXIgRlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ9C/0YDQvtGG0LXQtNGD0YDQsHzRhNGD0L3QutGG0LjRjycsIGVuZDogJ1xcXFwpJywga2V5d29yZHM6ICfQv9GA0L7RhtC10LTRg9GA0LAg0YTRg9C90LrRhtC40Y8nfSxcbiAgICAgIHtiZWdpbjogJ9C60L7QvdC10YbQv9GA0L7RhtC10LTRg9GA0Yt80LrQvtC90LXRhtGE0YPQvdC60YbQuNC4Jywga2V5d29yZHM6ICfQutC+0L3QtdGG0L/RgNC+0YbQtdC00YPRgNGLINC60L7QvdC10YbRhNGD0L3QutGG0LjQuCd9XG4gICAgXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLCBlbmRzUGFyZW50IDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgICAgIGJlZ2luOiBVTkRFUlNDT1JFX0lERU5UX1JFLCBlbmQ6ICcsJywgZXhjbHVkZUVuZDogdHJ1ZSwgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICBrZXl3b3JkOiAn0LfQvdCw0YcnLFxuICAgICAgICAgICAgICBsaXRlcmFsOiBMSVRFUkFMXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgU1RSSU5HUyxcbiAgICAgICAgICAgICAgREFURVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgQ09NTUVOVFNcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogVU5ERVJTQ09SRV9JREVOVF9SRX0pXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JELFxuICAgICAgYnVpbHRfaW46IEJVSUxUSU4sXG4gICAgICBjbGFzczogQ0xBU1MsXG4gICAgICB0eXBlOiBUWVBFLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIE1FVEEsXG4gICAgICBGVU5DVElPTixcbiAgICAgIENPTU1FTlRTLFxuICAgICAgU1lNQk9MLFxuICAgICAgTlVNQkVSUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBEQVRFXG4gICAgXSAgXG4gIH1cbn07IiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBsb3cgPSByZXF1aXJlKCcuL2xpYi9jb3JlLmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBsb3dcblxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJzFjJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvMWMnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhYm5mJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYWJuZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhY2Nlc3Nsb2cnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY2Nlc3Nsb2cnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhY3Rpb25zY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY3Rpb25zY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FkYScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FkYScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhbmdlbHNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FuZ2Vsc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcGFjaGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcGFjaGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnYXBwbGVzY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcHBsZXNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXJjYWRlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXJjYWRlJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3BwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3BwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXJkdWlubycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FyZHVpbm8nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcm1hc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcm1hc20nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd4bWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94bWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhc2NpaWRvYycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FzY2lpZG9jJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXNwZWN0aicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FzcGVjdGonKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnYXV0b2hvdGtleScsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9ob3RrZXknKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F1dG9pdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9pdCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F2cmFzbScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F2cmFzbScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F3aycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F3aycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F4YXB0YScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F4YXB0YScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2Jhc2gnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9iYXNoJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYmFzaWMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9iYXNpYycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2JuZicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2JuZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdicmFpbmZ1Y2snLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9icmFpbmZ1Y2snKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NhbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NhbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdjYXBucHJvdG8nLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jYXBucHJvdG8nKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NleWxvbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NleWxvbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NsZWFuJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2xlYW4nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjbG9qdXJlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2xvanVyZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdjbG9qdXJlLXJlcGwnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbG9qdXJlLXJlcGwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NtYWtlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY21ha2UnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnY29mZmVlc2NyaXB0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29mZmVlc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjb3EnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb3EnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjb3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb3MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjcm1zaCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NybXNoJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3J5c3RhbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NyeXN0YWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3NwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3NwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3NzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3NzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2QnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXJrZG93bicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hcmtkb3duJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZGFydCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RhcnQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkZWxwaGknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kZWxwaGknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkaWZmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZGlmZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RqYW5nbycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RqYW5nbycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RucycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RucycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdkb2NrZXJmaWxlJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9ja2VyZmlsZScpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZG9zJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9zJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZHNjb25maWcnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kc2NvbmZpZycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2R0cycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2R0cycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2R1c3QnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kdXN0JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZWJuZicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VibmYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlbGl4aXInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbGl4aXInKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlbG0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbG0nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdydWJ5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnVieScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2VyYicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VyYicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdlcmxhbmctcmVwbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy1yZXBsJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlcmxhbmcnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lcmxhbmcnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdleGNlbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2V4Y2VsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZml4JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZml4JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZmxpeCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZsaXgnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdmb3J0cmFuJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZm9ydHJhbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2ZzaGFycCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZzaGFycCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2dhbXMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nYW1zJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ2F1c3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nYXVzcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2djb2RlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2NvZGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdnaGVya2luJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2hlcmtpbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2dsc2wnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbHNsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ21sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ21sJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ28nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2dvbG8nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nb2xvJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ3JhZGxlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3JhZGxlJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ3Jvb3Z5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3Jvb3Z5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaGFtbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnaGFuZGxlYmFycycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbmRsZWJhcnMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2hhc2tlbGwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYXNrZWxsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaGF4ZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hheGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdoc3AnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oc3AnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdodG1sYmFycycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0bWxiYXJzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaHR0cCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0dHAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdoeScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaW5mb3JtNycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2luZm9ybTcnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdpbmknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pbmknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdpcnBmOTAnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pcnBmOTAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdpc2JsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaXNibCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2phdmEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2phdmFzY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnamJvc3MtY2xpJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamJvc3MtY2xpJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdqc29uJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvanNvbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2p1bGlhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvanVsaWEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnanVsaWEtcmVwbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLXJlcGwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2tvdGxpbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2tvdGxpbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xhc3NvJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGFzc28nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsZGlmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGRpZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xlYWYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sZWFmJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbGVzcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xlc3MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsaXNwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGlzcCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdsaXZlY29kZXNlcnZlcicsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpdmVjb2Rlc2VydmVyJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnbGl2ZXNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpdmVzY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xsdm0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sbHZtJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbHNsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbHNsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbHVhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbHVhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbWFrZWZpbGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYWtlZmlsZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdtYXRoZW1hdGljYScsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hdGhlbWF0aWNhJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXRsYWInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXRsYWInKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXhpbWEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXhpbWEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtZWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tZWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtZXJjdXJ5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWVyY3VyeScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21pcHNhc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXBzYXNtJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbWl6YXInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXphcicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3BlcmwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wZXJsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ21vam9saWNpb3VzJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9qb2xpY2lvdXMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21vbmtleScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21vbmtleScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdtb29uc2NyaXB0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9vbnNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbjFxbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL24xcWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCduZ2lueCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25naW54JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbmltcm9kJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbmltcm9kJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbml4JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbml4JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbnNpcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25zaXMnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnb2JqZWN0aXZlYycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL29iamVjdGl2ZWMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ29jYW1sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb2NhbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdvcGVuc2NhZCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL29wZW5zY2FkJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnb3h5Z2VuZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL294eWdlbmUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwYXJzZXIzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGFyc2VyMycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3BmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwZ3NxbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Bnc3FsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncGhwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGhwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3BsYWludGV4dCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BsYWludGV4dCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncG9ueScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BvbnknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncG93ZXJzaGVsbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Bvd2Vyc2hlbGwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdwcm9jZXNzaW5nJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvY2Vzc2luZycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncHJvZmlsZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb2ZpbGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwcm9sb2cnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9sb2cnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncHJvcGVydGllcycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb3BlcnRpZXMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Byb3RvYnVmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvdG9idWYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwdXBwZXQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wdXBwZXQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncHVyZWJhc2ljJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHVyZWJhc2ljJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdweXRob24nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9weXRob24nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdxJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3FtbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3FtbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3InLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncmVhc29ubWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yZWFzb25tbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3JpYicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JpYicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3JvYm9jb25mJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcm9ib2NvbmYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdyb3V0ZXJvcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvdXRlcm9zJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncnNsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnNsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3J1bGVzbGFuZ3VhZ2UnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ydWxlc2xhbmd1YWdlJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdydXN0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnVzdCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NhcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NhcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NjYWxhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2NhbGEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzY2hlbWUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2hlbWUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzY2lsYWInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2lsYWInKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzY3NzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2NzcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NoZWxsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2hlbGwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzbWFsaScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NtYWxpJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3NtYWxsdGFsaycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NtYWxsdGFsaycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc21sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21sJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3FmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3FmJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3FsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3FsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3RhbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N0YW4nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzdGF0YScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N0YXRhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3RlcDIxJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3RlcDIxJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3R5bHVzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3R5bHVzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3VidW5pdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N1YnVuaXQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzd2lmdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N3aWZ0JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3RhZ2dlcnNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RhZ2dlcnNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgneWFtbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3lhbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0YXAnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90YXAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0Y2wnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90Y2wnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0ZXgnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90ZXgnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0aHJpZnQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90aHJpZnQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0cCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndHdpZycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R3aWcnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAndHlwZXNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R5cGVzY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3ZhbGEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YWxhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndmJuZXQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92Ym5ldCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Zic2NyaXB0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmJzY3JpcHQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAndmJzY3JpcHQtaHRtbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LWh0bWwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Zlcmlsb2cnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92ZXJpbG9nJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndmhkbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZoZGwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd2aW0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92aW0nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd4ODZhc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94ODZhc20nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd4bCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3hsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgneHF1ZXJ5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveHF1ZXJ5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnemVwaGlyJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvemVwaGlyJykpXG4iLCJpbXBvcnQgbG93IGZyb20gJ2xvd2xpZ2h0J1xuaW1wb3J0IHZpc2l0IGZyb20gJ3VuaXN0LXV0aWwtdmlzaXQnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGF0dGFjaGVyKHtpbmNsdWRlLCBleGNsdWRlfSA9IHt9KSB7XG4gIHJldHVybiBhc3QgPT4gdmlzaXQoYXN0LCAnY29kZScsIHZpc2l0b3IpXG5cbiAgZnVuY3Rpb24gdmlzaXRvcihub2RlKSB7XG4gICAgbGV0IHtsYW5nLCBkYXRhfSA9IG5vZGVcblxuICAgIGlmIChcbiAgICAgICFsYW5nIHx8XG4gICAgICAoaW5jbHVkZSAmJiBpbmNsdWRlLmluZGV4T2YobGFuZykgPT09IC0xKSB8fFxuICAgICAgKGV4Y2x1ZGUgJiYgZXhjbHVkZS5pbmRleE9mKGxhbmcpICE9PSAtMSlcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghZGF0YSkge1xuICAgICAgZGF0YSA9IHt9XG4gICAgICBub2RlLmRhdGEgPSBkYXRhXG4gICAgfVxuXG4gICAgaWYgKCFkYXRhLmhQcm9wZXJ0aWVzKSB7XG4gICAgICBkYXRhLmhQcm9wZXJ0aWVzID0ge31cbiAgICB9XG5cbiAgICBkYXRhLmhDaGlsZHJlbiA9IGxvdy5oaWdobGlnaHQobGFuZywgbm9kZS52YWx1ZSkudmFsdWVcbiAgICBkYXRhLmhQcm9wZXJ0aWVzLmNsYXNzTmFtZSA9IFtcbiAgICAgICdobGpzJyxcbiAgICAgIC4uLihkYXRhLmhQcm9wZXJ0aWVzLmNsYXNzTmFtZSB8fCBbXSksXG4gICAgICAnbGFuZ3VhZ2UtJyArIGxhbmdcbiAgICBdXG4gIH1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHZhciByZWdleGVzID0ge1xuICAgICAgICBydWxlRGVjbGFyYXRpb246IFwiXlthLXpBLVpdW2EtekEtWjAtOS1dKlwiLFxuICAgICAgICB1bmV4cGVjdGVkQ2hhcnM6IFwiWyFAIyReJicsPyt+YHw6XVwiXG4gICAgfTtcblxuICAgIHZhciBrZXl3b3JkcyA9IFtcbiAgICAgICAgXCJBTFBIQVwiLFxuICAgICAgICBcIkJJVFwiLFxuICAgICAgICBcIkNIQVJcIixcbiAgICAgICAgXCJDUlwiLFxuICAgICAgICBcIkNSTEZcIixcbiAgICAgICAgXCJDVExcIixcbiAgICAgICAgXCJESUdJVFwiLFxuICAgICAgICBcIkRRVU9URVwiLFxuICAgICAgICBcIkhFWERJR1wiLFxuICAgICAgICBcIkhUQUJcIixcbiAgICAgICAgXCJMRlwiLFxuICAgICAgICBcIkxXU1BcIixcbiAgICAgICAgXCJPQ1RFVFwiLFxuICAgICAgICBcIlNQXCIsXG4gICAgICAgIFwiVkNIQVJcIixcbiAgICAgICAgXCJXU1BcIlxuICAgIF07XG5cbiAgICB2YXIgY29tbWVudE1vZGUgPSBobGpzLkNPTU1FTlQoXCI7XCIsIFwiJFwiKTtcblxuICAgIHZhciB0ZXJtaW5hbEJpbmFyeU1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC8lYlswLTFdKygtWzAtMV0rfChcXC5bMC0xXSspKyl7MCwxfS9cbiAgICB9O1xuXG4gICAgdmFyIHRlcm1pbmFsRGVjaW1hbE1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC8lZFswLTldKygtWzAtOV0rfChcXC5bMC05XSspKyl7MCwxfS9cbiAgICB9O1xuXG4gICAgdmFyIHRlcm1pbmFsSGV4YWRlY2ltYWxNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwic3ltYm9sXCIsXG4gICAgICAgIGJlZ2luOiAvJXhbMC05QS1GXSsoLVswLTlBLUZdK3woXFwuWzAtOUEtRl0rKSspezAsMX0vLFxuICAgIH07XG5cbiAgICB2YXIgY2FzZVNlbnNpdGl2aXR5SW5kaWNhdG9yTW9kZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInN5bWJvbFwiLFxuICAgICAgICBiZWdpbjogLyVbc2ldL1xuICAgIH07XG5cbiAgICB2YXIgcnVsZURlY2xhcmF0aW9uTW9kZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImF0dHJpYnV0ZVwiLFxuICAgICAgICBiZWdpbjogcmVnZXhlcy5ydWxlRGVjbGFyYXRpb24gKyAnKD89XFxcXHMqPSknLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWxsZWdhbDogcmVnZXhlcy51bmV4cGVjdGVkQ2hhcnMsXG4gICAgICBrZXl3b3Jkczoga2V5d29yZHMuam9pbihcIiBcIiksXG4gICAgICBjb250YWluczogW1xuICAgICAgICAgIHJ1bGVEZWNsYXJhdGlvbk1vZGUsXG4gICAgICAgICAgY29tbWVudE1vZGUsXG4gICAgICAgICAgdGVybWluYWxCaW5hcnlNb2RlLFxuICAgICAgICAgIHRlcm1pbmFsRGVjaW1hbE1vZGUsXG4gICAgICAgICAgdGVybWluYWxIZXhhZGVjaW1hbE1vZGUsXG4gICAgICAgICAgY2FzZVNlbnNpdGl2aXR5SW5kaWNhdG9yTW9kZSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICAgIF1cbiAgICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9NZXRob2RzXG4gIHZhciBIVFRQX1ZFUkJTID0gW1xuICAgIFwiR0VUXCIsIFwiUE9TVFwiLCBcIkhFQURcIiwgXCJQVVRcIiwgXCJERUxFVEVcIiwgXCJDT05ORUNUXCIsIFwiT1BUSU9OU1wiLCBcIlBBVENIXCIsIFwiVFJBQ0VcIlxuICBdXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIC8vIElQXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxkezEsM31cXFxcLlxcXFxkezEsM31cXFxcLlxcXFxkezEsM31cXFxcLlxcXFxkezEsM30oOlxcXFxkezEsNX0pP1xcXFxiJyxcbiAgICAgICAgcmVsZXZhbmNlOjVcbiAgICAgIH0sXG4gICAgICAvLyBPdGhlciBudW1iZXJzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJcXFxcZCtcXFxcYicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIFJlcXVlc3RzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCIoJyArIEhUVFBfVkVSQlMuam9pbihcInxcIikgKyAnKScsIGVuZDogJ1wiJyxcbiAgICAgICAga2V5d29yZHM6IEhUVFBfVkVSQlMuam9pbihcIiBcIiksXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogNSxcbiAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgYmVnaW46ICdIVFRQL1sxMl1cXFxcLlxcXFxkJyxcbiAgICAgICAgICByZWxldmFuY2U6NVxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgIC8vIERhdGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIC8vIGRhdGVzIG11c3QgaGF2ZSBhIGNlcnRhaW4gbGVuZ3RoLCB0aGlzIHByZXZlbnRzIG1hdGNoaW5nXG4gICAgICAgIC8vIHNpbXBsZSBhcnJheSBhY2Nlc3NlcyBhWzEyM10gYW5kIFtdIGFuZCBvdGhlciBjb21tb24gcGF0dGVybnNcbiAgICAgICAgLy8gZm91bmQgaW4gb3RoZXIgbGFuZ3VhZ2VzXG4gICAgICAgIGJlZ2luOiAvXFxbXFxkW15cXF1cXG5dezgsfVxcXS8sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBVc2VyIGFnZW50IC8gcmVsZXZhbmNlIGJvb3N0XG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCJNb3ppbGxhL1xcXFxkXFxcXC5cXFxcZCBcXFxcXFwoJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDNcbiAgICAgIH0sXG4gICAgICAvLyBTdHJpbmdzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSA9ICdbYS16QS1aXyRdW2EtekEtWjAtOV8kXSonO1xuICB2YXIgSURFTlRfRlVOQ19SRVRVUk5fVFlQRV9SRSA9ICcoWypdfFthLXpBLVpfJF1bYS16QS1aMC05XyRdKiknO1xuXG4gIHZhciBBUzNfUkVTVF9BUkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdyZXN0X2FyZycsXG4gICAgYmVnaW46ICdbLl17M30nLCBlbmQ6IElERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMTBcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnYXMnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2FzIGJyZWFrIGNhc2UgY2F0Y2ggY2xhc3MgY29uc3QgY29udGludWUgZGVmYXVsdCBkZWxldGUgZG8gZHluYW1pYyBlYWNoICcgK1xuICAgICAgICAnZWxzZSBleHRlbmRzIGZpbmFsIGZpbmFsbHkgZm9yIGZ1bmN0aW9uIGdldCBpZiBpbXBsZW1lbnRzIGltcG9ydCBpbiBpbmNsdWRlICcgK1xuICAgICAgICAnaW5zdGFuY2VvZiBpbnRlcmZhY2UgaW50ZXJuYWwgaXMgbmFtZXNwYWNlIG5hdGl2ZSBuZXcgb3ZlcnJpZGUgcGFja2FnZSBwcml2YXRlICcgK1xuICAgICAgICAncHJvdGVjdGVkIHB1YmxpYyByZXR1cm4gc2V0IHN0YXRpYyBzdXBlciBzd2l0Y2ggdGhpcyB0aHJvdyB0cnkgdHlwZW9mIHVzZSB2YXIgdm9pZCAnICtcbiAgICAgICAgJ3doaWxlIHdpdGgnLFxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3BhY2thZ2UnLCBlbmQ6ICd7JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlRJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW1wb3J0IGluY2x1ZGUnLCBlbmQ6ICc7JyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2ltcG9ydCBpbmNsdWRlJ31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnW3s7XScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcUycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIEFTM19SRVNUX0FSR19NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJzpcXFxccyonICsgSURFTlRfRlVOQ19SRVRVUk5fVFlQRV9SRVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuTUVUSE9EX0dVQVJEXG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvIy9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBXZSB0cnkgdG8gc3VwcG9ydCBmdWxsIEFkYTIwMTJcbi8vXG4vLyBXZSBoaWdobGlnaHQgYWxsIGFwcGVhcmFuY2VzIG9mIHR5cGVzLCBrZXl3b3JkcywgbGl0ZXJhbHMgKHN0cmluZywgY2hhciwgbnVtYmVyLCBib29sKVxuLy8gYW5kIHRpdGxlcyAodXNlciBkZWZpbmVkIGZ1bmN0aW9uL3Byb2NlZHVyZS9wYWNrYWdlKVxuLy8gQ1NTIGNsYXNzZXMgYXJlIHNldCBhY2NvcmRpbmdseVxuLy9cbi8vIExhbmd1YWdlcyBjYXVzaW5nIHByb2JsZW1zIGZvciBsYW5ndWFnZSBkZXRlY3Rpb246XG4vLyB4bWwgKGJyb2tlbiBieSBGb28gOiBCYXIgdHlwZSksIGVsbSAoYnJva2VuIGJ5IEZvbyA6IEJhciB0eXBlKSwgdmJzY3JpcHQtaHRtbCAoYnJva2VuIGJ5IGJvZHkga2V5d29yZClcbi8vIHNxbCAoYWRhIGRlZmF1bHQudHh0IGhhcyBhIGxvdCBvZiBzcWwga2V5d29yZHMpXG5cbmZ1bmN0aW9uKGhsanMpIHtcbiAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIEFkYSBudW1lcmljIGxpdGVyYWxzLlxuICAgIC8vIHN0b2xlbiBmb3JtIHRoZSBWSERMIGhpZ2hsaWdodGVyXG5cbiAgICAvLyBEZWNpbWFsIGxpdGVyYWw6XG4gICAgdmFyIElOVEVHRVJfUkUgPSAnXFxcXGQoX3xcXFxcZCkqJztcbiAgICB2YXIgRVhQT05FTlRfUkUgPSAnW2VFXVstK10/JyArIElOVEVHRVJfUkU7XG4gICAgdmFyIERFQ0lNQUxfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnKFxcXFwuJyArIElOVEVHRVJfUkUgKyAnKT8nICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuXG4gICAgLy8gQmFzZWQgbGl0ZXJhbDpcbiAgICB2YXIgQkFTRURfSU5URUdFUl9SRSA9ICdcXFxcdysnO1xuICAgIHZhciBCQVNFRF9MSVRFUkFMX1JFID0gSU5URUdFUl9SRSArICcjJyArIEJBU0VEX0lOVEVHRVJfUkUgKyAnKFxcXFwuJyArIEJBU0VEX0lOVEVHRVJfUkUgKyAnKT8nICsgJyMnICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuXG4gICAgdmFyIE5VTUJFUl9SRSA9ICdcXFxcYignICsgQkFTRURfTElURVJBTF9SRSArICd8JyArIERFQ0lNQUxfTElURVJBTF9SRSArICcpJztcblxuICAgIC8vIElkZW50aWZpZXIgcmVnZXhcbiAgICB2YXIgSURfUkVHRVggPSAnW0EtWmEtel0oXz9bQS1aYS16MC05Ll0pKic7XG5cbiAgICAvLyBiYWQgY2hhcnMsIG9ubHkgYWxsb3dlZCBpbiBsaXRlcmFsc1xuICAgIHZhciBCQURfQ0hBUlMgPSAnW117fSUjXFwnXFxcIidcblxuICAgIC8vIEFkYSBkb2Vzbid0IGhhdmUgYmxvY2sgY29tbWVudHMsIG9ubHkgbGluZSBjb21tZW50c1xuICAgIHZhciBDT01NRU5UUyA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuXG4gICAgLy8gdmFyaWFibGUgZGVjbGFyYXRpb25zIG9mIHRoZSBmb3JtXG4gICAgLy8gRm9vIDogQmFyIDo9IEJhejtcbiAgICAvLyB3aGVyZSBvbmx5IEJhciB3aWxsIGJlIGhpZ2hsaWdodGVkXG4gICAgdmFyIFZBUl9ERUNMUyA9IHtcbiAgICAgICAgLy8gVE9ETzogVGhlc2Ugc3BhY2VzIGFyZSBub3QgcmVxdWlyZWQgYnkgdGhlIEFkYSBzeW50YXhcbiAgICAgICAgLy8gaG93ZXZlciwgSSBoYXZlIHlldCB0byBzZWUgaGFuZHdyaXR0ZW4gQWRhIGNvZGUgd2hlcmVcbiAgICAgICAgLy8gc29tZW9uZSBkb2VzIG5vdCBwdXQgc3BhY2VzIGFyb3VuZCA6XG4gICAgICAgIGJlZ2luOiAnXFxcXHMrOlxcXFxzKycsIGVuZDogJ1xcXFxzKig6PXw7fFxcXFwpfD0+fCQpJyxcbiAgICAgICAgLy8gZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIC8vIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gd29ya2Fyb3VuZCB0byBhdm9pZCBoaWdobGlnaHRpbmdcbiAgICAgICAgICAgICAgICAvLyBuYW1lZCBsb29wcyBhbmQgZGVjbGFyZSBibG9ja3NcbiAgICAgICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnbG9vcCBmb3IgZGVjbGFyZSBvdGhlcnMnLFxuICAgICAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIHByb3Blcmx5IGhpZ2hsaWdodCBhbGwgbW9kaWZpZXJzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ25vdCBudWxsIGNvbnN0YW50IGFjY2VzcyBmdW5jdGlvbiBwcm9jZWR1cmUgaW4gb3V0IGFsaWFzZWQgZXhjZXB0aW9uJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogSURfUkVHRVgsXG4gICAgICAgICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAgICAgJ2Fib3J0IGVsc2UgbmV3IHJldHVybiBhYnMgZWxzaWYgbm90IHJldmVyc2UgYWJzdHJhY3QgZW5kICcgK1xuICAgICAgICAgICAgICAgICdhY2NlcHQgZW50cnkgc2VsZWN0IGFjY2VzcyBleGNlcHRpb24gb2Ygc2VwYXJhdGUgYWxpYXNlZCBleGl0IG9yIHNvbWUgJyArXG4gICAgICAgICAgICAgICAgJ2FsbCBvdGhlcnMgc3VidHlwZSBhbmQgZm9yIG91dCBzeW5jaHJvbml6ZWQgYXJyYXkgZnVuY3Rpb24gb3ZlcnJpZGluZyAnICtcbiAgICAgICAgICAgICAgICAnYXQgdGFnZ2VkIGdlbmVyaWMgcGFja2FnZSB0YXNrIGJlZ2luIGdvdG8gcHJhZ21hIHRlcm1pbmF0ZSAnICtcbiAgICAgICAgICAgICAgICAnYm9keSBwcml2YXRlIHRoZW4gaWYgcHJvY2VkdXJlIHR5cGUgY2FzZSBpbiBwcm90ZWN0ZWQgY29uc3RhbnQgaW50ZXJmYWNlICcgK1xuICAgICAgICAgICAgICAgICdpcyByYWlzZSB1c2UgZGVjbGFyZSByYW5nZSBkZWxheSBsaW1pdGVkIHJlY29yZCB3aGVuIGRlbHRhIGxvb3AgcmVtIHdoaWxlICcgK1xuICAgICAgICAgICAgICAgICdkaWdpdHMgcmVuYW1lcyB3aXRoIGRvIG1vZCByZXF1ZXVlIHhvcicsXG4gICAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgICAgICdUcnVlIEZhbHNlJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIENPTU1FTlRTLFxuICAgICAgICAgICAgLy8gc3RyaW5ncyBcImZvb2JhclwiXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAvXCJcIi8sIHJlbGV2YW5jZTogMH1dXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gY2hhcmFjdGVycyAnJ1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBsaXRlcmFscyBhbHdheXMgY29udGFpbiBvbmUgY2hhclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46IC8nLicvXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIG51bWJlciBsaXRlcmFsc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46IE5VTUJFUl9SRSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gQXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICAgICAgYmVnaW46IFwiJ1wiICsgSURfUkVHRVgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIHBhY2thZ2UgZGVmaW5pdGlvbiwgbWF5YmUgaW5zaWRlIGdlbmVyaWNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGJ3aXRoXFxcXHMrKT8oXFxcXGJwcml2YXRlXFxcXHMrKT9cXFxcYnBhY2thZ2VcXFxccysoXFxcXGJib2R5XFxcXHMrKT8nLCBlbmQ6ICcoaXN8JCknLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiAncGFja2FnZSBib2R5JyxcbiAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24vcHJvY2VkdXJlIGRlY2xhcmF0aW9uL2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAvLyBtYXliZSBpbnNpZGUgZ2VuZXJpY1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnKFxcXFxiKHdpdGh8b3ZlcnJpZGluZylcXFxccyspP1xcXFxiKGZ1bmN0aW9ufHByb2NlZHVyZSlcXFxccysnLCBlbmQ6ICcoXFxcXGJpc3xcXFxcYndpdGh8XFxcXGJyZW5hbWVzfFxcXFwpXFxcXHMqOyknLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiAnb3ZlcnJpZGluZyBmdW5jdGlvbiBwcm9jZWR1cmUgd2l0aCBpcyByZW5hbWVzIHJldHVybicsXG4gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZS1tYXRjaCB0aGUgJ2Z1bmN0aW9uJyBrZXl3b3JkLCBzbyB0aGF0XG4gICAgICAgICAgICAgICAgLy8gdGhlIHRpdGxlIG1vZGUgYmVsb3cgbWF0Y2hlcyBvbmx5IGV4YWN0bHkgb25jZVxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgQ09NTUVOVFMsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5hbWUgb2YgdGhlIGZ1bmN0aW9uL3Byb2NlZHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGJ3aXRoXFxcXHMrKT9cXFxcYihmdW5jdGlvbnxwcm9jZWR1cmUpXFxcXHMrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogJyhcXFxcKHxcXFxccyt8JCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlsbGVnYWw6IEJBRF9DSEFSU1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAvLyAnc2VsZidcbiAgICAgICAgICAgICAgICAgICAgLy8gLy8gcGFyYW1ldGVyIHR5cGVzXG4gICAgICAgICAgICAgICAgICAgIFZBUl9ERUNMUyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYnJldHVyblxcXFxzKycsIGVuZDogJyhcXFxccyt8O3wkKScsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogJ3JldHVybicsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGRvbmUgd2l0aCBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlNcblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gbmV3IHR5cGUgZGVjbGFyYXRpb25zXG4gICAgICAgICAgICAgICAgLy8gbWF5YmUgaW5zaWRlIGdlbmVyaWNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKHN1Yik/dHlwZVxcXFxzKycsIGVuZDogJ1xcXFxzKycsXG4gICAgICAgICAgICAgICAga2V5d29yZHM6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogQkFEX0NIQVJTXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvLyBzZWUgY29tbWVudCBhYm92ZSB0aGUgZGVmaW5pdGlvblxuICAgICAgICAgICAgVkFSX0RFQ0xTLFxuXG4gICAgICAgICAgICAvLyBubyBtYXJrdXBcbiAgICAgICAgICAgIC8vIHJlbGV2YW5jZSBib29zdGVycyBmb3Igc21hbGwgc25pcHBldHNcbiAgICAgICAgICAgIC8vIHtiZWdpbjogJ1xcXFxzKj0+XFxcXHMqJ30sXG4gICAgICAgICAgICAvLyB7YmVnaW46ICdcXFxccyo6PVxcXFxzKid9LFxuICAgICAgICAgICAgLy8ge2JlZ2luOiAnXFxcXHMrOj1cXFxccysnfSxcbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgYnVpbHRJblR5cGVNb2RlID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKHZvaWR8Ym9vbHxpbnR8aW50OHxpbnQxNnxpbnQzMnxpbnQ2NHx1aW50fHVpbnQ4fHVpbnQxNnx1aW50MzJ8dWludDY0fHN0cmluZ3xyZWZ8YXJyYXl8ZG91YmxlfGZsb2F0fGF1dG98ZGljdGlvbmFyeSknXG4gIH07XG5cbiAgdmFyIG9iamVjdEhhbmRsZU1vZGUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1thLXpBLVowLTlfXStAJ1xuICB9O1xuXG4gIHZhciBnZW5lcmljTW9kZSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJzwnLCBlbmQ6ICc+JyxcbiAgICBjb250YWluczogWyBidWlsdEluVHlwZU1vZGUsIG9iamVjdEhhbmRsZU1vZGUgXVxuICB9O1xuXG4gIGJ1aWx0SW5UeXBlTW9kZS5jb250YWlucyA9IFsgZ2VuZXJpY01vZGUgXTtcbiAgb2JqZWN0SGFuZGxlTW9kZS5jb250YWlucyA9IFsgZ2VuZXJpY01vZGUgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsgJ2FzYycgXSxcblxuICAgIGtleXdvcmRzOlxuICAgICAgJ2ZvciBpbnwwIGJyZWFrIGNvbnRpbnVlIHdoaWxlIGRvfDAgcmV0dXJuIGlmIGVsc2UgY2FzZSBzd2l0Y2ggbmFtZXNwYWNlIGlzIGNhc3QgJyArXG4gICAgICAnb3IgYW5kIHhvciBub3QgZ2V0fDAgaW4gaW5vdXR8MTAgb3V0IG92ZXJyaWRlIHNldHwwIHByaXZhdGUgcHVibGljIGNvbnN0IGRlZmF1bHR8MCAnICtcbiAgICAgICdmaW5hbCBzaGFyZWQgZXh0ZXJuYWwgbWl4aW58MTAgZW51bSB0eXBlZGVmIGZ1bmNkZWYgdGhpcyBzdXBlciBpbXBvcnQgZnJvbSBpbnRlcmZhY2UgJyArXG4gICAgICAnYWJzdHJhY3R8MCB0cnkgY2F0Y2ggcHJvdGVjdGVkIGV4cGxpY2l0IHByb3BlcnR5JyxcblxuICAgIC8vIGF2b2lkIGNsb3NlIGRldGVjdGlvbiB3aXRoIEMjIGFuZCBKU1xuICAgIGlsbGVnYWw6ICcoXnVzaW5nXFxcXHMrW0EtWmEtejAtOV9cXFxcLl0rOyR8XFxcXGJmdW5jdGlvblxccypbXlxcXFwoXSknLFxuXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgLy8gJ3N0cmluZ3MnXG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcblxuICAgICAgeyAvLyBcInN0cmluZ3NcIlxuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXG4gICAgICAvLyBcIlwiXCJoZXJlZG9jIHN0cmluZ3NcIlwiXCJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsIC8vIHNpbmdsZS1saW5lIGNvbW1lbnRzXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLCAvLyBjb21tZW50IGJsb2Nrc1xuXG4gICAgICB7IC8vIGludGVyZmFjZSBvciBuYW1lc3BhY2UgZGVjbGFyYXRpb25cbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2ludGVyZmFjZSBuYW1lc3BhY2UnLCBlbmQ6ICd7JyxcbiAgICAgICAgaWxsZWdhbDogJ1s7LlxcXFwtXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyAvLyBpbnRlcmZhY2Ugb3IgbmFtZXNwYWNlIG5hbWVcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICBiZWdpbjogJ1thLXpBLVowLTlfXSsnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICB7IC8vIGNsYXNzIGRlY2xhcmF0aW9uXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcycsIGVuZDogJ3snLFxuICAgICAgICBpbGxlZ2FsOiAnWzsuXFxcXC1dJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IC8vIGNsYXNzIG5hbWVcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICBiZWdpbjogJ1thLXpBLVowLTlfXSsnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnWzosXVxcXFxzKicsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdbYS16QS1aMC05X10rJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgYnVpbHRJblR5cGVNb2RlLCAvLyBidWlsdC1pbiB0eXBlc1xuICAgICAgb2JqZWN0SGFuZGxlTW9kZSwgLy8gb2JqZWN0IGhhbmRsZXNcblxuICAgICAgeyAvLyBsaXRlcmFsc1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihudWxsfHRydWV8ZmFsc2UpJ1xuICAgICAgfSxcblxuICAgICAgeyAvLyBudW1iZXJzXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnKC0/KShcXFxcYjBbeFhdW2EtZkEtRjAtOV0rfChcXFxcYlxcXFxkKyhcXFxcLlxcXFxkKik/Zj98XFxcXC5cXFxcZCtmPykoW2VFXVstK10/XFxcXGQrZj8pPyknXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5VTUJFUiA9IHtjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJ1tcXFxcJCVdXFxcXGQrJ307XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydhcGFjaGVjb25mJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtjbGFzc05hbWU6ICdzZWN0aW9uJywgYmVnaW46ICc8Lz8nLCBlbmQ6ICc+J30sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAvXFx3Ky8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgLy8ga2V5d29yZHMgYXJlbuKAmXQgbmVlZGVkIGZvciBoaWdobGlnaHRpbmcgcGVyIHNlLCB0aGV5IG9ubHkgYm9vc3QgcmVsZXZhbmNlXG4gICAgICAgIC8vIGZvciBhIHZlcnkgZ2VuZXJhbGx5IGRlZmluZWQgbW9kZSAoc3RhcnRzIHdpdGggYSB3b3JkLCBlbmRzIHdpdGggbGluZS1lbmRcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICBub21hcmt1cDpcbiAgICAgICAgICAgICdvcmRlciBkZW55IGFsbG93IHNldGVudiByZXdyaXRlcnVsZSByZXdyaXRlZW5naW5lIHJld3JpdGVjb25kIGRvY3VtZW50cm9vdCAnICtcbiAgICAgICAgICAgICdzZXRoYW5kbGVyIGVycm9yZG9jdW1lbnQgbG9hZG1vZHVsZSBvcHRpb25zIGhlYWRlciBsaXN0ZW4gc2VydmVycm9vdCAnICtcbiAgICAgICAgICAgICdzZXJ2ZXJuYW1lJ1xuICAgICAgICB9LFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGxpdGVyYWw6ICdvbiBvZmYgYWxsJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHNcXFxcWycsIGVuZDogJ1xcXFxdJCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdbXFxcXCQlXVxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgICAgICAgICAgICBjb250YWluczogWydzZWxmJywgTlVNQkVSXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE5VTUJFUixcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC9cXFMvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RSSU5HID0gaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiAnJ30pO1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICBjb250YWluczogWydzZWxmJywgaGxqcy5DX05VTUJFUl9NT0RFLCBTVFJJTkddXG4gIH07XG4gIHZhciBDT01NRU5UX01PREVfMSA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuICB2YXIgQ09NTUVOVF9NT0RFXzIgPSBobGpzLkNPTU1FTlQoXG4gICAgJ1xcXFwoXFxcXConLFxuICAgICdcXFxcKlxcXFwpJyxcbiAgICB7XG4gICAgICBjb250YWluczogWydzZWxmJywgQ09NTUVOVF9NT0RFXzFdIC8vYWxsb3cgbmVzdGluZ1xuICAgIH1cbiAgKTtcbiAgdmFyIENPTU1FTlRTID0gW1xuICAgIENPTU1FTlRfTU9ERV8xLFxuICAgIENPTU1FTlRfTU9ERV8yLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnb3Nhc2NyaXB0J10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhYm91dCBhYm92ZSBhZnRlciBhZ2FpbnN0IGFuZCBhcm91bmQgYXMgYXQgYmFjayBiZWZvcmUgYmVnaW5uaW5nICcgK1xuICAgICAgICAnYmVoaW5kIGJlbG93IGJlbmVhdGggYmVzaWRlIGJldHdlZW4gYnV0IGJ5IGNvbnNpZGVyaW5nICcgK1xuICAgICAgICAnY29udGFpbiBjb250YWlucyBjb250aW51ZSBjb3B5IGRpdiBkb2VzIGVpZ2h0aCBlbHNlIGVuZCBlcXVhbCAnICtcbiAgICAgICAgJ2VxdWFscyBlcnJvciBldmVyeSBleGl0IGZpZnRoIGZpcnN0IGZvciBmb3VydGggZnJvbSBmcm9udCAnICtcbiAgICAgICAgJ2dldCBnaXZlbiBnbG9iYWwgaWYgaWdub3JpbmcgaW4gaW50byBpcyBpdCBpdHMgbGFzdCBsb2NhbCBtZSAnICtcbiAgICAgICAgJ21pZGRsZSBtb2QgbXkgbmludGggbm90IG9mIG9uIG9udG8gb3Igb3ZlciBwcm9wIHByb3BlcnR5IHB1dCByZWYgJyArXG4gICAgICAgICdyZWZlcmVuY2UgcmVwZWF0IHJldHVybmluZyBzY3JpcHQgc2Vjb25kIHNldCBzZXZlbnRoIHNpbmNlICcgK1xuICAgICAgICAnc2l4dGggc29tZSB0ZWxsIHRlbnRoIHRoYXQgdGhlfDAgdGhlbiB0aGlyZCB0aHJvdWdoIHRocnUgJyArXG4gICAgICAgICd0aW1lb3V0IHRpbWVzIHRvIHRyYW5zYWN0aW9uIHRyeSB1bnRpbCB3aGVyZSB3aGlsZSB3aG9zZSB3aXRoICcgK1xuICAgICAgICAnd2l0aG91dCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnQXBwbGVTY3JpcHQgZmFsc2UgbGluZWZlZWQgcmV0dXJuIHBpIHF1b3RlIHJlc3VsdCBzcGFjZSB0YWIgdHJ1ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2FsaWFzIGFwcGxpY2F0aW9uIGJvb2xlYW4gY2xhc3MgY29uc3RhbnQgZGF0ZSBmaWxlIGludGVnZXIgbGlzdCAnICtcbiAgICAgICAgJ251bWJlciByZWFsIHJlY29yZCBzdHJpbmcgdGV4dCAnICtcbiAgICAgICAgJ2FjdGl2YXRlIGJlZXAgY291bnQgZGVsYXkgbGF1bmNoIGxvZyBvZmZzZXQgcmVhZCByb3VuZCAnICtcbiAgICAgICAgJ3J1biBzYXkgc3VtbWFyaXplIHdyaXRlICcgK1xuICAgICAgICAnY2hhcmFjdGVyIGNoYXJhY3RlcnMgY29udGVudHMgZGF5IGZyb250bW9zdCBpZCBpdGVtIGxlbmd0aCAnICtcbiAgICAgICAgJ21vbnRoIG5hbWUgcGFyYWdyYXBoIHBhcmFncmFwaHMgcmVzdCByZXZlcnNlIHJ1bm5pbmcgdGltZSB2ZXJzaW9uICcgK1xuICAgICAgICAnd2Vla2RheSB3b3JkIHdvcmRzIHllYXInXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOlxuICAgICAgICAgICdcXFxcYihjbGlwYm9hcmQgaW5mb3x0aGUgY2xpcGJvYXJkfGluZm8gZm9yfGxpc3QgKGRpc2tzfGZvbGRlcil8JyArXG4gICAgICAgICAgJ21vdW50IHZvbHVtZXxwYXRoIHRvfChjbG9zZXxvcGVuIGZvcikgYWNjZXNzfChnZXR8c2V0KSBlb2Z8JyArXG4gICAgICAgICAgJ2N1cnJlbnQgZGF0ZXxkbyBzaGVsbCBzY3JpcHR8Z2V0IHZvbHVtZSBzZXR0aW5nc3xyYW5kb20gbnVtYmVyfCcgK1xuICAgICAgICAgICdzZXQgdm9sdW1lfHN5c3RlbSBhdHRyaWJ1dGV8c3lzdGVtIGluZm98dGltZSB0byBHTVR8JyArXG4gICAgICAgICAgJyhsb2FkfHJ1bnxzdG9yZSkgc2NyaXB0fHNjcmlwdGluZyBjb21wb25lbnRzfCcgK1xuICAgICAgICAgICdBU0NJSSAoY2hhcmFjdGVyfG51bWJlcil8bG9jYWxpemVkIHN0cmluZ3wnICtcbiAgICAgICAgICAnY2hvb3NlIChhcHBsaWNhdGlvbnxjb2xvcnxmaWxlfGZpbGUgbmFtZXwnICtcbiAgICAgICAgICAnZm9sZGVyfGZyb20gbGlzdHxyZW1vdGUgYXBwbGljYXRpb258VVJMKXwnICtcbiAgICAgICAgICAnZGlzcGxheSAoYWxlcnR8ZGlhbG9nKSlcXFxcYnxeXFxcXHMqcmV0dXJuXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgJ1xcXFxiKHRleHQgaXRlbSBkZWxpbWl0ZXJzfGN1cnJlbnQgYXBwbGljYXRpb258bWlzc2luZyB2YWx1ZSlcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjpcbiAgICAgICAgICAnXFxcXGIoYXBhcnQgZnJvbXxhc2lkZSBmcm9tfGluc3RlYWQgb2Z8b3V0IG9mfGdyZWF0ZXIgdGhhbnwnICtcbiAgICAgICAgICBcImlzbid0fChkb2Vzbid0fGRvZXMgbm90KSAoZXF1YWx8Y29tZSBiZWZvcmV8Y29tZSBhZnRlcnxjb250YWluKXxcIiArXG4gICAgICAgICAgJyhncmVhdGVyfGxlc3MpIHRoYW4oIG9yIGVxdWFsKT98KHN0YXJ0cz98ZW5kc3xiZWdpbnM/KSB3aXRofCcgK1xuICAgICAgICAgICdjb250YWluZWQgYnl8Y29tZXMgKGJlZm9yZXxhZnRlcil8YSAocmVmfHJlZmVyZW5jZSl8UE9TSVggZmlsZXwnICtcbiAgICAgICAgICAnUE9TSVggcGF0aHwoZGF0ZXx0aW1lKSBzdHJpbmd8cXVvdGVkIGZvcm0pXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnb24nLFxuICAgICAgICBpbGxlZ2FsOiAnWyR7PTtcXFxcbl0nLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCBQQVJBTVNdXG4gICAgICB9XG4gICAgXS5jb25jYXQoQ09NTUVOVFMpLFxuICAgIGlsbGVnYWw6ICcvL3wtPnw9PnxcXFxcW1xcXFxbJ1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1tBLVphLXpfXVswLTlBLVphLXpfXSonO1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdpZiBmb3Igd2hpbGUgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ0JhY2tTbGFzaCBEb3VibGVRdW90ZSBmYWxzZSBGb3J3YXJkU2xhc2ggSW5maW5pdHkgTmFOIE5ld0xpbmUgbnVsbCBQSSBTaW5nbGVRdW90ZSBUYWIgVGV4dEZvcm1hdHRpbmcgdHJ1ZSB1bmRlZmluZWQnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0FicyBBY29zIEFuZ2xlIEF0dGFjaG1lbnRzIEFyZWEgQXJlYUdlb2RldGljIEFzaW4gQXRhbiBBdGFuMiBBdmVyYWdlIEJlYXJpbmcgQm9vbGVhbiBCdWZmZXIgQnVmZmVyR2VvZGV0aWMgJyArXG4gICAgICAnQ2VpbCBDZW50cm9pZCBDbGlwIENvbnNvbGUgQ29uc3RyYWluIENvbnRhaW5zIENvcyBDb3VudCBDcm9zc2VzIEN1dCBEYXRlIERhdGVBZGQgJyArXG4gICAgICAnRGF0ZURpZmYgRGF5IERlY29kZSBEZWZhdWx0VmFsdWUgRGljdGlvbmFyeSBEaWZmZXJlbmNlIERpc2pvaW50IERpc3RhbmNlIERpc3RhbmNlR2VvZGV0aWMgRGlzdGluY3QgJyArXG4gICAgICAnRG9tYWluQ29kZSBEb21haW5OYW1lIEVxdWFscyBFeHAgRXh0ZW50IEZlYXR1cmUgRmVhdHVyZVNldCBGZWF0dXJlU2V0QnlBc3NvY2lhdGlvbiBGZWF0dXJlU2V0QnlJZCBGZWF0dXJlU2V0QnlQb3J0YWxJdGVtICcgK1xuICAgICAgJ0ZlYXR1cmVTZXRCeVJlbGF0aW9uc2hpcE5hbWUgRmVhdHVyZVNldEJ5VGl0bGUgRmVhdHVyZVNldEJ5VXJsIEZpbHRlciBGaXJzdCBGbG9vciBHZW9tZXRyeSBHcm91cEJ5IEd1aWQgSGFzS2V5IEhvdXIgSUlmIEluZGV4T2YgJyArXG4gICAgICAnSW50ZXJzZWN0aW9uIEludGVyc2VjdHMgSXNFbXB0eSBJc05hbiBJc1NlbGZJbnRlcnNlY3RpbmcgTGVuZ3RoIExlbmd0aEdlb2RldGljIExvZyBNYXggTWVhbiBNaWxsaXNlY29uZCBNaW4gTWludXRlIE1vbnRoICcgK1xuICAgICAgJ011bHRpUGFydFRvU2luZ2xlUGFydCBNdWx0aXBvaW50IE5leHRTZXF1ZW5jZVZhbHVlIE5vdyBOdW1iZXIgT3JkZXJCeSBPdmVybGFwcyBQb2ludCBQb2x5Z29uICcgK1xuICAgICAgJ1BvbHlsaW5lIFBvcnRhbCBQb3cgUmFuZG9tIFJlbGF0ZSBSZXZlcnNlIFJpbmdJc0Nsb2NrV2lzZSBSb3VuZCBTZWNvbmQgU2V0R2VvbWV0cnkgU2luIFNvcnQgU3FydCBTdGRldiBTdW0gJyArXG4gICAgICAnU3ltbWV0cmljRGlmZmVyZW5jZSBUYW4gVGV4dCBUaW1lc3RhbXAgVG9kYXkgVG9Mb2NhbCBUb3AgVG91Y2hlcyBUb1VUQyBUcmFja0N1cnJlbnRUaW1lICcgK1xuICAgICAgJ1RyYWNrR2VvbWV0cnlXaW5kb3cgVHJhY2tJbmRleCBUcmFja1N0YXJ0VGltZSBUcmFja1dpbmRvdyBUeXBlT2YgVW5pb24gVXJsRW5jb2RlIFZhcmlhbmNlICcgK1xuICAgICAgJ1dlZWtkYXkgV2hlbiBXaXRoaW4gWWVhciAnXG4gIH07XG4gIHZhciBFWFBSRVNTSU9OUztcbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFxcXCRbZGF0YXN0b3JlfGZlYXR1cmV8bGF5ZXJ8bWFwfG1lYXN1cmV8c291cmNlZmVhdHVyZXxzb3VyY2VsYXllcnx0YXJnZXRmZWF0dXJlfHRhcmdldGxheWVyfHZhbHVlfHZpZXddKydcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtiQl1bMDFdKyknIH0sXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtvT11bMC03XSspJyB9LFxuICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ1xcXFwkXFxcXHsnLCBlbmQ6ICdcXFxcfScsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXSAgLy8gZGVmaW5lZCBsYXRlclxuICB9O1xuICB2YXIgVEVNUExBVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFNVQlNUXG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucyA9IFtcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgTlVNQkVSLFxuICAgIGhsanMuUkVHRVhQX01PREVcbiAgXTtcbiAgdmFyIFBBUkFNU19DT05UQUlOUyA9IFNVQlNULmNvbnRhaW5zLmNvbmNhdChbXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREVcbiAgXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2FyY2FkZSddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIFRFTVBMQVRFX1NUUklORyxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBTWU1CT0wsXG4gICAgICBOVU1CRVIsXG4gICAgICB7IC8vIG9iamVjdCBhdHRyIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogL1t7LF1cXHMqLywgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBJREVOVF9SRSArICdcXFxccyo6JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW3tjbGFzc05hbWU6ICdhdHRyJywgYmVnaW46IElERU5UX1JFLCByZWxldmFuY2U6IDB9XVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgLy8gXCJ2YWx1ZVwiIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogJygnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIocmV0dXJuKVxcXFxiKVxcXFxzKicsXG4gICAgICAgIGtleXdvcmRzOiAncmV0dXJuJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLlJFR0VYUF9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFxcXFwoLio/XFxcXCl8JyArIElERU5UX1JFICsgJylcXFxccyo9PicsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqPT4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IElERU5UX1JFXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcKFxccypcXCkvLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05UQUlOU1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBJREVOVF9SRX0pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05UQUlOU1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogL1xcW3wlL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbKC5dL1xuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMoPyEhKS9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDUFBfUFJJTUlUSVZFX1RZUEVTID0ge1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIGJlZ2luOiAnXFxcXGJbYS16XFxcXGRfXSpfdFxcXFxiJ1xuICB9O1xuXG4gIC8vIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lc2NhcGVcbiAgLy8gXFxcXCBcXHggXFx4RkYgXFx1MjgzNyBcXHUwMDMyMzc0NyBcXDM3NFxuICB2YXIgQ0hBUkFDVEVSX0VTQ0FQRVMgPSAnXFxcXFxcXFwoeFswLTlBLUZhLWZdezJ9fHVbMC05QS1GYS1mXXs0LDh9fFswLTddezN9fFxcXFxTKSdcbiAgdmFyIFNUUklOR1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VXxMKT9cIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VXxMKT9cXCcoJyArIENIQVJBQ1RFUl9FU0NBUEVTICsgXCJ8LilcIiwgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJy4nXG4gICAgICB9LFxuICAgICAgeyBiZWdpbjogLyg/OnU4P3xVfEwpP1JcIihbXigpXFxcXCBdezAsMTZ9KVxcKCg/Oi58XFxuKSo/XFwpXFwxXCIvIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBiWzAxXFwnXSspJyB9LFxuICAgICAgeyBiZWdpbjogJygtPylcXFxcYihbXFxcXGRcXCddKyhcXFxcLltcXFxcZFxcJ10qKT98XFxcXC5bXFxcXGRcXCddKykodXxVfGx8THx1bHxVTHxmfEZ8YnxCKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XFwnXSt8KFxcXFxiW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKFtlRV1bLStdP1tcXFxcZFxcJ10rKT8pJyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgUFJFUFJPQ0VTU09SID0gICAgICAge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAvI1xccypbYS16XStcXGIvLCBlbmQ6IC8kLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgJ21ldGEta2V5d29yZCc6XG4gICAgICAgICdpZiBlbHNlIGVsaWYgZW5kaWYgZGVmaW5lIHVuZGVmIHdhcm5pbmcgZXJyb3IgbGluZSAnICtcbiAgICAgICAgJ3ByYWdtYSBpZmRlZiBpZm5kZWYgaW5jbHVkZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxcXFxcbi8sIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChTVFJJTkdTLCB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEtc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC88W15cXG4+XSo+LywgZW5kOiAvJC8sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcblxuICB2YXIgRlVOQ1RJT05fVElUTEUgPSBobGpzLklERU5UX1JFICsgJ1xcXFxzKlxcXFwoJztcblxuICB2YXIgQ1BQX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6ICdpbnQgZmxvYXQgd2hpbGUgcHJpdmF0ZSBjaGFyIGNhdGNoIGltcG9ydCBtb2R1bGUgZXhwb3J0IHZpcnR1YWwgb3BlcmF0b3Igc2l6ZW9mICcgK1xuICAgICAgJ2R5bmFtaWNfY2FzdHwxMCB0eXBlZGVmIGNvbnN0X2Nhc3R8MTAgY29uc3QgZm9yIHN0YXRpY19jYXN0fDEwIHVuaW9uIG5hbWVzcGFjZSAnICtcbiAgICAgICd1bnNpZ25lZCBsb25nIHZvbGF0aWxlIHN0YXRpYyBwcm90ZWN0ZWQgYm9vbCB0ZW1wbGF0ZSBtdXRhYmxlIGlmIHB1YmxpYyBmcmllbmQgJyArXG4gICAgICAnZG8gZ290byBhdXRvIHZvaWQgZW51bSBlbHNlIGJyZWFrIGV4dGVybiB1c2luZyBhc20gY2FzZSB0eXBlaWQgJyArXG4gICAgICAnc2hvcnQgcmVpbnRlcnByZXRfY2FzdHwxMCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCBzaWduZWQgdHlwZW5hbWUgdHJ5IHRoaXMgJyArXG4gICAgICAnc3dpdGNoIGNvbnRpbnVlIGlubGluZSBkZWxldGUgYWxpZ25vZiBjb25zdGV4cHIgY29uc3RldmFsIGNvbnN0aW5pdCBkZWNsdHlwZSAnICtcbiAgICAgICdjb25jZXB0IGNvX2F3YWl0IGNvX3JldHVybiBjb195aWVsZCByZXF1aXJlcyAnICtcbiAgICAgICdub2V4Y2VwdCBzdGF0aWNfYXNzZXJ0IHRocmVhZF9sb2NhbCByZXN0cmljdCBfQm9vbCBjb21wbGV4IF9Db21wbGV4IF9JbWFnaW5hcnkgJyArXG4gICAgICAnYXRvbWljX2Jvb2wgYXRvbWljX2NoYXIgYXRvbWljX3NjaGFyICcgK1xuICAgICAgJ2F0b21pY191Y2hhciBhdG9taWNfc2hvcnQgYXRvbWljX3VzaG9ydCBhdG9taWNfaW50IGF0b21pY191aW50IGF0b21pY19sb25nIGF0b21pY191bG9uZyBhdG9taWNfbGxvbmcgJyArXG4gICAgICAnYXRvbWljX3VsbG9uZyBuZXcgdGhyb3cgcmV0dXJuICcgK1xuICAgICAgJ2FuZCBvciBub3QnLFxuICAgIGJ1aWx0X2luOiAnc3RkIHN0cmluZyB3c3RyaW5nIGNpbiBjb3V0IGNlcnIgY2xvZyBzdGRpbiBzdGRvdXQgc3RkZXJyIHN0cmluZ3N0cmVhbSBpc3RyaW5nc3RyZWFtIG9zdHJpbmdzdHJlYW0gJyArXG4gICAgICAnYXV0b19wdHIgZGVxdWUgbGlzdCBxdWV1ZSBzdGFjayB2ZWN0b3IgbWFwIHNldCBiaXRzZXQgbXVsdGlzZXQgbXVsdGltYXAgdW5vcmRlcmVkX3NldCAnICtcbiAgICAgICd1bm9yZGVyZWRfbWFwIHVub3JkZXJlZF9tdWx0aXNldCB1bm9yZGVyZWRfbXVsdGltYXAgYXJyYXkgc2hhcmVkX3B0ciBhYm9ydCBhYnMgYWNvcyAnICtcbiAgICAgICdhc2luIGF0YW4yIGF0YW4gY2FsbG9jIGNlaWwgY29zaCBjb3MgZXhpdCBleHAgZmFicyBmbG9vciBmbW9kIGZwcmludGYgZnB1dHMgZnJlZSBmcmV4cCAnICtcbiAgICAgICdmc2NhbmYgZnV0dXJlIGlzYWxudW0gaXNhbHBoYSBpc2NudHJsIGlzZGlnaXQgaXNncmFwaCBpc2xvd2VyIGlzcHJpbnQgaXNwdW5jdCBpc3NwYWNlIGlzdXBwZXIgJyArXG4gICAgICAnaXN4ZGlnaXQgdG9sb3dlciB0b3VwcGVyIGxhYnMgbGRleHAgbG9nMTAgbG9nIG1hbGxvYyByZWFsbG9jIG1lbWNociBtZW1jbXAgbWVtY3B5IG1lbXNldCBtb2RmIHBvdyAnICtcbiAgICAgICdwcmludGYgcHV0Y2hhciBwdXRzIHNjYW5mIHNpbmggc2luIHNucHJpbnRmIHNwcmludGYgc3FydCBzc2NhbmYgc3RyY2F0IHN0cmNociBzdHJjbXAgJyArXG4gICAgICAnc3RyY3B5IHN0cmNzcG4gc3RybGVuIHN0cm5jYXQgc3RybmNtcCBzdHJuY3B5IHN0cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHRhbmggdGFuICcgK1xuICAgICAgJ3ZmcHJpbnRmIHZwcmludGYgdnNwcmludGYgZW5kbCBpbml0aWFsaXplcl9saXN0IHVuaXF1ZV9wdHInLFxuICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIG51bGxwdHIgTlVMTCdcbiAgfTtcblxuICB2YXIgRVhQUkVTU0lPTl9DT05UQUlOUyA9IFtcbiAgICBDUFBfUFJJTUlUSVZFX1RZUEVTLFxuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIE5VTUJFUlMsXG4gICAgU1RSSU5HU1xuICBdO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjJywgJ2NjJywgJ2gnLCAnYysrJywgJ2grKycsICdocHAnLCAnaGgnLCAnaHh4JywgJ2N4eCddLFxuICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoW1xuICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKGRlcXVlfGxpc3R8cXVldWV8c3RhY2t8dmVjdG9yfG1hcHxzZXR8Yml0c2V0fG11bHRpc2V0fG11bHRpbWFwfHVub3JkZXJlZF9tYXB8dW5vcmRlcmVkX3NldHx1bm9yZGVyZWRfbXVsdGlzZXR8dW5vcmRlcmVkX211bHRpbWFwfGFycmF5KVxcXFxzKjwnLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZicsIENQUF9QUklNSVRJVkVfVFlQRVNdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OicsXG4gICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFRoaXMgbW9kZSBjb3ZlcnMgZXhwcmVzc2lvbiBjb250ZXh0IHdoZXJlIHdlIGNhbid0IGV4cGVjdCBhIGZ1bmN0aW9uXG4gICAgICAgIC8vIGRlZmluaXRpb24gYW5kIHNob3VsZG4ndCBoaWdobGlnaHQgYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlIG9uZTpcbiAgICAgICAgLy8gYHJldHVybiBzb21lKClgLCBgZWxzZSBpZigpYCwgYCh4KnN1bSgxLCAyKSlgXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAvPS8sIGVuZDogLzsvfSxcbiAgICAgICAgICB7YmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvfSxcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ25ldyB0aHJvdyByZXR1cm4gZWxzZScsIGVuZDogLzsvfVxuICAgICAgICBdLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgICAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoWydzZWxmJ10pLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdKSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLklERU5UX1JFICsgJ1tcXFxcKiZcXFxcc10rKSsnICsgRlVOQ1RJT05fVElUTEUsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcd1xcc1xcKiZdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogRlVOQ1RJT05fVElUTEUsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlRJVExFX01PREVdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HUyxcbiAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgQ1BQX1BSSU1JVElWRV9UWVBFUyxcbiAgICAgICAgICAgICAgLy8gQ291bnQgbWF0Y2hpbmcgcGFyZW50aGVzZXMuXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgICAgICBTVFJJTkdTLFxuICAgICAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgICAgIENQUF9QUklNSVRJVkVfVFlQRVNcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIFBSRVBST0NFU1NPUlxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBzdHJ1Y3QnLCBlbmQ6IC9bezs6XS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2JlZ2luOiAvPC8sIGVuZDogLz4vLCBjb250YWluczogWydzZWxmJ119LCAvLyBza2lwIGdlbmVyaWMgc3R1ZmZcbiAgICAgICAgICBobGpzLlRJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF0pLFxuICAgIGV4cG9ydHM6IHtcbiAgICAgIHByZXByb2Nlc3NvcjogUFJFUFJPQ0VTU09SLFxuICAgICAgc3RyaW5nczogU1RSSU5HUyxcbiAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFNcbiAgICB9XG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG5cdHZhciBBUkRVSU5PX0tXID0ge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2Jvb2xlYW4gYnl0ZSB3b3JkIFN0cmluZycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3NldHVwIGxvb3AnICtcbiAgICAgICAgJ0tleWJvYXJkQ29udHJvbGxlciBNb3VzZUNvbnRyb2xsZXIgU29mdHdhcmVTZXJpYWwgJyArXG4gICAgICAgICdFdGhlcm5ldFNlcnZlciBFdGhlcm5ldENsaWVudCBMaXF1aWRDcnlzdGFsICcgK1xuICAgICAgICAnUm9ib3RDb250cm9sIEdTTVZvaWNlQ2FsbCBFdGhlcm5ldFVEUCBFc3Bsb3JhVEZUICcgK1xuICAgICAgICAnSHR0cENsaWVudCBSb2JvdE1vdG9yIFdpRmlDbGllbnQgR1NNU2Nhbm5lciAnICtcbiAgICAgICAgJ0ZpbGVTeXN0ZW0gU2NoZWR1bGVyIEdTTVNlcnZlciBZdW5DbGllbnQgWXVuU2VydmVyICcgK1xuICAgICAgICAnSVBBZGRyZXNzIEdTTUNsaWVudCBHU01Nb2RlbSBLZXlib2FyZCBFdGhlcm5ldCAnICtcbiAgICAgICAgJ0NvbnNvbGUgR1NNQmFuZCBFc3Bsb3JhIFN0ZXBwZXIgUHJvY2VzcyAnICtcbiAgICAgICAgJ1dpRmlVRFAgR1NNX1NNUyBNYWlsYm94IFVTQkhvc3QgRmlybWF0YSBQSW1hZ2UgJyArXG4gICAgICAgICdDbGllbnQgU2VydmVyIEdTTVBJTiBGaWxlSU8gQnJpZGdlIFNlcmlhbCAnICtcbiAgICAgICAgJ0VFUFJPTSBTdHJlYW0gTW91c2UgQXVkaW8gU2Vydm8gRmlsZSBUYXNrICcgK1xuICAgICAgICAnR1BSUyBXaUZpIFdpcmUgVEZUIEdTTSBTUEkgU0QgJyArXG4gICAgICAgICdydW5TaGVsbENvbW1hbmRBc3luY2hyb25vdXNseSBhbmFsb2dXcml0ZVJlc29sdXRpb24gJyArXG4gICAgICAgICdyZXRyaWV2ZUNhbGxpbmdOdW1iZXIgcHJpbnRGaXJtd2FyZVZlcnNpb24gJyArXG4gICAgICAgICdhbmFsb2dSZWFkUmVzb2x1dGlvbiBzZW5kRGlnaXRhbFBvcnRQYWlyICcgK1xuICAgICAgICAnbm9MaXN0ZW5PbkxvY2FsaG9zdCByZWFkSm95c3RpY2tCdXR0b24gc2V0RmlybXdhcmVWZXJzaW9uICcgK1xuICAgICAgICAncmVhZEpveXN0aWNrU3dpdGNoIHNjcm9sbERpc3BsYXlSaWdodCBnZXRWb2ljZUNhbGxTdGF0dXMgJyArXG4gICAgICAgICdzY3JvbGxEaXNwbGF5TGVmdCB3cml0ZU1pY3Jvc2Vjb25kcyBkZWxheU1pY3Jvc2Vjb25kcyAnICtcbiAgICAgICAgJ2JlZ2luVHJhbnNtaXNzaW9uIGdldFNpZ25hbFN0cmVuZ3RoIHJ1bkFzeW5jaHJvbm91c2x5ICcgK1xuICAgICAgICAnZ2V0QXN5bmNocm9ub3VzbHkgbGlzdGVuT25Mb2NhbGhvc3QgZ2V0Q3VycmVudENhcnJpZXIgJyArXG4gICAgICAgICdyZWFkQWNjZWxlcm9tZXRlciBtZXNzYWdlQXZhaWxhYmxlIHNlbmREaWdpdGFsUG9ydHMgJyArXG4gICAgICAgICdsaW5lRm9sbG93Q29uZmlnIGNvdW50cnlOYW1lV3JpdGUgcnVuU2hlbGxDb21tYW5kICcgK1xuICAgICAgICAncmVhZFN0cmluZ1VudGlsIHJld2luZERpcmVjdG9yeSByZWFkVGVtcGVyYXR1cmUgJyArXG4gICAgICAgICdzZXRDbG9ja0RpdmlkZXIgcmVhZExpZ2h0U2Vuc29yIGVuZFRyYW5zbWlzc2lvbiAnICtcbiAgICAgICAgJ2FuYWxvZ1JlZmVyZW5jZSBkZXRhY2hJbnRlcnJ1cHQgY291bnRyeU5hbWVSZWFkICcgK1xuICAgICAgICAnYXR0YWNoSW50ZXJydXB0IGVuY3J5cHRpb25UeXBlIHJlYWRCeXRlc1VudGlsICcgK1xuICAgICAgICAncm9ib3ROYW1lV3JpdGUgcmVhZE1pY3JvcGhvbmUgcm9ib3ROYW1lUmVhZCBjaXR5TmFtZVdyaXRlICcgK1xuICAgICAgICAndXNlck5hbWVXcml0ZSByZWFkSm95c3RpY2tZIHJlYWRKb3lzdGlja1ggbW91c2VSZWxlYXNlZCAnICtcbiAgICAgICAgJ29wZW5OZXh0RmlsZSBzY2FuTmV0d29ya3Mgbm9JbnRlcnJ1cHRzIGRpZ2l0YWxXcml0ZSAnICtcbiAgICAgICAgJ2JlZ2luU3BlYWtlciBtb3VzZVByZXNzZWQgaXNBY3Rpb25Eb25lIG1vdXNlRHJhZ2dlZCAnICtcbiAgICAgICAgJ2Rpc3BsYXlMb2dvcyBub0F1dG9zY3JvbGwgYWRkUGFyYW1ldGVyIHJlbW90ZU51bWJlciAnICtcbiAgICAgICAgJ2dldE1vZGlmaWVycyBrZXlib2FyZFJlYWQgdXNlck5hbWVSZWFkIHdhaXRDb250aW51ZSAnICtcbiAgICAgICAgJ3Byb2Nlc3NJbnB1dCBwYXJzZUNvbW1hbmQgcHJpbnRWZXJzaW9uIHJlYWROZXR3b3JrcyAnICtcbiAgICAgICAgJ3dyaXRlTWVzc2FnZSBibGlua1ZlcnNpb24gY2l0eU5hbWVSZWFkIHJlYWRNZXNzYWdlICcgK1xuICAgICAgICAnc2V0RGF0YU1vZGUgcGFyc2VQYWNrZXQgaXNMaXN0ZW5pbmcgc2V0Qml0T3JkZXIgJyArXG4gICAgICAgICdiZWdpblBhY2tldCBpc0RpcmVjdG9yeSBtb3RvcnNXcml0ZSBkcmF3Q29tcGFzcyAnICtcbiAgICAgICAgJ2RpZ2l0YWxSZWFkIGNsZWFyU2NyZWVuIHNlcmlhbEV2ZW50IHJpZ2h0VG9MZWZ0ICcgK1xuICAgICAgICAnc2V0VGV4dFNpemUgbGVmdFRvUmlnaHQgcmVxdWVzdEZyb20ga2V5UmVsZWFzZWQgJyArXG4gICAgICAgICdjb21wYXNzUmVhZCBhbmFsb2dXcml0ZSBpbnRlcnJ1cHRzIFdpRmlTZXJ2ZXIgJyArXG4gICAgICAgICdkaXNjb25uZWN0IHBsYXlNZWxvZHkgcGFyc2VGbG9hdCBhdXRvc2Nyb2xsICcgK1xuICAgICAgICAnZ2V0UElOVXNlZCBzZXRQSU5Vc2VkIHNldFRpbWVvdXQgc2VuZEFuYWxvZyAnICtcbiAgICAgICAgJ3JlYWRTbGlkZXIgYW5hbG9nUmVhZCBiZWdpbldyaXRlIGNyZWF0ZUNoYXIgJyArXG4gICAgICAgICdtb3RvcnNTdG9wIGtleVByZXNzZWQgdGVtcG9Xcml0ZSByZWFkQnV0dG9uICcgK1xuICAgICAgICAnc3VibmV0TWFzayBkZWJ1Z1ByaW50IG1hY0FkZHJlc3Mgd3JpdGVHcmVlbiAnICtcbiAgICAgICAgJ3JhbmRvbVNlZWQgYXR0YWNoR1BSUyByZWFkU3RyaW5nIHNlbmRTdHJpbmcgJyArXG4gICAgICAgICdyZW1vdGVQb3J0IHJlbGVhc2VBbGwgbW91c2VNb3ZlZCBiYWNrZ3JvdW5kICcgK1xuICAgICAgICAnZ2V0WENoYW5nZSBnZXRZQ2hhbmdlIGFuc3dlckNhbGwgZ2V0UmVzdWx0ICcgK1xuICAgICAgICAndm9pY2VDYWxsIGVuZFBhY2tldCBjb25zdHJhaW4gZ2V0U29ja2V0IHdyaXRlSlNPTiAnICtcbiAgICAgICAgJ2dldEJ1dHRvbiBhdmFpbGFibGUgY29ubmVjdGVkIGZpbmRVbnRpbCByZWFkQnl0ZXMgJyArXG4gICAgICAgICdleGl0VmFsdWUgcmVhZEdyZWVuIHdyaXRlQmx1ZSBzdGFydExvb3AgSVBBZGRyZXNzICcgK1xuICAgICAgICAnaXNQcmVzc2VkIHNlbmRTeXNleCBwYXVzZU1vZGUgZ2F0ZXdheUlQIHNldEN1cnNvciAnICtcbiAgICAgICAgJ2dldE9lbUtleSB0dW5lV3JpdGUgbm9EaXNwbGF5IGxvYWRJbWFnZSBzd2l0Y2hQSU4gJyArXG4gICAgICAgICdvblJlcXVlc3Qgb25SZWNlaXZlIGNoYW5nZVBJTiBwbGF5RmlsZSBub0J1ZmZlciAnICtcbiAgICAgICAgJ3BhcnNlSW50IG92ZXJmbG93IGNoZWNrUElOIGtub2JSZWFkIGJlZ2luVEZUICcgK1xuICAgICAgICAnYml0Q2xlYXIgdXBkYXRlSVIgYml0V3JpdGUgcG9zaXRpb24gd3JpdGVSR0IgJyArXG4gICAgICAgICdoaWdoQnl0ZSB3cml0ZVJlZCBzZXRTcGVlZCByZWFkQmx1ZSBub1N0cm9rZSAnICtcbiAgICAgICAgJ3JlbW90ZUlQIHRyYW5zZmVyIHNodXRkb3duIGhhbmdDYWxsIGJlZ2luU01TICcgK1xuICAgICAgICAnZW5kV3JpdGUgYXR0YWNoZWQgbWFpbnRhaW4gbm9DdXJzb3IgY2hlY2tSZWcgJyArXG4gICAgICAgICdjaGVja1BVSyBzaGlmdE91dCBpc1ZhbGlkIHNoaWZ0SW4gcHVsc2VJbiAnICtcbiAgICAgICAgJ2Nvbm5lY3QgcHJpbnRsbiBsb2NhbElQIHBpbk1vZGUgZ2V0SU1FSSAnICtcbiAgICAgICAgJ2Rpc3BsYXkgbm9CbGluayBwcm9jZXNzIGdldEJhbmQgcnVubmluZyBiZWdpblNEICcgK1xuICAgICAgICAnZHJhd0JNUCBsb3dCeXRlIHNldEJhbmQgcmVsZWFzZSBiaXRSZWFkIHByZXBhcmUgJyArXG4gICAgICAgICdwb2ludFRvIHJlYWRSZWQgc2V0TW9kZSBub0ZpbGwgcmVtb3ZlIGxpc3RlbiAnICtcbiAgICAgICAgJ3N0cm9rZSBkZXRhY2ggYXR0YWNoIG5vVG9uZSBleGlzdHMgYnVmZmVyICcgK1xuICAgICAgICAnaGVpZ2h0IGJpdFNldCBjaXJjbGUgY29uZmlnIGN1cnNvciByYW5kb20gJyArXG4gICAgICAgICdJUnJlYWQgc2V0RE5TIGVuZFNNUyBnZXRLZXkgbWljcm9zICcgK1xuICAgICAgICAnbWlsbGlzIGJlZ2luIHByaW50IHdyaXRlIHJlYWR5IGZsdXNoIHdpZHRoICcgK1xuICAgICAgICAnaXNQSU4gYmxpbmsgY2xlYXIgcHJlc3MgbWtkaXIgcm1kaXIgY2xvc2UgJyArXG4gICAgICAgICdwb2ludCB5aWVsZCBpbWFnZSBCU1NJRCBjbGljayBkZWxheSAnICtcbiAgICAgICAgJ3JlYWQgdGV4dCBtb3ZlIHBlZWsgYmVlcCByZWN0IGxpbmUgb3BlbiAnICtcbiAgICAgICAgJ3NlZWsgZmlsbCBzaXplIHR1cm4gc3RvcCBob21lIGZpbmQgJyArXG4gICAgICAgICdzdGVwIHRvbmUgc3FydCBSU1NJIFNTSUQgJyArXG4gICAgICAgICdlbmQgYml0IHRhbiBjb3Mgc2luIHBvdyBtYXAgYWJzIG1heCAnICtcbiAgICAgICAgJ21pbiBnZXQgcnVuIHB1dCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnRElHSVRBTF9NRVNTQUdFIEZJUk1BVEFfU1RSSU5HIEFOQUxPR19NRVNTQUdFICcgK1xuICAgICAgICAnUkVQT1JUX0RJR0lUQUwgUkVQT1JUX0FOQUxPRyBJTlBVVF9QVUxMVVAgJyArXG4gICAgICAgICdTRVRfUElOX01PREUgSU5URVJOQUwyVjU2IFNZU1RFTV9SRVNFVCBMRURfQlVJTFRJTiAnICtcbiAgICAgICAgJ0lOVEVSTkFMMVYxIFNZU0VYX1NUQVJUIElOVEVSTkFMIEVYVEVSTkFMICcgK1xuICAgICAgICAnREVGQVVMVCBPVVRQVVQgSU5QVVQgSElHSCBMT1cnXG4gIH07XG5cbiAgdmFyIEFSRFVJTk8gPSBobGpzLmdldExhbmd1YWdlKCdjcHAnKS5yYXdEZWZpbml0aW9uKCk7XG5cbiAgdmFyIGt3cyA9IEFSRFVJTk8ua2V5d29yZHM7XG5cbiAga3dzLmtleXdvcmQgKz0gJyAnICsgQVJEVUlOT19LVy5rZXl3b3JkO1xuICBrd3MubGl0ZXJhbCArPSAnICcgKyBBUkRVSU5PX0tXLmxpdGVyYWw7XG4gIGt3cy5idWlsdF9pbiArPSAnICcgKyBBUkRVSU5PX0tXLmJ1aWx0X2luO1xuXG4gIHJldHVybiBBUkRVSU5PO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICAvL2xvY2FsIGxhYmVsczogJT9bRkJdP1tBVF0/XFxkezEsMn1cXHcrXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbJ2FybSddLFxuICAgIGxleGVtZXM6ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbWV0YTpcbiAgICAgICAgLy9HTlUgcHJlcHJvY3NcbiAgICAgICAgJy4yYnl0ZSAuNGJ5dGUgLmFsaWduIC5hc2NpaSAuYXNjaXogLmJhbGlnbiAuYnl0ZSAuY29kZSAuZGF0YSAuZWxzZSAuZW5kIC5lbmRpZiAuZW5kbSAuZW5kciAuZXF1IC5lcnIgLmV4aXRtIC5leHRlcm4gLmdsb2JhbCAuaHdvcmQgLmlmIC5pZmRlZiAuaWZuZGVmIC5pbmNsdWRlIC5pcnAgLmxvbmcgLm1hY3JvIC5yZXB0IC5yZXEgLnNlY3Rpb24gLnNldCAuc2tpcCAuc3BhY2UgLnRleHQgLndvcmQgLmFybSAudGh1bWIgLmNvZGUxNiAuY29kZTMyIC5mb3JjZV90aHVtYiAudGh1bWJfZnVuYyAubHRvcmcgJytcbiAgICAgICAgLy9BUk0gZGlyZWN0aXZlc1xuICAgICAgICAnQUxJQVMgQUxJR04gQVJNIEFSRUEgQVNTRVJUIEFUVFIgQ04gQ09ERSBDT0RFMTYgQ09ERTMyIENPTU1PTiBDUCBEQVRBIERDQiBEQ0QgRENEVSBEQ0RPIERDRkQgRENGRFUgRENJIERDUSBEQ1FVIERDVyBEQ1dVIEROIEVMSUYgRUxTRSBFTkQgRU5ERlVOQyBFTkRJRiBFTkRQIEVOVFJZIEVRVSBFWFBPUlQgRVhQT1JUQVMgRVhURVJOIEZJRUxEIEZJTEwgRlVOQ1RJT04gR0JMQSBHQkxMIEdCTFMgR0VUIEdMT0JBTCBJRiBJTVBPUlQgSU5DQklOIElOQ0xVREUgSU5GTyBLRUVQIExDTEEgTENMTCBMQ0xTIExUT1JHIE1BQ1JPIE1BUCBNRU5EIE1FWElUIE5PRlAgT1BUIFBSRVNFUlZFOCBQUk9DIFFOIFJFQURPTkxZIFJFTE9DIFJFUVVJUkUgUkVRVUlSRTggUkxJU1QgRk4gUk9VVCBTRVRBIFNFVEwgU0VUUyBTTiBTUEFDRSBTVUJUIFRIVU1CIFRIVU1CWCBUVEwgV0hJTEUgV0VORCAnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdyMCByMSByMiByMyByNCByNSByNiByNyByOCByOSByMTAgcjExIHIxMiByMTMgcjE0IHIxNSAnKyAvL3N0YW5kYXJkIHJlZ2lzdGVyc1xuICAgICAgICAncGMgbHIgc3AgaXAgc2wgc2IgZnAgJysgLy90eXBpY2FsIHJlZ3MgcGx1cyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgICdhMSBhMiBhMyBhNCB2MSB2MiB2MyB2NCB2NSB2NiB2NyB2OCBmMCBmMSBmMiBmMyBmNCBmNSBmNiBmNyAnKyAvL21vcmUgcmVncyBhbmQgZnBcbiAgICAgICAgJ3AwIHAxIHAyIHAzIHA0IHA1IHA2IHA3IHA4IHA5IHAxMCBwMTEgcDEyIHAxMyBwMTQgcDE1ICcrIC8vY29wcm9jZXNzb3IgcmVnc1xuICAgICAgICAnYzAgYzEgYzIgYzMgYzQgYzUgYzYgYzcgYzggYzkgYzEwIGMxMSBjMTIgYzEzIGMxNCBjMTUgJysgLy9tb3JlIGNvcHJvY1xuICAgICAgICAncTAgcTEgcTIgcTMgcTQgcTUgcTYgcTcgcTggcTkgcTEwIHExMSBxMTIgcTEzIHExNCBxMTUgJysgLy9hZHZhbmNlZCBTSU1EIE5FT04gcmVnc1xuXG4gICAgICAgIC8vcHJvZ3JhbSBzdGF0dXMgcmVnaXN0ZXJzXG4gICAgICAgICdjcHNyX2MgY3Bzcl94IGNwc3JfcyBjcHNyX2YgY3Bzcl9jeCBjcHNyX2N4cyBjcHNyX3hzIGNwc3JfeHNmIGNwc3Jfc2YgY3Bzcl9jeHNmICcrXG4gICAgICAgICdzcHNyX2Mgc3Bzcl94IHNwc3JfcyBzcHNyX2Ygc3Bzcl9jeCBzcHNyX2N4cyBzcHNyX3hzIHNwc3JfeHNmIHNwc3Jfc2Ygc3Bzcl9jeHNmICcrXG5cbiAgICAgICAgLy9ORU9OIGFuZCBWRlAgcmVnaXN0ZXJzXG4gICAgICAgICdzMCBzMSBzMiBzMyBzNCBzNSBzNiBzNyBzOCBzOSBzMTAgczExIHMxMiBzMTMgczE0IHMxNSAnK1xuICAgICAgICAnczE2IHMxNyBzMTggczE5IHMyMCBzMjEgczIyIHMyMyBzMjQgczI1IHMyNiBzMjcgczI4IHMyOSBzMzAgczMxICcrXG4gICAgICAgICdkMCBkMSBkMiBkMyBkNCBkNSBkNiBkNyBkOCBkOSBkMTAgZDExIGQxMiBkMTMgZDE0IGQxNSAnK1xuICAgICAgICAnZDE2IGQxNyBkMTggZDE5IGQyMCBkMjEgZDIyIGQyMyBkMjQgZDI1IGQyNiBkMjcgZDI4IGQyOSBkMzAgZDMxICcgK1xuXG4gICAgICAgICd7UEN9IHtWQVJ9IHtUUlVFfSB7RkFMU0V9IHtPUFR9IHtDT05GSUd9IHtFTkRJQU59IHtDT0RFU0laRX0ge0NQVX0ge0ZQVX0ge0FSQ0hJVEVDVFVSRX0ge1BDU1RPUkVPRkZTRVR9IHtBUk1BU01fVkVSU0lPTn0ge0lOVEVSfSB7Uk9QSX0ge1JXUEl9IHtTV1NUfSB7Tk9TV1NUfSAuIEAnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYignKyAgICAgLy9tbmVtb25pY3NcbiAgICAgICAgICAgICdhZGN8JytcbiAgICAgICAgICAgICcocWQ/fHNoP3x1W3FoXT8pP2FkZCg4fDE2KT98dXNhZGE/OHwocXxzaD98dVtxaF0/KT8oYXN8c2EpeHwnK1xuICAgICAgICAgICAgJ2FuZHxhZHJsP3xzYmN8cnNbYmNdfGFzcnxiW2x4XT98Ymx4fGJ4anxjYm4/enx0YltiaF18YmljfCcrXG4gICAgICAgICAgICAnYmZjfGJmaXxbc3VdYmZ4fGJrcHR8Y2RwMj98Y2x6fGNscmV4fGNtcHxjbW58Y3BzaVtlZF18Y3BzfCcrXG4gICAgICAgICAgICAnc2V0ZW5kfGRiZ3xkbWJ8ZHNifGVvcnxpc2J8aXRbdGVdezAsM318bHNsfGxzcnxyb3J8cnJ4fCcrXG4gICAgICAgICAgICAnbGRtKChbaWRdW2FiXSl8Zltkc10pP3xsZHIoKHN8ZXgpP1tiaGRdKT98bW92dD98bXZufG1yYXxtYXJ8JytcbiAgICAgICAgICAgICdtdWx8W3VzXW11bGx8c211bFtid3RdW2J0XXxzbXVbYXNdZHxzbW11bHxzbW1sYXwnK1xuICAgICAgICAgICAgJ21sYXx1bWxhYWx8c21sYWw/KFt3YnRdW2J0XXxkKXxtbHN8c21sc2w/W2RzXXxzbWN8c3ZjfHNldnwnK1xuICAgICAgICAgICAgJ21pYShbYnRdezJ9fHBoKT98bXJyP2MyP3xtY3JyMj98bXJzfG1zcnxvcnJ8b3JufHBraCh0YnxidCl8cmJpdHwnK1xuICAgICAgICAgICAgJ3JldigxNnxzaCk/fHNlbHxbc3Vdc2F0KDE2KT98bm9wfHBvcHxwdXNofHJmZShbaWRdW2FiXSk/fCcrXG4gICAgICAgICAgICAnc3RtKFtpZF1bYWJdKT98c3RyKGV4KT9bYmhkXT98KHFkPyk/c3VifChzaD98cXx1W3FoXT8pP3N1Yig4fDE2KXwnK1xuICAgICAgICAgICAgJ1tzdV14dChhP2h8YT9iKDE2KT8pfHNycyhbaWRdW2FiXSk/fHN3cGI/fHN3aXxzbWl8dHN0fHRlcXwnK1xuICAgICAgICAgICAgJ3dmZXx3Zml8eWllbGQnK1xuICAgICAgICAnKScrXG4gICAgICAgICcoZXF8bmV8Y3N8Y2N8bWl8cGx8dnN8dmN8aGl8bHN8Z2V8bHR8Z3R8bGV8YWx8aHN8bG8pPycrIC8vY29uZGl0aW9uIGNvZGVzXG4gICAgICAgICdbc3B0cnhdPycgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbGVnYWwgcG9zdGZpeGVzXG4gICAgICAgIGVuZDogJ1xcXFxzJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnWztAXScsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJyxcbiAgICAgICAgZW5kOiAnW15cXFxcXFxcXF1cXCcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcfCcsIGVuZDogJ1xcXFx8JyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge2JlZ2luOiAnWyMkPV0/MHhbMC05YS1mXSsnfSwgLy9oZXhcbiAgICAgICAgICAgIHtiZWdpbjogJ1sjJD1dPzBiWzAxXSsnfSwgICAgIC8vYmluXG4gICAgICAgICAgICB7YmVnaW46ICdbIyQ9XVxcXFxkKyd9LCAgICAgICAgLy9saXRlcmFsXG4gICAgICAgICAgICB7YmVnaW46ICdcXFxcYlxcXFxkKyd9ICAgICAgICAgICAvL2JhcmUgbnVtYmVyXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJ15bYS16X1xcXFwuXFxcXCRdW2EtejAtOV9cXFxcLlxcXFwkXSsnfSwgLy9BUk0gc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdeXFxcXHMqW2Etel9cXFxcLlxcXFwkXVthLXowLTlfXFxcXC5cXFxcJF0rOid9LCAvL0dOVSBBUk0gc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdbPSNdXFxcXHcrJyB9ICAvL2xhYmVsIHJlZmVyZW5jZVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgWE1MX0lERU5UX1JFID0gJ1tBLVphLXowLTlcXFxcLl86LV0rJztcbiAgdmFyIFRBR19JTlRFUk5BTFMgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgaWxsZWdhbDogLzwvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgYmVnaW46IFhNTF9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLz1cXHMqLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAgICAgICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAgICAgICAgICB7YmVnaW46IC9bXlxcc1wiJz08PmBdKy99XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaHRtbCcsICd4aHRtbCcsICdyc3MnLCAnYXRvbScsICd4amInLCAneHNkJywgJ3hzbCcsICdwbGlzdCcsICd3c2YnLCAnc3ZnJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICc8IURPQ1RZUEUnLCBlbmQ6ICc+JyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMCxcbiAgICAgICAgY29udGFpbnM6IFt7YmVnaW46ICdcXFxcWycsIGVuZDogJ1xcXFxdJ31dXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnPCEtLScsXG4gICAgICAgICctLT4nLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzxcXFxcIVxcXFxbQ0RBVEFcXFxcWycsIGVuZDogJ1xcXFxdXFxcXF0+JyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvPFxcP3htbC8sIGVuZDogL1xcPz4vLCByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLzxcXD8ocGhwKT8vLCBlbmQ6IC9cXD8+LyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdwaHAnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIHBocCBjbG9zaW5nIHRhZyA/PiB0byBjbG9zZSB0aGUgUEhQIGJsb2NrIHdoZW5cbiAgICAgICAgICAvLyBpbnNpZGUgYW55IG9mIHRoZSBmb2xsb3dpbmcgYmxvY2tzOlxuICAgICAgICAgIHtiZWdpbjogJy9cXFxcKicsIGVuZDogJ1xcXFwqLycsIHNraXA6IHRydWV9LFxuICAgICAgICAgIHtiZWdpbjogJ2JcIicsIGVuZDogJ1wiJywgc2tpcDogdHJ1ZX0sXG4gICAgICAgICAge2JlZ2luOiAnYlxcJycsIGVuZDogJ1xcJycsIHNraXA6IHRydWV9LFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsLCBjbGFzc05hbWU6IG51bGwsIGNvbnRhaW5zOiBudWxsLCBza2lwOiB0cnVlfSksXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsLCBjbGFzc05hbWU6IG51bGwsIGNvbnRhaW5zOiBudWxsLCBza2lwOiB0cnVlfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICAgICAgLypcbiAgICAgICAgVGhlIGxvb2thaGVhZCBwYXR0ZXJuICg/PS4uLikgZW5zdXJlcyB0aGF0ICdiZWdpbicgb25seSBtYXRjaGVzXG4gICAgICAgICc8c3R5bGUnIGFzIGEgc2luZ2xlIHdvcmQsIGZvbGxvd2VkIGJ5IGEgd2hpdGVzcGFjZSBvciBhblxuICAgICAgICBlbmRpbmcgYnJha2V0LiBUaGUgJyQnIGlzIG5lZWRlZCBmb3IgdGhlIGxleGVtZSB0byBiZSByZWNvZ25pemVkXG4gICAgICAgIGJ5IGhsanMuc3ViTW9kZSgpIHRoYXQgdGVzdHMgbGV4ZW1lcyBvdXRzaWRlIHRoZSBzdHJlYW0uXG4gICAgICAgICovXG4gICAgICAgIGJlZ2luOiAnPHN0eWxlKD89XFxcXHN8PiknLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAnc3R5bGUnfSxcbiAgICAgICAgY29udGFpbnM6IFtUQUdfSU5URVJOQUxTXSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnPC9zdHlsZT4nLCByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6IFsnY3NzJywgJ3htbCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiB0aGUgPHN0eWxlIHRhZyBhYm91dCB0aGUgbG9va2FoZWFkIHBhdHRlcm5cbiAgICAgICAgYmVnaW46ICc8c2NyaXB0KD89XFxcXHN8PiknLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAnc2NyaXB0J30sXG4gICAgICAgIGNvbnRhaW5zOiBbVEFHX0lOVEVSTkFMU10sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcPFxcL3NjcmlwdFxcPicsIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogWydhY3Rpb25zY3JpcHQnLCAnamF2YXNjcmlwdCcsICdoYW5kbGViYXJzJywgJ3htbCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIGJlZ2luOiAnPC8/JywgZW5kOiAnLz8+JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJywgYmVnaW46IC9bXlxcLz48XFxzXSsvLCByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFRBR19JTlRFUk5BTFNcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydhZG9jJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIC8vIGJsb2NrIGNvbW1lbnRcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ14vezQsfVxcXFxuJyxcbiAgICAgICAgJ1xcXFxuL3s0LH0kJyxcbiAgICAgICAgLy8gY2FuIGFsc28gYmUgZG9uZSBhcy4uLlxuICAgICAgICAvLydeL3s0LH0kJyxcbiAgICAgICAgLy8nXi97NCx9JCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICAvLyBsaW5lIGNvbW1lbnRcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ14vLycsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgLy8gdGl0bGVcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICBiZWdpbjogJ15cXFxcLlxcXFx3LiokJ1xuICAgICAgfSxcbiAgICAgIC8vIGV4YW1wbGUsIGFkbW9uaXRpb24gJiBzaWRlYmFyIGJsb2Nrc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ15bPVxcXFwqXXs0LH1cXFxcbicsXG4gICAgICAgIGVuZDogJ1xcXFxuXls9XFxcXCpdezQsfSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gaGVhZGluZ3NcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnXig9ezEsNX0pIC4rPyggXFxcXDEpPyQnfSxcbiAgICAgICAgICB7YmVnaW46ICdeW15cXFxcW1xcXFxdXFxcXG5dKz9cXFxcbls9XFxcXC1+XFxcXF5cXFxcK117Mix9JCd9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gZG9jdW1lbnQgYXR0cmlidXRlc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeOi4rPzonLFxuICAgICAgICBlbmQ6ICdcXFxccycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBibG9jayBhdHRyaWJ1dGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15cXFxcWy4rP1xcXFxdJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIHF1b3RlYmxvY2tzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3F1b3RlJyxcbiAgICAgICAgYmVnaW46ICdeX3s0LH1cXFxcbicsXG4gICAgICAgIGVuZDogJ1xcXFxuX3s0LH0kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIGxpc3RpbmcgYW5kIGxpdGVyYWwgYmxvY2tzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvZGUnLFxuICAgICAgICBiZWdpbjogJ15bXFxcXC1cXFxcLl17NCx9XFxcXG4nLFxuICAgICAgICBlbmQ6ICdcXFxcbltcXFxcLVxcXFwuXXs0LH0kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIHBhc3N0aHJvdWdoIGJsb2Nrc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ15cXFxcK3s0LH1cXFxcbicsXG4gICAgICAgIGVuZDogJ1xcXFxuXFxcXCt7NCx9JCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICc8JywgZW5kOiAnPicsXG4gICAgICAgICAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBsaXN0cyAoY2FuIG9ubHkgY2FwdHVyZSBpbmRpY2F0b3JzKVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWxsZXQnLFxuICAgICAgICBiZWdpbjogJ14oXFxcXCorfFxcXFwtK3xcXFxcLit8W15cXFxcbl0rPzo6KVxcXFxzKydcbiAgICAgIH0sXG4gICAgICAvLyBhZG1vbml0aW9uXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXihOT1RFfFRJUHxJTVBPUlRBTlR8V0FSTklOR3xDQVVUSU9OKTpcXFxccysnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIHN0cm9uZ1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJvbmcnLFxuICAgICAgICAvLyBtdXN0IG5vdCBmb2xsb3cgYSB3b3JkIGNoYXJhY3RlciBvciBiZSBmb2xsb3dlZCBieSBhbiBhc3RlcmlzayBvciBzcGFjZVxuICAgICAgICBiZWdpbjogJ1xcXFxCXFxcXCooPyFbXFxcXCpcXFxcc10pJyxcbiAgICAgICAgZW5kOiAnKFxcXFxuezJ9fFxcXFwqKScsXG4gICAgICAgIC8vIGFsbG93IGVzY2FwZWQgYXN0ZXJpc2sgZm9sbG93ZWQgYnkgd29yZCBjaGFyXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcXFxcXCpcXFxcdycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgZW1waGFzaXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZW1waGFzaXMnLFxuICAgICAgICAvLyBtdXN0IG5vdCBmb2xsb3cgYSB3b3JkIGNoYXJhY3RlciBvciBiZSBmb2xsb3dlZCBieSBhIHNpbmdsZSBxdW90ZSBvciBzcGFjZVxuICAgICAgICBiZWdpbjogJ1xcXFxCXFwnKD8hW1xcJ1xcXFxzXSknLFxuICAgICAgICBlbmQ6ICcoXFxcXG57Mn18XFwnKScsXG4gICAgICAgIC8vIGFsbG93IGVzY2FwZWQgc2luZ2xlIHF1b3RlIGZvbGxvd2VkIGJ5IHdvcmQgY2hhclxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXFxcXFxcXCdcXFxcdycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGlubGluZSBlbXBoYXNpcyAoYWx0KVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdlbXBoYXNpcycsXG4gICAgICAgIC8vIG11c3Qgbm90IGZvbGxvdyBhIHdvcmQgY2hhcmFjdGVyIG9yIGJlIGZvbGxvd2VkIGJ5IGFuIHVuZGVybGluZSBvciBzcGFjZVxuICAgICAgICBiZWdpbjogJ18oPyFbX1xcXFxzXSknLFxuICAgICAgICBlbmQ6ICcoXFxcXG57Mn18XyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgc21hcnQgcXVvdGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiBcImBgLis/JydcIn0sXG4gICAgICAgICAge2JlZ2luOiBcImAuKz8nXCJ9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgY29kZSBzbmlwcGV0cyAoVE9ETyBzaG91bGQgZ2V0IHNhbWUgdHJlYXRtZW50IGFzIHN0cm9uZyBhbmQgZW1waGFzaXMpXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvZGUnLFxuICAgICAgICBiZWdpbjogJyhgLis/YHxcXFxcKy4rP1xcXFwrKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGluZGVudGVkIGxpdGVyYWwgYmxvY2tcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29kZScsXG4gICAgICAgIGJlZ2luOiAnXlsgXFxcXHRdJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGhvcml6b250YWwgcnVsZXNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFwnezMsfVsgXFxcXHRdKiQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gaW1hZ2VzIGFuZCBsaW5rc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJyhsaW5rOik/KGh0dHB8aHR0cHN8ZnRwfGZpbGV8aXJjfGltYWdlOj8pOlxcXFxTK1xcXFxbLio/XFxcXF0nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJyhsaW5rfGltYWdlOj8pOicsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmsnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcdycsXG4gICAgICAgICAgICBlbmQ6ICdbXlxcXFxbXSsnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcWycsXG4gICAgICAgICAgICBlbmQ6ICdcXFxcXScsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9XG4gICAgJ2ZhbHNlIHN5bmNocm9uaXplZCBpbnQgYWJzdHJhY3QgZmxvYXQgcHJpdmF0ZSBjaGFyIGJvb2xlYW4gc3RhdGljIG51bGwgaWYgY29uc3QgJyArXG4gICAgJ2ZvciB0cnVlIHdoaWxlIGxvbmcgdGhyb3cgc3RyaWN0ZnAgZmluYWxseSBwcm90ZWN0ZWQgaW1wb3J0IG5hdGl2ZSBmaW5hbCByZXR1cm4gdm9pZCAnICtcbiAgICAnZW51bSBlbHNlIGV4dGVuZHMgaW1wbGVtZW50cyBicmVhayB0cmFuc2llbnQgbmV3IGNhdGNoIGluc3RhbmNlb2YgYnl0ZSBzdXBlciB2b2xhdGlsZSBjYXNlICcgK1xuICAgICdhc3NlcnQgc2hvcnQgcGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcml2aWxlZ2VkICcgK1xuICAgICdhc3BlY3RPZiBhZHZpY2VleGVjdXRpb24gcHJvY2VlZCBjZmxvd2JlbG93IGNmbG93IGluaXRpYWxpemF0aW9uIHByZWluaXRpYWxpemF0aW9uICcgK1xuICAgICdzdGF0aWNpbml0aWFsaXphdGlvbiB3aXRoaW5jb2RlIHRhcmdldCB3aXRoaW4gZXhlY3V0aW9uIGdldFdpdGhpblR5cGVOYW1lIGhhbmRsZXIgJyArXG4gICAgJ3RoaXNKb2luUG9pbnQgdGhpc0pvaW5Qb2ludFN0YXRpY1BhcnQgdGhpc0VuY2xvc2luZ0pvaW5Qb2ludFN0YXRpY1BhcnQgZGVjbGFyZSBwYXJlbnRzICcrXG4gICAgJ3dhcm5pbmcgZXJyb3Igc29mdCBwcmVjZWRlbmNlIHRoaXNBc3BlY3RJbnN0YW5jZSc7XG4gIHZhciBTSE9SVEtFWVMgPSAnZ2V0IHNldCBhcmdzIGNhbGwnO1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzIDogS0VZV09SRFMsXG4gICAgaWxsZWdhbCA6IC88XFwvfCMvLFxuICAgIGNvbnRhaW5zIDogW1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnL1xcXFwqXFxcXConLFxuICAgICAgICAnXFxcXCovJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZSA6IDAsXG4gICAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIGVhdCB1cCBAJ3MgaW4gZW1haWxzIHRvIHByZXZlbnQgdGhlbSB0byBiZSByZWNvZ25pemVkIGFzIGRvY3RhZ3NcbiAgICAgICAgICAgICAgYmVnaW46IC9cXHcrQC8sIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lIDogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luIDogJ0BbQS1aYS16XSsnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZSA6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHMgOiAnYXNwZWN0JyxcbiAgICAgICAgZW5kIDogL1t7Oz1dLyxcbiAgICAgICAgZXhjbHVkZUVuZCA6IHRydWUsXG4gICAgICAgIGlsbGVnYWwgOiAvWzo7XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkcyA6ICdleHRlbmRzIGltcGxlbWVudHMgcGVydHlwZXdpdGhpbiBwZXJ0aGlzIHBlcnRhcmdldCBwZXJjZmxvd2JlbG93IHBlcmNmbG93IGlzc2luZ2xldG9uJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW4gOiAvXFwoW15cXCldKi8sXG4gICAgICAgICAgICBlbmQgOiAvWyldKy8sXG4gICAgICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTICsgJyAnICsgU0hPUlRLRVlTLFxuICAgICAgICAgICAgZXhjbHVkZUVuZCA6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWUgOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzIDogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIGVuZCA6IC9bezs9XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQgOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGtleXdvcmRzIDogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIGlsbGVnYWwgOiAvWzpcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkcyA6ICdleHRlbmRzIGltcGxlbWVudHMnfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBBc3BlY3RKIENvbnN0cnVjdHNcbiAgICAgICAgYmVnaW5LZXl3b3JkcyA6ICdwb2ludGN1dCBhZnRlciBiZWZvcmUgYXJvdW5kIHRocm93aW5nIHJldHVybmluZycsXG4gICAgICAgIGVuZCA6IC9bKV0vLFxuICAgICAgICBleGNsdWRlRW5kIDogZmFsc2UsXG4gICAgICAgIGlsbGVnYWwgOiAvW1wiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luIDogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKlxcXFwoJyxcbiAgICAgICAgICAgIHJldHVybkJlZ2luIDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zIDogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW4gOiAvWzpdLyxcbiAgICAgICAgcmV0dXJuQmVnaW4gOiB0cnVlLFxuICAgICAgICBlbmQgOiAvW3s7XS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgZXhjbHVkZUVuZCA6IGZhbHNlLFxuICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTLFxuICAgICAgICBpbGxlZ2FsIDogL1tcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbiA6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTICsgJyAnICsgU0hPUlRLRVlTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRoaXMgcHJldmVudHMgJ25ldyBOYW1lKC4uLiksIG9yIHRocm93IC4uLicgZnJvbSBiZWluZyByZWNvZ25pemVkIGFzIGEgZnVuY3Rpb24gZGVmaW5pdGlvblxuICAgICAgICBiZWdpbktleXdvcmRzIDogJ25ldyB0aHJvdycsXG4gICAgICAgIHJlbGV2YW5jZSA6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRoZSBmdW5jdGlvbiBjbGFzcyBpcyBhIGJpdCBkaWZmZXJlbnQgZm9yIEFzcGVjdEogY29tcGFyZWQgdG8gdGhlIEphdmEgbGFuZ3VhZ2VcbiAgICAgICAgY2xhc3NOYW1lIDogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW4gOiAvXFx3KyArXFx3KyhcXC4pP1xcdytcXHMqXFwoW15cXCldKlxcKVxccyooKHRocm93cylbXFx3XFxzLF0rKT9bXFx7O10vLFxuICAgICAgICByZXR1cm5CZWdpbiA6IHRydWUsXG4gICAgICAgIGVuZCA6IC9bezs9XS8sXG4gICAgICAgIGtleXdvcmRzIDogS0VZV09SRFMsXG4gICAgICAgIGV4Y2x1ZGVFbmQgOiB0cnVlLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbiA6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgICAgICAgICByZXR1cm5CZWdpbiA6IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWlucyA6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW4gOiAvXFwoLywgZW5kIDogL1xcKS8sXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTLFxuICAgICAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICAvLyBhbm5vdGF0aW9uIGlzIGFsc28gdXNlZCBpbiB0aGlzIGxhbmd1YWdlXG4gICAgICAgIGNsYXNzTmFtZSA6ICdtZXRhJyxcbiAgICAgICAgYmVnaW4gOiAnQFtBLVphLXpdKydcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQkFDS1RJQ0tfRVNDQVBFID0ge1xuICAgIGJlZ2luOiAnYFtcXFxcc1xcXFxTXSdcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgYWxpYXNlczogWyAnYWhrJyBdLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnQnJlYWsgQ29udGludWUgQ3JpdGljYWwgRXhpdCBFeGl0QXBwIEdvc3ViIEdvdG8gTmV3IE9uRXhpdCBQYXVzZSByZXR1cm4gU2V0QmF0Y2hMaW5lcyBTZXRUaW1lciBTdXNwZW5kIFRocmVhZCBUaHJvdyBVbnRpbCBhaGtfaWQgYWhrX2NsYXNzIGFoa19waWQgYWhrX2V4ZSBhaGtfZ3JvdXAnLFxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UgTk9UIEFORCBPUicsXG4gICAgICBidWlsdF9pbjogJ0NvbVNwZWMgQ2xpcGJvYXJkIENsaXBib2FyZEFsbCBFcnJvckxldmVsJyxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBCQUNLVElDS19FU0NBUEUsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NvbnRhaW5zOiBbQkFDS1RJQ0tfRVNDQVBFXX0pLFxuICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogaGxqcy5OVU1CRVJfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLCAvL3N1YnN0IHdvdWxkIGJlIHRoZSBtb3N0IGFjY3VyYXRlIGhvd2V2ZXIgZmFpbHMgdGhlIHBvaW50IG9mIGhpZ2hsaWdodGluZy4gdmFyaWFibGUgaXMgY29tcGFyYWJseSB0aGUgbW9zdCBhY2N1cmF0ZSB0aGF0IGFjdHVhbGx5IGhhcyBzb21lIGVmZmVjdFxuICAgICAgICBiZWdpbjogJyVbYS16QS1aMC05I18kQF0rJSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqXFxcXHcrXFxcXHMqKCx8JSknXG4gICAgICAgIC8vSSBkb24ndCByZWFsbHkga25vdyBpZiB0aGlzIGlzIHRvdGFsbHkgcmVsZXZhbnRcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJywgLy9zeW1ib2wgd291bGQgYmUgbW9zdCBhY2N1cmF0ZSBob3dldmVyIGlzIGhpZ2xpZ2h0ZWQganVzdCBsaWtlIGJ1aWx0X2luIGFuZCB0aGF0IG1ha2VzIHVwIGEgbG90IG9mIEF1dG9Ib3RrZXkgY29kZVxuXHRcdCAgICAgICAgICAgICAgICAgICAgICAgIC8vbWVhbmluZyB0aGF0IGl0IHdvdWxkIGZhaWwgdG8gaGlnaGxpZ2h0IGFueXRoaW5nXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnXlteXFxcXG5cIjtdKzo6KD8hPSknfSxcbiAgICAgICAgICB7YmVnaW46ICdeW15cXFxcblwiO10rOig/IT0pJywgcmVsZXZhbmNlOiAwfSAvLyB6ZXJvIHJlbGV2YW5jZSBhcyBpdCBjYXRjaGVzIGEgbG90IG9mIHRoaW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvbGxvd2VkIGJ5IGEgc2luZ2xlICc6JyBpbiBtYW55IGxhbmd1YWdlc1xuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKiNcXFxcdysnLCBlbmQ6JyQnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG5cdCAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdBX1thLXpBLVowLTldKydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGNvbnNlY3V0aXZlIGNvbW1hcywgbm90IGZvciBoaWdobGlnaHRpbmcgYnV0IGp1c3QgZm9yIHJlbGV2YW5jZVxuICAgICAgICBiZWdpbjogJyxcXFxccyosJ1xuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICB2YXIgS0VZV09SRFMgPSAnQnlSZWYgQ2FzZSBDb25zdCBDb250aW51ZUNhc2UgQ29udGludWVMb29wICcgK1xuICAgICAgICAnRGVmYXVsdCBEaW0gRG8gRWxzZSBFbHNlSWYgRW5kRnVuYyBFbmRJZiBFbmRTZWxlY3QgJyArXG4gICAgICAgICdFbmRTd2l0Y2ggRW5kV2l0aCBFbnVtIEV4aXQgRXhpdExvb3AgRm9yIEZ1bmMgJyArXG4gICAgICAgICdHbG9iYWwgSWYgSW4gTG9jYWwgTmV4dCBSZURpbSBSZXR1cm4gU2VsZWN0IFN0YXRpYyAnICtcbiAgICAgICAgJ1N0ZXAgU3dpdGNoIFRoZW4gVG8gVW50aWwgVm9sYXRpbGUgV0VuZCBXaGlsZSBXaXRoJyxcblxuICAgICAgICBMSVRFUkFMID0gJ1RydWUgRmFsc2UgQW5kIE51bGwgTm90IE9yJyxcblxuICAgICAgICBCVUlMVF9JTiA9XG4gICAgICAgICAgJ0FicyBBQ29zIEFkbGliUmVnaXN0ZXIgQWRsaWJVblJlZ2lzdGVyIEFzYyBBc2NXIEFTaW4gQXNzaWduIEFUYW4gQXV0b0l0U2V0T3B0aW9uIEF1dG9JdFdpbkdldFRpdGxlIEF1dG9JdFdpblNldFRpdGxlIEJlZXAgQmluYXJ5IEJpbmFyeUxlbiBCaW5hcnlNaWQgQmluYXJ5VG9TdHJpbmcgQml0QU5EIEJpdE5PVCBCaXRPUiBCaXRSb3RhdGUgQml0U2hpZnQgQml0WE9SIEJsb2NrSW5wdXQgQnJlYWsgQ2FsbCBDRFRyYXkgQ2VpbGluZyBDaHIgQ2hyVyBDbGlwR2V0IENsaXBQdXQgQ29uc29sZVJlYWQgQ29uc29sZVdyaXRlIENvbnNvbGVXcml0ZUVycm9yIENvbnRyb2xDbGljayBDb250cm9sQ29tbWFuZCBDb250cm9sRGlzYWJsZSBDb250cm9sRW5hYmxlIENvbnRyb2xGb2N1cyBDb250cm9sR2V0Rm9jdXMgQ29udHJvbEdldEhhbmRsZSBDb250cm9sR2V0UG9zIENvbnRyb2xHZXRUZXh0IENvbnRyb2xIaWRlIENvbnRyb2xMaXN0VmlldyBDb250cm9sTW92ZSBDb250cm9sU2VuZCBDb250cm9sU2V0VGV4dCBDb250cm9sU2hvdyBDb250cm9sVHJlZVZpZXcgQ29zIERlYyBEaXJDb3B5IERpckNyZWF0ZSBEaXJHZXRTaXplIERpck1vdmUgRGlyUmVtb3ZlIERsbENhbGwgRGxsQ2FsbEFkZHJlc3MgRGxsQ2FsbGJhY2tGcmVlIERsbENhbGxiYWNrR2V0UHRyIERsbENhbGxiYWNrUmVnaXN0ZXIgRGxsQ2xvc2UgRGxsT3BlbiBEbGxTdHJ1Y3RDcmVhdGUgRGxsU3RydWN0R2V0RGF0YSBEbGxTdHJ1Y3RHZXRQdHIgRGxsU3RydWN0R2V0U2l6ZSBEbGxTdHJ1Y3RTZXREYXRhIERyaXZlR2V0RHJpdmUgRHJpdmVHZXRGaWxlU3lzdGVtIERyaXZlR2V0TGFiZWwgRHJpdmVHZXRTZXJpYWwgRHJpdmVHZXRUeXBlIERyaXZlTWFwQWRkIERyaXZlTWFwRGVsIERyaXZlTWFwR2V0IERyaXZlU2V0TGFiZWwgRHJpdmVTcGFjZUZyZWUgRHJpdmVTcGFjZVRvdGFsIERyaXZlU3RhdHVzIEVudkdldCBFbnZTZXQgRW52VXBkYXRlIEV2YWwgRXhlY3V0ZSBFeHAgRmlsZUNoYW5nZURpciBGaWxlQ2xvc2UgRmlsZUNvcHkgRmlsZUNyZWF0ZU5URlNMaW5rIEZpbGVDcmVhdGVTaG9ydGN1dCBGaWxlRGVsZXRlIEZpbGVFeGlzdHMgRmlsZUZpbmRGaXJzdEZpbGUgRmlsZUZpbmROZXh0RmlsZSBGaWxlRmx1c2ggRmlsZUdldEF0dHJpYiBGaWxlR2V0RW5jb2RpbmcgRmlsZUdldExvbmdOYW1lIEZpbGVHZXRQb3MgRmlsZUdldFNob3J0Y3V0IEZpbGVHZXRTaG9ydE5hbWUgRmlsZUdldFNpemUgRmlsZUdldFRpbWUgRmlsZUdldFZlcnNpb24gRmlsZUluc3RhbGwgRmlsZU1vdmUgRmlsZU9wZW4gRmlsZU9wZW5EaWFsb2cgRmlsZVJlYWQgRmlsZVJlYWRMaW5lIEZpbGVSZWFkVG9BcnJheSBGaWxlUmVjeWNsZSBGaWxlUmVjeWNsZUVtcHR5IEZpbGVTYXZlRGlhbG9nIEZpbGVTZWxlY3RGb2xkZXIgRmlsZVNldEF0dHJpYiBGaWxlU2V0RW5kIEZpbGVTZXRQb3MgRmlsZVNldFRpbWUgRmlsZVdyaXRlIEZpbGVXcml0ZUxpbmUgRmxvb3IgRnRwU2V0UHJveHkgRnVuY05hbWUgR1VJQ3JlYXRlIEdVSUN0cmxDcmVhdGVBdmkgR1VJQ3RybENyZWF0ZUJ1dHRvbiBHVUlDdHJsQ3JlYXRlQ2hlY2tib3ggR1VJQ3RybENyZWF0ZUNvbWJvIEdVSUN0cmxDcmVhdGVDb250ZXh0TWVudSBHVUlDdHJsQ3JlYXRlRGF0ZSBHVUlDdHJsQ3JlYXRlRHVtbXkgR1VJQ3RybENyZWF0ZUVkaXQgR1VJQ3RybENyZWF0ZUdyYXBoaWMgR1VJQ3RybENyZWF0ZUdyb3VwIEdVSUN0cmxDcmVhdGVJY29uIEdVSUN0cmxDcmVhdGVJbnB1dCBHVUlDdHJsQ3JlYXRlTGFiZWwgR1VJQ3RybENyZWF0ZUxpc3QgR1VJQ3RybENyZWF0ZUxpc3RWaWV3IEdVSUN0cmxDcmVhdGVMaXN0Vmlld0l0ZW0gR1VJQ3RybENyZWF0ZU1lbnUgR1VJQ3RybENyZWF0ZU1lbnVJdGVtIEdVSUN0cmxDcmVhdGVNb250aENhbCBHVUlDdHJsQ3JlYXRlT2JqIEdVSUN0cmxDcmVhdGVQaWMgR1VJQ3RybENyZWF0ZVByb2dyZXNzIEdVSUN0cmxDcmVhdGVSYWRpbyBHVUlDdHJsQ3JlYXRlU2xpZGVyIEdVSUN0cmxDcmVhdGVUYWIgR1VJQ3RybENyZWF0ZVRhYkl0ZW0gR1VJQ3RybENyZWF0ZVRyZWVWaWV3IEdVSUN0cmxDcmVhdGVUcmVlVmlld0l0ZW0gR1VJQ3RybENyZWF0ZVVwZG93biBHVUlDdHJsRGVsZXRlIEdVSUN0cmxHZXRIYW5kbGUgR1VJQ3RybEdldFN0YXRlIEdVSUN0cmxSZWFkIEdVSUN0cmxSZWN2TXNnIEdVSUN0cmxSZWdpc3Rlckxpc3RWaWV3U29ydCBHVUlDdHJsU2VuZE1zZyBHVUlDdHJsU2VuZFRvRHVtbXkgR1VJQ3RybFNldEJrQ29sb3IgR1VJQ3RybFNldENvbG9yIEdVSUN0cmxTZXRDdXJzb3IgR1VJQ3RybFNldERhdGEgR1VJQ3RybFNldERlZkJrQ29sb3IgR1VJQ3RybFNldERlZkNvbG9yIEdVSUN0cmxTZXRGb250IEdVSUN0cmxTZXRHcmFwaGljIEdVSUN0cmxTZXRJbWFnZSBHVUlDdHJsU2V0TGltaXQgR1VJQ3RybFNldE9uRXZlbnQgR1VJQ3RybFNldFBvcyBHVUlDdHJsU2V0UmVzaXppbmcgR1VJQ3RybFNldFN0YXRlIEdVSUN0cmxTZXRTdHlsZSBHVUlDdHJsU2V0VGlwIEdVSURlbGV0ZSBHVUlHZXRDdXJzb3JJbmZvIEdVSUdldE1zZyBHVUlHZXRTdHlsZSBHVUlSZWdpc3Rlck1zZyBHVUlTZXRBY2NlbGVyYXRvcnMgR1VJU2V0QmtDb2xvciBHVUlTZXRDb29yZCBHVUlTZXRDdXJzb3IgR1VJU2V0Rm9udCBHVUlTZXRIZWxwIEdVSVNldEljb24gR1VJU2V0T25FdmVudCBHVUlTZXRTdGF0ZSBHVUlTZXRTdHlsZSBHVUlTdGFydEdyb3VwIEdVSVN3aXRjaCBIZXggSG90S2V5U2V0IEh0dHBTZXRQcm94eSBIdHRwU2V0VXNlckFnZW50IEhXbmQgSW5ldENsb3NlIEluZXRHZXQgSW5ldEdldEluZm8gSW5ldEdldFNpemUgSW5ldFJlYWQgSW5pRGVsZXRlIEluaVJlYWQgSW5pUmVhZFNlY3Rpb24gSW5pUmVhZFNlY3Rpb25OYW1lcyBJbmlSZW5hbWVTZWN0aW9uIEluaVdyaXRlIEluaVdyaXRlU2VjdGlvbiBJbnB1dEJveCBJbnQgSXNBZG1pbiBJc0FycmF5IElzQmluYXJ5IElzQm9vbCBJc0RlY2xhcmVkIElzRGxsU3RydWN0IElzRmxvYXQgSXNGdW5jIElzSFduZCBJc0ludCBJc0tleXdvcmQgSXNOdW1iZXIgSXNPYmogSXNQdHIgSXNTdHJpbmcgTG9nIE1lbUdldFN0YXRzIE1vZCBNb3VzZUNsaWNrIE1vdXNlQ2xpY2tEcmFnIE1vdXNlRG93biBNb3VzZUdldEN1cnNvciBNb3VzZUdldFBvcyBNb3VzZU1vdmUgTW91c2VVcCBNb3VzZVdoZWVsIE1zZ0JveCBOdW1iZXIgT2JqQ3JlYXRlIE9iakNyZWF0ZUludGVyZmFjZSBPYmpFdmVudCBPYmpHZXQgT2JqTmFtZSBPbkF1dG9JdEV4aXRSZWdpc3RlciBPbkF1dG9JdEV4aXRVblJlZ2lzdGVyIFBpbmcgUGl4ZWxDaGVja3N1bSBQaXhlbEdldENvbG9yIFBpeGVsU2VhcmNoIFByb2Nlc3NDbG9zZSBQcm9jZXNzRXhpc3RzIFByb2Nlc3NHZXRTdGF0cyBQcm9jZXNzTGlzdCBQcm9jZXNzU2V0UHJpb3JpdHkgUHJvY2Vzc1dhaXQgUHJvY2Vzc1dhaXRDbG9zZSBQcm9ncmVzc09mZiBQcm9ncmVzc09uIFByb2dyZXNzU2V0IFB0ciBSYW5kb20gUmVnRGVsZXRlIFJlZ0VudW1LZXkgUmVnRW51bVZhbCBSZWdSZWFkIFJlZ1dyaXRlIFJvdW5kIFJ1biBSdW5BcyBSdW5Bc1dhaXQgUnVuV2FpdCBTZW5kIFNlbmRLZWVwQWN0aXZlIFNldEVycm9yIFNldEV4dGVuZGVkIFNoZWxsRXhlY3V0ZSBTaGVsbEV4ZWN1dGVXYWl0IFNodXRkb3duIFNpbiBTbGVlcCBTb3VuZFBsYXkgU291bmRTZXRXYXZlVm9sdW1lIFNwbGFzaEltYWdlT24gU3BsYXNoT2ZmIFNwbGFzaFRleHRPbiBTcXJ0IFNSYW5kb20gU3RhdHVzYmFyR2V0VGV4dCBTdGRlcnJSZWFkIFN0ZGluV3JpdGUgU3RkaW9DbG9zZSBTdGRvdXRSZWFkIFN0cmluZyBTdHJpbmdBZGRDUiBTdHJpbmdDb21wYXJlIFN0cmluZ0Zvcm1hdCBTdHJpbmdGcm9tQVNDSUlBcnJheSBTdHJpbmdJblN0ciBTdHJpbmdJc0FsTnVtIFN0cmluZ0lzQWxwaGEgU3RyaW5nSXNBU0NJSSBTdHJpbmdJc0RpZ2l0IFN0cmluZ0lzRmxvYXQgU3RyaW5nSXNJbnQgU3RyaW5nSXNMb3dlciBTdHJpbmdJc1NwYWNlIFN0cmluZ0lzVXBwZXIgU3RyaW5nSXNYRGlnaXQgU3RyaW5nTGVmdCBTdHJpbmdMZW4gU3RyaW5nTG93ZXIgU3RyaW5nTWlkIFN0cmluZ1JlZ0V4cCBTdHJpbmdSZWdFeHBSZXBsYWNlIFN0cmluZ1JlcGxhY2UgU3RyaW5nUmV2ZXJzZSBTdHJpbmdSaWdodCBTdHJpbmdTcGxpdCBTdHJpbmdTdHJpcENSIFN0cmluZ1N0cmlwV1MgU3RyaW5nVG9BU0NJSUFycmF5IFN0cmluZ1RvQmluYXJ5IFN0cmluZ1RyaW1MZWZ0IFN0cmluZ1RyaW1SaWdodCBTdHJpbmdVcHBlciBUYW4gVENQQWNjZXB0IFRDUENsb3NlU29ja2V0IFRDUENvbm5lY3QgVENQTGlzdGVuIFRDUE5hbWVUb0lQIFRDUFJlY3YgVENQU2VuZCBUQ1BTaHV0ZG93biwgVURQU2h1dGRvd24gVENQU3RhcnR1cCwgVURQU3RhcnR1cCBUaW1lckRpZmYgVGltZXJJbml0IFRvb2xUaXAgVHJheUNyZWF0ZUl0ZW0gVHJheUNyZWF0ZU1lbnUgVHJheUdldE1zZyBUcmF5SXRlbURlbGV0ZSBUcmF5SXRlbUdldEhhbmRsZSBUcmF5SXRlbUdldFN0YXRlIFRyYXlJdGVtR2V0VGV4dCBUcmF5SXRlbVNldE9uRXZlbnQgVHJheUl0ZW1TZXRTdGF0ZSBUcmF5SXRlbVNldFRleHQgVHJheVNldENsaWNrIFRyYXlTZXRJY29uIFRyYXlTZXRPbkV2ZW50IFRyYXlTZXRQYXVzZUljb24gVHJheVNldFN0YXRlIFRyYXlTZXRUb29sVGlwIFRyYXlUaXAgVUJvdW5kIFVEUEJpbmQgVURQQ2xvc2VTb2NrZXQgVURQT3BlbiBVRFBSZWN2IFVEUFNlbmQgVmFyR2V0VHlwZSBXaW5BY3RpdmF0ZSBXaW5BY3RpdmUgV2luQ2xvc2UgV2luRXhpc3RzIFdpbkZsYXNoIFdpbkdldENhcmV0UG9zIFdpbkdldENsYXNzTGlzdCBXaW5HZXRDbGllbnRTaXplIFdpbkdldEhhbmRsZSBXaW5HZXRQb3MgV2luR2V0UHJvY2VzcyBXaW5HZXRTdGF0ZSBXaW5HZXRUZXh0IFdpbkdldFRpdGxlIFdpbktpbGwgV2luTGlzdCBXaW5NZW51U2VsZWN0SXRlbSBXaW5NaW5pbWl6ZUFsbCBXaW5NaW5pbWl6ZUFsbFVuZG8gV2luTW92ZSBXaW5TZXRPblRvcCBXaW5TZXRTdGF0ZSBXaW5TZXRUaXRsZSBXaW5TZXRUcmFucyBXaW5XYWl0JyxcblxuICAgICAgICBDT01NRU5UID0ge1xuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnI2NzJywgJyNjZScpLFxuICAgICAgICAgICAgICBobGpzLkNPTU1FTlQoJyNjb21tZW50cy1zdGFydCcsICcjY29tbWVudHMtZW5kJylcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcblxuICAgICAgICBWQVJJQUJMRSA9IHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCRbQS16MC05X10rJ1xuICAgICAgICB9LFxuXG4gICAgICAgIFNUUklORyA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICB2YXJpYW50czogW3tcbiAgICAgICAgICAgICAgICBiZWdpbjogL1wiLyxcbiAgICAgICAgICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXCJcIi8sXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC8nLyxcbiAgICAgICAgICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC8nJy8sXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9XVxuICAgICAgICB9LFxuXG4gICAgICAgIE5VTUJFUiA9IHtcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbaGxqcy5CSU5BUllfTlVNQkVSX01PREUsIGhsanMuQ19OVU1CRVJfTU9ERV1cbiAgICAgICAgfSxcblxuICAgICAgICBQUkVQUk9DRVNTT1IgPSB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgIGJlZ2luOiAnIycsXG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdjb21tZW50cyBpbmNsdWRlIGluY2x1ZGUtb25jZSBOb1RyYXlJY29uIE9uQXV0b0l0U3RhcnRSZWdpc3RlciBwcmFnbWEgY29tcGlsZSBSZXF1aXJlQWRtaW4nfSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcXFxcXG4vLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2luY2x1ZGUnfSxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudHM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnPCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogJz4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1wiLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiAvXCIvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXCJcIi8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvJy8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogLycvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvJycvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICAgIENPTU1FTlRcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcblxuICAgICAgICBDT05TVEFOVCA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICAvLyBiZWdpbjogJ0AnLFxuICAgICAgICAgICAgLy8gZW5kOiAnJCcsXG4gICAgICAgICAgICAvLyBrZXl3b3JkczogJ0FwcERhdGFDb21tb25EaXIgQXBwRGF0YURpciBBdXRvSXRFeGUgQXV0b0l0UElEIEF1dG9JdFZlcnNpb24gQXV0b0l0WDY0IENPTV9FdmVudE9iaiBDb21tb25GaWxlc0RpciBDb21waWxlZCBDb21wdXRlck5hbWUgQ29tU3BlYyBDUFVBcmNoIENSIENSTEYgRGVza3RvcENvbW1vbkRpciBEZXNrdG9wRGVwdGggRGVza3RvcERpciBEZXNrdG9wSGVpZ2h0IERlc2t0b3BSZWZyZXNoIERlc2t0b3BXaWR0aCBEb2N1bWVudHNDb21tb25EaXIgZXJyb3IgZXhpdENvZGUgZXhpdE1ldGhvZCBleHRlbmRlZCBGYXZvcml0ZXNDb21tb25EaXIgRmF2b3JpdGVzRGlyIEdVSV9DdHJsSGFuZGxlIEdVSV9DdHJsSWQgR1VJX0RyYWdGaWxlIEdVSV9EcmFnSWQgR1VJX0Ryb3BJZCBHVUlfV2luSGFuZGxlIEhvbWVEcml2ZSBIb21lUGF0aCBIb21lU2hhcmUgSG90S2V5UHJlc3NlZCBIT1VSIElQQWRkcmVzczEgSVBBZGRyZXNzMiBJUEFkZHJlc3MzIElQQWRkcmVzczQgS0JMYXlvdXQgTEYgTG9jYWxBcHBEYXRhRGlyIExvZ29uRE5TRG9tYWluIExvZ29uRG9tYWluIExvZ29uU2VydmVyIE1EQVkgTUlOIE1PTiBNU0VDIE1VSUxhbmcgTXlEb2N1bWVudHNEaXIgTnVtUGFyYW1zIE9TQXJjaCBPU0J1aWxkIE9TTGFuZyBPU1NlcnZpY2VQYWNrIE9TVHlwZSBPU1ZlcnNpb24gUHJvZ3JhbUZpbGVzRGlyIFByb2dyYW1zQ29tbW9uRGlyIFByb2dyYW1zRGlyIFNjcmlwdERpciBTY3JpcHRGdWxsUGF0aCBTY3JpcHRMaW5lTnVtYmVyIFNjcmlwdE5hbWUgU0VDIFN0YXJ0TWVudUNvbW1vbkRpciBTdGFydE1lbnVEaXIgU3RhcnR1cENvbW1vbkRpciBTdGFydHVwRGlyIFNXX0RJU0FCTEUgU1dfRU5BQkxFIFNXX0hJREUgU1dfTE9DSyBTV19NQVhJTUlaRSBTV19NSU5JTUlaRSBTV19SRVNUT1JFIFNXX1NIT1cgU1dfU0hPV0RFRkFVTFQgU1dfU0hPV01BWElNSVpFRCBTV19TSE9XTUlOSU1JWkVEIFNXX1NIT1dNSU5OT0FDVElWRSBTV19TSE9XTkEgU1dfU0hPV05PQUNUSVZBVEUgU1dfU0hPV05PUk1BTCBTV19VTkxPQ0sgU3lzdGVtRGlyIFRBQiBUZW1wRGlyIFRSQVlfSUQgVHJheUljb25GbGFzaGluZyBUcmF5SWNvblZpc2libGUgVXNlck5hbWUgVXNlclByb2ZpbGVEaXIgV0RBWSBXaW5kb3dzRGlyIFdvcmtpbmdEaXIgWURBWSBZRUFSJyxcbiAgICAgICAgICAgIC8vIHJlbGV2YW5jZTogNVxuICAgICAgICAgICAgYmVnaW46ICdAW0EtejAtOV9dKydcbiAgICAgICAgfSxcblxuICAgICAgICBGVU5DVElPTiA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdGdW5jJyxcbiAgICAgICAgICAgIGVuZDogJyQnLFxuICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFwkfFxcXFxbfCUnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAga2V5d29yZDogS0VZV09SRFMsXG4gICAgICAgICAgICBidWlsdF9pbjogQlVJTFRfSU4sXG4gICAgICAgICAgICBsaXRlcmFsOiBMSVRFUkFMXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBDT01NRU5ULFxuICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICBOVU1CRVIsXG4gICAgICAgICAgICBQUkVQUk9DRVNTT1IsXG4gICAgICAgICAgICBDT05TVEFOVCxcbiAgICAgICAgICAgIEZVTkNUSU9OXG4gICAgICAgIF1cbiAgICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogJ1xcXFwuPycgKyBobGpzLklERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAvKiBtbmVtb25pYyAqL1xuICAgICAgICAnYWRjIGFkZCBhZGl3IGFuZCBhbmRpIGFzciBiY2xyIGJsZCBicmJjIGJyYnMgYnJjYyBicmNzIGJyZWFrIGJyZXEgYnJnZSBicmhjIGJyaHMgJyArXG4gICAgICAgICdicmlkIGJyaWUgYnJsbyBicmx0IGJybWkgYnJuZSBicnBsIGJyc2ggYnJ0YyBicnRzIGJydmMgYnJ2cyBic2V0IGJzdCBjYWxsIGNiaSBjYnIgJyArXG4gICAgICAgICdjbGMgY2xoIGNsaSBjbG4gY2xyIGNscyBjbHQgY2x2IGNseiBjb20gY3AgY3BjIGNwaSBjcHNlIGRlYyBlaWNhbGwgZWlqbXAgZWxwbSBlb3IgJyArXG4gICAgICAgICdmbXVsIGZtdWxzIGZtdWxzdSBpY2FsbCBpam1wIGluIGluYyBqbXAgbGQgbGRkIGxkaSBsZHMgbHBtIGxzbCBsc3IgbW92IG1vdncgbXVsICcgK1xuICAgICAgICAnbXVscyBtdWxzdSBuZWcgbm9wIG9yIG9yaSBvdXQgcG9wIHB1c2ggcmNhbGwgcmV0IHJldGkgcmptcCByb2wgcm9yIHNiYyBzYnIgc2JyYyBzYnJzICcgK1xuICAgICAgICAnc2VjIHNlaCBzYmkgc2JjaSBzYmljIHNiaXMgc2JpdyBzZWkgc2VuIHNlciBzZXMgc2V0IHNldiBzZXogc2xlZXAgc3BtIHN0IHN0ZCBzdHMgc3ViICcgK1xuICAgICAgICAnc3ViaSBzd2FwIHRzdCB3ZHInLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8qIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMgKi9cbiAgICAgICAgJ3IwIHIxIHIyIHIzIHI0IHI1IHI2IHI3IHI4IHI5IHIxMCByMTEgcjEyIHIxMyByMTQgcjE1IHIxNiByMTcgcjE4IHIxOSByMjAgcjIxIHIyMiAnICtcbiAgICAgICAgJ3IyMyByMjQgcjI1IHIyNiByMjcgcjI4IHIyOSByMzAgcjMxIHh8MCB4aCB4bCB5fDAgeWggeWwgenwwIHpoIHpsICcgK1xuICAgICAgICAvKiBJTyBSZWdpc3RlcnMgKEFUTWVnYTEyOCkgKi9cbiAgICAgICAgJ3Vjc3IxYyB1ZHIxIHVjc3IxYSB1Y3NyMWIgdWJycjFsIHVicnIxaCB1Y3NyMGMgdWJycjBoIHRjY3IzYyB0Y2NyM2EgdGNjcjNiIHRjbnQzaCAnICtcbiAgICAgICAgJ3RjbnQzbCBvY3IzYWggb2NyM2FsIG9jcjNiaCBvY3IzYmwgb2NyM2NoIG9jcjNjbCBpY3IzaCBpY3IzbCBldGltc2sgZXRpZnIgdGNjcjFjICcgK1xuICAgICAgICAnb2NyMWNoIG9jcjFjbCB0d2NyIHR3ZHIgdHdhciB0d3NyIHR3YnIgb3NjY2FsIHhtY3JhIHhtY3JiIGVpY3JhIHNwbWNzciBzcG1jciBwb3J0ZyAnICtcbiAgICAgICAgJ2RkcmcgcGluZyBwb3J0ZiBkZHJmIHNyZWcgc3BoIHNwbCB4ZGl2IHJhbXB6IGVpY3JiIGVpbXNrIGdpbXNrIGdpY3IgZWlmciBnaWZyIHRpbXNrICcgK1xuICAgICAgICAndGlmciBtY3VjciBtY3Vjc3IgdGNjcjAgdGNudDAgb2NyMCBhc3NyIHRjY3IxYSB0Y2NyMWIgdGNudDFoIHRjbnQxbCBvY3IxYWggb2NyMWFsICcgK1xuICAgICAgICAnb2NyMWJoIG9jcjFibCBpY3IxaCBpY3IxbCB0Y2NyMiB0Y250MiBvY3IyIG9jZHIgd2R0Y3Igc2Zpb3IgZWVhcmggZWVhcmwgZWVkciBlZWNyICcgK1xuICAgICAgICAncG9ydGEgZGRyYSBwaW5hIHBvcnRiIGRkcmIgcGluYiBwb3J0YyBkZHJjIHBpbmMgcG9ydGQgZGRyZCBwaW5kIHNwZHIgc3BzciBzcGNyIHVkcjAgJyArXG4gICAgICAgICd1Y3NyMGEgdWNzcjBiIHVicnIwbCBhY3NyIGFkbXV4IGFkY3NyIGFkY2ggYWRjbCBwb3J0ZSBkZHJlIHBpbmUgcGluZicsXG4gICAgICBtZXRhOlxuICAgICAgICAnLmJ5dGUgLmNzZWcgLmRiIC5kZWYgLmRldmljZSAuZHNlZyAuZHcgLmVuZG1hY3JvIC5lcXUgLmVzZWcgLmV4aXQgLmluY2x1ZGUgLmxpc3QgJyArXG4gICAgICAgICcubGlzdG1hYyAubWFjcm8gLm5vbGlzdCAub3JnIC5zZXQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSwgLy8gMHguLi4sIGRlY2ltYWwsIGZsb2F0XG4gICAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgLy8gMGIuLi5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcJFthLXpBLVowLTldK3wwb1swLTddKyknIC8vICQuLi4sIDBvLi4uXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdbXlxcXFxcXFxcXVxcJycsXG4gICAgICAgIGlsbGVnYWw6ICdbXlxcXFxcXFxcXVteXFwnXSdcbiAgICAgIH0sXG4gICAgICB7Y2xhc3NOYW1lOiAnc3ltYm9sJywgIGJlZ2luOiAnXltBLVphLXowLTlfLiRdKzonfSxcbiAgICAgIHtjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICcjJywgZW5kOiAnJCd9LFxuICAgICAgeyAgLy8gc3Vic3RpdHV0aW9uIHdpdGhpbiBhIG1hY3JvXG4gICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgYmVnaW46ICdAWzAtOV0rJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1xcJFtcXHdcXGQjQF1bXFx3XFxkX10qL30sXG4gICAgICB7YmVnaW46IC9cXCRcXHsoLio/KX0vfVxuICAgIF1cbiAgfTtcbiAgdmFyIEtFWVdPUkRTID0gJ0JFR0lOIEVORCBpZiBlbHNlIHdoaWxlIGRvIGZvciBpbiBicmVhayBjb250aW51ZSBkZWxldGUgbmV4dCBuZXh0ZmlsZSBmdW5jdGlvbiBmdW5jIGV4aXR8MTAnO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8Yik/cj8nJycvLCBlbmQ6IC8nJycvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/XCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKScvLCBlbmQ6IC8nLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKVwiLywgZW5kOiAvXCIvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhifGJyKScvLCBlbmQ6IC8nL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oYnxicilcIi8sIGVuZDogL1wiL1xuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG4gIHJldHVybiB7XG5cdCBrZXl3b3Jkczoge1xuXHQgICBrZXl3b3JkOiBLRVlXT1JEU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFZBUklBQkxFLFxuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiAnZmFsc2UgaW50IGFic3RyYWN0IHByaXZhdGUgY2hhciBib29sZWFuIHN0YXRpYyBudWxsIGlmIGZvciB0cnVlICcgK1xuICAgICAgJ3doaWxlIGxvbmcgdGhyb3cgZmluYWxseSBwcm90ZWN0ZWQgZmluYWwgcmV0dXJuIHZvaWQgZW51bSBlbHNlICcgK1xuICAgICAgJ2JyZWFrIG5ldyBjYXRjaCBieXRlIHN1cGVyIGNhc2Ugc2hvcnQgZGVmYXVsdCBkb3VibGUgcHVibGljIHRyeSB0aGlzIHN3aXRjaCAnICtcbiAgICAgICdjb250aW51ZSByZXZlcnNlIGZpcnN0ZmFzdCBmaXJzdG9ubHkgZm9ydXBkYXRlIG5vZmV0Y2ggc3VtIGF2ZyBtaW5vZiBtYXhvZiBjb3VudCAnICtcbiAgICAgICdvcmRlciBncm91cCBieSBhc2MgZGVzYyBpbmRleCBoaW50IGxpa2UgZGlzcGFseSBlZGl0IGNsaWVudCBzZXJ2ZXIgdHRzYmVnaW4gJyArXG4gICAgICAndHRzY29tbWl0IHN0ciByZWFsIGRhdGUgY29udGFpbmVyIGFueXR5cGUgY29tbW9uIGRpdiBtb2QnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJzonLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRbXFx3XFxkI0BdW1xcd1xcZF9dKi99LFxuICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICBdXG4gIH07XG4gIHZhciBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBWQVIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXCRcXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBFU0NBUEVEX1FVT1RFID0ge1xuICAgIGNsYXNzTmFtZTogJycsXG4gICAgYmVnaW46IC9cXFxcXCIvXG5cbiAgfTtcbiAgdmFyIEFQT1NfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc2gnLCAnenNoJ10sXG4gICAgbGV4ZW1lczogL1xcYi0/W2EtelxcLl9dK1xcYi8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdpZiB0aGVuIGVsc2UgZWxpZiBmaSBmb3Igd2hpbGUgaW4gZG8gZG9uZSBjYXNlIGVzYWMgZnVuY3Rpb24nLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vIFNoZWxsIGJ1aWx0LWluc1xuICAgICAgICAvLyBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmFzaC9tYW51YWwvaHRtbF9ub2RlL1NoZWxsLUJ1aWx0aW4tQ29tbWFuZHMuaHRtbFxuICAgICAgICAnYnJlYWsgY2QgY29udGludWUgZXZhbCBleGVjIGV4aXQgZXhwb3J0IGdldG9wdHMgaGFzaCBwd2QgcmVhZG9ubHkgcmV0dXJuIHNoaWZ0IHRlc3QgdGltZXMgJyArXG4gICAgICAgICd0cmFwIHVtYXNrIHVuc2V0ICcgK1xuICAgICAgICAvLyBCYXNoIGJ1aWx0LWluc1xuICAgICAgICAnYWxpYXMgYmluZCBidWlsdGluIGNhbGxlciBjb21tYW5kIGRlY2xhcmUgZWNobyBlbmFibGUgaGVscCBsZXQgbG9jYWwgbG9nb3V0IG1hcGZpbGUgcHJpbnRmICcgK1xuICAgICAgICAncmVhZCByZWFkYXJyYXkgc291cmNlIHR5cGUgdHlwZXNldCB1bGltaXQgdW5hbGlhcyAnICtcbiAgICAgICAgLy8gU2hlbGwgbW9kaWZpZXJzXG4gICAgICAgICdzZXQgc2hvcHQgJyArXG4gICAgICAgIC8vIFpzaCBidWlsdC1pbnNcbiAgICAgICAgJ2F1dG9sb2FkIGJnIGJpbmRrZXkgYnllIGNhcCBjaGRpciBjbG9uZSBjb21wYXJndW1lbnRzIGNvbXBjYWxsIGNvbXBjdGwgY29tcGRlc2NyaWJlIGNvbXBmaWxlcyAnICtcbiAgICAgICAgJ2NvbXBncm91cHMgY29tcHF1b3RlIGNvbXB0YWdzIGNvbXB0cnkgY29tcHZhbHVlcyBkaXJzIGRpc2FibGUgZGlzb3duIGVjaG90YyBlY2hvdGkgZW11bGF0ZSAnICtcbiAgICAgICAgJ2ZjIGZnIGZsb2F0IGZ1bmN0aW9ucyBnZXRjYXAgZ2V0bG4gaGlzdG9yeSBpbnRlZ2VyIGpvYnMga2lsbCBsaW1pdCBsb2cgbm9nbG9iIHBvcGQgcHJpbnQgJyArXG4gICAgICAgICdwdXNoZCBwdXNobG4gcmVoYXNoIHNjaGVkIHNldGNhcCBzZXRvcHQgc3RhdCBzdXNwZW5kIHR0eWN0bCB1bmZ1bmN0aW9uIHVuaGFzaCB1bmxpbWl0ICcgK1xuICAgICAgICAndW5zZXRvcHQgdmFyZWQgd2FpdCB3aGVuY2Ugd2hlcmUgd2hpY2ggemNvbXBpbGUgemZvcm1hdCB6ZnRwIHpsZSB6bW9kbG9hZCB6cGFyc2VvcHRzIHpwcm9mICcgK1xuICAgICAgICAnenB0eSB6cmVnZXhwYXJzZSB6c29ja2V0IHpzdHlsZSB6dGNwJyxcbiAgICAgIF86XG4gICAgICAgICctbmUgLWVxIC1sdCAtZ3QgLWYgLWQgLWUgLXMgLWwgLWEnIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eIyFbXlxcbl0rc2hcXHMqJC8sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46IC9cXHdbXFx3XFxkX10qXFxzKlxcKFxccypcXClcXHMqXFx7LyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAvXFx3W1xcd1xcZF9dKi99KV0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBRVU9URV9TVFJJTkcsXG4gICAgICBFU0NBUEVEX1FVT1RFLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBWQVJcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgaWxsZWdhbDogJ15cXC4nLFxuICAgIC8vIFN1cHBvcnQgZXhwbGljaXRlbHkgdHlwZWQgdmFyaWFibGVzIHRoYXQgZW5kIHdpdGggJCUhIG9yICMuXG4gICAgbGV4ZW1lczogJ1thLXpBLVpdW2EtekEtWjAtOV9cXCRcXCVcXCFcXCNdKicsXG4gICAga2V5d29yZHM6IHtcbiAgICAgICAga2V5d29yZDpcbiAgICAgICAgICAnQUJTIEFTQyBBTkQgQVROIEFVVE98MCBCRUVQIEJMT0FEfDEwIEJTQVZFfDEwIENBTEwgQ0FMTFMgQ0RCTCBDSEFJTiBDSERJUiBDSFIkfDEwIENJTlQgQ0lSQ0xFICcgK1xuICAgICAgICAgICdDTEVBUiBDTE9TRSBDTFMgQ09MT1IgQ09NIENPTU1PTiBDT05UIENPUyBDU05HIENTUkxJTiBDVkQgQ1ZJIENWUyBEQVRBIERBVEUkICcgK1xuICAgICAgICAgICdERUZEQkwgREVGSU5UIERFRlNORyBERUZTVFIgREVGfDAgU0VHIFVTUiBERUxFVEUgRElNIERSQVcgRURJVCBFTkQgRU5WSVJPTiBFTlZJUk9OJCAnICtcbiAgICAgICAgICAnRU9GIEVRViBFUkFTRSBFUkRFViBFUkRFViQgRVJMIEVSUiBFUlJPUiBFWFAgRklFTEQgRklMRVMgRklYIEZPUnwwIEZSRSBHRVQgR09TVUJ8MTAgR09UTyAnICtcbiAgICAgICAgICAnSEVYJCBJRiBUSEVOIEVMU0V8MCBJTktFWSQgSU5QIElOUFVUIElOUFVUIyBJTlBVVCQgSU5TVFIgSU1QIElOVCBJT0NUTCBJT0NUTCQgS0VZIE9OICcgK1xuICAgICAgICAgICdPRkYgTElTVCBLSUxMIExFRlQkIExFTiBMRVQgTElORSBMTElTVCBMT0FEIExPQyBMT0NBVEUgTE9GIExPRyBMUFJJTlQgVVNJTkcgTFNFVCAnICtcbiAgICAgICAgICAnTUVSR0UgTUlEJCBNS0RJUiBNS0QkIE1LSSQgTUtTJCBNT0QgTkFNRSBORVcgTkVYVCBOT0lTRSBOT1QgT0NUJCBPTiBPUiBQRU4gUExBWSBTVFJJRyBPUEVOIE9QVElPTiAnICtcbiAgICAgICAgICAnQkFTRSBPVVQgUEFJTlQgUEFMRVRURSBQQ09QWSBQRUVLIFBNQVAgUE9JTlQgUE9LRSBQT1MgUFJJTlQgUFJJTlRdIFBTRVQgUFJFU0VUICcgK1xuICAgICAgICAgICdQVVQgUkFORE9NSVpFIFJFQUQgUkVNIFJFTlVNIFJFU0VUfDAgUkVTVE9SRSBSRVNVTUUgUkVUVVJOfDAgUklHSFQkIFJNRElSIFJORCBSU0VUICcgK1xuICAgICAgICAgICdSVU4gU0FWRSBTQ1JFRU4gU0dOIFNIRUxMIFNJTiBTT1VORCBTUEFDRSQgU1BDIFNRUiBTVEVQIFNUSUNLIFNUT1AgU1RSJCBTVFJJTkckIFNXQVAgJyArXG4gICAgICAgICAgJ1NZU1RFTSBUQUIgVEFOIFRJTUUkIFRJTUVSIFRST0ZGIFRST04gVE8gVVNSIFZBTCBWQVJQVFIgVkFSUFRSJCBWSUVXIFdBSVQgV0hJTEUgJyArXG4gICAgICAgICAgJ1dFTkQgV0lEVEggV0lORE9XIFdSSVRFIFhPUidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCdSRU0nLCAnJCcsIHtyZWxldmFuY2U6IDEwfSksXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcJycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICAvLyBNYXRjaCBsaW5lIG51bWJlcnNcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdeWzAtOV0rXFwgJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gTWF0Y2ggdHlwZWQgbnVtZXJpYyBjb25zdGFudHMgKDEwMDAsIDEyLjM0ISwgMS4yZTUsIDEuNSMsIDEuMkQyKVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKFswLTldK1swLTllZEVEXFwuXSpbI1xcIV0/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gTWF0Y2ggaGV4YWRlY2ltYWwgbnVtYmVycyAoJkh4eHh4KVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJyhcXCZbaEhdWzAtOWEtZkEtRl17MSw0fSknXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBNYXRjaCBvY3RhbCBudW1iZXJzICgmT3h4eHh4eClcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoXFwmW29PXVswLTddezEsNn0pJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKXtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgLy8gQXR0cmlidXRlXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAvPC8sIGVuZDogLz4vXG4gICAgICB9LFxuICAgICAgLy8gU3BlY2lmaWNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC86Oj0vLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIENvbW1vblxuICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcyl7XG4gIHZhciBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgIGJlZ2luOiAnW1xcXFwrXFxcXC1dJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2JmJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1teXFxcXFtcXFxcXVxcXFwuLFxcXFwrXFxcXC08PiBcXHJcXG5dJyxcbiAgICAgICAgJ1tcXFxcW1xcXFxdXFxcXC4sXFxcXCtcXFxcLTw+IFxcclxcbl0nLFxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiAnW1xcXFxbXFxcXF1dJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1tcXFxcLixdJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyB0aGlzIG1vZGUgd29ya3MgYXMgdGhlIG9ubHkgcmVsZXZhbmNlIGNvdW50ZXJcbiAgICAgICAgYmVnaW46IC8oPzpcXCtcXCt8XFwtXFwtKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbTElURVJBTF1cbiAgICAgIH0sXG4gICAgICBMSVRFUkFMXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZGl2IG1vZCBpbiBhbmQgb3Igbm90IHhvciBhc3NlcnRlcnJvciBiZWdpbiBjYXNlIGRvIGRvd250byBlbHNlIGVuZCBleGl0IGZvciBpZiBvZiByZXBlYXQgdGhlbiB0byAnICtcbiAgICAndW50aWwgd2hpbGUgd2l0aCB2YXInO1xuICB2YXIgTElURVJBTFMgPSAnZmFsc2UgdHJ1ZSc7XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAvXFx7LyxcbiAgICAgIC9cXH0vLFxuICAgICAge1xuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVChcbiAgICAgIC9cXChcXCovLFxuICAgICAgL1xcKlxcKS8sXG4gICAgICB7XG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH1cbiAgICApXG4gIF07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLCBlbmQ6IC8nLyxcbiAgICBjb250YWluczogW3tiZWdpbjogLycnL31dXG4gIH07XG4gIHZhciBDSEFSX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCBiZWdpbjogLygjXFxkKykrL1xuICB9O1xuICB2YXIgREFURSA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8oRFR8RHxUKScsXG4gICAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIERCTF9RVU9URURfVkFSSUFCTEUgPSB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyBub3QgYSBzdHJpbmcgdGVjaG5pY2FsbHkgYnV0IG1ha2VzIHNlbnNlIHRvIGJlIGhpZ2hsaWdodGVkIGluIHRoZSBzYW1lIHN0eWxlXG4gICAgICBiZWdpbjogJ1wiJyxcbiAgICAgIGVuZDogJ1wiJ1xuICB9O1xuXG4gIHZhciBQUk9DRURVUkUgPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGJlZ2luS2V5d29yZHM6ICdwcm9jZWR1cmUnLCBlbmQ6IC9bOjtdLyxcbiAgICBrZXl3b3JkczogJ3Byb2NlZHVyZXwxMCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCBDSEFSX1NUUklOR11cbiAgICAgIH1cbiAgICBdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICB9O1xuXG4gIHZhciBPQkpFQ1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luOiAnT0JKRUNUIChUYWJsZXxGb3JtfFJlcG9ydHxEYXRhcG9ydHxDb2RldW5pdHxYTUxwb3J0fE1lbnVTdWl0ZXxQYWdlfFF1ZXJ5KSAoXFxcXGQrKSAoW15cXFxcclxcXFxuXSspJyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICBQUk9DRURVUkVcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7IGtleXdvcmQ6IEtFWVdPUkRTLCBsaXRlcmFsOiBMSVRFUkFMUyB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBTVFJJTkcsIENIQVJfU1RSSU5HLFxuICAgICAgREFURSwgREJMX1FVT1RFRF9WQVJJQUJMRSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBPQkpFQ1QsXG4gICAgICBQUk9DRURVUkVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY2FwbnAnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ3N0cnVjdCBlbnVtIGludGVyZmFjZSB1bmlvbiBncm91cCBpbXBvcnQgdXNpbmcgY29uc3QgYW5ub3RhdGlvbiBleHRlbmRzIGluIG9mIG9uIGFzIHdpdGggZnJvbSBmaXhlZCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ1ZvaWQgQm9vbCBJbnQ4IEludDE2IEludDMyIEludDY0IFVJbnQ4IFVJbnQxNiBVSW50MzIgVUludDY0IEZsb2F0MzIgRmxvYXQ2NCAnICtcbiAgICAgICAgJ1RleHQgRGF0YSBBbnlQb2ludGVyIEFueVN0cnVjdCBDYXBhYmlsaXR5IExpc3QnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9AMHhbXFx3XFxkXXsxNn07LyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvQFxcZCtcXGIvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdzdHJ1Y3QgZW51bScsIGVuZDogL1xcey8sXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICAgIHN0YXJ0czoge2VuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlfSAvLyBoYWNrOiBlYXRpbmcgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgdGl0bGVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbnRlcmZhY2UnLCBlbmQ6IC9cXHsvLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgICBzdGFydHM6IHtlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZX0gLy8gaGFjazogZWF0aW5nIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHRpdGxlXG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIDIuMy4gSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4gIHZhciBLRVlXT1JEUyA9XG4gICAgJ2Fzc2VtYmx5IG1vZHVsZSBwYWNrYWdlIGltcG9ydCBhbGlhcyBjbGFzcyBpbnRlcmZhY2Ugb2JqZWN0IGdpdmVuIHZhbHVlICcgK1xuICAgICdhc3NpZ24gdm9pZCBmdW5jdGlvbiBuZXcgb2YgZXh0ZW5kcyBzYXRpc2ZpZXMgYWJzdHJhY3RzIGluIG91dCByZXR1cm4gJyArXG4gICAgJ2JyZWFrIGNvbnRpbnVlIHRocm93IGFzc2VydCBkeW5hbWljIGlmIGVsc2Ugc3dpdGNoIGNhc2UgZm9yIHdoaWxlIHRyeSAnICtcbiAgICAnY2F0Y2ggZmluYWxseSB0aGVuIGxldCB0aGlzIG91dGVyIHN1cGVyIGlzIGV4aXN0cyBub25lbXB0eSc7XG4gIC8vIDcuNC4xIERlY2xhcmF0aW9uIE1vZGlmaWVyc1xuICB2YXIgREVDTEFSQVRJT05fTU9ESUZJRVJTID1cbiAgICAnc2hhcmVkIGFic3RyYWN0IGZvcm1hbCBkZWZhdWx0IGFjdHVhbCB2YXJpYWJsZSBsYXRlIG5hdGl2ZSBkZXByZWNhdGVkJyArXG4gICAgJ2ZpbmFsIHNlYWxlZCBhbm5vdGF0aW9uIHN1cHByZXNzV2FybmluZ3Mgc21hbGwnO1xuICAvLyA3LjQuMiBEb2N1bWVudGF0aW9uXG4gIHZhciBET0NVTUVOVEFUSU9OID1cbiAgICAnZG9jIGJ5IGxpY2Vuc2Ugc2VlIHRocm93cyB0YWdnZWQnO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLCBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgYmVnaW46IC9gYC8sIGVuZDogL2BgLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuICB2YXIgRVhQUkVTU0lPTlMgPSBbXG4gICAge1xuICAgICAgLy8gdmVyYmF0aW0gc3RyaW5nXG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcIlwiXCInLFxuICAgICAgZW5kOiAnXCJcIlwiJyxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIHN0cmluZyBsaXRlcmFsIG9yIHRlbXBsYXRlXG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgIGNvbnRhaW5zOiBbU1VCU1RdXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBjaGFyYWN0ZXIgbGl0ZXJhbFxuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiBcIidcIixcbiAgICAgIGVuZDogXCInXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIG51bWVyaWMgbGl0ZXJhbFxuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnI1swLTlhLWZBLUZfXSt8XFxcXCRbMDFfXSt8WzAtOV9dKyg/OlxcXFwuWzAtOV9dKD86W2VFXVsrLV0/XFxcXGQrKT8pP1trTUdUUG11bnBmXT8nLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IEVYUFJFU1NJT05TO1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTICsgJyAnICsgREVDTEFSQVRJT05fTU9ESUZJRVJTLFxuICAgICAgbWV0YTogRE9DVU1FTlRBVElPTlxuICAgIH0sXG4gICAgaWxsZWdhbDogJ1xcXFwkW14wMV18I1teMC05YS1mQS1GXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycsIHtjb250YWluczogWydzZWxmJ119KSxcbiAgICAgIHtcbiAgICAgICAgLy8gY29tcGlsZXIgYW5ub3RhdGlvblxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdAW2Etel1cXFxcdyooPzpcXFxcOlxcXCJbXlxcXCJdKlxcXCIpPydcbiAgICAgIH1cbiAgICBdLmNvbmNhdChFWFBSRVNTSU9OUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjbGVhbicsJ2ljbCcsJ2RjbCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaWYgbGV0IGluIHdpdGggd2hlcmUgY2FzZSBvZiBjbGFzcyBpbnN0YW5jZSBvdGhlcndpc2UgJyArXG4gICAgICAgICdpbXBsZW1lbnRhdGlvbiBkZWZpbml0aW9uIHN5c3RlbSBtb2R1bGUgZnJvbSBpbXBvcnQgcXVhbGlmaWVkIGFzICcgK1xuICAgICAgICAnc3BlY2lhbCBjb2RlIGlubGluZSBmb3JlaWduIGV4cG9ydCBjY2FsbCBzdGRjYWxsIGdlbmVyaWMgZGVyaXZlICcgK1xuICAgICAgICAnaW5maXggaW5maXhsIGluZml4cicsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ0ludCBSZWFsIENoYXIgQm9vbCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnVHJ1ZSBGYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuXG4gICAgICB7YmVnaW46ICctPnw8LVt8Ol0/fCMhP3w+Pj18XFxcXHtcXFxcfHxcXFxcfFxcXFx9fDo9PXw9Onw8Pid9IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGtleXdvcmRzID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgLy8gQ2xvanVyZSBrZXl3b3Jkc1xuICAgICAgJ2RlZiBkZWZvbmNlIGNvbmQgYXBwbHkgaWYtbm90IGlmLWxldCBpZiBub3Qgbm90PSA9IDwgPiA8PSA+PSA9PSArIC8gKiAtIHJlbSAnK1xuICAgICAgJ3F1b3QgbmVnPyBwb3M/IGRlbGF5PyBzeW1ib2w/IGtleXdvcmQ/IHRydWU/IGZhbHNlPyBpbnRlZ2VyPyBlbXB0eT8gY29sbD8gbGlzdD8gJytcbiAgICAgICdzZXQ/IGlmbj8gZm4/IGFzc29jaWF0aXZlPyBzZXF1ZW50aWFsPyBzb3J0ZWQ/IGNvdW50ZWQ/IHJldmVyc2libGU/IG51bWJlcj8gZGVjaW1hbD8gJytcbiAgICAgICdjbGFzcz8gZGlzdGluY3Q/IGlzYT8gZmxvYXQ/IHJhdGlvbmFsPyByZWR1Y2VkPyByYXRpbz8gb2RkPyBldmVuPyBjaGFyPyBzZXE/IHZlY3Rvcj8gJytcbiAgICAgICdzdHJpbmc/IG1hcD8gbmlsPyBjb250YWlucz8gemVybz8gaW5zdGFuY2U/IG5vdC1ldmVyeT8gbm90LWFueT8gbGlic3BlYz8gLT4gLT4+IC4uIC4gJytcbiAgICAgICdpbmMgY29tcGFyZSBkbyBkb3RpbWVzIG1hcGNhdCB0YWtlIHJlbW92ZSB0YWtlLXdoaWxlIGRyb3AgbGV0Zm4gZHJvcC1sYXN0IHRha2UtbGFzdCAnK1xuICAgICAgJ2Ryb3Atd2hpbGUgd2hpbGUgaW50ZXJuIGNvbmRwIGNhc2UgcmVkdWNlZCBjeWNsZSBzcGxpdC1hdCBzcGxpdC13aXRoIHJlcGVhdCByZXBsaWNhdGUgJytcbiAgICAgICdpdGVyYXRlIHJhbmdlIG1lcmdlIHppcG1hcCBkZWNsYXJlIGxpbmUtc2VxIHNvcnQgY29tcGFyYXRvciBzb3J0LWJ5IGRvcnVuIGRvYWxsIG50aG5leHQgJytcbiAgICAgICdudGhyZXN0IHBhcnRpdGlvbiBldmFsIGRvc2VxIGF3YWl0IGF3YWl0LWZvciBsZXQgYWdlbnQgYXRvbSBzZW5kIHNlbmQtb2ZmIHJlbGVhc2UtcGVuZGluZy1zZW5kcyAnK1xuICAgICAgJ2FkZC13YXRjaCBtYXB2IGZpbHRlcnYgcmVtb3ZlLXdhdGNoIGFnZW50LWVycm9yIHJlc3RhcnQtYWdlbnQgc2V0LWVycm9yLWhhbmRsZXIgZXJyb3ItaGFuZGxlciAnK1xuICAgICAgJ3NldC1lcnJvci1tb2RlISBlcnJvci1tb2RlIHNodXRkb3duLWFnZW50cyBxdW90ZSB2YXIgZm4gbG9vcCByZWN1ciB0aHJvdyB0cnkgbW9uaXRvci1lbnRlciAnK1xuICAgICAgJ21vbml0b3ItZXhpdCBkZWZtYWNybyBkZWZuIGRlZm4tIG1hY3JvZXhwYW5kIG1hY3JvZXhwYW5kLTEgZm9yIGRvc3luYyBhbmQgb3IgJytcbiAgICAgICd3aGVuIHdoZW4tbm90IHdoZW4tbGV0IGNvbXAganV4dCBwYXJ0aWFsIHNlcXVlbmNlIG1lbW9pemUgY29uc3RhbnRseSBjb21wbGVtZW50IGlkZW50aXR5IGFzc2VydCAnK1xuICAgICAgJ3BlZWsgcG9wIGRvdG8gcHJveHkgZGVmc3RydWN0IGZpcnN0IHJlc3QgY29ucyBkZWZwcm90b2NvbCBjYXN0IGNvbGwgZGVmdHlwZSBkZWZyZWNvcmQgbGFzdCBidXRsYXN0ICcrXG4gICAgICAnc2lncyByZWlmeSBzZWNvbmQgZmZpcnN0IGZuZXh0IG5maXJzdCBubmV4dCBkZWZtdWx0aSBkZWZtZXRob2QgbWV0YSB3aXRoLW1ldGEgbnMgaW4tbnMgY3JlYXRlLW5zIGltcG9ydCAnK1xuICAgICAgJ3JlZmVyIGtleXMgc2VsZWN0LWtleXMgdmFscyBrZXkgdmFsIHJzZXEgbmFtZSBuYW1lc3BhY2UgcHJvbWlzZSBpbnRvIHRyYW5zaWVudCBwZXJzaXN0ZW50ISBjb25qISAnK1xuICAgICAgJ2Fzc29jISBkaXNzb2MhIHBvcCEgZGlzaiEgdXNlIGNsYXNzIHR5cGUgbnVtIGZsb2F0IGRvdWJsZSBzaG9ydCBieXRlIGJvb2xlYW4gYmlnaW50IGJpZ2ludGVnZXIgJytcbiAgICAgICdiaWdkZWMgcHJpbnQtbWV0aG9kIHByaW50LWR1cCB0aHJvdy1pZiBwcmludGYgZm9ybWF0IGxvYWQgY29tcGlsZSBnZXQtaW4gdXBkYXRlLWluIHByIHByLW9uIG5ld2xpbmUgJytcbiAgICAgICdmbHVzaCByZWFkIHNsdXJwIHJlYWQtbGluZSBzdWJ2ZWMgd2l0aC1vcGVuIG1lbWZuIHRpbWUgcmUtZmluZCByZS1ncm91cHMgcmFuZC1pbnQgcmFuZCBtb2QgbG9ja2luZyAnK1xuICAgICAgJ2Fzc2VydC12YWxpZC1mZGVjbCBhbGlhcyByZXNvbHZlIHJlZiBkZXJlZiByZWZzZXQgc3dhcCEgcmVzZXQhIHNldC12YWxpZGF0b3IhIGNvbXBhcmUtYW5kLXNldCEgYWx0ZXItbWV0YSEgJytcbiAgICAgICdyZXNldC1tZXRhISBjb21tdXRlIGdldC12YWxpZGF0b3IgYWx0ZXIgcmVmLXNldCByZWYtaGlzdG9yeS1jb3VudCByZWYtbWluLWhpc3RvcnkgcmVmLW1heC1oaXN0b3J5IGVuc3VyZSBzeW5jIGlvISAnK1xuICAgICAgJ25ldyBuZXh0IGNvbmogc2V0ISB0by1hcnJheSBmdXR1cmUgZnV0dXJlLWNhbGwgaW50by1hcnJheSBhc2V0IGdlbi1jbGFzcyByZWR1Y2UgbWFwIGZpbHRlciBmaW5kIGVtcHR5ICcrXG4gICAgICAnaGFzaC1tYXAgaGFzaC1zZXQgc29ydGVkLW1hcCBzb3J0ZWQtbWFwLWJ5IHNvcnRlZC1zZXQgc29ydGVkLXNldC1ieSB2ZWMgdmVjdG9yIHNlcSBmbGF0dGVuIHJldmVyc2UgYXNzb2MgZGlzc29jIGxpc3QgJytcbiAgICAgICdkaXNqIGdldCB1bmlvbiBkaWZmZXJlbmNlIGludGVyc2VjdGlvbiBleHRlbmQgZXh0ZW5kLXR5cGUgZXh0ZW5kLXByb3RvY29sIGludCBudGggZGVsYXkgY291bnQgY29uY2F0IGNodW5rIGNodW5rLWJ1ZmZlciAnK1xuICAgICAgJ2NodW5rLWFwcGVuZCBjaHVuay1maXJzdCBjaHVuay1yZXN0IG1heCBtaW4gZGVjIHVuY2hlY2tlZC1pbmMtaW50IHVuY2hlY2tlZC1pbmMgdW5jaGVja2VkLWRlYy1pbmMgdW5jaGVja2VkLWRlYyB1bmNoZWNrZWQtbmVnYXRlICcrXG4gICAgICAndW5jaGVja2VkLWFkZC1pbnQgdW5jaGVja2VkLWFkZCB1bmNoZWNrZWQtc3VidHJhY3QtaW50IHVuY2hlY2tlZC1zdWJ0cmFjdCBjaHVuay1uZXh0IGNodW5rLWNvbnMgY2h1bmtlZC1zZXE/IHBybiB2YXJ5LW1ldGEgJytcbiAgICAgICdsYXp5LXNlcSBzcHJlYWQgbGlzdCogc3RyIGZpbmQta2V5d29yZCBrZXl3b3JkIHN5bWJvbCBnZW5zeW0gZm9yY2UgcmF0aW9uYWxpemUnXG4gICB9O1xuXG4gIHZhciBTWU1CT0xTVEFSVCA9ICdhLXpBLVpfXFxcXC0hLj8rKj08PiYjXFwnJztcbiAgdmFyIFNZTUJPTF9SRSA9ICdbJyArIFNZTUJPTFNUQVJUICsgJ11bJyArIFNZTUJPTFNUQVJUICsgJzAtOS87Ol0qJztcbiAgdmFyIFNJTVBMRV9OVU1CRVJfUkUgPSAnWy0rXT9cXFxcZCsoXFxcXC5cXFxcZCspPyc7XG5cbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBiZWdpbjogU1lNQk9MX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsIGJlZ2luOiBTSU1QTEVfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgU1RSSU5HID0gaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSk7XG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICc7JyxcbiAgICAnJCcsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgTElURVJBTCA9IHtcbiAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICBiZWdpbjogL1xcYih0cnVlfGZhbHNlfG5pbClcXGIvXG4gIH07XG4gIHZhciBDT0xMRUNUSU9OID0ge1xuICAgIGJlZ2luOiAnW1xcXFxbXFxcXHtdJywgZW5kOiAnW1xcXFxdXFxcXH1dJ1xuICB9O1xuICB2YXIgSElOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogJ1xcXFxeJyArIFNZTUJPTF9SRVxuICB9O1xuICB2YXIgSElOVF9DT0wgPSBobGpzLkNPTU1FTlQoJ1xcXFxeXFxcXHsnLCAnXFxcXH0nKTtcbiAgdmFyIEtFWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzpdezEsMn0nICsgU1lNQk9MX1JFXG4gIH07XG4gIHZhciBMSVNUID0ge1xuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSdcbiAgfTtcbiAgdmFyIEJPRFkgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBOQU1FID0ge1xuICAgIGtleXdvcmRzOiBrZXl3b3JkcyxcbiAgICBsZXhlbWVzOiBTWU1CT0xfUkUsXG4gICAgY2xhc3NOYW1lOiAnbmFtZScsIGJlZ2luOiBTWU1CT0xfUkUsXG4gICAgc3RhcnRzOiBCT0RZXG4gIH07XG4gIHZhciBERUZBVUxUX0NPTlRBSU5TID0gW0xJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMLCBTWU1CT0xdO1xuXG4gIExJU1QuY29udGFpbnMgPSBbaGxqcy5DT01NRU5UKCdjb21tZW50JywgJycpLCBOQU1FLCBCT0RZXTtcbiAgQk9EWS5jb250YWlucyA9IERFRkFVTFRfQ09OVEFJTlM7XG4gIENPTExFQ1RJT04uY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuICBISU5UX0NPTC5jb250YWlucyA9IFtDT0xMRUNUSU9OXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY2xqJ10sXG4gICAgaWxsZWdhbDogL1xcUy8sXG4gICAgY29udGFpbnM6IFtMSVNULCBTVFJJTkcsIEhJTlQsIEhJTlRfQ09MLCBDT01NRU5ULCBLRVksIENPTExFQ1RJT04sIE5VTUJFUiwgTElURVJBTF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eKFtcXHcuLV0rfFxccyojXyk/PT4vLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ2Nsb2p1cmUnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjbWFrZS5pbiddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIHNjcmlwdGluZyBjb21tYW5kc1xuICAgICAgICAnYnJlYWsgY21ha2VfaG9zdF9zeXN0ZW1faW5mb3JtYXRpb24gY21ha2VfbWluaW11bV9yZXF1aXJlZCBjbWFrZV9wYXJzZV9hcmd1bWVudHMgJyArXG4gICAgICAgICdjbWFrZV9wb2xpY3kgY29uZmlndXJlX2ZpbGUgY29udGludWUgZWxzZWlmIGVsc2UgZW5kZm9yZWFjaCBlbmRmdW5jdGlvbiBlbmRpZiBlbmRtYWNybyAnICtcbiAgICAgICAgJ2VuZHdoaWxlIGV4ZWN1dGVfcHJvY2VzcyBmaWxlIGZpbmRfZmlsZSBmaW5kX2xpYnJhcnkgZmluZF9wYWNrYWdlIGZpbmRfcGF0aCAnICtcbiAgICAgICAgJ2ZpbmRfcHJvZ3JhbSBmb3JlYWNoIGZ1bmN0aW9uIGdldF9jbWFrZV9wcm9wZXJ0eSBnZXRfZGlyZWN0b3J5X3Byb3BlcnR5ICcgK1xuICAgICAgICAnZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudCBnZXRfcHJvcGVydHkgaWYgaW5jbHVkZSBpbmNsdWRlX2d1YXJkIGxpc3QgbWFjcm8gJyArXG4gICAgICAgICdtYXJrX2FzX2FkdmFuY2VkIG1hdGggbWVzc2FnZSBvcHRpb24gcmV0dXJuIHNlcGFyYXRlX2FyZ3VtZW50cyAnICtcbiAgICAgICAgJ3NldF9kaXJlY3RvcnlfcHJvcGVydGllcyBzZXRfcHJvcGVydHkgc2V0IHNpdGVfbmFtZSBzdHJpbmcgdW5zZXQgdmFyaWFibGVfd2F0Y2ggd2hpbGUgJyArXG4gICAgICAgIC8vIHByb2plY3QgY29tbWFuZHNcbiAgICAgICAgJ2FkZF9jb21waWxlX2RlZmluaXRpb25zIGFkZF9jb21waWxlX29wdGlvbnMgYWRkX2N1c3RvbV9jb21tYW5kIGFkZF9jdXN0b21fdGFyZ2V0ICcgK1xuICAgICAgICAnYWRkX2RlZmluaXRpb25zIGFkZF9kZXBlbmRlbmNpZXMgYWRkX2V4ZWN1dGFibGUgYWRkX2xpYnJhcnkgYWRkX2xpbmtfb3B0aW9ucyAnICtcbiAgICAgICAgJ2FkZF9zdWJkaXJlY3RvcnkgYWRkX3Rlc3QgYXV4X3NvdXJjZV9kaXJlY3RvcnkgYnVpbGRfY29tbWFuZCBjcmVhdGVfdGVzdF9zb3VyY2VsaXN0ICcgK1xuICAgICAgICAnZGVmaW5lX3Byb3BlcnR5IGVuYWJsZV9sYW5ndWFnZSBlbmFibGVfdGVzdGluZyBleHBvcnQgZmx0a193cmFwX3VpICcgK1xuICAgICAgICAnZ2V0X3NvdXJjZV9maWxlX3Byb3BlcnR5IGdldF90YXJnZXRfcHJvcGVydHkgZ2V0X3Rlc3RfcHJvcGVydHkgaW5jbHVkZV9kaXJlY3RvcmllcyAnICtcbiAgICAgICAgJ2luY2x1ZGVfZXh0ZXJuYWxfbXNwcm9qZWN0IGluY2x1ZGVfcmVndWxhcl9leHByZXNzaW9uIGluc3RhbGwgbGlua19kaXJlY3RvcmllcyAnICtcbiAgICAgICAgJ2xpbmtfbGlicmFyaWVzIGxvYWRfY2FjaGUgcHJvamVjdCBxdF93cmFwX2NwcCBxdF93cmFwX3VpIHJlbW92ZV9kZWZpbml0aW9ucyAnICtcbiAgICAgICAgJ3NldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcyBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMgc2V0X3Rlc3RzX3Byb3BlcnRpZXMgc291cmNlX2dyb3VwICcgK1xuICAgICAgICAndGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMgdGFyZ2V0X2NvbXBpbGVfZmVhdHVyZXMgdGFyZ2V0X2NvbXBpbGVfb3B0aW9ucyAnICtcbiAgICAgICAgJ3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzIHRhcmdldF9saW5rX2RpcmVjdG9yaWVzIHRhcmdldF9saW5rX2xpYnJhcmllcyAnICtcbiAgICAgICAgJ3RhcmdldF9saW5rX29wdGlvbnMgdGFyZ2V0X3NvdXJjZXMgdHJ5X2NvbXBpbGUgdHJ5X3J1biAnICtcbiAgICAgICAgLy8gQ1Rlc3QgY29tbWFuZHNcbiAgICAgICAgJ2N0ZXN0X2J1aWxkIGN0ZXN0X2NvbmZpZ3VyZSBjdGVzdF9jb3ZlcmFnZSBjdGVzdF9lbXB0eV9iaW5hcnlfZGlyZWN0b3J5IGN0ZXN0X21lbWNoZWNrICcgK1xuICAgICAgICAnY3Rlc3RfcmVhZF9jdXN0b21fZmlsZXMgY3Rlc3RfcnVuX3NjcmlwdCBjdGVzdF9zbGVlcCBjdGVzdF9zdGFydCBjdGVzdF9zdWJtaXQgJyArXG4gICAgICAgICdjdGVzdF90ZXN0IGN0ZXN0X3VwZGF0ZSBjdGVzdF91cGxvYWQgJyArXG4gICAgICAgIC8vIGRlcHJlY2F0ZWQgY29tbWFuZHNcbiAgICAgICAgJ2J1aWxkX25hbWUgZXhlY19wcm9ncmFtIGV4cG9ydF9saWJyYXJ5X2RlcGVuZGVuY2llcyBpbnN0YWxsX2ZpbGVzIGluc3RhbGxfcHJvZ3JhbXMgJyArXG4gICAgICAgICdpbnN0YWxsX3RhcmdldHMgbG9hZF9jb21tYW5kIG1ha2VfZGlyZWN0b3J5IG91dHB1dF9yZXF1aXJlZF9maWxlcyByZW1vdmUgJyArXG4gICAgICAgICdzdWJkaXJfZGVwZW5kcyBzdWJkaXJzIHVzZV9tYW5nbGVkX21lc2EgdXRpbGl0eV9zb3VyY2UgdmFyaWFibGVfcmVxdWlyZXMgd3JpdGVfZmlsZSAnICtcbiAgICAgICAgJ3F0NV91c2VfbW9kdWxlcyBxdDVfdXNlX3BhY2thZ2UgcXQ1X3dyYXBfY3BwICcgK1xuICAgICAgICAvLyBjb3JlIGtleXdvcmRzXG4gICAgICAgICdvbiBvZmYgdHJ1ZSBmYWxzZSBhbmQgb3Igbm90IGNvbW1hbmQgcG9saWN5IHRhcmdldCB0ZXN0IGV4aXN0cyBpc19uZXdlcl90aGFuICcgK1xuICAgICAgICAnaXNfZGlyZWN0b3J5IGlzX3N5bWxpbmsgaXNfYWJzb2x1dGUgbWF0Y2hlcyBsZXNzIGdyZWF0ZXIgZXF1YWwgbGVzc19lcXVhbCAnICtcbiAgICAgICAgJ2dyZWF0ZXJfZXF1YWwgc3RybGVzcyBzdHJncmVhdGVyIHN0cmVxdWFsIHN0cmxlc3NfZXF1YWwgc3RyZ3JlYXRlcl9lcXVhbCB2ZXJzaW9uX2xlc3MgJyArXG4gICAgICAgICd2ZXJzaW9uX2dyZWF0ZXIgdmVyc2lvbl9lcXVhbCB2ZXJzaW9uX2xlc3NfZXF1YWwgdmVyc2lvbl9ncmVhdGVyX2VxdWFsIGluX2xpc3QgZGVmaW5lZCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcJHsnLCBlbmQ6ICd9J1xuICAgICAgfSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgLy8gSlMga2V5d29yZHNcbiAgICAgICdpbiBpZiBmb3Igd2hpbGUgZmluYWxseSBuZXcgZG8gcmV0dXJuIGVsc2UgYnJlYWsgY2F0Y2ggaW5zdGFuY2VvZiB0aHJvdyB0cnkgdGhpcyAnICtcbiAgICAgICdzd2l0Y2ggY29udGludWUgdHlwZW9mIGRlbGV0ZSBkZWJ1Z2dlciBzdXBlciB5aWVsZCBpbXBvcnQgZXhwb3J0IGZyb20gYXMgZGVmYXVsdCBhd2FpdCAnICtcbiAgICAgIC8vIENvZmZlZSBrZXl3b3Jkc1xuICAgICAgJ3RoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QnLFxuICAgIGxpdGVyYWw6XG4gICAgICAvLyBKUyBsaXRlcmFsc1xuICAgICAgJ3RydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgJyArXG4gICAgICAvLyBDb2ZmZWUgbGl0ZXJhbHNcbiAgICAgICd5ZXMgbm8gb24gb2ZmJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICducG0gcmVxdWlyZSBjb25zb2xlIHByaW50IG1vZHVsZSBnbG9iYWwgd2luZG93IGRvY3VtZW50J1xuICB9O1xuICB2YXIgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXVswLTlBLVphLXokX10qJztcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogLyNcXHsvLCBlbmQ6IC99LyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgdmFyIEVYUFJFU1NJT05TID0gW1xuICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfTlVNQkVSX01PREUsIHtzdGFydHM6IHtlbmQ6ICcoXFxcXHMqLyk/JywgcmVsZXZhbmNlOiAwfX0pLCAvLyBhIG51bWJlciB0cmllcyB0byBlYXQgdGhlIGZvbGxvd2luZyBzbGFzaCB0byBwcmV2ZW50IHRyZWF0aW5nIGl0IGFzIGEgcmVnZXhwXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycnJy8sIGVuZDogLycnJy8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycvLCBlbmQ6IC8nLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJy8vLycsIGVuZDogJy8vLycsXG4gICAgICAgICAgY29udGFpbnM6IFtTVUJTVCwgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnLy9bZ2ltXSonLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gcmVnZXggY2FuJ3Qgc3RhcnQgd2l0aCBzcGFjZSB0byBwYXJzZSB4IC8gMiAvIDMgYXMgdHdvIGRpdmlzaW9uc1xuICAgICAgICAgIC8vIHJlZ2V4IGNhbid0IHN0YXJ0IHdpdGggKiwgYW5kIGl0IHN1cHBvcnRzIGFuIFwiaWxsZWdhbFwiIGluIHRoZSBtYWluIG1vZGVcbiAgICAgICAgICBiZWdpbjogL1xcLyg/IVsgKl0pKFxcXFxcXC98LikqP1xcL1tnaW1dKig/PVxcVykvXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnQCcgKyBKU19JREVOVF9SRSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIH0sXG4gICAge1xuICAgICAgc3ViTGFuZ3VhZ2U6ICdqYXZhc2NyaXB0JyxcbiAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ2BgYCcsIGVuZDogJ2BgYCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFWFBSRVNTSU9OUztcblxuICB2YXIgVElUTEUgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IEpTX0lERU5UX1JFfSk7XG4gIHZhciBQQVJBTVNfUkUgPSAnKFxcXFwoLipcXFxcKSk/XFxcXHMqXFxcXEJbLT1dPic7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoW15cXFxcKF0nLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAvKiBXZSBuZWVkIGFub3RoZXIgY29udGFpbmVkIG5hbWVsZXNzIG1vZGUgdG8gbm90IGhhdmUgZXZlcnkgbmVzdGVkXG4gICAgcGFpciBvZiBwYXJlbnMgdG8gYmUgY2FsbGVkIFwicGFyYW1zXCIgKi9cbiAgICBjb250YWluczogW3tcbiAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXS5jb25jYXQoRVhQUkVTU0lPTlMpXG4gICAgfV1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY29mZmVlJywgJ2Nzb24nLCAnaWNlZCddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlMuY29uY2F0KFtcbiAgICAgIGhsanMuQ09NTUVOVCgnIyMjJywgJyMjIycpLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ15cXFxccyonICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqPVxcXFxzKicgKyBQQVJBTVNfUkUsIGVuZDogJ1stPV0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbVElUTEUsIFBBUkFNU11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGFub255bW91cyBmdW5jdGlvbiBzdGFydFxuICAgICAgICBiZWdpbjogL1s6XFwoLD1dXFxzKi8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogUEFSQU1TX1JFLCBlbmQ6ICdbLT1dPicsXG4gICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbUEFSQU1TXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMnLFxuICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbVElUTEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBUSVRMRVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ198MCBhcyBhdCBjb2ZpeCBlbHNlIGVuZCBleGlzdHMgZXhpc3RzMiBmaXggZm9yIGZvcmFsbCBmdW4gaWYgSUYgaW4gbGV0ICcgK1xuICAgICAgICAnbWF0Y2ggbW9kIFByb3AgcmV0dXJuIFNldCB0aGVuIFR5cGUgdXNpbmcgd2hlcmUgd2l0aCAnICtcbiAgICAgICAgJ0Fib3J0IEFib3V0IEFkZCBBZG1pdCBBZG1pdHRlZCBBbGwgQXJndW1lbnRzIEFzc3VtcHRpb25zIEF4aW9tIEJhY2sgQmFja1RvICcgK1xuICAgICAgICAnQmFja3RyYWNrIEJpbmQgQmxhY2tsaXN0IENhbm9uaWNhbCBDZCBDaGVjayBDbGFzcyBDbGFzc2VzIENsb3NlIENvZXJjaW9uICcgK1xuICAgICAgICAnQ29lcmNpb25zIENvRml4cG9pbnQgQ29JbmR1Y3RpdmUgQ29sbGVjdGlvbiBDb21iaW5lZCBDb21wdXRlIENvbmplY3R1cmUgJyArXG4gICAgICAgICdDb25qZWN0dXJlcyBDb25zdGFudCBjb25zdHIgQ29uc3RyYWludCBDb25zdHJ1Y3RvcnMgQ29udGV4dCBDb3JvbGxhcnkgJyArXG4gICAgICAgICdDcmVhdGVIaW50RGIgQ3V0IERlY2xhcmUgRGVmaW5lZCBEZWZpbml0aW9uIERlbGltaXQgRGVwZW5kZW5jaWVzIERlcGVuZGVudCcgK1xuICAgICAgICAnRGVyaXZlIERyb3AgZWF1dG8gRW5kIEVxdWFsaXR5IEV2YWwgRXhhbXBsZSBFeGlzdGVudGlhbCBFeGlzdGVudGlhbHMgJyArXG4gICAgICAgICdFeGlzdGluZyBFeHBvcnQgZXhwb3J0aW5nIEV4dGVybiBFeHRyYWN0IEV4dHJhY3Rpb24gRmFjdCBGaWVsZCBGaWVsZHMgRmlsZSAnICtcbiAgICAgICAgJ0ZpeHBvaW50IEZvY3VzIGZvciBGcm9tIEZ1bmN0aW9uIEZ1bmN0aW9uYWwgR2VuZXJhbGl6YWJsZSBHbG9iYWwgR29hbCBHcmFiICcgK1xuICAgICAgICAnR3JhbW1hciBHcmFwaCBHdWFyZGVkIEhlYXAgSGludCBIaW50RGIgSGludHMgSHlwb3RoZXNlcyBIeXBvdGhlc2lzIGlkZW50ICcgK1xuICAgICAgICAnSWRlbnRpdHkgSWYgSW1tZWRpYXRlIEltcGxpY2l0IEltcG9ydCBJbmNsdWRlIEluZHVjdGl2ZSBJbmZpeCBJbmZvIEluaXRpYWwgJyArXG4gICAgICAgICdJbmxpbmUgSW5zcGVjdCBJbnN0YW5jZSBJbnN0YW5jZXMgSW50cm8gSW50cm9zIEludmVyc2lvbiBJbnZlcnNpb25fY2xlYXIgJyArXG4gICAgICAgICdMYW5ndWFnZSBMZWZ0IExlbW1hIExldCBMaWJyYXJpZXMgTGlicmFyeSBMb2FkIExvYWRQYXRoIExvY2FsIExvY2F0ZSBMdGFjIE1MICcgK1xuICAgICAgICAnTW9kZSBNb2R1bGUgTW9kdWxlcyBNb25vbW9ycGhpYyBNb3JwaGlzbSBOZXh0IE5vSW5saW5lIE5vdGF0aW9uIE9ibGlnYXRpb24gJyArXG4gICAgICAgICdPYmxpZ2F0aW9ucyBPcGFxdWUgT3BlbiBPcHRpbWl6ZSBPcHRpb25zIFBhcmFtZXRlciBQYXJhbWV0ZXJzIFBhcmFtZXRyaWMgJyArXG4gICAgICAgICdQYXRoIFBhdGhzIHBhdHRlcm4gUG9seW1vcnBoaWMgUHJldGVybSBQcmludCBQcmludGluZyBQcm9ncmFtIFByb2plY3Rpb25zICcgK1xuICAgICAgICAnUHJvb2YgUHJvcG9zaXRpb24gUHdkIFFlZCBRdWl0IFJlYyBSZWNvcmQgUmVjdXJzaXZlIFJlZGlyZWN0IFJlbGF0aW9uIFJlbWFyayAnICtcbiAgICAgICAgJ1JlbW92ZSBSZXF1aXJlIFJlc2VydmVkIFJlc2V0IFJlc29sdmUgUmVzdGFydCBSZXdyaXRlIFJpZ2h0IFJpbmcgUmluZ3MgU2F2ZSAnICtcbiAgICAgICAgJ1NjaGVtZSBTY29wZSBTY29wZXMgU2NyaXB0IFNlYXJjaCBTZWFyY2hBYm91dCBTZWFyY2hIZWFkIFNlYXJjaFBhdHRlcm4gJyArXG4gICAgICAgICdTZWFyY2hSZXdyaXRlIFNlY3Rpb24gU2VwYXJhdGUgU2V0IFNldG9pZCBTaG93IFNvbHZlIFNvcnRlZCBTdGVwIFN0cmF0ZWdpZXMgJyArXG4gICAgICAgICdTdHJhdGVneSBTdHJ1Y3R1cmUgU3ViQ2xhc3MgVGFibGUgVGFibGVzIFRhY3RpYyBUZXJtIFRlc3QgVGhlb3JlbSBUaW1lICcgK1xuICAgICAgICAnVGltZW91dCBUcmFuc3BhcmVudCBUeXBlIFR5cGVjbGFzc2VzIFR5cGVzIFVuZGVsaW1pdCBVbmRvIFVuZm9jdXMgVW5mb2N1c2VkICcgK1xuICAgICAgICAnVW5mb2xkIFVuaXZlcnNlIFVuaXZlcnNlcyBVbnNldCBVbnNoZWx2ZSB1c2luZyBWYXJpYWJsZSBWYXJpYWJsZXMgVmFyaWFudCAnICtcbiAgICAgICAgJ1ZlcmJvc2UgVmlzaWJpbGl0eSB3aGVyZSB3aXRoJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnYWJzdHJhY3QgYWJzdXJkIGFkbWl0IGFmdGVyIGFwcGx5IGFzIGFzc2VydCBhc3N1bXB0aW9uIGF0IGF1dG8gYXV0b3Jld3JpdGUgJyArXG4gICAgICAgICdhdXRvdW5mb2xkIGJlZm9yZSBib3R0b20gYnRhdXRvIGJ5IGNhc2UgY2FzZV9lcSBjYm4gY2J2IGNoYW5nZSAnICtcbiAgICAgICAgJ2NsYXNzaWNhbF9sZWZ0IGNsYXNzaWNhbF9yaWdodCBjbGVhciBjbGVhcmJvZHkgY29maXggY29tcGFyZSBjb21wdXRlICcgK1xuICAgICAgICAnY29uZ3J1ZW5jZSBjb25zdHJfZXEgY29uc3RydWN0b3IgY29udHJhZGljdCBjb250cmFkaWN0aW9uIGN1dCBjdXRyZXdyaXRlICcgK1xuICAgICAgICAnY3ljbGUgZGVjaWRlIGRlY29tcG9zZSBkZXBlbmRlbnQgZGVzdHJ1Y3QgZGVzdHJ1Y3Rpb24gZGludHVpdGlvbiAnICtcbiAgICAgICAgJ2Rpc2NyaW1pbmF0ZSBkaXNjclIgZG8gZG91YmxlIGR0YXV0byBlYXBwbHkgZWFzc3VtcHRpb24gZWF1dG8gZWNhc2UgJyArXG4gICAgICAgICdlY29uc3RydWN0b3IgZWRlc3RydWN0IGVkaXNjcmltaW5hdGUgZWVsaW0gZWV4YWN0IGVleGlzdHMgZWluZHVjdGlvbiAnICtcbiAgICAgICAgJ2VpbmplY3Rpb24gZWxlZnQgZWxpbSBlbGltdHlwZSBlbm91Z2ggZXF1YWxpdHkgZXJld3JpdGUgZXJpZ2h0ICcgK1xuICAgICAgICAnZXNpbXBsaWZ5X2VxIGVzcGxpdCBldmFyIGV4YWN0IGV4YWN0bHlfb25jZSBleGZhbHNvIGV4aXN0cyBmX2VxdWFsIGZhaWwgJyArXG4gICAgICAgICdmaWVsZCBmaWVsZF9zaW1wbGlmeSBmaWVsZF9zaW1wbGlmeV9lcSBmaXJzdCBmaXJzdG9yZGVyIGZpeCBmb2xkIGZvdXJpZXIgJyArXG4gICAgICAgICdmdW5jdGlvbmFsIGdlbmVyYWxpemUgZ2VuZXJhbGl6aW5nIGdmYWlsIGdpdmVfdXAgaGFzX2V2YXIgaG5mIGlkdGFjIGluICcgK1xuICAgICAgICAnaW5kdWN0aW9uIGluamVjdGlvbiBpbnN0YW50aWF0ZSBpbnRybyBpbnRyb19wYXR0ZXJuIGludHJvcyBpbnR1aXRpb24gJyArXG4gICAgICAgICdpbnZlcnNpb24gaW52ZXJzaW9uX2NsZWFyIGlzX2V2YXIgaXNfdmFyIGxhcHBseSBsYXp5IGxlZnQgbGlhIGxyYSBtb3ZlICcgK1xuICAgICAgICAnbmF0aXZlX2NvbXB1dGUgbmlhIG5zYXR6IG9tZWdhIG9uY2UgcGF0dGVybiBwb3NlIHByb2dyZXNzIHByb29mIHBzYXR6IHF1b3RlICcgK1xuICAgICAgICAncmVjb3JkIHJlZCByZWZpbmUgcmVmbGV4aXZpdHkgcmVtZW1iZXIgcmVuYW1lIHJlcGVhdCByZXBsYWNlIHJldmVydCAnICtcbiAgICAgICAgJ3JldmdvYWxzIHJld3JpdGUgcmV3cml0ZV9zdHJhdCByaWdodCByaW5nIHJpbmdfc2ltcGxpZnkgcnRhdXRvIHNldCAnICtcbiAgICAgICAgJ3NldG9pZF9yZWZsZXhpdml0eSBzZXRvaWRfcmVwbGFjZSBzZXRvaWRfcmV3cml0ZSBzZXRvaWRfc3ltbWV0cnkgJyArXG4gICAgICAgICdzZXRvaWRfdHJhbnNpdGl2aXR5IHNoZWx2ZSBzaGVsdmVfdW5pZmlhYmxlIHNpbXBsIHNpbXBsZSBzaW1wbGlmeV9lcSBzb2x2ZSAnICtcbiAgICAgICAgJ3NwZWNpYWxpemUgc3BsaXQgc3BsaXRfUmFicyBzcGxpdF9SbXVsdCBzdGVwbCBzdGVwciBzdWJzdCBzdW0gc3dhcCAnICtcbiAgICAgICAgJ3N5bW1ldHJ5IHRhY3RpYyB0YXV0byB0aW1lIHRpbWVvdXQgdG9wIHRyYW5zaXRpdml0eSB0cml2aWFsIHRyeSB0cnlpZiAnICtcbiAgICAgICAgJ3VuZm9sZCB1bmlmeSB1bnRpbCB1c2luZyB2bV9jb21wdXRlIHdpdGgnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXFxcXChcXFxcKicsICdcXFxcKlxcXFwpJyksXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGJlZ2luOiAnXFxcXHxcXFxccyonLFxuICAgICAgICBlbmQ6ICdcXFxcdysnXG4gICAgICB9LFxuICAgICAge2JlZ2luOiAvWy09XT4vfSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb3MgKGhsanMpIHtcblxuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbeyAvLyBlc2NhcGVkXG4gICAgICAgICAgYmVnaW46IFwiXFxcIlxcXCJcIixcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm51bWJlclwiLFxuICAgIGJlZ2luOiBcIlxcXFxiKFxcXFxkKyhcXFxcLlxcXFxkKik/fFxcXFwuXFxcXGQrKVwiLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBDT1NfS0VZV09SRFMgPVxuICAgICdwcm9wZXJ0eSBwYXJhbWV0ZXIgY2xhc3MgY2xhc3NtZXRob2QgY2xpZW50bWV0aG9kIGV4dGVuZHMgYXMgYnJlYWsgJyArXG4gICAgJ2NhdGNoIGNsb3NlIGNvbnRpbnVlIGRvIGR8MCBlbHNlIGVsc2VpZiBmb3IgZ290byBoYWx0IGhhbmcgaHwwIGlmIGpvYiAnICtcbiAgICAnanwwIGtpbGwga3wwIGxvY2sgbHwwIG1lcmdlIG5ldyBvcGVuIHF1aXQgcXwwIHJlYWQgcnwwIHJldHVybiBzZXQgc3wwICcgK1xuICAgICd0Y29tbWl0IHRocm93IHRyb2xsYmFjayB0cnkgdHN0YXJ0IHVzZSB2aWV3IHdoaWxlIHdyaXRlIHd8MCB4ZWN1dGUgeHwwICcgK1xuICAgICd6a2lsbCB6bnNwYWNlIHpuIHp0cmFwIHp3cml0ZSB6dyB6emR1bXAgenp3cml0ZSBwcmludCB6YnJlYWsgemluc2VydCAnICtcbiAgICAnemxvYWQgenByaW50IHpyZW1vdmUgenNhdmUgenpwcmludCBtdiBtdmNhbGwgbXZjcnQgbXZkaW0gbXZwcmludCB6cXVpdCAnICtcbiAgICAnenN5bmMgYXNjaWknO1xuXG4gICAgLy8gcmVnaXN0ZXJlZCBmdW5jdGlvbiAtIG5vIG5lZWQgaW4gdGhlbSBkdWUgdG8gYWxsIGZ1bmN0aW9ucyBhcmUgaGlnaGxpZ2h0ZWQsXG4gICAgLy8gYnV0IEknbGwganVzdCBsZWF2ZSB0aGlzIGhlcmUuXG5cbiAgICAvL1wiJGJpdFwiLCBcIiRiaXRjb3VudFwiLFxuICAgIC8vXCIkYml0ZmluZFwiLCBcIiRiaXRsb2dpY1wiLCBcIiRjYXNlXCIsIFwiJGNoYXJcIiwgXCIkY2xhc3NtZXRob2RcIiwgXCIkY2xhc3NuYW1lXCIsXG4gICAgLy9cIiRjb21waWxlXCIsIFwiJGRhdGFcIiwgXCIkZGVjaW1hbFwiLCBcIiRkb3VibGVcIiwgXCIkZXh0cmFjdFwiLCBcIiRmYWN0b3JcIixcbiAgICAvL1wiJGZpbmRcIiwgXCIkZm51bWJlclwiLCBcIiRnZXRcIiwgXCIkaW5jcmVtZW50XCIsIFwiJGludW1iZXJcIiwgXCIkaXNvYmplY3RcIixcbiAgICAvL1wiJGlzdmFsaWRkb3VibGVcIiwgXCIkaXN2YWxpZG51bVwiLCBcIiRqdXN0aWZ5XCIsIFwiJGxlbmd0aFwiLCBcIiRsaXN0XCIsXG4gICAgLy9cIiRsaXN0YnVpbGRcIiwgXCIkbGlzdGRhdGFcIiwgXCIkbGlzdGZpbmRcIiwgXCIkbGlzdGZyb21zdHJpbmdcIiwgXCIkbGlzdGdldFwiLFxuICAgIC8vXCIkbGlzdGxlbmd0aFwiLCBcIiRsaXN0bmV4dFwiLCBcIiRsaXN0c2FtZVwiLCBcIiRsaXN0dG9zdHJpbmdcIiwgXCIkbGlzdHZhbGlkXCIsXG4gICAgLy9cIiRsb2NhdGVcIiwgXCIkbWF0Y2hcIiwgXCIkbWV0aG9kXCIsIFwiJG5hbWVcIiwgXCIkbmNvbnZlcnRcIiwgXCIkbmV4dFwiLFxuICAgIC8vXCIkbm9ybWFsaXplXCIsIFwiJG5vd1wiLCBcIiRudW1iZXJcIiwgXCIkb3JkZXJcIiwgXCIkcGFyYW1ldGVyXCIsIFwiJHBpZWNlXCIsXG4gICAgLy9cIiRwcmVmZXRjaG9mZlwiLCBcIiRwcmVmZXRjaG9uXCIsIFwiJHByb3BlcnR5XCIsIFwiJHFsZW5ndGhcIiwgXCIkcXN1YnNjcmlwdFwiLFxuICAgIC8vXCIkcXVlcnlcIiwgXCIkcmFuZG9tXCIsIFwiJHJlcGxhY2VcIiwgXCIkcmV2ZXJzZVwiLCBcIiRzY29udmVydFwiLCBcIiRzZWxlY3RcIixcbiAgICAvL1wiJHNvcnRiZWdpblwiLCBcIiRzb3J0ZW5kXCIsIFwiJHN0YWNrXCIsIFwiJHRleHRcIiwgXCIkdHJhbnNsYXRlXCIsIFwiJHZpZXdcIixcbiAgICAvL1wiJHdhc2NpaVwiLCBcIiR3Y2hhclwiLCBcIiR3ZXh0cmFjdFwiLCBcIiR3ZmluZFwiLCBcIiR3aXN3aWRlXCIsIFwiJHdsZW5ndGhcIixcbiAgICAvL1wiJHdyZXZlcnNlXCIsIFwiJHhlY3V0ZVwiLCBcIiR6YWJzXCIsIFwiJHphcmNjb3NcIiwgXCIkemFyY3NpblwiLCBcIiR6YXJjdGFuXCIsXG4gICAgLy9cIiR6Y29zXCIsIFwiJHpjb3RcIiwgXCIkemNzY1wiLCBcIiR6ZGF0ZVwiLCBcIiR6ZGF0ZWhcIiwgXCIkemRhdGV0aW1lXCIsXG4gICAgLy9cIiR6ZGF0ZXRpbWVoXCIsIFwiJHpleHBcIiwgXCIkemhleFwiLCBcIiR6bG5cIiwgXCIkemxvZ1wiLCBcIiR6cG93ZXJcIiwgXCIkenNlY1wiLFxuICAgIC8vXCIkenNpblwiLCBcIiR6c3FyXCIsIFwiJHp0YW5cIiwgXCIkenRpbWVcIiwgXCIkenRpbWVoXCIsIFwiJHpib29sZWFuXCIsXG4gICAgLy9cIiR6Y29udmVydFwiLCBcIiR6Y3JjXCIsIFwiJHpjeWNcIiwgXCIkemRhc2NpaVwiLCBcIiR6ZGNoYXJcIiwgXCIkemZcIixcbiAgICAvL1wiJHppc3dpZGVcIiwgXCIkemxhc2NpaVwiLCBcIiR6bGNoYXJcIiwgXCIkem5hbWVcIiwgXCIkenBvc2l0aW9uXCIsIFwiJHpxYXNjaWlcIixcbiAgICAvL1wiJHpxY2hhclwiLCBcIiR6c2VhcmNoXCIsIFwiJHpzZWVrXCIsIFwiJHpzdHJpcFwiLCBcIiR6d2FzY2lpXCIsIFwiJHp3Y2hhclwiLFxuICAgIC8vXCIkendpZHRoXCIsIFwiJHp3cGFja1wiLCBcIiR6d2JwYWNrXCIsIFwiJHp3dW5wYWNrXCIsIFwiJHp3YnVucGFja1wiLCBcIiR6emVua2FrdVwiLFxuICAgIC8vXCIkY2hhbmdlXCIsIFwiJG12XCIsIFwiJG12YXRcIiwgXCIkbXZmbXRcIiwgXCIkbXZmbXRzXCIsIFwiJG12aWNvbnZcIixcbiAgICAvL1wiJG12aWNvbnZzXCIsIFwiJG12aW5tYXRcIiwgXCIkbXZsb3ZlclwiLCBcIiRtdm9jb252XCIsIFwiJG12b2NvbnZzXCIsIFwiJG12cmFpc2VcIixcbiAgICAvL1wiJG12dHJhbnNcIiwgXCIkbXZ2XCIsIFwiJG12bmFtZVwiLCBcIiR6Yml0YW5kXCIsIFwiJHpiaXRjb3VudFwiLCBcIiR6Yml0ZmluZFwiLFxuICAgIC8vXCIkemJpdGdldFwiLCBcIiR6Yml0bGVuXCIsIFwiJHpiaXRub3RcIiwgXCIkemJpdG9yXCIsIFwiJHpiaXRzZXRcIiwgXCIkemJpdHN0clwiLFxuICAgIC8vXCIkemJpdHhvclwiLCBcIiR6aW5jcmVtZW50XCIsIFwiJHpuZXh0XCIsIFwiJHpvcmRlclwiLCBcIiR6cHJldmlvdXNcIiwgXCIkenNvcnRcIixcbiAgICAvL1wiZGV2aWNlXCIsIFwiJGVjb2RlXCIsIFwiJGVzdGFja1wiLCBcIiRldHJhcFwiLCBcIiRoYWx0XCIsIFwiJGhvcm9sb2dcIixcbiAgICAvL1wiJGlvXCIsIFwiJGpvYlwiLCBcIiRrZXlcIiwgXCIkbmFtZXNwYWNlXCIsIFwiJHByaW5jaXBhbFwiLCBcIiRxdWl0XCIsIFwiJHJvbGVzXCIsXG4gICAgLy9cIiRzdG9yYWdlXCIsIFwiJHN5c3RlbVwiLCBcIiR0ZXN0XCIsIFwiJHRoaXNcIiwgXCIkdGxldmVsXCIsIFwiJHVzZXJuYW1lXCIsXG4gICAgLy9cIiR4XCIsIFwiJHlcIiwgXCIkemFcIiwgXCIkemJcIiwgXCIkemNoaWxkXCIsIFwiJHplb2ZcIiwgXCIkemVvc1wiLCBcIiR6ZXJyb3JcIixcbiAgICAvL1wiJHpob3JvbG9nXCIsIFwiJHppb1wiLCBcIiR6am9iXCIsIFwiJHptb2RlXCIsIFwiJHpuc3BhY2VcIiwgXCIkenBhcmVudFwiLCBcIiR6cGlcIixcbiAgICAvL1wiJHpwb3NcIiwgXCIkenJlZmVyZW5jZVwiLCBcIiR6c3RvcmFnZVwiLCBcIiR6dGltZXN0YW1wXCIsIFwiJHp0aW1lem9uZVwiLFxuICAgIC8vXCIkenRyYXBcIiwgXCIkenZlcnNpb25cIlxuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbXCJjb3NcIiwgXCJjbHNcIl0sXG4gICAga2V5d29yZHM6IENPU19LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgTlVNQkVSUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IFwiY29tbWVudFwiLFxuICAgICAgICBiZWdpbjogLzsvLCBlbmQ6IFwiJFwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8vIEZ1bmN0aW9ucyBhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczogd3JpdGUgJHp0aW1lKDYwKjYwKjMpLCAkJG15RnVuYygxMCksICQkXlZhbCgxKVxuICAgICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIixcbiAgICAgICAgYmVnaW46IC8oPzpcXCRcXCQ/fFxcLlxcLilcXF4/W2EtekEtWl0rL1xuICAgICAgfSxcbiAgICAgIHsgLy8gTWFjcm8gY29tbWFuZDogcXVpdCAkJCRPS1xuICAgICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIixcbiAgICAgICAgYmVnaW46IC9cXCRcXCRcXCRbYS16QS1aXSsvXG4gICAgICB9LFxuICAgICAgeyAvLyBTcGVjaWFsIChnbG9iYWwpIHZhcmlhYmxlczogd3JpdGUgJXJlcXVlc3QuQ29udGVudDsgQnVpbHQtaW4gY2xhc3NlczogJUxpYnJhcnkuSW50ZWdlclxuICAgICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIixcbiAgICAgICAgYmVnaW46IC8lW2Etel0rKD86XFwuW2Etel0rKSovXG4gICAgICB9LFxuICAgICAgeyAvLyBHbG9iYWwgdmFyaWFibGU6IHNldCBeZ2xvYmFsTmFtZSA9IDEyIHdyaXRlIF5nbG9iYWxOYW1lXG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC9cXF4lP1thLXpBLVpdW1xcd10qL1xuICAgICAgfSxcbiAgICAgIHsgLy8gU29tZSBjb250cm9sIGNvbnN0cnVjdGlvbnM6IGRvICMjY2xhc3MoUGFja2FnZS5DbGFzc05hbWUpLk1ldGhvZCgpLCAjI3N1cGVyKClcbiAgICAgICAgY2xhc3NOYW1lOiBcImtleXdvcmRcIixcbiAgICAgICAgYmVnaW46IC8jI2NsYXNzfCMjc3VwZXJ8I2RlZmluZXwjZGltL1xuICAgICAgfSxcblxuICAgICAgLy8gc3ViLWxhbmd1YWdlczogYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQgYnkgaGxqcyBieSAxMS8xNS8yMDE1XG4gICAgICAvLyBsZWZ0IGZvciB0aGUgZnV0dXJlIGltcGxlbWVudGF0aW9uLlxuICAgICAge1xuICAgICAgICBiZWdpbjogLyZzcWxcXCgvLCAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiBcInNxbFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyYoanN8anNjcmlwdHxqYXZhc2NyaXB0KTwvLCBlbmQ6IC8+LyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBzdWJMYW5ndWFnZTogXCJqYXZhc2NyaXB0XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRoaXMgYnJha2VzIGZpcnN0IGFuZCBsYXN0IHRhZywgYnV0IHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGVtYmVkIGEgdmFsaWQgaHRtbFxuICAgICAgICBiZWdpbjogLyZodG1sPFxccyo8LywgZW5kOiAvPlxccyo+LyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6IFwieG1sXCJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUkVTT1VSQ0VTID0gJ3ByaW1pdGl2ZSByc2NfdGVtcGxhdGUnO1xuXG4gIHZhciBDT01NQU5EUyA9ICdncm91cCBjbG9uZSBtcyBtYXN0ZXIgbG9jYXRpb24gY29sb2NhdGlvbiBvcmRlciBmZW5jaW5nX3RvcG9sb2d5ICcgK1xuICAgICAgJ3JzY190aWNrZXQgYWNsX3RhcmdldCBhY2xfZ3JvdXAgdXNlciByb2xlICcgK1xuICAgICAgJ3RhZyB4bWwnO1xuXG4gIHZhciBQUk9QRVJUWV9TRVRTID0gJ3Byb3BlcnR5IHJzY19kZWZhdWx0cyBvcF9kZWZhdWx0cyc7XG5cbiAgdmFyIEtFWVdPUkRTID0gJ3BhcmFtcyBtZXRhIG9wZXJhdGlvbnMgb3AgcnVsZSBhdHRyaWJ1dGVzIHV0aWxpemF0aW9uJztcblxuICB2YXIgT1BFUkFUT1JTID0gJ3JlYWQgd3JpdGUgZGVueSBkZWZpbmVkIG5vdF9kZWZpbmVkIGluX3JhbmdlIGRhdGUgc3BlYyBpbiAnICtcbiAgICAgICdyZWYgcmVmZXJlbmNlIGF0dHJpYnV0ZSB0eXBlIHhwYXRoIHZlcnNpb24gYW5kIG9yIGx0IGd0IHRhZyAnICtcbiAgICAgICdsdGUgZ3RlIGVxIG5lIFxcXFwnO1xuXG4gIHZhciBUWVBFUyA9ICdudW1iZXIgc3RyaW5nJztcblxuICB2YXIgTElURVJBTFMgPSAnTWFzdGVyIFN0YXJ0ZWQgU2xhdmUgU3RvcHBlZCBzdGFydCBwcm9tb3RlIGRlbW90ZSBzdG9wIG1vbml0b3IgdHJ1ZSBmYWxzZSc7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NybScsICdwY21rJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogS0VZV09SRFMgKyAnICcgKyBPUEVSQVRPUlMgKyAnICcgKyBUWVBFUyxcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxTXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25vZGUnLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6ICdcXFxccyooW1xcXFx3Xy1dKzopPycsXG4gICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccypbXFxcXCRcXFxcd19dW1xcXFx3Xy1dKidcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6IFJFU09VUkNFUyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgIGVuZDogJ1xcXFxzKltcXFxcJFxcXFx3X11bXFxcXHdfLV0qJyxcbiAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgIGVuZDogJ1xcXFxzKkA/W1xcXFx3X11bXFxcXHdfXFxcXC46LV0qJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcYignICsgQ09NTUFORFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKVxcXFxzKycsXG4gICAgICAgIGtleXdvcmRzOiBDT01NQU5EUyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgIGVuZDogJ1tcXFxcJFxcXFx3X11bXFxcXHdfLV0qJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiBQUk9QRVJUWV9TRVRTLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgZW5kOiAnXFxcXHMqKFtcXFxcd18tXSs6KT8nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcob2NmfHN5c3RlbWR8c2VydmljZXxsc2IpOltcXFxcd186LV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8obXN8c3xofG0pPycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnWy1dPyhpbmZpbml0eXxpbmYpJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgYmVnaW46IC8oW0EtWmEtelxcJF9cXCNdW1xcd18tXSspPS8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICAgICAgYmVnaW46ICc8Lz8nLFxuICAgICAgICBlbmQ6ICcvPz4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSU5UX1NVRkZJWCA9ICcoXypbdWldKDh8MTZ8MzJ8NjR8MTI4KSk/JztcbiAgdmFyIEZMT0FUX1NVRkZJWCA9ICcoXypmKDMyfDY0KSk/JztcbiAgdmFyIENSWVNUQUxfSURFTlRfUkUgPSAnW2EtekEtWl9dXFxcXHcqWyE/PV0/JztcbiAgdmFyIENSWVNUQUxfTUVUSE9EX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dP3xbLSt+XVxcXFxAfDw8fD4+fFs9IV1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfnxdfC8vfC8vPXwmWy0rKl09P3wmXFxcXCpcXFxcKnxcXFxcW1xcXFxdWz0/XT8nO1xuICB2YXIgQ1JZU1RBTF9QQVRIX1JFID0gJ1tBLVphLXpfXVxcXFx3Kig6OlxcXFx3KykqKFxcXFw/fFxcXFwhKT8nO1xuICB2YXIgQ1JZU1RBTF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2Fic3RyYWN0IGFsaWFzIGFubm90YXRpb24gYXMgYXM/IGFzbSBiZWdpbiBicmVhayBjYXNlIGNsYXNzIGRlZiBkbyBlbHNlIGVsc2lmIGVuZCBlbnN1cmUgZW51bSBleHRlbmQgZm9yIGZ1biBpZiAnICtcbiAgICAgICdpbmNsdWRlIGluc3RhbmNlX3NpemVvZiBpc19hPyBsaWIgbWFjcm8gbW9kdWxlIG5leHQgbmlsPyBvZiBvdXQgcG9pbnRlcm9mIHByaXZhdGUgcHJvdGVjdGVkIHJlc2N1ZSByZXNwb25kc190bz8gJyArXG4gICAgICAncmV0dXJuIHJlcXVpcmUgc2VsZWN0IHNlbGYgc2l6ZW9mIHN0cnVjdCBzdXBlciB0aGVuIHR5cGUgdHlwZW9mIHVuaW9uIHVuaW5pdGlhbGl6ZWQgdW5sZXNzIHVudGlsIHZlcmJhdGltIHdoZW4gd2hpbGUgd2l0aCB5aWVsZCAnICtcbiAgICAgICdfX0RJUl9fIF9fRU5EX0xJTkVfXyBfX0ZJTEVfXyBfX0xJTkVfXycsXG4gICAgbGl0ZXJhbDogJ2ZhbHNlIG5pbCB0cnVlJ1xuICB9O1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnI3snLCBlbmQ6ICd9JyxcbiAgICBrZXl3b3JkczogQ1JZU1RBTF9LRVlXT1JEU1xuICB9O1xuICB2YXIgRVhQQU5TSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFxcXHtcXFxceycsIGVuZDogJ1xcXFx9XFxcXH0nfSxcbiAgICAgIHtiZWdpbjogJ1xcXFx7JScsIGVuZDogJyVcXFxcfSd9XG4gICAgXSxcbiAgICBrZXl3b3JkczogQ1JZU1RBTF9LRVlXT1JEU1xuICB9O1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2l2ZVBhcmVuKGJlZ2luLCBlbmQpIHtcbiAgICB2YXJcbiAgICBjb250YWlucyA9IFt7YmVnaW46IGJlZ2luLCBlbmQ6IGVuZH1dO1xuICAgIGNvbnRhaW5zWzBdLmNvbnRhaW5zID0gY29udGFpbnM7XG4gICAgcmV0dXJuIGNvbnRhaW5zO1xuICB9XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAge2JlZ2luOiAvYC8sIGVuZDogL2AvfSxcbiAgICAgIHtiZWdpbjogJyVbUXdpXT9cXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcKCcsICdcXFxcKScpfSxcbiAgICAgIHtiZWdpbjogJyVbUXdpXT9cXFxcWycsIGVuZDogJ1xcXFxdJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcWycsICdcXFxcXScpfSxcbiAgICAgIHtiZWdpbjogJyVbUXdpXT97JywgZW5kOiAnfScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbigneycsICd9Jyl9LFxuICAgICAge2JlZ2luOiAnJVtRd2ldPzwnLCBlbmQ6ICc+JywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCc8JywgJz4nKX0sXG4gICAgICB7YmVnaW46ICclW1F3aV0/XFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgICAge2JlZ2luOiAvPDwtXFx3KyQvLCBlbmQ6IC9eXFxzKlxcdyskL30sXG4gICAgXSxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG4gIHZhciBRX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICclcVxcXFwoJywgZW5kOiAnXFxcXCknLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ1xcXFwoJywgJ1xcXFwpJyl9LFxuICAgICAge2JlZ2luOiAnJXFcXFxcWycsIGVuZDogJ1xcXFxdJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcWycsICdcXFxcXScpfSxcbiAgICAgIHtiZWdpbjogJyVxeycsIGVuZDogJ30nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ3snLCAnfScpfSxcbiAgICAgIHtiZWdpbjogJyVxPCcsIGVuZDogJz4nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJzwnLCAnPicpfSxcbiAgICAgIHtiZWdpbjogJyVxXFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgICAge2JlZ2luOiAvPDwtJ1xcdysnJC8sIGVuZDogL15cXHMqXFx3KyQvfSxcbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgfTtcbiAgdmFyIFJFR0VYUCA9IHtcbiAgICBiZWdpbjogJyg/ISV9KSgnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXG58XFxcXGIoY2FzZXxpZnxzZWxlY3R8dW5sZXNzfHVudGlsfHdoZW58d2hpbGUpXFxcXGIpXFxcXHMqJyxcbiAgICBrZXl3b3JkczogJ2Nhc2UgaWYgc2VsZWN0IHVubGVzcyB1bnRpbCB3aGVuIHdoaWxlJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJy8vW2Etel0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICcvKD8hXFxcXC8pJywgZW5kOiAnL1thLXpdKid9LFxuICAgICAgICBdXG4gICAgICB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFJFR0VYUDIgPSB7XG4gICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICclclxcXFwoJywgZW5kOiAnXFxcXCknLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ1xcXFwoJywgJ1xcXFwpJyl9LFxuICAgICAge2JlZ2luOiAnJXJcXFxcWycsIGVuZDogJ1xcXFxdJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcWycsICdcXFxcXScpfSxcbiAgICAgIHtiZWdpbjogJyVyeycsIGVuZDogJ30nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ3snLCAnfScpfSxcbiAgICAgIHtiZWdpbjogJyVyPCcsIGVuZDogJz4nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJzwnLCAnPicpfSxcbiAgICAgIHtiZWdpbjogJyVyXFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBBVFRSSUJVVEUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdAXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnfSlcbiAgICBdXG4gIH07XG4gIHZhciBDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgRVhQQU5TSU9OLFxuICAgIFNUUklORyxcbiAgICBRX1NUUklORyxcbiAgICBSRUdFWFAyLFxuICAgIFJFR0VYUCxcbiAgICBBVFRSSUJVVEUsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgbW9kdWxlIHN0cnVjdCcsIGVuZDogJyR8OycsXG4gICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IENSWVNUQUxfUEFUSF9SRX0pLFxuICAgICAgICB7YmVnaW46ICc8J30gLy8gcmVsZXZhbmNlIGJvb3N0ZXIgZm9yIGluaGVyaXRhbmNlXG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICBiZWdpbktleXdvcmRzOiAnbGliIGVudW0gdW5pb24nLCBlbmQ6ICckfDsnLFxuICAgICAgaWxsZWdhbDogLz0vLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBDUllTVEFMX1BBVEhfUkV9KSxcbiAgICAgIF0sXG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbktleXdvcmRzOiAnYW5ub3RhdGlvbicsIGVuZDogJyR8OycsXG4gICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IENSWVNUQUxfUEFUSF9SRX0pLFxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWYnLCBlbmQ6IC9cXEJcXGIvLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgIGJlZ2luOiBDUllTVEFMX01FVEhPRF9SRSxcbiAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICBiZWdpbktleXdvcmRzOiAnZnVuIG1hY3JvJywgZW5kOiAvXFxCXFxiLyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICBiZWdpbjogQ1JZU1RBTF9NRVRIT0RfUkUsXG4gICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogNVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnKFxcXFwhfFxcXFw/KT86JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiAnOicsXG4gICAgICBjb250YWluczogW1NUUklORywge2JlZ2luOiBDUllTVEFMX01FVEhPRF9SRX1dLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgeyBiZWdpbjogJ1xcXFxiMGIoWzAxX10rKScgKyBJTlRfU1VGRklYIH0sXG4gICAgICAgIHsgYmVnaW46ICdcXFxcYjBvKFswLTdfXSspJyArIElOVF9TVUZGSVggfSxcbiAgICAgICAgeyBiZWdpbjogJ1xcXFxiMHgoW0EtRmEtZjAtOV9dKyknICsgSU5UX1NVRkZJWCB9LFxuICAgICAgICB7IGJlZ2luOiAnXFxcXGIoWzEtOV1bMC05X10qWzAtOV18WzAtOV0pKFxcXFwuWzAtOV1bMC05X10qKT8oW2VFXV8qWy0rXT9bMC05X10qKT8nICsgRkxPQVRfU1VGRklYICsgJyg/IV8pJyB9LFxuICAgICAgICB7IGJlZ2luOiAnXFxcXGIoWzEtOV1bMC05X10qfDApJyArIElOVF9TVUZGSVggfVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlM7XG4gIEVYUEFOU0lPTi5jb250YWlucyA9IENSWVNUQUxfREVGQVVMVF9DT05UQUlOUy5zbGljZSgxKTsgLy8gd2l0aG91dCBFWFBBTlNJT05cblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY3InXSxcbiAgICBsZXhlbWVzOiBDUllTVEFMX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBDUllTVEFMX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgLy8gTm9ybWFsIGtleXdvcmRzLlxuICAgICAgJ2Fic3RyYWN0IGFzIGJhc2UgYm9vbCBicmVhayBieXRlIGNhc2UgY2F0Y2ggY2hhciBjaGVja2VkIGNvbnN0IGNvbnRpbnVlIGRlY2ltYWwgJyArXG4gICAgICAnZGVmYXVsdCBkZWxlZ2F0ZSBkbyBkb3VibGUgZW51bSBldmVudCBleHBsaWNpdCBleHRlcm4gZmluYWxseSBmaXhlZCBmbG9hdCAnICtcbiAgICAgICdmb3IgZm9yZWFjaCBnb3RvIGlmIGltcGxpY2l0IGluIGludCBpbnRlcmZhY2UgaW50ZXJuYWwgaXMgbG9jayBsb25nICcgK1xuICAgICAgJ29iamVjdCBvcGVyYXRvciBvdXQgb3ZlcnJpZGUgcGFyYW1zIHByaXZhdGUgcHJvdGVjdGVkIHB1YmxpYyByZWFkb25seSByZWYgc2J5dGUgJyArXG4gICAgICAnc2VhbGVkIHNob3J0IHNpemVvZiBzdGFja2FsbG9jIHN0YXRpYyBzdHJpbmcgc3RydWN0IHN3aXRjaCB0aGlzIHRyeSB0eXBlb2YgJyArXG4gICAgICAndWludCB1bG9uZyB1bmNoZWNrZWQgdW5zYWZlIHVzaG9ydCB1c2luZyB2aXJ0dWFsIHZvaWQgdm9sYXRpbGUgd2hpbGUgJyArXG4gICAgICAvLyBDb250ZXh0dWFsIGtleXdvcmRzLlxuICAgICAgJ2FkZCBhbGlhcyBhc2NlbmRpbmcgYXN5bmMgYXdhaXQgYnkgZGVzY2VuZGluZyBkeW5hbWljIGVxdWFscyBmcm9tIGdldCBnbG9iYWwgZ3JvdXAgaW50byBqb2luICcgK1xuICAgICAgJ2xldCBuYW1lb2Ygb24gb3JkZXJieSBwYXJ0aWFsIHJlbW92ZSBzZWxlY3Qgc2V0IHZhbHVlIHZhciB3aGVuIHdoZXJlIHlpZWxkJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ251bGwgZmFsc2UgdHJ1ZSdcbiAgfTtcbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBiWzAxXFwnXSspJyB9LFxuICAgICAgeyBiZWdpbjogJygtPylcXFxcYihbXFxcXGRcXCddKyhcXFxcLltcXFxcZFxcJ10qKT98XFxcXC5bXFxcXGRcXCddKykodXxVfGx8THx1bHxVTHxmfEZ8YnxCKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XFwnXSt8KFxcXFxiW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKFtlRV1bLStdP1tcXFxcZFxcJ10rKT8pJyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFZFUkJBVElNX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnQFwiJywgZW5kOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XVxuICB9O1xuICB2YXIgVkVSQkFUSU1fU1RSSU5HX05PX0xGID0gaGxqcy5pbmhlcml0KFZFUkJBVElNX1NUUklORywge2lsbGVnYWw6IC9cXG4vfSk7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTXG4gIH07XG4gIHZhciBTVUJTVF9OT19MRiA9IGhsanMuaW5oZXJpdChTVUJTVCwge2lsbGVnYWw6IC9cXG4vfSk7XG4gIHZhciBJTlRFUlBPTEFURURfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cXCRcIi8sIGVuZDogJ1wiJyxcbiAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICBjb250YWluczogW3tiZWdpbjogJ3t7J30sIHtiZWdpbjogJ319J30sIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RfTk9fTEZdXG4gIH07XG4gIHZhciBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cXCRAXCIvLCBlbmQ6ICdcIicsXG4gICAgY29udGFpbnM6IFt7YmVnaW46ICd7eyd9LCB7YmVnaW46ICd9fSd9LCB7YmVnaW46ICdcIlwiJ30sIFNVQlNUXVxuICB9O1xuICB2YXIgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklOR19OT19MRiA9IGhsanMuaW5oZXJpdChJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLCB7XG4gICAgaWxsZWdhbDogL1xcbi8sXG4gICAgY29udGFpbnM6IFt7YmVnaW46ICd7eyd9LCB7YmVnaW46ICd9fSd9LCB7YmVnaW46ICdcIlwiJ30sIFNVQlNUX05PX0xGXVxuICB9KTtcbiAgU1VCU1QuY29udGFpbnMgPSBbXG4gICAgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklORyxcbiAgICBJTlRFUlBPTEFURURfU1RSSU5HLFxuICAgIFZFUkJBVElNX1NUUklORyxcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBOVU1CRVJTLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgXTtcbiAgU1VCU1RfTk9fTEYuY29udGFpbnMgPSBbXG4gICAgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklOR19OT19MRixcbiAgICBJTlRFUlBPTEFURURfU1RSSU5HLFxuICAgIFZFUkJBVElNX1NUUklOR19OT19MRixcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBOVU1CRVJTLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLCB7aWxsZWdhbDogL1xcbi99KVxuICBdO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLFxuICAgICAgSU5URVJQT0xBVEVEX1NUUklORyxcbiAgICAgIFZFUkJBVElNX1NUUklORyxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRZUEVfSURFTlRfUkUgPSBobGpzLklERU5UX1JFICsgJyg8JyArIGhsanMuSURFTlRfUkUgKyAnKFxcXFxzKixcXFxccyonICsgaGxqcy5JREVOVF9SRSArICcpKj4pPyhcXFxcW1xcXFxdKT8nO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjc2hhcnAnLCAnYyMnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLzo6LyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnLy8vJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBiZWdpbjogJy8vLycsIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYmVnaW46ICc8IS0tfC0tPidcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAnPC8/JywgZW5kOiAnPidcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgJ21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsaWYgZW5kaWYgZGVmaW5lIHVuZGVmIHdhcm5pbmcgZXJyb3IgbGluZSByZWdpb24gZW5kcmVnaW9uIHByYWdtYSBjaGVja3N1bSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFNUUklORyxcbiAgICAgIE5VTUJFUlMsXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcczosXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduYW1lc3BhY2UnLCBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcczpdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdbYS16QS1aXShcXFxcLj9cXFxcdykqJ30pLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFtBdHRyaWJ1dGVzKFwiXCIpXVxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqXFxcXFsnLCBleGNsdWRlQmVnaW46IHRydWUsIGVuZDogJ1xcXFxdJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLCBiZWdpbjogL1wiLywgZW5kOiAvXCIvfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBFeHByZXNzaW9uIGtleXdvcmRzIHByZXZlbnQgJ2tleXdvcmQgTmFtZSguLi4pJyBmcm9tIGJlaW5nXG4gICAgICAgIC8vIHJlY29nbml6ZWQgYXMgYSBmdW5jdGlvbiBkZWZpbml0aW9uXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduZXcgcmV0dXJuIHRocm93IGF3YWl0IGVsc2UnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICcoJyArIFRZUEVfSURFTlRfUkUgKyAnXFxcXHMrKSsnICsgaGxqcy5JREVOVF9SRSArICdcXFxccypcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBlbmQ6IC9cXHMqW3s7PV0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5USVRMRV9NT0RFXSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGxleGVtZXM6ICdbYS16QS1aXVthLXpBLVowLTlfLV0qJyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2Jhc2UtdXJpIGNoaWxkLXNyYyBjb25uZWN0LXNyYyBkZWZhdWx0LXNyYyBmb250LXNyYyBmb3JtLWFjdGlvbicgK1xuICAgICAgICAnIGZyYW1lLWFuY2VzdG9ycyBmcmFtZS1zcmMgaW1nLXNyYyBtZWRpYS1zcmMgb2JqZWN0LXNyYyBwbHVnaW4tdHlwZXMnICtcbiAgICAgICAgJyByZXBvcnQtdXJpIHNhbmRib3ggc2NyaXB0LXNyYyBzdHlsZS1zcmMnLFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46IFwiJ1wiLCBlbmQ6IFwiJ1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgYmVnaW46ICdeQ29udGVudCcsIGVuZDogJzonLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVotXVthLXpBLVowLTlfLV0qJztcbiAgdmFyIFJVTEUgPSB7XG4gICAgYmVnaW46IC8oPzpbQS1aXFxfXFwuXFwtXSt8LS1bYS16QS1aMC05Xy1dKylcXHMqOi8sIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICc7JywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46IC9cXFMvLCBlbmQ6ICc6JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmVnaW46IC9bXFx3LV0rXFwoLywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICAgICAgICAgICAgYmVnaW46IC9bXFx3LV0rL1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJywgYmVnaW46ICcjWzAtOUEtRmEtZl0rJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIWltcG9ydGFudCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9bPVxcL3wnXFwkXS8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJywgYmVnaW46IC8jW0EtWmEtejAtOV8tXSsvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsIGJlZ2luOiAvXFwuW0EtWmEtejAtOV8tXSsvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1hdHRyJyxcbiAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICBpbGxlZ2FsOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLXBzZXVkbycsXG4gICAgICAgIGJlZ2luOiAvOig6KT9bYS16QS1aMC05XFxfXFwtXFwrXFwoXFwpXCInLl0rL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdAKGZvbnQtZmFjZXxwYWdlKScsXG4gICAgICAgIGxleGVtZXM6ICdbYS16LV0rJyxcbiAgICAgICAga2V5d29yZHM6ICdmb250LWZhY2UgcGFnZSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnQCcsIGVuZDogJ1t7O10nLCAvLyBhdF9ydWxlIGVhdGluZyBmaXJzdCBcIntcIiBpcyBhIGdvb2QgdGhpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgaXQgZG9lc27igJl0IGxldCBpdCB0byBiZSBwYXJzZWQgYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgcnVsZSBzZXQgYnV0IGluc3RlYWQgZHJvcHMgcGFyc2VyIGludG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBkZWZhdWx0IG1vZGUgd2hpY2ggaXMgaG93IGl0IHNob3VsZCBiZS5cbiAgICAgICAgaWxsZWdhbDogLzovLCAvLyBicmVhayBvbiBMZXNzIHZhcmlhYmxlcyBAdmFyOiAuLi5cbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFx3Ky9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFxzLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci10YWcnLCBiZWdpbjogSURFTlRfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgUlVMRSxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvKipcbiAqIEtub3duIGlzc3VlczpcbiAqXG4gKiAtIGludmFsaWQgaGV4IHN0cmluZyBsaXRlcmFscyB3aWxsIGJlIHJlY29nbml6ZWQgYXMgYSBkb3VibGUgcXVvdGVkIHN0cmluZ3NcbiAqICAgYnV0ICd4JyBhdCB0aGUgYmVnaW5uaW5nIG9mIHN0cmluZyB3aWxsIG5vdCBiZSBtYXRjaGVkXG4gKlxuICogLSBkZWxpbWl0ZWQgc3RyaW5nIGxpdGVyYWxzIGFyZSBub3QgY2hlY2tlZCBmb3IgbWF0Y2hpbmcgZW5kIGRlbGltaXRlclxuICogICAobm90IHBvc3NpYmxlIHRvIGRvIHdpdGgganMgcmVnZXhwKVxuICpcbiAqIC0gY29udGVudCBvZiB0b2tlbiBzdHJpbmcgaXMgY29sb3JlZCBhcyBhIHN0cmluZyAoaS5lLiBubyBrZXl3b3JkIGNvbG9yaW5nIGluc2lkZSBhIHRva2VuIHN0cmluZylcbiAqICAgYWxzbywgY29udGVudCBvZiB0b2tlbiBzdHJpbmcgaXMgbm90IHZhbGlkYXRlZCB0byBjb250YWluIG9ubHkgdmFsaWQgRCB0b2tlbnNcbiAqXG4gKiAtIHNwZWNpYWwgdG9rZW4gc2VxdWVuY2UgcnVsZSBpcyBub3Qgc3RyaWN0bHkgZm9sbG93aW5nIEQgZ3JhbW1hciAoYW55dGhpbmcgZm9sbG93aW5nICNsaW5lXG4gKiAgIHVwIHRvIHRoZSBlbmQgb2YgbGluZSBpcyBtYXRjaGVkIGFzIHNwZWNpYWwgdG9rZW4gc2VxdWVuY2UpXG4gKi9cblxuZnVuY3Rpb24oaGxqcykge1xuICAvKipcbiAgICogTGFuZ3VhZ2Uga2V5d29yZHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWJzdHJhY3QgYWxpYXMgYWxpZ24gYXNtIGFzc2VydCBhdXRvIGJvZHkgYnJlYWsgYnl0ZSBjYXNlIGNhc3QgY2F0Y2ggY2xhc3MgJyArXG4gICAgICAnY29uc3QgY29udGludWUgZGVidWcgZGVmYXVsdCBkZWxldGUgZGVwcmVjYXRlZCBkbyBlbHNlIGVudW0gZXhwb3J0IGV4dGVybiBmaW5hbCAnICtcbiAgICAgICdmaW5hbGx5IGZvciBmb3JlYWNoIGZvcmVhY2hfcmV2ZXJzZXwxMCBnb3RvIGlmIGltbXV0YWJsZSBpbXBvcnQgaW4gaW5vdXQgaW50ICcgK1xuICAgICAgJ2ludGVyZmFjZSBpbnZhcmlhbnQgaXMgbGF6eSBtYWNybyBtaXhpbiBtb2R1bGUgbmV3IG5vdGhyb3cgb3V0IG92ZXJyaWRlIHBhY2thZ2UgJyArXG4gICAgICAncHJhZ21hIHByaXZhdGUgcHJvdGVjdGVkIHB1YmxpYyBwdXJlIHJlZiByZXR1cm4gc2NvcGUgc2hhcmVkIHN0YXRpYyBzdHJ1Y3QgJyArXG4gICAgICAnc3VwZXIgc3dpdGNoIHN5bmNocm9uaXplZCB0ZW1wbGF0ZSB0aGlzIHRocm93IHRyeSB0eXBlZGVmIHR5cGVpZCB0eXBlb2YgdW5pb24gJyArXG4gICAgICAndW5pdHRlc3QgdmVyc2lvbiB2b2lkIHZvbGF0aWxlIHdoaWxlIHdpdGggX19GSUxFX18gX19MSU5FX18gX19nc2hhcmVkfDEwICcgK1xuICAgICAgJ19fdGhyZWFkIF9fdHJhaXRzIF9fREFURV9fIF9fRU9GX18gX19USU1FX18gX19USU1FU1RBTVBfXyBfX1ZFTkRPUl9fIF9fVkVSU0lPTl9fJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdib29sIGNkb3VibGUgY2VudCBjZmxvYXQgY2hhciBjcmVhbCBkY2hhciBkZWxlZ2F0ZSBkb3VibGUgZHN0cmluZyBmbG9hdCBmdW5jdGlvbiAnICtcbiAgICAgICdpZG91YmxlIGlmbG9hdCBpcmVhbCBsb25nIHJlYWwgc2hvcnQgc3RyaW5nIHVieXRlIHVjZW50IHVpbnQgdWxvbmcgdXNob3J0IHdjaGFyICcgK1xuICAgICAgJ3dzdHJpbmcnLFxuICAgIGxpdGVyYWw6XG4gICAgICAnZmFsc2UgbnVsbCB0cnVlJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgbGl0ZXJhbCByZWdleHBzXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICB2YXIgZGVjaW1hbF9pbnRlZ2VyX3JlID0gJygwfFsxLTldW1xcXFxkX10qKScsXG4gICAgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlID0gJygwfFsxLTldW1xcXFxkX10qfFxcXFxkW1xcXFxkX10qfFtcXFxcZF9dKz9cXFxcZCknLFxuICAgIGJpbmFyeV9pbnRlZ2VyX3JlID0gJzBbYkJdWzAxX10rJyxcbiAgICBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgPSAnKFtcXFxcZGEtZkEtRl1bXFxcXGRhLWZBLUZfXSp8X1tcXFxcZGEtZkEtRl1bXFxcXGRhLWZBLUZfXSopJyxcbiAgICBoZXhhZGVjaW1hbF9pbnRlZ2VyX3JlID0gJzBbeFhdJyArIGhleGFkZWNpbWFsX2RpZ2l0c19yZSxcblxuICAgIGRlY2ltYWxfZXhwb25lbnRfcmUgPSAnKFtlRV1bKy1dPycgKyBkZWNpbWFsX2ludGVnZXJfbm9zdXNfcmUgKyAnKScsXG4gICAgZGVjaW1hbF9mbG9hdF9yZSA9ICcoJyArIGRlY2ltYWxfaW50ZWdlcl9ub3N1c19yZSArICcoXFxcXC5cXFxcZCp8JyArIGRlY2ltYWxfZXhwb25lbnRfcmUgKyAnKXwnICtcbiAgICAgICAgICAgICAgICAnXFxcXGQrXFxcXC4nICsgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlICsgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlICsgJ3wnICtcbiAgICAgICAgICAgICAgICAnXFxcXC4nICsgZGVjaW1hbF9pbnRlZ2VyX3JlICsgZGVjaW1hbF9leHBvbmVudF9yZSArICc/JyArXG4gICAgICAgICAgICAgICcpJyxcbiAgICBoZXhhZGVjaW1hbF9mbG9hdF9yZSA9ICcoMFt4WF0oJyArXG4gICAgICAgICAgICAgICAgICBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgKyAnXFxcXC4nICsgaGV4YWRlY2ltYWxfZGlnaXRzX3JlICsgJ3wnK1xuICAgICAgICAgICAgICAgICAgJ1xcXFwuPycgKyBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgK1xuICAgICAgICAgICAgICAgICAnKVtwUF1bKy1dPycgKyBkZWNpbWFsX2ludGVnZXJfbm9zdXNfcmUgKyAnKScsXG5cbiAgICBpbnRlZ2VyX3JlID0gJygnICtcbiAgICAgIGRlY2ltYWxfaW50ZWdlcl9yZSArICd8JyArXG4gICAgICBiaW5hcnlfaW50ZWdlcl9yZSAgKyAnfCcgK1xuICAgICAgIGhleGFkZWNpbWFsX2ludGVnZXJfcmUgICArXG4gICAgJyknLFxuXG4gICAgZmxvYXRfcmUgPSAnKCcgK1xuICAgICAgaGV4YWRlY2ltYWxfZmxvYXRfcmUgKyAnfCcgK1xuICAgICAgZGVjaW1hbF9mbG9hdF9yZSAgK1xuICAgICcpJztcblxuICAvKipcbiAgICogRXNjYXBlIHNlcXVlbmNlIHN1cHBvcnRlZCBpbiBEIHN0cmluZyBhbmQgY2hhcmFjdGVyIGxpdGVyYWxzXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICB2YXIgZXNjYXBlX3NlcXVlbmNlX3JlID0gJ1xcXFxcXFxcKCcgK1xuICAgICAgICAgICAgICAnW1xcJ1wiXFxcXD9cXFxcXFxcXGFiZm5ydHZdfCcgKyAgLy8gY29tbW9uIGVzY2FwZXNcbiAgICAgICAgICAgICAgJ3VbXFxcXGRBLUZhLWZdezR9fCcgKyAgICAgLy8gZm91ciBoZXggZGlnaXQgdW5pY29kZSBjb2RlcG9pbnRcbiAgICAgICAgICAgICAgJ1swLTddezEsM318JyArICAgICAgIC8vIG9uZSB0byB0aHJlZSBvY3RhbCBkaWdpdCBhc2NpaSBjaGFyIGNvZGVcbiAgICAgICAgICAgICAgJ3hbXFxcXGRBLUZhLWZdezJ9fCcgKyAgICAvLyB0d28gaGV4IGRpZ2l0IGFzY2lpIGNoYXIgY29kZVxuICAgICAgICAgICAgICAnVVtcXFxcZEEtRmEtZl17OH0nICsgICAgICAvLyBlaWdodCBoZXggZGlnaXQgdW5pY29kZSBjb2RlcG9pbnRcbiAgICAgICAgICAgICAgJyl8JyArXG4gICAgICAgICAgICAgICcmW2EtekEtWlxcXFxkXXsyLH07JzsgICAgICAvLyBuYW1lZCBjaGFyYWN0ZXIgZW50aXR5XG5cbiAgLyoqXG4gICAqIEQgaW50ZWdlciBudW1iZXIgbGl0ZXJhbHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0lOVEVHRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgYmVnaW46ICdcXFxcYicgKyBpbnRlZ2VyX3JlICsgJyhMfHV8VXxMdXxMVXx1THxVTCk/JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIC8qKlxuICAgKiBbRF9GTE9BVF9NT0RFIGRlc2NyaXB0aW9uXVxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfRkxPQVRfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnXFxcXGIoJyArXG4gICAgICAgIGZsb2F0X3JlICsgJyhbZkZdfEx8aXxbZkZdaXxMaSk/fCcgK1xuICAgICAgICBpbnRlZ2VyX3JlICsgJyhpfFtmRl1pfExpKScgK1xuICAgICAgJyknLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIC8qKlxuICAgKiBEIGNoYXJhY3RlciBsaXRlcmFsXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9DSEFSQUNURVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFwnKCcgKyBlc2NhcGVfc2VxdWVuY2VfcmUgKyAnfC4pJywgZW5kOiAnXFwnJyxcbiAgICBpbGxlZ2FsOiAnLidcbiAgfTtcblxuICAvKipcbiAgICogRCBzdHJpbmcgZXNjYXBlIHNlcXVlbmNlXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9FU0NBUEVfU0VRVUVOQ0UgPSB7XG4gICAgYmVnaW46IGVzY2FwZV9zZXF1ZW5jZV9yZSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvKipcbiAgICogRCBkb3VibGUgcXVvdGVkIHN0cmluZyBsaXRlcmFsXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbRF9FU0NBUEVfU0VRVUVOQ0VdLFxuICAgIGVuZDogJ1wiW2N3ZF0/J1xuICB9O1xuXG4gIC8qKlxuICAgKiBEIHd5c2l3eWcgYW5kIGRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX1dZU0lXWUdfREVMSU1JVEVEX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdbcnFdXCInLFxuICAgIGVuZDogJ1wiW2N3ZF0/JyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBhbHRlcm5hdGUgd3lzaXd5ZyBzdHJpbmcgbGl0ZXJhbFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfQUxURVJOQVRFX1dZU0lXWUdfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ2AnLFxuICAgIGVuZDogJ2BbY3dkXT8nXG4gIH07XG5cbiAgLyoqXG4gICAqIEQgaGV4YWRlY2ltYWwgc3RyaW5nIGxpdGVyYWxcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0hFWF9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAneFwiW1xcXFxkYS1mQS1GXFxcXHNcXFxcblxcXFxyXSpcIltjd2RdPycsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIC8qKlxuICAgKiBEIGRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfVE9LRU5fU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ3FcIlxcXFx7JyxcbiAgICBlbmQ6ICdcXFxcfVwiJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYXNoYmFuZyBzdXBwb3J0XG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9IQVNIQkFOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMhJyxcbiAgICBlbmQ6ICckJyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBzcGVjaWFsIHRva2VuIHNlcXVlbmNlXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9TUEVDSUFMX1RPS0VOX1NFUVVFTkNFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICcjKGxpbmUpJyxcbiAgICBlbmQ6ICckJyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9BVFRSSUJVVEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ0BbYS16QS1aX11bYS16QS1aX1xcXFxkXSonXG4gIH07XG5cbiAgLyoqXG4gICAqIEQgbmVzdGluZyBjb21tZW50XG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9ORVNUSU5HX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVChcbiAgICAnXFxcXC9cXFxcKycsXG4gICAgJ1xcXFwrXFxcXC8nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXSxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IERfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgRF9ORVNUSU5HX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgRF9IRVhfU1RSSU5HX01PREUsXG4gICAgICAgIERfU1RSSU5HX01PREUsXG4gICAgICAgIERfV1lTSVdZR19ERUxJTUlURURfU1RSSU5HX01PREUsXG4gICAgICAgIERfQUxURVJOQVRFX1dZU0lXWUdfU1RSSU5HX01PREUsXG4gICAgICAgIERfVE9LRU5fU1RSSU5HX01PREUsXG4gICAgICAgIERfRkxPQVRfTU9ERSxcbiAgICAgICAgRF9JTlRFR0VSX01PREUsXG4gICAgICAgIERfQ0hBUkFDVEVSX01PREUsXG4gICAgICAgIERfSEFTSEJBTkdfTU9ERSxcbiAgICAgICAgRF9TUEVDSUFMX1RPS0VOX1NFUVVFTkNFX01PREUsXG4gICAgICAgIERfQVRUUklCVVRFX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbWQnLCAnbWtkb3duJywgJ21rZCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBoaWdobGlnaHQgaGVhZGVyc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXiN7MSw2fScsIGVuZDogJyQnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ14uKz9cXFxcbls9LV17Mix9JCcgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIGh0bWxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8JywgZW5kOiAnPicsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gbGlzdHMgKGluZGljYXRvcnMgb25seSlcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVsbGV0JyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqKFsqKy1dfChcXFxcZCtcXFxcLikpXFxcXHMrJ1xuICAgICAgfSxcbiAgICAgIC8vIHN0cm9uZyBzZWdtZW50c1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJvbmcnLFxuICAgICAgICBiZWdpbjogJ1sqX117Mn0uKz9bKl9dezJ9J1xuICAgICAgfSxcbiAgICAgIC8vIGVtcGhhc2lzIHNlZ21lbnRzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2VtcGhhc2lzJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXCouKz9cXFxcKicgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXy4rP18nXG4gICAgICAgICAgLCByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBibG9ja3F1b3Rlc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdxdW90ZScsXG4gICAgICAgIGJlZ2luOiAnXj5cXFxccysnLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIC8vIGNvZGUgc25pcHBldHNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29kZScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdeYGBgXFxcXHcqXFxcXHMqJCcsIGVuZDogJ15gYGBbIF0qJCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnYC4rP2AnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ14oIHs0fXxcXFxcdCknLCBlbmQ6ICckJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGhvcml6b250YWwgcnVsZXNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeWy1cXFxcKl17Myx9JywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICAvLyB1c2luZyBsaW5rcyAtIHRpdGxlIGFuZCBsaW5rXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXFsuKz9cXFxcXVtcXFxcKFxcXFxbXS4qP1tcXFxcKVxcXFxdXScsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXF1cXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXF1cXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9eXFxbW15cXG5dK1xcXTovLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rJyxcbiAgICAgICAgICAgIGJlZ2luOiAvOlxccyovLCBlbmQ6IC8kLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgdmFyaWFudHM6IFt7XG4gICAgICBiZWdpbjogJ1xcXFwkW0EtWmEtejAtOV9dKydcbiAgICB9XSxcbiAgfTtcblxuICB2YXIgQlJBQ0VEX1NVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICB2YXJpYW50czogW3tcbiAgICAgIGJlZ2luOiAnXFxcXCR7JyxcbiAgICAgIGVuZDogJ30nXG4gICAgfSwgXSxcbiAgICBrZXl3b3JkczogJ3RydWUgZmFsc2UgbnVsbCB0aGlzIGlzIG5ldyBzdXBlcicsXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbe1xuICAgICAgICBiZWdpbjogJ3JcXCdcXCdcXCcnLFxuICAgICAgICBlbmQ6ICdcXCdcXCdcXCcnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcIlwiXCInLFxuICAgICAgICBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcXCcnLFxuICAgICAgICBlbmQ6ICdcXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCdcXCdcXCcnLFxuICAgICAgICBlbmQ6ICdcXCdcXCdcXCcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIEJSQUNFRF9TVUJTVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJyxcbiAgICAgICAgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNULCBCUkFDRURfU1VCU1RdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVCwgQlJBQ0VEX1NVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNULCBCUkFDRURfU1VCU1RdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBCUkFDRURfU1VCU1QuY29udGFpbnMgPSBbXG4gICAgaGxqcy5DX05VTUJFUl9NT0RFLCBTVFJJTkdcbiAgXTtcblxuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDogJ2Fic3RyYWN0IGFzIGFzc2VydCBhc3luYyBhd2FpdCBicmVhayBjYXNlIGNhdGNoIGNsYXNzIGNvbnN0IGNvbnRpbnVlIGNvdmFyaWFudCBkZWZhdWx0IGRlZmVycmVkIGRvICcgK1xuICAgICAgJ2R5bmFtaWMgZWxzZSBlbnVtIGV4cG9ydCBleHRlbmRzIGV4dGVuc2lvbiBleHRlcm5hbCBmYWN0b3J5IGZhbHNlIGZpbmFsIGZpbmFsbHkgZm9yIEZ1bmN0aW9uIGdldCBoaWRlIGlmICcgK1xuICAgICAgJ2ltcGxlbWVudHMgaW1wb3J0IGluIGluZmVyZmFjZSBpcyBsaWJyYXJ5IG1peGluIG5ldyBudWxsIG9uIG9wZXJhdG9yIHBhcnQgcmV0aHJvdyByZXR1cm4gc2V0IHNob3cgc3RhdGljICcgK1xuICAgICAgJ3N1cGVyIHN3aXRjaCBzeW5jIHRoaXMgdGhyb3cgdHJ1ZSB0cnkgdHlwZWRlZiB2YXIgdm9pZCB3aGlsZSB3aXRoIHlpZWxkJyxcbiAgICBidWlsdF9pbjpcbiAgICAgIC8vIGRhcnQ6Y29yZVxuICAgICAgJ0NvbXBhcmFibGUgRGF0ZVRpbWUgRHVyYXRpb24gRnVuY3Rpb24gSXRlcmFibGUgSXRlcmF0b3IgTGlzdCBNYXAgTWF0Y2ggTnVsbCBPYmplY3QgUGF0dGVybiBSZWdFeHAgU2V0ICcgK1xuICAgICAgJ1N0b3B3YXRjaCBTdHJpbmcgU3RyaW5nQnVmZmVyIFN0cmluZ1NpbmsgU3ltYm9sIFR5cGUgVXJpIGJvb2wgZG91YmxlIGR5bmFtaWMgaW50IG51bSBwcmludCAnICtcbiAgICAgIC8vIGRhcnQ6aHRtbFxuICAgICAgJ0VsZW1lbnQgRWxlbWVudExpc3QgZG9jdW1lbnQgcXVlcnlTZWxlY3RvciBxdWVyeVNlbGVjdG9yQWxsIHdpbmRvdydcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnL1xcXFwqXFxcXConLFxuICAgICAgICAnXFxcXCovJywge1xuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnbWFya2Rvd24nXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvLy8rXFxcXHMqJyxcbiAgICAgICAgJyQnLCB7XG4gICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICBzdWJMYW5ndWFnZTogJ21hcmtkb3duJyxcbiAgICAgICAgICAgIGJlZ2luOiAnLicsXG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgZW5kOiAneycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cydcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJz0+JyAvLyBObyBtYXJrdXAsIGp1c3QgYSByZWxldmFuY2UgYm9vc3RlclxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZXhwb3J0cyByZWdpc3RlciBmaWxlIHNobCBhcnJheSByZWNvcmQgcHJvcGVydHkgZm9yIG1vZCB3aGlsZSBzZXQgYWxseSBsYWJlbCB1c2VzIHJhaXNlIG5vdCAnICtcbiAgICAnc3RvcmVkIGNsYXNzIHNhZmVjYWxsIHZhciBpbnRlcmZhY2Ugb3IgcHJpdmF0ZSBzdGF0aWMgZXhpdCBpbmRleCBpbmhlcml0ZWQgdG8gZWxzZSBzdGRjYWxsICcgK1xuICAgICdvdmVycmlkZSBzaHIgYXNtIGZhciByZXNvdXJjZXN0cmluZyBmaW5hbGl6YXRpb24gcGFja2VkIHZpcnR1YWwgb3V0IGFuZCBwcm90ZWN0ZWQgbGlicmFyeSBkbyAnICtcbiAgICAneG9yd3JpdGUgZ290byBuZWFyIGZ1bmN0aW9uIGVuZCBkaXYgb3ZlcmxvYWQgb2JqZWN0IHVuaXQgYmVnaW4gc3RyaW5nIG9uIGlubGluZSByZXBlYXQgdW50aWwgJyArXG4gICAgJ2Rlc3RydWN0b3Igd3JpdGUgbWVzc2FnZSBwcm9ncmFtIHdpdGggcmVhZCBpbml0aWFsaXphdGlvbiBleGNlcHQgZGVmYXVsdCBuaWwgaWYgY2FzZSBjZGVjbCBpbiAnICtcbiAgICAnZG93bnRvIHRocmVhZHZhciBvZiB0cnkgcGFzY2FsIGNvbnN0IGV4dGVybmFsIGNvbnN0cnVjdG9yIHR5cGUgcHVibGljIHRoZW4gaW1wbGVtZW50YXRpb24gJyArXG4gICAgJ2ZpbmFsbHkgcHVibGlzaGVkIHByb2NlZHVyZSBhYnNvbHV0ZSByZWludHJvZHVjZSBvcGVyYXRvciBhcyBpcyBhYnN0cmFjdCBhbGlhcyBhc3NlbWJsZXIgJyArXG4gICAgJ2JpdHBhY2tlZCBicmVhayBjb250aW51ZSBjcHBkZWNsIGN2YXIgZW51bWVyYXRvciBleHBlcmltZW50YWwgcGxhdGZvcm0gZGVwcmVjYXRlZCAnICtcbiAgICAndW5pbXBsZW1lbnRlZCBkeW5hbWljIGV4cG9ydCBmYXIxNiBmb3J3YXJkIGdlbmVyaWMgaGVscGVyIGltcGxlbWVudHMgaW50ZXJydXB0IGlvY2hlY2tzICcgK1xuICAgICdsb2NhbCBuYW1lIG5vZGVmYXVsdCBub3JldHVybiBub3N0YWNrZnJhbWUgb2xkZnBjY2FsbCBvdGhlcndpc2Ugc2F2ZXJlZ2lzdGVycyBzb2Z0ZmxvYXQgJyArXG4gICAgJ3NwZWNpYWxpemUgc3RyaWN0IHVuYWxpZ25lZCB2YXJhcmdzICc7XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoL1xcey8sIC9cXH0vLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgaGxqcy5DT01NRU5UKC9cXChcXCovLCAvXFwqXFwpLywge3JlbGV2YW5jZTogMTB9KVxuICBdO1xuICB2YXIgRElSRUNUSVZFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXHtcXCQvLCBlbmQ6IC9cXH0vfSxcbiAgICAgIHtiZWdpbjogL1xcKFxcKlxcJC8sIGVuZDogL1xcKlxcKS99XG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy8sXG4gICAgY29udGFpbnM6IFt7YmVnaW46IC8nJy99XVxuICB9O1xuICB2YXIgQ0hBUl9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46IC8oI1xcZCspKy9cbiAgfTtcbiAgdmFyIENMQVNTID0ge1xuICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxzKj1cXFxccypjbGFzc1xcXFxzKlxcXFwoJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgIF1cbiAgfTtcbiAgdmFyIEZVTkNUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24gY29uc3RydWN0b3IgZGVzdHJ1Y3RvciBwcm9jZWR1cmUnLCBlbmQ6IC9bOjtdLyxcbiAgICBrZXl3b3JkczogJ2Z1bmN0aW9uIGNvbnN0cnVjdG9yfDEwIGRlc3RydWN0b3J8MTAgcHJvY2VkdXJlfDEwJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtTVFJJTkcsIENIQVJfU1RSSU5HLCBESVJFQ1RJVkVdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICAgICAgfSxcbiAgICAgIERJUkVDVElWRVxuICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydkcHInLCAnZGZtJywgJ3BhcycsICdwYXNjYWwnLCAnZnJlZXBhc2NhbCcsICdsYXphcnVzJywgJ2xwcicsICdsZm0nXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXCJ8XFwkW0ctWmctel18XFwvXFwqfDxcXC98XFx8LyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLCBDSEFSX1NUUklORyxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBDTEFTUyxcbiAgICAgIEZVTkNUSU9OLFxuICAgICAgRElSRUNUSVZFXG4gICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwYXRjaCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL15AQCArXFwtXFxkKyxcXGQrICtcXCtcXGQrLFxcZCsgK0BAJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXCpcXCpcXCogK1xcZCssXFxkKyArXFwqXFwqXFwqXFwqJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXC1cXC1cXC0gK1xcZCssXFxkKyArXFwtXFwtXFwtXFwtJC99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL0luZGV4OiAvLCBlbmQ6IC8kL30sXG4gICAgICAgICAge2JlZ2luOiAvPXszLH0vLCBlbmQ6IC8kL30sXG4gICAgICAgICAge2JlZ2luOiAvXlxcLXszfS8sIGVuZDogLyQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwqezN9IC8sIGVuZDogLyQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwrezN9LywgZW5kOiAvJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXCp7MTV9JC8gfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhZGRpdGlvbicsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwrJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2RlbGV0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXC0nLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYWRkaXRpb24nLFxuICAgICAgICBiZWdpbjogJ15cXFxcIScsIGVuZDogJyQnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEZJTFRFUiA9IHtcbiAgICBiZWdpbjogL1xcfFtBLVphLXpdKzo/LyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbmFtZTpcbiAgICAgICAgJ3RydW5jYXRld29yZHMgcmVtb3ZldGFncyBsaW5lYnJlYWtzYnIgeWVzbm8gZ2V0X2RpZ2l0IHRpbWVzaW5jZSByYW5kb20gc3RyaXB0YWdzICcgK1xuICAgICAgICAnZmlsZXNpemVmb3JtYXQgZXNjYXBlIGxpbmVicmVha3MgbGVuZ3RoX2lzIGxqdXN0IHJqdXN0IGN1dCB1cmxpemUgZml4X2FtcGVyc2FuZHMgJyArXG4gICAgICAgICd0aXRsZSBmbG9hdGZvcm1hdCBjYXBmaXJzdCBwcHJpbnQgZGl2aXNpYmxlYnkgYWRkIG1ha2VfbGlzdCB1bm9yZGVyZWRfbGlzdCB1cmxlbmNvZGUgJyArXG4gICAgICAgICd0aW1ldW50aWwgdXJsaXpldHJ1bmMgd29yZGNvdW50IHN0cmluZ2Zvcm1hdCBsaW5lbnVtYmVycyBzbGljZSBkYXRlIGRpY3Rzb3J0ICcgK1xuICAgICAgICAnZGljdHNvcnRyZXZlcnNlZCBkZWZhdWx0X2lmX25vbmUgcGx1cmFsaXplIGxvd2VyIGpvaW4gY2VudGVyIGRlZmF1bHQgJyArXG4gICAgICAgICd0cnVuY2F0ZXdvcmRzX2h0bWwgdXBwZXIgbGVuZ3RoIHBob25lMm51bWVyaWMgd29yZHdyYXAgdGltZSBhZGRzbGFzaGVzIHNsdWdpZnkgZmlyc3QgJyArXG4gICAgICAgICdlc2NhcGVqcyBmb3JjZV9lc2NhcGUgaXJpZW5jb2RlIGxhc3Qgc2FmZSBzYWZlc2VxIHRydW5jYXRlY2hhcnMgbG9jYWxpemUgdW5sb2NhbGl6ZSAnICtcbiAgICAgICAgJ2xvY2FsdGltZSB1dGMgdGltZXpvbmUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnamluamEnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKC9cXHslXFxzKmNvbW1lbnRcXHMqJX0vLCAvXFx7JVxccyplbmRjb21tZW50XFxzKiV9LyksXG4gICAgICBobGpzLkNPTU1FTlQoL1xceyMvLCAvI30vKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHslLywgZW5kOiAvJX0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgJ2NvbW1lbnQgZW5kY29tbWVudCBsb2FkIHRlbXBsYXRldGFnIGlmY2hhbmdlZCBlbmRpZmNoYW5nZWQgaWYgZW5kaWYgZmlyc3RvZiBmb3IgJyArXG4gICAgICAgICAgICAgICAgJ2VuZGZvciBpZm5vdGVxdWFsIGVuZGlmbm90ZXF1YWwgd2lkdGhyYXRpbyBleHRlbmRzIGluY2x1ZGUgc3BhY2VsZXNzICcgK1xuICAgICAgICAgICAgICAgICdlbmRzcGFjZWxlc3MgcmVncm91cCBpZmVxdWFsIGVuZGlmZXF1YWwgc3NpIG5vdyB3aXRoIGN5Y2xlIHVybCBmaWx0ZXIgJyArXG4gICAgICAgICAgICAgICAgJ2VuZGZpbHRlciBkZWJ1ZyBibG9jayBlbmRibG9jayBlbHNlIGF1dG9lc2NhcGUgZW5kYXV0b2VzY2FwZSBjc3JmX3Rva2VuIGVtcHR5IGVsaWYgJyArXG4gICAgICAgICAgICAgICAgJ2VuZHdpdGggc3RhdGljIHRyYW5zIGJsb2NrdHJhbnMgZW5kYmxvY2t0cmFucyBnZXRfc3RhdGljX3ByZWZpeCBnZXRfbWVkaWFfcHJlZml4ICcgK1xuICAgICAgICAgICAgICAgICdwbHVyYWwgZ2V0X2N1cnJlbnRfbGFuZ3VhZ2UgbGFuZ3VhZ2UgZ2V0X2F2YWlsYWJsZV9sYW5ndWFnZXMgJyArXG4gICAgICAgICAgICAgICAgJ2dldF9jdXJyZW50X2xhbmd1YWdlX2JpZGkgZ2V0X2xhbmd1YWdlX2luZm8gZ2V0X2xhbmd1YWdlX2luZm9fbGlzdCBsb2NhbGl6ZSAnICtcbiAgICAgICAgICAgICAgICAnZW5kbG9jYWxpemUgbG9jYWx0aW1lIGVuZGxvY2FsdGltZSB0aW1lem9uZSBlbmR0aW1lem9uZSBnZXRfY3VycmVudF90aW1lem9uZSAnICtcbiAgICAgICAgICAgICAgICAndmVyYmF0aW0nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICBrZXl3b3JkczogJ2luIGJ5IGFzJyxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtGSUxURVJdLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHsvLCBlbmQ6IC99fS8sXG4gICAgICAgIGNvbnRhaW5zOiBbRklMVEVSXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydiaW5kJywgJ3pvbmUnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ0lOIEEgQUFBQSBBRlNEQiBBUEwgQ0FBIENETlNLRVkgQ0RTIENFUlQgQ05BTUUgREhDSUQgRExWIEROQU1FIEROU0tFWSBEUyBISVAgSVBTRUNLRVkgS0VZIEtYICcgK1xuICAgICAgICAnTE9DIE1YIE5BUFRSIE5TIE5TRUMgTlNFQzMgTlNFQzNQQVJBTSBQVFIgUlJTSUcgUlAgU0lHIFNPQSBTUlYgU1NIRlAgVEEgVEtFWSBUTFNBIFRTSUcgVFhUJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eXFwkKFRUTHxHRU5FUkFURXxJTkNMVURFfE9SSUdJTilcXGIvXG4gICAgICB9LFxuICAgICAgLy8gSVB2NlxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJygoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKShcXFxcLigyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIC8vIElQdjRcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXFxcYidcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5OVU1CRVJfTU9ERSwge2JlZ2luOiAvXFxiXFxkK1tkaHdtXT8vfSlcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZG9ja2VyJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogJ2Zyb20gbWFpbnRhaW5lciBleHBvc2UgZW52IGFyZyB1c2VyIG9uYnVpbGQgc3RvcHNpZ25hbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3J1biBjbWQgZW50cnlwb2ludCB2b2x1bWUgYWRkIGNvcHkgd29ya2RpciBsYWJlbCBoZWFsdGhjaGVjayBzaGVsbCcsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogL1teXFxcXF0kLyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ2Jhc2gnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6ICc8LydcbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgL15cXHMqQD9yZW1cXGIvLCAvJC8sXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAxMFxuICAgIH1cbiAgKTtcbiAgdmFyIExBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICdeXFxcXHMqW0EtWmEtei5fP11bQS1aYS16MC05XyQjQH4uP10qKDp8XFxcXHMrbGFiZWwpJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2JhdCcsICdjbWQnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaWYgZWxzZSBnb3RvIGZvciBpbiBkbyBjYWxsIGV4aXQgbm90IGV4aXN0IGVycm9ybGV2ZWwgZGVmaW5lZCAnICtcbiAgICAgICAgJ2VxdSBuZXEgbHNzIGxlcSBndHIgZ2VxJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAncHJuIG51bCBscHQzIGxwdDIgbHB0MSBjb24gY29tNCBjb20zIGNvbTIgY29tMSBhdXggJyArXG4gICAgICAgICdzaGlmdCBjZCBkaXIgZWNobyBzZXRsb2NhbCBlbmRsb2NhbCBzZXQgcGF1c2UgY29weSAnICtcbiAgICAgICAgJ2FwcGVuZCBhc3NvYyBhdCBhdHRyaWIgYnJlYWsgY2FjbHMgY2QgY2hjcCBjaGRpciBjaGtkc2sgY2hrbnRmcyBjbHMgY21kIGNvbG9yICcgK1xuICAgICAgICAnY29tcCBjb21wYWN0IGNvbnZlcnQgZGF0ZSBkaXIgZGlza2NvbXAgZGlza2NvcHkgZG9za2V5IGVyYXNlIGZzICcgK1xuICAgICAgICAnZmluZCBmaW5kc3RyIGZvcm1hdCBmdHlwZSBncmFmdGFibCBoZWxwIGtleWIgbGFiZWwgbWQgbWtkaXIgbW9kZSBtb3JlIG1vdmUgcGF0aCAnICtcbiAgICAgICAgJ3BhdXNlIHByaW50IHBvcGQgcHVzaGQgcHJvbXQgcmQgcmVjb3ZlciByZW0gcmVuYW1lIHJlcGxhY2UgcmVzdG9yZSBybWRpciBzaGlmdCcgK1xuICAgICAgICAnc29ydCBzdGFydCBzdWJzdCB0aW1lIHRpdGxlIHRyZWUgdHlwZSB2ZXIgdmVyaWZ5IHZvbCAnICtcbiAgICAgICAgLy8gd2ludXRpbHNcbiAgICAgICAgJ3BpbmcgbmV0IGlwY29uZmlnIHRhc2traWxsIHhjb3B5IHJlbiBkZWwnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsIGJlZ2luOiAvJSVbXiBdfCVbXiBdKz8lfCFbXiBdKz8hL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogTEFCRUwuYmVnaW4sIGVuZDogJ2dvdG86ZW9mJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICcoW19hLXpBLVpdXFxcXHcqXFxcXC4pKihbX2EtekEtWl1cXFxcdyo6KT9bX2EtekEtWl1cXFxcdyonfSksXG4gICAgICAgICAgQ09NTUVOVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJ1xcXFxiXFxcXGQrJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgQ09NTUVOVFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBRVU9URURfUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvXG4gIH07XG4gIHZhciBBUE9TX1BST1BFUlRZID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgfTtcbiAgdmFyIFVOUVVPVEVEX1BST1BFUlRZID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdbXFxcXHctP10rOlxcXFx3KycsIGVuZDogJ1xcXFxXJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFZBTFVFTEVTU19QUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXHcrLT9cXFxcdysnLCBlbmQ6ICdcXFxcVycsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogJ2RzY29uZmlnJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdeZHNjb25maWcnLCBlbmQ6ICdcXFxccycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICcobGlzdHxjcmVhdGV8Z2V0fHNldHxkZWxldGUpLShcXFxcdyspJywgZW5kOiAnXFxcXHMnLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAnIUAjJCVeJiooKScsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICctLShcXFxcdyspJywgZW5kOiAnXFxcXHMnLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgUVVPVEVEX1BST1BFUlRZLFxuICAgICAgQVBPU19QUk9QRVJUWSxcbiAgICAgIFVOUVVPVEVEX1BST1BFUlRZLFxuICAgICAgVkFMVUVMRVNTX1BST1BFUlRZLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7IGJlZ2luOiAnKCh1OD98VSl8TCk/XCInIH0pLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VSk/UlwiJywgZW5kOiAnXCInLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFwnXFxcXFxcXFw/LicsIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICcuJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTlVNQkVSUyA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoXFxcXGQrKFxcXFwuXFxcXGQqKT98XFxcXC5cXFxcZCspKHV8VXxsfEx8dWx8VUx8ZnxGKScgfSxcbiAgICAgIHsgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFBSRVBST0NFU1NPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJyMnLCBlbmQ6ICckJyxcbiAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbGlmIGVuZGlmIGRlZmluZSB1bmRlZiBpZmRlZiBpZm5kZWYnfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXFxcXG4vLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbmNsdWRlJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpbmNsdWRlJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KFNUUklOR1MsIHtjbGFzc05hbWU6ICdtZXRhLXN0cmluZyd9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJzwnLCBlbmQ6ICc+JyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBTVFJJTkdTLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcblxuICB2YXIgRFRTX1JFRkVSRU5DRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46ICdcXFxcJlthLXpcXFxcZF9dKlxcXFxiJ1xuICB9O1xuXG4gIHZhciBEVFNfS0VZV09SRCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhLWtleXdvcmQnLFxuICAgIGJlZ2luOiAnL1thLXpdW2EtelxcXFxkLV0qLydcbiAgfTtcblxuICB2YXIgRFRTX0xBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICdeXFxcXHMqW2EtekEtWl9dW2EtekEtWlxcXFxkX10qOidcbiAgfTtcblxuICB2YXIgRFRTX0NFTExfUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJzwnLFxuICAgIGVuZDogJz4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOVU1CRVJTLFxuICAgICAgRFRTX1JFRkVSRU5DRVxuICAgIF1cbiAgfTtcblxuICB2YXIgRFRTX05PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luOiAvW2EtekEtWl9dW2EtekEtWlxcZF9AXSpcXHN7LyxcbiAgICBlbmQ6IC9bezs9XS8sXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZVxuICB9O1xuXG4gIHZhciBEVFNfUk9PVF9OT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbjogJy9cXFxccyp7JyxcbiAgICBlbmQ6ICd9OycsXG4gICAgcmVsZXZhbmNlOiAxMCxcbiAgICBjb250YWluczogW1xuICAgICAgRFRTX1JFRkVSRU5DRSxcbiAgICAgIERUU19LRVlXT1JELFxuICAgICAgRFRTX0xBQkVMLFxuICAgICAgRFRTX05PREUsXG4gICAgICBEVFNfQ0VMTF9QUk9QRVJUWSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBOVU1CRVJTLFxuICAgICAgU1RSSU5HU1xuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiBcIlwiLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBEVFNfUk9PVF9OT0RFLFxuICAgICAgRFRTX1JFRkVSRU5DRSxcbiAgICAgIERUU19LRVlXT1JELFxuICAgICAgRFRTX0xBQkVMLFxuICAgICAgRFRTX05PREUsXG4gICAgICBEVFNfQ0VMTF9QUk9QRVJUWSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBOVU1CRVJTLFxuICAgICAgU1RSSU5HUyxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnOjonLFxuICAgICAgICBrZXl3b3JkczogXCJcIlxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBFWFBSRVNTSU9OX0tFWVdPUkRTID0gJ2lmIGVxIG5lIGx0IGx0ZSBndCBndGUgc2VsZWN0IGRlZmF1bHQgbWF0aCBzZXAnO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZHN0J10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHtbI1xcL10vLCBlbmQ6IC9cXH0vLCBpbGxlZ2FsOiAvOy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogL1thLXpBLVpcXC4tXSsvLFxuICAgICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLCByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvXFx7LywgZW5kOiAvXFx9LywgaWxsZWdhbDogLzsvLFxuICAgICAgICBrZXl3b3JkczogRVhQUkVTU0lPTl9LRVlXT1JEU1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgdmFyIGNvbW1lbnRNb2RlID0gaGxqcy5DT01NRU5UKC9cXChcXCovLCAvXFwqXFwpLyk7XG5cbiAgICB2YXIgbm9uVGVybWluYWxNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiYXR0cmlidXRlXCIsXG4gICAgICAgIGJlZ2luOiAvXlsgXSpbYS16QS1aXVthLXpBLVotXSooW1xccy1dK1thLXpBLVpdW2EtekEtWl0qKSovXG4gICAgfTtcblxuICAgIHZhciBzcGVjaWFsU2VxdWVuY2VNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwibWV0YVwiLFxuICAgICAgICBiZWdpbjogL1xcPy4qXFw/L1xuICAgIH07XG5cbiAgICB2YXIgcnVsZUJvZHlNb2RlID0ge1xuICAgICAgICBiZWdpbjogLz0vLCBlbmQ6IC87LyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIGNvbW1lbnRNb2RlLFxuICAgICAgICAgICAgc3BlY2lhbFNlcXVlbmNlTW9kZSxcbiAgICAgICAgICAgIC8vIHRlcm1pbmFsc1xuICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLCBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWxsZWdhbDogL1xcUy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBjb21tZW50TW9kZSxcbiAgICAgICAgICAgIG5vblRlcm1pbmFsTW9kZSxcbiAgICAgICAgICAgIHJ1bGVCb2R5TW9kZVxuICAgICAgICBdXG4gICAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBFTElYSVJfSURFTlRfUkUgPSAnW2EtekEtWl9dW2EtekEtWjAtOV8uXSooXFxcXCF8XFxcXD8pPyc7XG4gIHZhciBFTElYSVJfTUVUSE9EX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dP3xbLSt+XVxcXFxAfDw8fD4+fD1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfmB8XXxcXFxcW1xcXFxdPT8nO1xuICB2YXIgRUxJWElSX0tFWVdPUkRTID1cbiAgICAnYW5kIGZhbHNlIHRoZW4gZGVmaW5lZCBtb2R1bGUgaW4gcmV0dXJuIHJlZG8gcmV0cnkgZW5kIGZvciB0cnVlIHNlbGYgd2hlbiAnICtcbiAgICAnbmV4dCB1bnRpbCBkbyBiZWdpbiB1bmxlc3MgbmlsIGJyZWFrIG5vdCBjYXNlIGNvbmQgYWxpYXMgd2hpbGUgZW5zdXJlIG9yICcgK1xuICAgICdpbmNsdWRlIHVzZSBhbGlhcyBmbiBxdW90ZSByZXF1aXJlIGltcG9ydCB3aXRofDAnO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnI1xcXFx7JywgZW5kOiAnfScsXG4gICAgbGV4ZW1lczogRUxJWElSX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBFTElYSVJfS0VZV09SRFNcbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2RlZiBkZWZwIGRlZm1hY3JvJywgZW5kOiAvXFxCXFxiLywgLy8gdGhlIG1vZGUgaXMgZW5kZWQgYnkgdGhlIHRpdGxlXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgYmVnaW46IEVMSVhJUl9JREVOVF9SRSxcbiAgICAgICAgZW5kc1BhcmVudDogdHJ1ZVxuICAgICAgfSlcbiAgICBdXG4gIH07XG4gIHZhciBDTEFTUyA9IGhsanMuaW5oZXJpdChGVU5DVElPTiwge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZGVmaW1wbCBkZWZtb2R1bGUgZGVmcHJvdG9jb2wgZGVmcmVjb3JkJywgZW5kOiAvXFxiZG9cXGJ8JHw7L1xuICB9KTtcbiAgdmFyIEVMSVhJUl9ERUZBVUxUX0NPTlRBSU5TID0gW1xuICAgIFNUUklORyxcbiAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgIENMQVNTLFxuICAgIEZVTkNUSU9OLFxuICAgIHtcbiAgICAgIGJlZ2luOiAnOjonXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgYmVnaW46ICc6KD8hW1xcXFxzOl0pJyxcbiAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCB7YmVnaW46IEVMSVhJUl9NRVRIT0RfUkV9XSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiBFTElYSVJfSURFTlRfUkUgKyAnOig/ITopJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMG9bMC03X10rKXwoXFxcXGIwYlswMV9dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoLT9cXFxcYlsxLTldWzAtOV9dKiguWzAtOV9dKyhbZUVdWy0rXT9bMC05XSspPyk/KScsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgIGJlZ2luOiAnKFxcXFwkXFxcXFcpfCgoXFxcXCR8XFxcXEBcXFxcQD8pKFxcXFx3KykpJ1xuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICctPidcbiAgICB9LFxuICAgIHsgLy8gcmVnZXhwIGNvbnRhaW5lclxuICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnKVxcXFxzKicsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmVnaW46ICcvJywgZW5kOiAnL1thLXpdKidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAnJXJcXFxcWycsIGVuZDogJ1xcXFxdW2Etel0qJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFTElYSVJfREVGQVVMVF9DT05UQUlOUztcblxuICByZXR1cm4ge1xuICAgIGxleGVtZXM6IEVMSVhJUl9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogRUxJWElSX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBFTElYSVJfREVGQVVMVF9DT05UQUlOU1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlQgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAney0nLFxuICAgICAgICAnLX0nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdXG4gIH07XG5cbiAgdmFyIENPTlNUUlVDVE9SID0ge1xuICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgIGJlZ2luOiAnXFxcXGJbQS1aXVtcXFxcd1xcJ10qJywgLy8gVE9ETzogb3RoZXIgY29uc3RydWN0b3JzIChidWlsdC1pbiwgaW5maXgpLlxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBMSVNUID0ge1xuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgaWxsZWdhbDogJ1wiJyxcbiAgICBjb250YWluczogW1xuICAgICAge2NsYXNzTmFtZTogJ3R5cGUnLCBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHddKihcXFxcKChcXFxcLlxcXFwufCx8XFxcXHcrKVxcXFwpKT8nfSxcbiAgICAgIENPTU1FTlRcbiAgICBdXG4gIH07XG5cbiAgdmFyIFJFQ09SRCA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICBjb250YWluczogTElTVC5jb250YWluc1xuICB9O1xuXG4gIHZhciBDSEFSQUNURVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJ1xcXFxcXFxcPy4nLCBlbmQ6ICdcXCcnLFxuICAgIGlsbGVnYWw6ICcuJ1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6XG4gICAgICAnbGV0IGluIGlmIHRoZW4gZWxzZSBjYXNlIG9mIHdoZXJlIG1vZHVsZSBpbXBvcnQgZXhwb3NpbmcgJyArXG4gICAgICAndHlwZSBhbGlhcyBhcyBpbmZpeCBpbmZpeGwgaW5maXhyIHBvcnQgZWZmZWN0IGNvbW1hbmQgc3Vic2NyaXB0aW9uJyxcbiAgICBjb250YWluczogW1xuXG4gICAgICAvLyBUb3AtbGV2ZWwgY29uc3RydWN0aW9ucy5cblxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAncG9ydCBlZmZlY3QgbW9kdWxlJywgZW5kOiAnZXhwb3NpbmcnLFxuICAgICAgICBrZXl3b3JkczogJ3BvcnQgZWZmZWN0IG1vZHVsZSB3aGVyZSBjb21tYW5kIHN1YnNjcmlwdGlvbiBleHBvc2luZycsXG4gICAgICAgIGNvbnRhaW5zOiBbTElTVCwgQ09NTUVOVF0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcV1xcXFwufDsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ2ltcG9ydCcsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ2ltcG9ydCBhcyBleHBvc2luZycsXG4gICAgICAgIGNvbnRhaW5zOiBbTElTVCwgQ09NTUVOVF0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcV1xcXFwufDsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3R5cGUnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICd0eXBlIGFsaWFzJyxcbiAgICAgICAgY29udGFpbnM6IFtDT05TVFJVQ1RPUiwgTElTVCwgUkVDT1JELCBDT01NRU5UXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2luZml4IGluZml4bCBpbmZpeHInLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTlVNQkVSX01PREUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3BvcnQnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdwb3J0JyxcbiAgICAgICAgY29udGFpbnM6IFtDT01NRU5UXVxuICAgICAgfSxcblxuICAgICAgLy8gTGl0ZXJhbHMgYW5kIG5hbWVzLlxuXG4gICAgICBDSEFSQUNURVIsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgQ09OU1RSVUNUT1IsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdeW19hLXpdW1xcXFx3XFwnXSonfSksXG4gICAgICBDT01NRU5ULFxuXG4gICAgICB7YmVnaW46ICctPnw8LSd9IC8vIE5vIG1hcmt1cCwgcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdLFxuICAgIGlsbGVnYWw6IC87L1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFJVQllfTUVUSE9EX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dP3xbLSt+XVxcXFxAfDw8fD4+fD1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfmB8XXxcXFxcW1xcXFxdPT8nO1xuICB2YXIgUlVCWV9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FuZCB0aGVuIGRlZmluZWQgbW9kdWxlIGluIHJldHVybiByZWRvIGlmIEJFR0lOIHJldHJ5IGVuZCBmb3Igc2VsZiB3aGVuICcgK1xuICAgICAgJ25leHQgdW50aWwgZG8gYmVnaW4gdW5sZXNzIEVORCByZXNjdWUgZWxzZSBicmVhayB1bmRlZiBub3Qgc3VwZXIgY2xhc3MgY2FzZSAnICtcbiAgICAgICdyZXF1aXJlIHlpZWxkIGFsaWFzIHdoaWxlIGVuc3VyZSBlbHNpZiBvciBpbmNsdWRlIGF0dHJfcmVhZGVyIGF0dHJfd3JpdGVyIGF0dHJfYWNjZXNzb3InLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBuaWwnXG4gIH07XG4gIHZhciBZQVJET0NUQUcgPSB7XG4gICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICBiZWdpbjogJ0BbQS1aYS16XSsnXG4gIH07XG4gIHZhciBJUkJfT0JKRUNUID0ge1xuICAgIGJlZ2luOiAnIzwnLCBlbmQ6ICc+J1xuICB9O1xuICB2YXIgQ09NTUVOVF9NT0RFUyA9IFtcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAnIycsXG4gICAgICAnJCcsXG4gICAgICB7XG4gICAgICAgIGNvbnRhaW5zOiBbWUFSRE9DVEFHXVxuICAgICAgfVxuICAgICksXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJ15cXFxcPWJlZ2luJyxcbiAgICAgICdeXFxcXD1lbmQnLFxuICAgICAge1xuICAgICAgICBjb250YWluczogW1lBUkRPQ1RBR10sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVCgnXl9fRU5EX18nLCAnXFxcXG4kJylcbiAgXTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJyNcXFxceycsIGVuZDogJ30nLFxuICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAge2JlZ2luOiAvYC8sIGVuZDogL2AvfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdP1xcXFwoJywgZW5kOiAnXFxcXCknfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdP1xcXFxbJywgZW5kOiAnXFxcXF0nfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdP3snLCBlbmQ6ICd9J30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT88JywgZW5kOiAnPid9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/LycsIGVuZDogJy8nfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdPyUnLCBlbmQ6ICclJ30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT8tJywgZW5kOiAnLSd9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/XFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgICAge1xuICAgICAgICAvLyBcXEIgaW4gdGhlIGJlZ2lubmluZyBzdXBwcmVzc2VzIHJlY29nbml0aW9uIG9mID8tc2VxdWVuY2VzIHdoZXJlID9cbiAgICAgICAgLy8gaXMgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGEgcHJlY2VkaW5nIGlkZW50aWZpZXIsIGFzIGluOiBgZnVuYz80YFxuICAgICAgICBiZWdpbjogL1xcQlxcPyhcXFxcXFxkezEsM318XFxcXHhbQS1GYS1mMC05XXsxLDJ9fFxcXFx1W0EtRmEtZjAtOV17NH18XFxcXD9cXFMpXFxiL1xuICAgICAgfSxcbiAgICAgIHsgLy8gaGVyZWRvY3NcbiAgICAgICAgYmVnaW46IC88PFstfl0/Jz8oXFx3KykoPzoufFxcbikqP1xcblxccypcXDFcXGIvLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAvPDxbLX5dPyc/LyB9LFxuICAgICAgICAgIHsgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgICAgIGVuZFNhbWVBc0JlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLCBlbmRzUGFyZW50OiB0cnVlLFxuICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTXG4gIH07XG5cbiAgdmFyIFJVQllfREVGQVVMVF9DT05UQUlOUyA9IFtcbiAgICBTVFJJTkcsXG4gICAgSVJCX09CSkVDVCxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgbW9kdWxlJywgZW5kOiAnJHw7JyxcbiAgICAgIGlsbGVnYWw6IC89LyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJ1tBLVphLXpfXVxcXFx3Kig6OlxcXFx3KykqKFxcXFw/fFxcXFwhKT8nfSksXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJzxcXFxccyonLFxuICAgICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgYmVnaW46ICcoJyArIGhsanMuSURFTlRfUkUgKyAnOjopPycgKyBobGpzLklERU5UX1JFXG4gICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUylcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWYnLCBlbmQ6ICckfDsnLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBSVUJZX01FVEhPRF9SRX0pLFxuICAgICAgICBQQVJBTVNcbiAgICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBzd2FsbG93IG5hbWVzcGFjZSBxdWFsaWZpZXJzIGJlZm9yZSBzeW1ib2xzXG4gICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OidcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJyhcXFxcIXxcXFxcPyk/OicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogJzooPyFcXFxccyknLFxuICAgICAgY29udGFpbnM6IFtTVFJJTkcsIHtiZWdpbjogUlVCWV9NRVRIT0RfUkV9XSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMFswLTdfXSspfChcXFxcYjB4WzAtOWEtZkEtRl9dKyl8KFxcXFxiWzEtOV1bMC05X10qKFxcXFwuWzAtOV9dKyk/KXxbMF9dXFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJyhcXFxcJFxcXFxXKXwoKFxcXFwkfFxcXFxAXFxcXEA/KShcXFxcdyspKScgLy8gdmFyaWFibGVzXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgYmVnaW46IC9cXHwvLCBlbmQ6IC9cXHwvLFxuICAgICAga2V5d29yZHM6IFJVQllfS0VZV09SRFNcbiAgICB9LFxuICAgIHsgLy8gcmVnZXhwIGNvbnRhaW5lclxuICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfHVubGVzcylcXFxccyonLFxuICAgICAga2V5d29yZHM6ICd1bmxlc3MnLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgSVJCX09CSkVDVCxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge2JlZ2luOiAnLycsIGVuZDogJy9bYS16XSonfSxcbiAgICAgICAgICAgIHtiZWdpbjogJyVyeycsIGVuZDogJ31bYS16XSonfSxcbiAgICAgICAgICAgIHtiZWdpbjogJyVyXFxcXCgnLCBlbmQ6ICdcXFxcKVthLXpdKid9LFxuICAgICAgICAgICAge2JlZ2luOiAnJXIhJywgZW5kOiAnIVthLXpdKid9LFxuICAgICAgICAgICAge2JlZ2luOiAnJXJcXFxcWycsIGVuZDogJ1xcXFxdW2Etel0qJ31cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICBdLmNvbmNhdChDT01NRU5UX01PREVTKTtcblxuICBTVUJTVC5jb250YWlucyA9IFJVQllfREVGQVVMVF9DT05UQUlOUztcbiAgUEFSQU1TLmNvbnRhaW5zID0gUlVCWV9ERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHZhciBTSU1QTEVfUFJPTVBUID0gXCJbPj9dPlwiO1xuICB2YXIgREVGQVVMVF9QUk9NUFQgPSBcIltcXFxcdyNdK1xcXFwoXFxcXHcrXFxcXCk6XFxcXGQrOlxcXFxkKz5cIjtcbiAgdmFyIFJWTV9QUk9NUFQgPSBcIihcXFxcdystKT9cXFxcZCtcXFxcLlxcXFxkK1xcXFwuXFxcXGQocFxcXFxkKyk/W14+XSs+XCI7XG5cbiAgdmFyIElSQl9ERUZBVUxUID0gW1xuICAgIHtcbiAgICAgIGJlZ2luOiAvXlxccyo9Pi8sXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgZW5kOiAnJCcsIGNvbnRhaW5zOiBSVUJZX0RFRkFVTFRfQ09OVEFJTlNcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgYmVnaW46ICdeKCcrU0lNUExFX1BST01QVCtcInxcIitERUZBVUxUX1BST01QVCsnfCcrUlZNX1BST01QVCsnKScsXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgZW5kOiAnJCcsIGNvbnRhaW5zOiBSVUJZX0RFRkFVTFRfQ09OVEFJTlNcbiAgICAgIH1cbiAgICB9XG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3JiJywgJ2dlbXNwZWMnLCAncG9kc3BlYycsICd0aG9yJywgJ2lyYiddLFxuICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBDT01NRU5UX01PREVTLmNvbmNhdChJUkJfREVGQVVMVCkuY29uY2F0KFJVQllfREVGQVVMVF9DT05UQUlOUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJzwlIycsICclPicpLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzwlWyU9LV0/JywgZW5kOiAnWyUtXT8lPicsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAncnVieScsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnc3Bhd24gc3Bhd25fbGluayBzZWxmJyxcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhZnRlciBhbmQgYW5kYWxzb3wxMCBiYW5kIGJlZ2luIGJub3QgYm9yIGJzbCBic3IgYnhvciBjYXNlIGNhdGNoIGNvbmQgZGl2IGVuZCBmdW4gaWYgJyArXG4gICAgICAgICdsZXQgbm90IG9mIG9yIG9yZWxzZXwxMCBxdWVyeSByZWNlaXZlIHJlbSB0cnkgd2hlbiB4b3InXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdeWzAtOV0rPiAnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCclJywgJyQnKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcZCsjW2EtZkEtRjAtOV0rfFxcXFxkKyhcXFxcLlxcXFxkKyk/KFtlRV1bLStdP1xcXFxkKyk/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXD8oOjopPyhbQS1aXVxcXFx3Kig6Oik/KSsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJy0+J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdvaydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnISdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKFxcXFxiW2EtelxcJ11bYS16QS1aMC05X1xcJ10qOlthLXpcXCddW2EtekEtWjAtOV9cXCddKil8KFxcXFxiW2EtelxcJ11bYS16QS1aMC05X1xcJ10qKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbQS1aXVthLXpBLVowLTlfXFwnXSonLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQkFTSUNfQVRPTV9SRSA9ICdbYS16XFwnXVthLXpBLVowLTlfXFwnXSonO1xuICB2YXIgRlVOQ1RJT05fTkFNRV9SRSA9ICcoJyArIEJBU0lDX0FUT01fUkUgKyAnOicgKyBCQVNJQ19BVE9NX1JFICsgJ3wnICsgQkFTSUNfQVRPTV9SRSArICcpJztcbiAgdmFyIEVSTEFOR19SRVNFUlZFRCA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FmdGVyIGFuZCBhbmRhbHNvfDEwIGJhbmQgYmVnaW4gYm5vdCBib3IgYnNsIGJ6ciBieG9yIGNhc2UgY2F0Y2ggY29uZCBkaXYgZW5kIGZ1biBpZiAnICtcbiAgICAgICdsZXQgbm90IG9mIG9yZWxzZXwxMCBxdWVyeSByZWNlaXZlIHJlbSB0cnkgd2hlbiB4b3InLFxuICAgIGxpdGVyYWw6XG4gICAgICAnZmFsc2UgdHJ1ZSdcbiAgfTtcblxuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVCgnJScsICckJyk7XG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJ1xcXFxiKFxcXFxkKyNbYS1mQS1GMC05XSt8XFxcXGQrKFxcXFwuXFxcXGQrKT8oW2VFXVstK10/XFxcXGQrKT8pJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE5BTUVEX0ZVTiA9IHtcbiAgICBiZWdpbjogJ2Z1blxcXFxzKycgKyBCQVNJQ19BVE9NX1JFICsgJy9cXFxcZCsnXG4gIH07XG4gIHZhciBGVU5DVElPTl9DQUxMID0ge1xuICAgIGJlZ2luOiBGVU5DVElPTl9OQU1FX1JFICsgJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogRlVOQ1RJT05fTkFNRV9SRSwgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgLy8gXCJjb250YWluc1wiIGRlZmluZWQgbGF0ZXJcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBUVVBMRSA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICByZWxldmFuY2U6IDBcbiAgICAvLyBcImNvbnRhaW5zXCIgZGVmaW5lZCBsYXRlclxuICB9O1xuICB2YXIgVkFSMSA9IHtcbiAgICBiZWdpbjogJ1xcXFxiXyhbQS1aXVtBLVphLXowLTlfXSopPycsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBWQVIyID0ge1xuICAgIGJlZ2luOiAnW0EtWl1bYS16QS1aMC05X10qJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFJFQ09SRF9BQ0NFU1MgPSB7XG4gICAgYmVnaW46ICcjJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcjJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIC8vIFwiY29udGFpbnNcIiBkZWZpbmVkIGxhdGVyXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBCTE9DS19TVEFURU1FTlRTID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICdmdW4gcmVjZWl2ZSBpZiB0cnkgY2FzZScsIGVuZDogJ2VuZCcsXG4gICAga2V5d29yZHM6IEVSTEFOR19SRVNFUlZFRFxuICB9O1xuICBCTE9DS19TVEFURU1FTlRTLmNvbnRhaW5zID0gW1xuICAgIENPTU1FTlQsXG4gICAgTkFNRURfRlVOLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICcnfSksXG4gICAgQkxPQ0tfU1RBVEVNRU5UUyxcbiAgICBGVU5DVElPTl9DQUxMLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgTlVNQkVSLFxuICAgIFRVUExFLFxuICAgIFZBUjEsIFZBUjIsXG4gICAgUkVDT1JEX0FDQ0VTU1xuICBdO1xuXG4gIHZhciBCQVNJQ19NT0RFUyA9IFtcbiAgICBDT01NRU5ULFxuICAgIE5BTUVEX0ZVTixcbiAgICBCTE9DS19TVEFURU1FTlRTLFxuICAgIEZVTkNUSU9OX0NBTEwsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBOVU1CRVIsXG4gICAgVFVQTEUsXG4gICAgVkFSMSwgVkFSMixcbiAgICBSRUNPUkRfQUNDRVNTXG4gIF07XG4gIEZVTkNUSU9OX0NBTEwuY29udGFpbnNbMV0uY29udGFpbnMgPSBCQVNJQ19NT0RFUztcbiAgVFVQTEUuY29udGFpbnMgPSBCQVNJQ19NT0RFUztcbiAgUkVDT1JEX0FDQ0VTUy5jb250YWluc1sxXS5jb250YWlucyA9IEJBU0lDX01PREVTO1xuXG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGNvbnRhaW5zOiBCQVNJQ19NT0RFU1xuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZXJsJ10sXG4gICAga2V5d29yZHM6IEVSTEFOR19SRVNFUlZFRCxcbiAgICBpbGxlZ2FsOiAnKDwvfFxcXFwqPXxcXFxcKz18LT18L1xcXFwqfFxcXFwqL3xcXFxcKFxcXFwqfFxcXFwqXFxcXCkpJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnXicgKyBCQVNJQ19BVE9NX1JFICsgJ1xcXFxzKlxcXFwoJywgZW5kOiAnLT4nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFwofCN8Ly98L1xcXFwqfFxcXFxcXFxcfDp8OycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgUEFSQU1TLFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogQkFTSUNfQVRPTV9SRX0pXG4gICAgICAgIF0sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJzt8XFxcXC4nLFxuICAgICAgICAgIGtleXdvcmRzOiBFUkxBTkdfUkVTRVJWRUQsXG4gICAgICAgICAgY29udGFpbnM6IEJBU0lDX01PREVTXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBDT01NRU5ULFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ14tJywgZW5kOiAnXFxcXC4nLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBsZXhlbWVzOiAnLScgKyBobGpzLklERU5UX1JFLFxuICAgICAgICBrZXl3b3JkczpcbiAgICAgICAgICAnLW1vZHVsZSAtcmVjb3JkIC11bmRlZiAtZXhwb3J0IC1pZmRlZiAtaWZuZGVmIC1hdXRob3IgLWNvcHlyaWdodCAtZG9jIC12c24gJyArXG4gICAgICAgICAgJy1pbXBvcnQgLWluY2x1ZGUgLWluY2x1ZGVfbGliIC1jb21waWxlIC1kZWZpbmUgLWVsc2UgLWVuZGlmIC1maWxlIC1iZWhhdmlvdXIgJyArXG4gICAgICAgICAgJy1iZWhhdmlvciAtc3BlYycsXG4gICAgICAgIGNvbnRhaW5zOiBbUEFSQU1TXVxuICAgICAgfSxcbiAgICAgIE5VTUJFUixcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBSRUNPUkRfQUNDRVNTLFxuICAgICAgVkFSMSwgVkFSMixcbiAgICAgIFRVUExFLFxuICAgICAge2JlZ2luOiAvXFwuJC99IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3hsc3gnLCAneGxzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiAvW2EtekEtWl1bXFx3XFwuXSovLFxuICAgIC8vIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbXBvcnRlZCBmcm9tIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDUxMzA0MjcxMC9odHRwczovL3N1cHBvcnQub2ZmaWNlLmNvbS9lbi11cy9hcnRpY2xlL0V4Y2VsLWZ1bmN0aW9ucy1hbHBoYWJldGljYWwtYjM5NDQ1NzItMjU1ZC00ZWZiLWJiOTYtYzZkOTAwMzNlMTg4XG4gICAga2V5d29yZHM6IHtcbiAgICAgICAgYnVpbHRfaW46ICdBQlMgQUNDUklOVCBBQ0NSSU5UTSBBQ09TIEFDT1NIIEFDT1QgQUNPVEggQUdHUkVHQVRFIEFERFJFU1MgQU1PUkRFR1JDIEFNT1JMSU5DIEFORCBBUkFCSUMgQVJFQVMgQVNDIEFTSU4gQVNJTkggQVRBTiBBVEFOMiBBVEFOSCBBVkVERVYgQVZFUkFHRSBBVkVSQUdFQSBBVkVSQUdFSUYgQVZFUkFHRUlGUyBCQUhUVEVYVCBCQVNFIEJFU1NFTEkgQkVTU0VMSiBCRVNTRUxLIEJFU1NFTFkgQkVUQURJU1QgQkVUQS5ESVNUIEJFVEFJTlYgQkVUQS5JTlYgQklOMkRFQyBCSU4ySEVYIEJJTjJPQ1QgQklOT01ESVNUIEJJTk9NLkRJU1QgQklOT00uRElTVC5SQU5HRSBCSU5PTS5JTlYgQklUQU5EIEJJVExTSElGVCBCSVRPUiBCSVRSU0hJRlQgQklUWE9SIENBTEwgQ0VJTElORyBDRUlMSU5HLk1BVEggQ0VJTElORy5QUkVDSVNFIENFTEwgQ0hBUiBDSElESVNUIENISUlOViBDSElURVNUIENISVNRLkRJU1QgQ0hJU1EuRElTVC5SVCBDSElTUS5JTlYgQ0hJU1EuSU5WLlJUIENISVNRLlRFU1QgQ0hPT1NFIENMRUFOIENPREUgQ09MVU1OIENPTFVNTlMgQ09NQklOIENPTUJJTkEgQ09NUExFWCBDT05DQVQgQ09OQ0FURU5BVEUgQ09ORklERU5DRSBDT05GSURFTkNFLk5PUk0gQ09ORklERU5DRS5UIENPTlZFUlQgQ09SUkVMIENPUyBDT1NIIENPVCBDT1RIIENPVU5UIENPVU5UQSBDT1VOVEJMQU5LIENPVU5USUYgQ09VTlRJRlMgQ09VUERBWUJTIENPVVBEQVlTIENPVVBEQVlTTkMgQ09VUE5DRCBDT1VQTlVNIENPVVBQQ0QgQ09WQVIgQ09WQVJJQU5DRS5QIENPVkFSSUFOQ0UuUyBDUklUQklOT00gQ1NDIENTQ0ggQ1VCRUtQSU1FTUJFUiBDVUJFTUVNQkVSIENVQkVNRU1CRVJQUk9QRVJUWSBDVUJFUkFOS0VETUVNQkVSIENVQkVTRVQgQ1VCRVNFVENPVU5UIENVQkVWQUxVRSBDVU1JUE1UIENVTVBSSU5DIERBVEUgREFURURJRiBEQVRFVkFMVUUgREFWRVJBR0UgREFZIERBWVMgREFZUzM2MCBEQiBEQkNTIERDT1VOVCBEQ09VTlRBIEREQiBERUMyQklOIERFQzJIRVggREVDMk9DVCBERUNJTUFMIERFR1JFRVMgREVMVEEgREVWU1EgREdFVCBESVNDIERNQVggRE1JTiBET0xMQVIgRE9MTEFSREUgRE9MTEFSRlIgRFBST0RVQ1QgRFNUREVWIERTVERFVlAgRFNVTSBEVVJBVElPTiBEVkFSIERWQVJQIEVEQVRFIEVGRkVDVCBFTkNPREVVUkwgRU9NT05USCBFUkYgRVJGLlBSRUNJU0UgRVJGQyBFUkZDLlBSRUNJU0UgRVJST1IuVFlQRSBFVVJPQ09OVkVSVCBFVkVOIEVYQUNUIEVYUCBFWFBPTi5ESVNUIEVYUE9ORElTVCBGQUNUIEZBQ1RET1VCTEUgRkFMU0V8MCBGLkRJU1QgRkRJU1QgRi5ESVNULlJUIEZJTFRFUlhNTCBGSU5EIEZJTkRCIEYuSU5WIEYuSU5WLlJUIEZJTlYgRklTSEVSIEZJU0hFUklOViBGSVhFRCBGTE9PUiBGTE9PUi5NQVRIIEZMT09SLlBSRUNJU0UgRk9SRUNBU1QgRk9SRUNBU1QuRVRTIEZPUkVDQVNULkVUUy5DT05GSU5UIEZPUkVDQVNULkVUUy5TRUFTT05BTElUWSBGT1JFQ0FTVC5FVFMuU1RBVCBGT1JFQ0FTVC5MSU5FQVIgRk9STVVMQVRFWFQgRlJFUVVFTkNZIEYuVEVTVCBGVEVTVCBGViBGVlNDSEVEVUxFIEdBTU1BIEdBTU1BLkRJU1QgR0FNTUFESVNUIEdBTU1BLklOViBHQU1NQUlOViBHQU1NQUxOIEdBTU1BTE4uUFJFQ0lTRSBHQVVTUyBHQ0QgR0VPTUVBTiBHRVNURVAgR0VUUElWT1REQVRBIEdST1dUSCBIQVJNRUFOIEhFWDJCSU4gSEVYMkRFQyBIRVgyT0NUIEhMT09LVVAgSE9VUiBIWVBFUkxJTksgSFlQR0VPTS5ESVNUIEhZUEdFT01ESVNUIElGIElGRVJST1IgSUZOQSBJRlMgSU1BQlMgSU1BR0lOQVJZIElNQVJHVU1FTlQgSU1DT05KVUdBVEUgSU1DT1MgSU1DT1NIIElNQ09UIElNQ1NDIElNQ1NDSCBJTURJViBJTUVYUCBJTUxOIElNTE9HMTAgSU1MT0cyIElNUE9XRVIgSU1QUk9EVUNUIElNUkVBTCBJTVNFQyBJTVNFQ0ggSU1TSU4gSU1TSU5IIElNU1FSVCBJTVNVQiBJTVNVTSBJTVRBTiBJTkRFWCBJTkRJUkVDVCBJTkZPIElOVCBJTlRFUkNFUFQgSU5UUkFURSBJUE1UIElSUiBJU0JMQU5LIElTRVJSIElTRVJST1IgSVNFVkVOIElTRk9STVVMQSBJU0xPR0lDQUwgSVNOQSBJU05PTlRFWFQgSVNOVU1CRVIgSVNPREQgSVNSRUYgSVNURVhUIElTTy5DRUlMSU5HIElTT1dFRUtOVU0gSVNQTVQgSklTIEtVUlQgTEFSR0UgTENNIExFRlQgTEVGVEIgTEVOIExFTkIgTElORVNUIExOIExPRyBMT0cxMCBMT0dFU1QgTE9HSU5WIExPR05PUk0uRElTVCBMT0dOT1JNRElTVCBMT0dOT1JNLklOViBMT09LVVAgTE9XRVIgTUFUQ0ggTUFYIE1BWEEgTUFYSUZTIE1ERVRFUk0gTURVUkFUSU9OIE1FRElBTiBNSUQgTUlEQnMgTUlOIE1JTklGUyBNSU5BIE1JTlVURSBNSU5WRVJTRSBNSVJSIE1NVUxUIE1PRCBNT0RFIE1PREUuTVVMVCBNT0RFLlNOR0wgTU9OVEggTVJPVU5EIE1VTFRJTk9NSUFMIE1VTklUIE4gTkEgTkVHQklOT00uRElTVCBORUdCSU5PTURJU1QgTkVUV09SS0RBWVMgTkVUV09SS0RBWVMuSU5UTCBOT01JTkFMIE5PUk0uRElTVCBOT1JNRElTVCBOT1JNSU5WIE5PUk0uSU5WIE5PUk0uUy5ESVNUIE5PUk1TRElTVCBOT1JNLlMuSU5WIE5PUk1TSU5WIE5PVCBOT1cgTlBFUiBOUFYgTlVNQkVSVkFMVUUgT0NUMkJJTiBPQ1QyREVDIE9DVDJIRVggT0REIE9EREZQUklDRSBPRERGWUlFTEQgT0RETFBSSUNFIE9ERExZSUVMRCBPRkZTRVQgT1IgUERVUkFUSU9OIFBFQVJTT04gUEVSQ0VOVElMRS5FWEMgUEVSQ0VOVElMRS5JTkMgUEVSQ0VOVElMRSBQRVJDRU5UUkFOSy5FWEMgUEVSQ0VOVFJBTksuSU5DIFBFUkNFTlRSQU5LIFBFUk1VVCBQRVJNVVRBVElPTkEgUEhJIFBIT05FVElDIFBJIFBNVCBQT0lTU09OLkRJU1QgUE9JU1NPTiBQT1dFUiBQUE1UIFBSSUNFIFBSSUNFRElTQyBQUklDRU1BVCBQUk9CIFBST0RVQ1QgUFJPUEVSIFBWIFFVQVJUSUxFIFFVQVJUSUxFLkVYQyBRVUFSVElMRS5JTkMgUVVPVElFTlQgUkFESUFOUyBSQU5EIFJBTkRCRVRXRUVOIFJBTksuQVZHIFJBTksuRVEgUkFOSyBSQVRFIFJFQ0VJVkVEIFJFR0lTVEVSLklEIFJFUExBQ0UgUkVQTEFDRUIgUkVQVCBSSUdIVCBSSUdIVEIgUk9NQU4gUk9VTkQgUk9VTkRET1dOIFJPVU5EVVAgUk9XIFJPV1MgUlJJIFJTUSBSVEQgU0VBUkNIIFNFQVJDSEIgU0VDIFNFQ0ggU0VDT05EIFNFUklFU1NVTSBTSEVFVCBTSEVFVFMgU0lHTiBTSU4gU0lOSCBTS0VXIFNLRVcuUCBTTE4gU0xPUEUgU01BTEwgU1FMLlJFUVVFU1QgU1FSVCBTUVJUUEkgU1RBTkRBUkRJWkUgU1RERVYgU1RERVYuUCBTVERFVi5TIFNUREVWQSBTVERFVlAgU1RERVZQQSBTVEVZWCBTVUJTVElUVVRFIFNVQlRPVEFMIFNVTSBTVU1JRiBTVU1JRlMgU1VNUFJPRFVDVCBTVU1TUSBTVU1YMk1ZMiBTVU1YMlBZMiBTVU1YTVkyIFNXSVRDSCBTWUQgVCBUQU4gVEFOSCBUQklMTEVRIFRCSUxMUFJJQ0UgVEJJTExZSUVMRCBULkRJU1QgVC5ESVNULjJUIFQuRElTVC5SVCBURElTVCBURVhUIFRFWFRKT0lOIFRJTUUgVElNRVZBTFVFIFQuSU5WIFQuSU5WLjJUIFRJTlYgVE9EQVkgVFJBTlNQT1NFIFRSRU5EIFRSSU0gVFJJTU1FQU4gVFJVRXwwIFRSVU5DIFQuVEVTVCBUVEVTVCBUWVBFIFVOSUNIQVIgVU5JQ09ERSBVUFBFUiBWQUxVRSBWQVIgVkFSLlAgVkFSLlMgVkFSQSBWQVJQIFZBUlBBIFZEQiBWTE9PS1VQIFdFQlNFUlZJQ0UgV0VFS0RBWSBXRUVLTlVNIFdFSUJVTEwgV0VJQlVMTC5ESVNUIFdPUktEQVkgV09SS0RBWS5JTlRMIFhJUlIgWE5QViBYT1IgWUVBUiBZRUFSRlJBQyBZSUVMRCBZSUVMRERJU0MgWUlFTERNQVQgWi5URVNUIFpURVNUJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgLyogbWF0Y2hlcyBhIGJlZ2lubmluZyBlcXVhbCBzaWduIGZvdW5kIGluIEV4Y2VsIGZvcm11bGEgZXhhbXBsZXMgKi9cbiAgICAgICAgYmVnaW46IC9ePS8sXG4gICAgICAgIGVuZDogL1tePV0vLCByZXR1cm5FbmQ6IHRydWUsIGlsbGVnYWw6IC89LywgLyogb25seSBhbGxvdyBzaW5nbGUgZXF1YWwgc2lnbiBhdCBmcm9udCBvZiBsaW5lICovXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvKiB0ZWNobmljYWxseSwgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiAyIGxldHRlcnMgaW4gY29sdW1uIG5hbWVzLCBidXQgdGhpcyBwcmV2ZW50cyBjb25mbGljdCB3aXRoIHNvbWUga2V5d29yZHMgKi9cbiAgICAgIHtcbiAgICAgICAgLyogbWF0Y2hlcyBhIHJlZmVyZW5jZSB0byBhIHNpbmdsZSBjZWxsICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvXFxiW0EtWl17MSwyfVxcZCtcXGIvLFxuICAgICAgICBlbmQ6IC9bXlxcZF0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIG1hdGNoZXMgYSByZWZlcmVuY2UgdG8gYSByYW5nZSBvZiBjZWxscyAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogL1tBLVpdezAsMn1cXGQqOltBLVpdezAsMn1cXGQqLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuTlVNQkVSX1JFICsgJyglKT8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvKiBFeGNlbCBmb3JtdWxhIGNvbW1lbnRzIGFyZSBkb25lIGJ5IHB1dHRpbmcgdGhlIGNvbW1lbnQgaW4gYSBmdW5jdGlvbiBjYWxsIHRvIE4oKSAqL1xuICAgICAgaGxqcy5DT01NRU5UKC9cXGJOXFwoLywvXFwpLyxcbiAgICAgIHtcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuL1xuICAgICAgfSlcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAge1xuICAgICAgYmVnaW46IC9bXlxcdTI0MDFcXHUwMDAxXSsvLFxuICAgICAgZW5kOiAvW1xcdTI0MDFcXHUwMDAxXS8sXG4gICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICByZXR1cm5FbmQ6IGZhbHNlLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oW15cXHUyNDAxXFx1MDAwMT1dKykvLFxuICAgICAgICBlbmQ6IC89KFteXFx1MjQwMVxcdTAwMDE9XSspLyxcbiAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZXR1cm5CZWdpbjogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLz0vLFxuICAgICAgICBlbmQ6IC8oW1xcdTI0MDFcXHUwMDAxXSkvLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZydcbiAgICAgIH1dXG4gICAgfV0sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG5cbiAgICB2YXIgQ0hBUiA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC8nKC58XFxcXFt4WHVVXVthLXpBLVowLTldKyknL1xuICAgIH07XG5cbiAgICB2YXIgU1RSSU5HID0ge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIidcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH07XG5cbiAgICB2YXIgTkFNRSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICBiZWdpbjogL1teMC05XFxuXFx0IFwiJygpLC5ge31cXFtcXF06O11bXlxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjtdK3xbXjAtOVxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjs9XS9cbiAgICB9O1xuXG4gICAgdmFyIE1FVEhPRCA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZGVmJyxcbiAgICAgICAgZW5kOiAvWzo9e1xcWyhcXG47XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbTkFNRV1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlJyxcbiAgICAgICAgICAgIGtleXdvcmQ6ICdjYXNlIGNsYXNzIGRlZiBlbHNlIGVudW0gaWYgaW1wbCBpbXBvcnQgaW4gbGF0IHJlbCBpbmRleCBsZXQgbWF0Y2ggbmFtZXNwYWNlIHN3aXRjaCB0eXBlIHlpZWxkIHdpdGgnXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgQ0hBUixcbiAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgIE1FVEhPRCxcbiAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICAgICBdXG4gICAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG5cbiAgdmFyIEZfS0VZV09SRFMgPSB7XG4gICAgbGl0ZXJhbDogJy5GYWxzZS4gLlRydWUuJyxcbiAgICBrZXl3b3JkOiAna2luZCBkbyB3aGlsZSBwcml2YXRlIGNhbGwgaW50cmluc2ljIHdoZXJlIGVsc2V3aGVyZSAnICtcbiAgICAgICd0eXBlIGVuZHR5cGUgZW5kbW9kdWxlIGVuZHNlbGVjdCBlbmRpbnRlcmZhY2UgZW5kIGVuZGRvIGVuZGlmIGlmIGZvcmFsbCBlbmRmb3JhbGwgb25seSBjb250YWlucyBkZWZhdWx0IHJldHVybiBzdG9wIHRoZW4gJyArXG4gICAgICAncHVibGljIHN1YnJvdXRpbmV8MTAgZnVuY3Rpb24gcHJvZ3JhbSAuYW5kLiAub3IuIC5ub3QuIC5sZS4gLmVxLiAuZ2UuIC5ndC4gLmx0LiAnICtcbiAgICAgICdnb3RvIHNhdmUgZWxzZSB1c2UgbW9kdWxlIHNlbGVjdCBjYXNlICcgK1xuICAgICAgJ2FjY2VzcyBibGFuayBkaXJlY3QgZXhpc3QgZmlsZSBmbXQgZm9ybSBmb3JtYXR0ZWQgaW9zdGF0IG5hbWUgbmFtZWQgbmV4dHJlYyBudW1iZXIgb3BlbmVkIHJlYyByZWNsIHNlcXVlbnRpYWwgc3RhdHVzIHVuZm9ybWF0dGVkIHVuaXQgJyArXG4gICAgICAnY29udGludWUgZm9ybWF0IHBhdXNlIGN5Y2xlIGV4aXQgJyArXG4gICAgICAnY19udWxsX2NoYXIgY19hbGVydCBjX2JhY2tzcGFjZSBjX2Zvcm1fZmVlZCBmbHVzaCB3YWl0IGRlY2ltYWwgcm91bmQgaW9tc2cgJyArXG4gICAgICAnc3luY2hyb25vdXMgbm9wYXNzIG5vbl9vdmVycmlkYWJsZSBwYXNzIHByb3RlY3RlZCB2b2xhdGlsZSBhYnN0cmFjdCBleHRlbmRzIGltcG9ydCAnICtcbiAgICAgICdub25faW50cmluc2ljIHZhbHVlIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvciBjbGFzcyBhc3NvY2lhdGUgYmluZCBlbnVtICcgK1xuICAgICAgJ2NfaW50IGNfc2hvcnQgY19sb25nIGNfbG9uZ19sb25nIGNfc2lnbmVkX2NoYXIgY19zaXplX3QgY19pbnQ4X3QgY19pbnQxNl90IGNfaW50MzJfdCBjX2ludDY0X3QgY19pbnRfbGVhc3Q4X3QgY19pbnRfbGVhc3QxNl90ICcgK1xuICAgICAgJ2NfaW50X2xlYXN0MzJfdCBjX2ludF9sZWFzdDY0X3QgY19pbnRfZmFzdDhfdCBjX2ludF9mYXN0MTZfdCBjX2ludF9mYXN0MzJfdCBjX2ludF9mYXN0NjRfdCBjX2ludG1heF90IENfaW50cHRyX3QgY19mbG9hdCBjX2RvdWJsZSAnICtcbiAgICAgICdjX2xvbmdfZG91YmxlIGNfZmxvYXRfY29tcGxleCBjX2RvdWJsZV9jb21wbGV4IGNfbG9uZ19kb3VibGVfY29tcGxleCBjX2Jvb2wgY19jaGFyIGNfbnVsbF9wdHIgY19udWxsX2Z1bnB0ciAnICtcbiAgICAgICdjX25ld19saW5lIGNfY2FycmlhZ2VfcmV0dXJuIGNfaG9yaXpvbnRhbF90YWIgY192ZXJ0aWNhbF90YWIgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyICcgK1xuICAgICAgJ2NfcHRyIGNfZnVucHRyIGlzb19mb3J0cmFuX2VudiBjaGFyYWN0ZXJfc3RvcmFnZV9zaXplIGVycm9yX3VuaXQgZmlsZV9zdG9yYWdlX3NpemUgaW5wdXRfdW5pdCBpb3N0YXRfZW5kIGlvc3RhdF9lb3IgJyArXG4gICAgICAnbnVtZXJpY19zdG9yYWdlX3NpemUgb3V0cHV0X3VuaXQgY19mX3Byb2Nwb2ludGVyIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgJyArXG4gICAgICAnaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgbmV3dW5pdCBjb250aWd1b3VzIHJlY3Vyc2l2ZSAnICtcbiAgICAgICdwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZSBlb3IgYWR2YW5jZSBubWwgaW50ZXJmYWNlIHByb2NlZHVyZSBuYW1lbGlzdCBpbmNsdWRlIHNlcXVlbmNlIGVsZW1lbnRhbCBwdXJlICcgK1xuICAgICAgJ2ludGVnZXIgcmVhbCBjaGFyYWN0ZXIgY29tcGxleCBsb2dpY2FsIGRpbWVuc2lvbiBhbGxvY2F0YWJsZXwxMCBwYXJhbWV0ZXIgJyArXG4gICAgICAnZXh0ZXJuYWwgaW1wbGljaXR8MTAgbm9uZSBkb3VibGUgcHJlY2lzaW9uIGFzc2lnbiBpbnRlbnQgb3B0aW9uYWwgcG9pbnRlciAnICtcbiAgICAgICd0YXJnZXQgaW4gb3V0IGNvbW1vbiBlcXVpdmFsZW5jZSBkYXRhJyxcbiAgICBidWlsdF9pbjogJ2Fsb2cgYWxvZzEwIGFtYXgwIGFtYXgxIGFtaW4wIGFtaW4xIGFtb2QgY2FicyBjY29zIGNleHAgY2xvZyBjc2luIGNzcXJ0IGRhYnMgZGFjb3MgZGFzaW4gZGF0YW4gZGF0YW4yIGRjb3MgZGNvc2ggZGRpbSBkZXhwIGRpbnQgJyArXG4gICAgICAnZGxvZyBkbG9nMTAgZG1heDEgZG1pbjEgZG1vZCBkbmludCBkc2lnbiBkc2luIGRzaW5oIGRzcXJ0IGR0YW4gZHRhbmggZmxvYXQgaWFicyBpZGltIGlkaW50IGlkbmludCBpZml4IGlzaWduIG1heDAgbWF4MSBtaW4wIG1pbjEgc25nbCAnICtcbiAgICAgICdhbGdhbWEgY2RhYnMgY2Rjb3MgY2RleHAgY2Rsb2cgY2RzaW4gY2RzcXJ0IGNxYWJzIGNxY29zIGNxZXhwIGNxbG9nIGNxc2luIGNxc3FydCBkY21wbHggZGNvbmpnIGRlcmYgZGVyZmMgZGZsb2F0IGRnYW1tYSBkaW1hZyBkbGdhbWEgJyArXG4gICAgICAnaXFpbnQgcWFicyBxYWNvcyBxYXNpbiBxYXRhbiBxYXRhbjIgcWNtcGx4IHFjb25qZyBxY29zIHFjb3NoIHFkaW0gcWVyZiBxZXJmYyBxZXhwIHFnYW1tYSBxaW1hZyBxbGdhbWEgcWxvZyBxbG9nMTAgcW1heDEgcW1pbjEgcW1vZCAnICtcbiAgICAgICdxbmludCBxc2lnbiBxc2luIHFzaW5oIHFzcXJ0IHF0YW4gcXRhbmggYWJzIGFjb3MgYWltYWcgYWludCBhbmludCBhc2luIGF0YW4gYXRhbjIgY2hhciBjbXBseCBjb25qZyBjb3MgY29zaCBleHAgaWNoYXIgaW5kZXggaW50IGxvZyAnICtcbiAgICAgICdsb2cxMCBtYXggbWluIG5pbnQgc2lnbiBzaW4gc2luaCBzcXJ0IHRhbiB0YW5oIHByaW50IHdyaXRlIGRpbSBsZ2UgbGd0IGxsZSBsbHQgbW9kIG51bGxpZnkgYWxsb2NhdGUgZGVhbGxvY2F0ZSAnICtcbiAgICAgICdhZGp1c3RsIGFkanVzdHIgYWxsIGFsbG9jYXRlZCBhbnkgYXNzb2NpYXRlZCBiaXRfc2l6ZSBidGVzdCBjZWlsaW5nIGNvdW50IGNzaGlmdCBkYXRlX2FuZF90aW1lIGRpZ2l0cyBkb3RfcHJvZHVjdCAnICtcbiAgICAgICdlb3NoaWZ0IGVwc2lsb24gZXhwb25lbnQgZmxvb3IgZnJhY3Rpb24gaHVnZSBpYW5kIGliY2xyIGliaXRzIGlic2V0IGllb3IgaW9yIGlzaGZ0IGlzaGZ0YyBsYm91bmQgbGVuX3RyaW0gbWF0bXVsICcgK1xuICAgICAgJ21heGV4cG9uZW50IG1heGxvYyBtYXh2YWwgbWVyZ2UgbWluZXhwb25lbnQgbWlubG9jIG1pbnZhbCBtb2R1bG8gbXZiaXRzIG5lYXJlc3QgcGFjayBwcmVzZW50IHByb2R1Y3QgJyArXG4gICAgICAncmFkaXggcmFuZG9tX251bWJlciByYW5kb21fc2VlZCByYW5nZSByZXBlYXQgcmVzaGFwZSBycnNwYWNpbmcgc2NhbGUgc2NhbiBzZWxlY3RlZF9pbnRfa2luZCBzZWxlY3RlZF9yZWFsX2tpbmQgJyArXG4gICAgICAnc2V0X2V4cG9uZW50IHNoYXBlIHNpemUgc3BhY2luZyBzcHJlYWQgc3VtIHN5c3RlbV9jbG9jayB0aW55IHRyYW5zcG9zZSB0cmltIHVib3VuZCB1bnBhY2sgdmVyaWZ5IGFjaGFyIGlhY2hhciB0cmFuc2ZlciAnICtcbiAgICAgICdkYmxlIGVudHJ5IGRwcm9kIGNwdV90aW1lIGNvbW1hbmRfYXJndW1lbnRfY291bnQgZ2V0X2NvbW1hbmQgZ2V0X2NvbW1hbmRfYXJndW1lbnQgZ2V0X2Vudmlyb25tZW50X3ZhcmlhYmxlIGlzX2lvc3RhdF9lbmQgJyArXG4gICAgICAnaWVlZV9hcml0aG1ldGljIGllZWVfc3VwcG9ydF91bmRlcmZsb3dfY29udHJvbCBpZWVlX2dldF91bmRlcmZsb3dfbW9kZSBpZWVlX3NldF91bmRlcmZsb3dfbW9kZSAnICtcbiAgICAgICdpc19pb3N0YXRfZW9yIG1vdmVfYWxsb2MgbmV3X2xpbmUgc2VsZWN0ZWRfY2hhcl9raW5kIHNhbWVfdHlwZV9hcyBleHRlbmRzX3R5cGVfb2YnICArXG4gICAgICAnYWNvc2ggYXNpbmggYXRhbmggYmVzc2VsX2owIGJlc3NlbF9qMSBiZXNzZWxfam4gYmVzc2VsX3kwIGJlc3NlbF95MSBiZXNzZWxfeW4gZXJmIGVyZmMgZXJmY19zY2FsZWQgZ2FtbWEgbG9nX2dhbW1hIGh5cG90IG5vcm0yICcgK1xuICAgICAgJ2F0b21pY19kZWZpbmUgYXRvbWljX3JlZiBleGVjdXRlX2NvbW1hbmRfbGluZSBsZWFkeiB0cmFpbHogc3RvcmFnZV9zaXplIG1lcmdlX2JpdHMgJyArXG4gICAgICAnYmdlIGJndCBibGUgYmx0IGRzaGlmdGwgZHNoaWZ0ciBmaW5kbG9jIGlhbGwgaWFueSBpcGFyaXR5IGltYWdlX2luZGV4IGxjb2JvdW5kIHVjb2JvdW5kIG1hc2tsIG1hc2tyICcgK1xuICAgICAgJ251bV9pbWFnZXMgcGFyaXR5IHBvcGNudCBwb3BwYXIgc2hpZnRhIHNoaWZ0bCBzaGlmdHIgdGhpc19pbWFnZSdcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsnZjkwJywgJ2Y5NSddLFxuICAgIGtleXdvcmRzOiBGX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnc3RyaW5nJywgcmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ3N0cmluZycsIHJlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdzdWJyb3V0aW5lIGZ1bmN0aW9uIHByb2dyYW0nLFxuICAgICAgICBpbGxlZ2FsOiAnWyR7PVxcXFxuXScsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsIFBBUkFNU11cbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJyEnLCAnJCcsIHtyZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoPz1cXFxcYnxcXFxcK3xcXFxcLXxcXFxcLikoPz1cXFxcLlxcXFxkfFxcXFxkKSg/OlxcXFxkKyk/KD86XFxcXC4/XFxcXGQqKSg/OltkZV1bKy1dP1xcXFxkKyk/XFxcXGJcXFxcLj8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVFlQRVBBUkFNID0ge1xuICAgIGJlZ2luOiAnPCcsIGVuZDogJz4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IC8nW2EtekEtWjAtOV9dKy99KVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZnMnXSxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhYnN0cmFjdCBhbmQgYXMgYXNzZXJ0IGJhc2UgYmVnaW4gY2xhc3MgZGVmYXVsdCBkZWxlZ2F0ZSBkbyBkb25lICcgK1xuICAgICAgJ2Rvd25jYXN0IGRvd250byBlbGlmIGVsc2UgZW5kIGV4Y2VwdGlvbiBleHRlcm4gZmFsc2UgZmluYWxseSBmb3IgJyArXG4gICAgICAnZnVuIGZ1bmN0aW9uIGdsb2JhbCBpZiBpbiBpbmhlcml0IGlubGluZSBpbnRlcmZhY2UgaW50ZXJuYWwgbGF6eSBsZXQgJyArXG4gICAgICAnbWF0Y2ggbWVtYmVyIG1vZHVsZSBtdXRhYmxlIG5hbWVzcGFjZSBuZXcgbnVsbCBvZiBvcGVuIG9yICcgK1xuICAgICAgJ292ZXJyaWRlIHByaXZhdGUgcHVibGljIHJlYyByZXR1cm4gc2lnIHN0YXRpYyBzdHJ1Y3QgdGhlbiB0byAnICtcbiAgICAgICd0cnVlIHRyeSB0eXBlIHVwY2FzdCB1c2UgdmFsIHZvaWQgd2hlbiB3aGlsZSB3aXRoIHlpZWxkJyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICAvLyBtb25hZCBidWlsZGVyIGtleXdvcmRzIChtYXRjaGVzIGJlZm9yZSBub24tYmFuZyBrd3MpXG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogL1xcYih5aWVsZHxyZXR1cm58bGV0fGRvKSEvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ0BcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgY29udGFpbnM6IFt7YmVnaW46ICdcIlwiJ31dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIidcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwoXFxcXConLCAnXFxcXCpcXFxcKScpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd0eXBlJywgZW5kOiAnXFxcXCh8PXwkJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICBUWVBFUEFSQU1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXFxcXFs8JywgZW5kOiAnPlxcXFxdJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdcXFxcQihcXCdbQS1aYS16XSlcXFxcYicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICAna2V5d29yZCc6XG4gICAgICAnYWJvcnQgYWNyb255bSBhY3JvbnltcyBhbGlhcyBhbGwgYW5kIGFzc2lnbiBiaW5hcnkgY2FyZCBkaWFnIGRpc3BsYXkgJyArXG4gICAgICAnZWxzZSBlcSBmaWxlIGZpbGVzIGZvciBmcmVlIGdlIGd0IGlmIGludGVnZXIgbGUgbG9vcCBsdCBtYXhpbWl6aW5nICcgK1xuICAgICAgJ21pbmltaXppbmcgbW9kZWwgbW9kZWxzIG5lIG5lZ2F0aXZlIG5vIG5vdCBvcHRpb24gb3B0aW9ucyBvciBvcmQgJyArXG4gICAgICAncG9zaXRpdmUgcHJvZCBwdXQgcHV0cGFnZSBwdXR0bCByZXBlYXQgc2FtZWFzIHNlbWljb250IHNlbWlpbnQgc21heCAnICtcbiAgICAgICdzbWluIHNvbHZlIHNvczEgc29zMiBzdW0gc3lzdGVtIHRhYmxlIHRoZW4gdW50aWwgdXNpbmcgd2hpbGUgeG9yIHllcycsXG4gICAgJ2xpdGVyYWwnOiAnZXBzIGluZiBuYScsXG4gICAgJ2J1aWx0LWluJzpcbiAgICAgICdhYnMgYXJjY29zIGFyY3NpbiBhcmN0YW4gYXJjdGFuMiBCZXRhIGJldGFSZWcgYmlub21pYWwgY2VpbCBjZW50cm9weSAnICtcbiAgICAgICdjb3MgY29zaCBjdlBvd2VyIGRpdiBkaXYwIGVEaXN0IGVudHJvcHkgZXJyb3JmIGV4ZWNTZWVkIGV4cCBmYWN0ICcgK1xuICAgICAgJ2Zsb29yIGZyYWMgZ2FtbWEgZ2FtbWFSZWcgbG9nIGxvZ0JldGEgbG9nR2FtbWEgbG9nMTAgbG9nMiBtYXBWYWwgbWF4ICcgK1xuICAgICAgJ21pbiBtb2QgbmNwQ00gbmNwRiBuY3BWVXBvdyBuY3BWVXNpbiBub3JtYWwgcGkgcG9seSBwb3dlciAnICtcbiAgICAgICdyYW5kQmlub21pYWwgcmFuZExpbmVhciByYW5kVHJpYW5nbGUgcm91bmQgclBvd2VyIHNpZ21vaWQgc2lnbiAnICtcbiAgICAgICdzaWduUG93ZXIgc2luIHNpbmggc2xleHAgc2xsb2cxMCBzbHJlYyBzcWV4cCBzcWxvZzEwIHNxciBzcXJlYyBzcXJ0ICcgK1xuICAgICAgJ3RhbiB0YW5oIHRydW5jIHVuaWZvcm0gdW5pZm9ybUludCB2Y1Bvd2VyIGJvb2xfYW5kIGJvb2xfZXF2IGJvb2xfaW1wICcgK1xuICAgICAgJ2Jvb2xfbm90IGJvb2xfb3IgYm9vbF94b3IgaWZUaGVuIHJlbF9lcSByZWxfZ2UgcmVsX2d0IHJlbF9sZSByZWxfbHQgJyArXG4gICAgICAncmVsX25lIGdkYXkgZ2RvdyBnaG91ciBnbGVhcCBnbWlsbGlzZWMgZ21pbnV0ZSBnbW9udGggZ3NlY29uZCBneWVhciAnICtcbiAgICAgICdqZGF0ZSBqbm93IGpzdGFydCBqdGltZSBlcnJvckxldmVsIGV4ZWNFcnJvciBnYW1zUmVsZWFzZSBnYW1zVmVyc2lvbiAnICtcbiAgICAgICdoYW5kbGVDb2xsZWN0IGhhbmRsZURlbGV0ZSBoYW5kbGVTdGF0dXMgaGFuZGxlU3VibWl0IGhlYXBGcmVlICcgK1xuICAgICAgJ2hlYXBMaW1pdCBoZWFwU2l6ZSBqb2JIYW5kbGUgam9iS2lsbCBqb2JTdGF0dXMgam9iVGVybWluYXRlICcgK1xuICAgICAgJ2xpY2Vuc2VMZXZlbCBsaWNlbnNlU3RhdHVzIG1heEV4ZWNFcnJvciBzbGVlcCB0aW1lQ2xvc2UgdGltZUNvbXAgJyArXG4gICAgICAndGltZUVsYXBzZWQgdGltZUV4ZWMgdGltZVN0YXJ0J1xuICB9O1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICB9O1xuICB2YXIgU1lNQk9MUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXD1bbGdlbnhjXT0vfSxcbiAgICAgIHtiZWdpbjogL1xcJC99LFxuICAgIF1cbiAgfTtcbiAgdmFyIFFTVFIgPSB7IC8vIE9uZS1saW5lIHF1b3RlZCBjb21tZW50IHN0cmluZ1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnfSxcbiAgICAgIHtiZWdpbjogJ1wiJywgZW5kOiAnXCInfSxcbiAgICBdLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG4gIHZhciBBU1NJR05NRU5UID0ge1xuICAgIGJlZ2luOiAnLycsXG4gICAgZW5kOiAnLycsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBRU1RSLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgXSxcbiAgfTtcbiAgdmFyIERFU0NURVhUID0geyAvLyBQYXJhbWV0ZXIvc2V0L3ZhcmlhYmxlIGRlc2NyaXB0aW9uIHRleHRcbiAgICBiZWdpbjogL1thLXpdW2EtejAtOV9dKihcXChbYS16MC05XywgXSpcXCkpP1sgXFx0XSsvLFxuICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICBlbmQ6ICckJyxcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgUVNUUixcbiAgICAgIEFTU0lHTk1FTlQsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICBiZWdpbjogLyhbIF0qW2EtejAtOSYjKj0/QD5cXFxcPDpcXC0sKCkkXFxbXFxdXy57fSErJV5dKykrLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2dtcyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoL15cXCRvbnRleHQvLCAvXlxcJG9mZnRleHQvKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwkW2EtejAtOV0rJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEta2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJ15cXFxcJFthLXowLTldKycsXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXConLCAnJCcpLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAvLyBEZWNsYXJhdGlvbnNcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczpcbiAgICAgICAgICAnc2V0IHNldHMgcGFyYW1ldGVyIHBhcmFtZXRlcnMgdmFyaWFibGUgdmFyaWFibGVzICcgK1xuICAgICAgICAgICdzY2FsYXIgc2NhbGFycyBlcXVhdGlvbiBlcXVhdGlvbnMnLFxuICAgICAgICBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNPTU1FTlQoJ15cXFxcKicsICckJyksXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgQVNTSUdOTUVOVCxcbiAgICAgICAgICBERVNDVEVYVCxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgLy8gdGFibGUgZW52aXJvbm1lbnRcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3RhYmxlJyxcbiAgICAgICAgZW5kOiAnOycsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHsgLy8gdGFibGUgaGVhZGVyIHJvd1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ3RhYmxlJyxcbiAgICAgICAgICAgIGVuZDogJyQnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtERVNDVEVYVF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNPTU1FTlQoJ15cXFxcKicsICckJyksXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIC8vIFRhYmxlIGRvZXMgbm90IGNvbnRhaW4gREVTQ1RFWFQgb3IgQVNTSUdOTUVOVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogL15bYS16XVthLXowLTlfLFxcLSsnICgpJF0rXFwuezJ9LyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHsgLy8gRnVuY3Rpb24gdGl0bGVcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46IC9eW2EtejAtOV9dKy8sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICAgICAgU1lNQk9MUyxcbiAgICAgICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgU1lNQk9MUyxcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDogICdib29sIGJyZWFrIGNhbGwgY2FsbGV4ZSBjaGVja2ludGVycnVwdCBjbGVhciBjbGVhcmcgY2xvc2VhbGwgY2xzIGNvbWxvZyBjb21waWxlICcgK1xuICAgICAgICAgICAgICAnY29udGludWUgY3JlYXRlIGRlYnVnIGRlY2xhcmUgZGVsZXRlIGRpc2FibGUgZGxpYnJhcnkgZGxsY2FsbCBkbyBkb3MgZWQgZWRpdCBlbHNlICcgK1xuICAgICAgICAgICAgICAnZWxzZWlmIGVuYWJsZSBlbmQgZW5kZm9yIGVuZGlmIGVuZHAgZW5kbyBlcnJvcmxvZyBlcnJvcmxvZ2F0IGV4cHIgZXh0ZXJuYWwgZm4gJyArXG4gICAgICAgICAgICAgICdmb3IgZm9ybWF0IGdvdG8gZ29zdWIgZ3JhcGggaWYga2V5d29yZCBsZXQgbGliIGxpYnJhcnkgbGluZSBsb2FkIGxvYWRhcnJheSBsb2FkZXhlICcgK1xuICAgICAgICAgICAgICAnbG9hZGYgbG9hZGsgbG9hZG0gbG9hZHAgbG9hZHMgbG9hZHggbG9jYWwgbG9jYXRlIGxvb3BuZXh0aW5kZXggbHByaW50IGxwd2lkdGggbHNob3cgJyArXG4gICAgICAgICAgICAgICdtYXRyaXggbXN5bSBuZHBjbGV4IG5ldyBvcGVuIG91dHB1dCBvdXR3aWR0aCBwbG90IHBsb3RzeW0gcG9wIHByY3NuIHByaW50ICcgK1xuICAgICAgICAgICAgICAncHJpbnRkb3MgcHJvYyBwdXNoIHJldHAgcmV0dXJuIHJuZGNvbiBybmRtb2Qgcm5kbXVsdCBybmRzZWVkIHJ1biBzYXZlIHNhdmVhbGwgc2NyZWVuICcgK1xuICAgICAgICAgICAgICAnc2Nyb2xsIHNldGFycmF5IHNob3cgc3BhcnNlIHN0b3Agc3RyaW5nIHN0cnVjdCBzeXN0ZW0gdHJhY2UgdHJhcCB0aHJlYWRmb3IgJyArXG4gICAgICAgICAgICAgICd0aHJlYWRlbmRmb3IgdGhyZWFkYmVnaW4gdGhyZWFkam9pbiB0aHJlYWRzdGF0IHRocmVhZGVuZCB1bnRpbCB1c2Ugd2hpbGUgd2lucHJpbnQgJyArXG4gICAgICAgICAgICAgICduZSBnZSBsZSBndCBsdCBhbmQgeG9yIG9yIG5vdCBlcSBlcXYnLFxuICAgIGJ1aWx0X2luOiAnYWJzIGFjZiBhY29uY2F0IGFleWUgYW1heCBhbWVhbiBBbWVyaWNhbkJpbm9tQ2FsbCBBbWVyaWNhbkJpbm9tQ2FsbF9HcmVla3MgQW1lcmljYW5CaW5vbUNhbGxfSW1wVm9sICcgK1xuICAgICAgICAgICAgICAnQW1lcmljYW5CaW5vbVB1dCBBbWVyaWNhbkJpbm9tUHV0X0dyZWVrcyBBbWVyaWNhbkJpbm9tUHV0X0ltcFZvbCBBbWVyaWNhbkJTQ2FsbCBBbWVyaWNhbkJTQ2FsbF9HcmVla3MgJyArXG4gICAgICAgICAgICAgICdBbWVyaWNhbkJTQ2FsbF9JbXBWb2wgQW1lcmljYW5CU1B1dCBBbWVyaWNhbkJTUHV0X0dyZWVrcyBBbWVyaWNhbkJTUHV0X0ltcFZvbCBhbWluIGFtdWx0IGFubm90YXRpb25HZXREZWZhdWx0cyAnICtcbiAgICAgICAgICAgICAgJ2Fubm90YXRpb25TZXRCa2QgYW5ub3RhdGlvblNldEZvbnQgYW5ub3RhdGlvblNldExpbmVDb2xvciBhbm5vdGF0aW9uU2V0TGluZVN0eWxlIGFubm90YXRpb25TZXRMaW5lVGhpY2tuZXNzICcgK1xuICAgICAgICAgICAgICAnYW5udWFsVHJhZGluZ0RheXMgYXJjY29zIGFyY3NpbiBhcmVzaGFwZSBhcnJheWFsbG9jIGFycmF5aW5kZXggYXJyYXlpbml0IGFycmF5dG9tYXQgYXNjaWlsb2FkIGFzY2xhYmVsIGFzdGQgJyArXG4gICAgICAgICAgICAgICdhc3RkcyBhc3VtIGF0YW4gYXRhbjIgYXRyYW5zcG9zZSBheG1hcmdpbiBiYWxhbmNlIGJhbmQgYmFuZGNob2wgYmFuZGNob2xzb2wgYmFuZGx0c29sIGJhbmRydiBiYW5kc29scGQgYmFyICcgK1xuICAgICAgICAgICAgICAnYmFzZTEwIGJlZ3dpbmQgYmVzc2VsaiBiZXNzZWx5IGJldGEgYm94IGJveGNveCBjZGZCZXRhIGNkZkJldGFJbnYgY2RmQmlub21pYWwgY2RmQmlub21pYWxJbnYgY2RmQnZuIGNkZkJ2bjIgJyArXG4gICAgICAgICAgICAgICdjZGZCdm4yZSBjZGZDYXVjaHkgY2RmQ2F1Y2h5SW52IGNkZkNoaWMgY2RmQ2hpaSBjZGZDaGluYyBjZGZDaGluY0ludiBjZGZFeHAgY2RmRXhwSW52IGNkZkZjIGNkZkZuYyBjZGZGbmNJbnYgJyArXG4gICAgICAgICAgICAgICdjZGZHYW0gY2RmR2VuUGFyZXRvIGNkZkh5cGVyR2VvIGNkZkxhcGxhY2UgY2RmTGFwbGFjZUludiBjZGZMb2dpc3RpYyBjZGZMb2dpc3RpY0ludiBjZGZtQ29udHJvbENyZWF0ZSBjZGZNdm4gJyArXG4gICAgICAgICAgICAgICdjZGZNdm4yZSBjZGZNdm5jZSBjZGZNdm5lIGNkZk12dDJlIGNkZk12dGNlIGNkZk12dGUgY2RmTiBjZGZOMiBjZGZOYyBjZGZOZWdCaW5vbWlhbCBjZGZOZWdCaW5vbWlhbEludiBjZGZOaSAnICtcbiAgICAgICAgICAgICAgJ2NkZlBvaXNzb24gY2RmUG9pc3NvbkludiBjZGZSYXlsZWlnaCBjZGZSYXlsZWlnaEludiBjZGZUYyBjZGZUY2kgY2RmVG5jIGNkZlR2biBjZGZXZWlidWxsIGNkZldlaWJ1bGxJbnYgY2RpciAnICtcbiAgICAgICAgICAgICAgJ2NlaWwgQ2hhbmdlRGlyIGNoZGlyIGNoaUJhclNxdWFyZSBjaG9sIGNob2xkbiBjaG9sc29sIGNob2x1cCBjaHJzIGNsb3NlIGNvZGUgY29scyBjb2xzZiBjb21iaW5hdGUgY29tYmluYXRlZCAnICtcbiAgICAgICAgICAgICAgJ2NvbXBsZXggY29uIGNvbmQgY29uaiBjb25zIENvblNjb3JlIGNvbnRvdXIgY29udiBjb252ZXJ0c2F0b3N0ciBjb252ZXJ0c3RydG9zYSBjb3JybSBjb3JybXMgY29ycnZjIGNvcnJ4IGNvcnJ4cyAnICtcbiAgICAgICAgICAgICAgJ2NvcyBjb3NoIGNvdW50cyBjb3VudHd0cyBjcm9zc3ByZCBjcm91dCBjcm91dHAgY3NyY29sIGNzcmxpbiBjc3ZSZWFkTSBjc3ZSZWFkU0EgY3VtcHJvZGMgY3Vtc3VtYyBjdXJ2ZSBjdnRvcyAnICtcbiAgICAgICAgICAgICAgJ2RhdGFjcmVhdGUgZGF0YWNyZWF0ZWNvbXBsZXggZGF0YWxpc3QgZGF0YWxvYWQgZGF0YWxvb3AgZGF0YW9wZW4gZGF0YXNhdmUgZGF0ZSBkYXRlc3RyIGRhdGVzdHJpbmcgZGF0ZXN0cnltZCAnICtcbiAgICAgICAgICAgICAgJ2RheWlueXIgZGF5b2Z3ZWVrIGRiQWRkRGF0YWJhc2UgZGJDbG9zZSBkYkNvbW1pdCBkYkNyZWF0ZVF1ZXJ5IGRiRXhlY1F1ZXJ5IGRiR2V0Q29ubmVjdE9wdGlvbnMgZGJHZXREYXRhYmFzZU5hbWUgJyArXG4gICAgICAgICAgICAgICdkYkdldERyaXZlck5hbWUgZGJHZXREcml2ZXJzIGRiR2V0SG9zdE5hbWUgZGJHZXRMYXN0RXJyb3JOdW0gZGJHZXRMYXN0RXJyb3JUZXh0IGRiR2V0TnVtZXJpY2FsUHJlY1BvbGljeSAnICtcbiAgICAgICAgICAgICAgJ2RiR2V0UGFzc3dvcmQgZGJHZXRQb3J0IGRiR2V0VGFibGVIZWFkZXJzIGRiR2V0VGFibGVzIGRiR2V0VXNlck5hbWUgZGJIYXNGZWF0dXJlIGRiSXNEcml2ZXJBdmFpbGFibGUgZGJJc09wZW4gJyArXG4gICAgICAgICAgICAgICdkYklzT3BlbkVycm9yIGRiT3BlbiBkYlF1ZXJ5QmluZFZhbHVlIGRiUXVlcnlDbGVhciBkYlF1ZXJ5Q29scyBkYlF1ZXJ5RXhlY1ByZXBhcmVkIGRiUXVlcnlGZXRjaEFsbE0gZGJRdWVyeUZldGNoQWxsU0EgJyArXG4gICAgICAgICAgICAgICdkYlF1ZXJ5RmV0Y2hPbmVNIGRiUXVlcnlGZXRjaE9uZVNBIGRiUXVlcnlGaW5pc2ggZGJRdWVyeUdldEJvdW5kVmFsdWUgZGJRdWVyeUdldEJvdW5kVmFsdWVzIGRiUXVlcnlHZXRGaWVsZCAnICtcbiAgICAgICAgICAgICAgJ2RiUXVlcnlHZXRMYXN0RXJyb3JOdW0gZGJRdWVyeUdldExhc3RFcnJvclRleHQgZGJRdWVyeUdldExhc3RJbnNlcnRJRCBkYlF1ZXJ5R2V0TGFzdFF1ZXJ5IGRiUXVlcnlHZXRQb3NpdGlvbiAnICtcbiAgICAgICAgICAgICAgJ2RiUXVlcnlJc0FjdGl2ZSBkYlF1ZXJ5SXNGb3J3YXJkT25seSBkYlF1ZXJ5SXNOdWxsIGRiUXVlcnlJc1NlbGVjdCBkYlF1ZXJ5SXNWYWxpZCBkYlF1ZXJ5UHJlcGFyZSBkYlF1ZXJ5Um93cyAnICtcbiAgICAgICAgICAgICAgJ2RiUXVlcnlTZWVrIGRiUXVlcnlTZWVrRmlyc3QgZGJRdWVyeVNlZWtMYXN0IGRiUXVlcnlTZWVrTmV4dCBkYlF1ZXJ5U2Vla1ByZXZpb3VzIGRiUXVlcnlTZXRGb3J3YXJkT25seSAnICtcbiAgICAgICAgICAgICAgJ2RiUmVtb3ZlRGF0YWJhc2UgZGJSb2xsYmFjayBkYlNldENvbm5lY3RPcHRpb25zIGRiU2V0RGF0YWJhc2VOYW1lIGRiU2V0SG9zdE5hbWUgZGJTZXROdW1lcmljYWxQcmVjUG9saWN5ICcgK1xuICAgICAgICAgICAgICAnZGJTZXRQb3J0IGRiU2V0VXNlck5hbWUgZGJUcmFuc2FjdGlvbiBEZWxldGVGaWxlIGRlbGlmIGRlbHJvd3MgZGVuc2VUb1NwIGRlbnNlVG9TcFJFIGRlblRvWmVybyBkZXNpZ24gZGV0IGRldGwgJyArXG4gICAgICAgICAgICAgICdkZmZ0IGRmZnRpIGRpYWcgZGlhZ3J2IGRpZ2FtbWEgZG9zd2luIERPU1dpbkNsb3NlYWxsIERPU1dpbk9wZW4gZG90ZmVxIGRvdGZlcW10IGRvdGZnZSBkb3RmZ2VtdCBkb3RmZ3QgZG90Zmd0bXQgJyArXG4gICAgICAgICAgICAgICdkb3RmbGUgZG90ZmxlbXQgZG90Zmx0IGRvdGZsdG10IGRvdGZuZSBkb3RmbmVtdCBkcmF3IGRyb3AgZHNDcmVhdGUgZHN0YXQgZHN0YXRtdCBkc3RhdG10Q29udHJvbENyZWF0ZSBkdGRhdGUgZHRkYXkgJyArXG4gICAgICAgICAgICAgICdkdHRpbWUgZHR0b2R0diBkdHRvc3RyIGR0dG91dGMgZHR2bm9ybWFsIGR0dnRvZHQgZHR2dG91dGMgZHVtbXkgZHVtbXliciBkdW1teWRuIGVpZyBlaWdoIGVpZ2h2IGVpZ3YgZWxhcHNlZFRyYWRpbmdEYXlzICcgK1xuICAgICAgICAgICAgICAnZW5kd2luZCBlbnZnZXQgZW9mIGVxU29sdmUgZXFTb2x2ZW10IGVxU29sdmVtdENvbnRyb2xDcmVhdGUgZXFTb2x2ZW10T3V0Q3JlYXRlIGVxU29sdmVzZXQgZXJmIGVyZmMgZXJmY2NwbHggZXJmY3BseCBlcnJvciAnICtcbiAgICAgICAgICAgICAgJ2V0ZGF5cyBldGhzZWMgZXRzdHIgRXVyb3BlYW5CaW5vbUNhbGwgRXVyb3BlYW5CaW5vbUNhbGxfR3JlZWtzIEV1cm9wZWFuQmlub21DYWxsX0ltcFZvbCBFdXJvcGVhbkJpbm9tUHV0ICcgK1xuICAgICAgICAgICAgICAnRXVyb3BlYW5CaW5vbVB1dF9HcmVla3MgRXVyb3BlYW5CaW5vbVB1dF9JbXBWb2wgRXVyb3BlYW5CU0NhbGwgRXVyb3BlYW5CU0NhbGxfR3JlZWtzIEV1cm9wZWFuQlNDYWxsX0ltcFZvbCAnICtcbiAgICAgICAgICAgICAgJ0V1cm9wZWFuQlNQdXQgRXVyb3BlYW5CU1B1dF9HcmVla3MgRXVyb3BlYW5CU1B1dF9JbXBWb2wgZXhjdHNtcGwgZXhlYyBleGVjYmcgZXhwIGV4dGVybiBleWUgZmNoZWNrZXJyIGZjbGVhcmVyciBmZXEgJyArXG4gICAgICAgICAgICAgICdmZXFtdCBmZmx1c2ggZmZ0IGZmdGkgZmZ0bSBmZnRtaSBmZnRuIGZnZSBmZ2VtdCBmZ2V0cyBmZ2V0c2EgZmdldHNhdCBmZ2V0c3QgZmd0IGZndG10IGZpbGVpbmZvIGZpbGVzYSBmbGUgZmxlbXQgJyArXG4gICAgICAgICAgICAgICdmbG9vciBmbHQgZmx0bXQgZm1vZCBmbmUgZm5lbXQgZm9udHMgZm9wZW4gZm9ybWF0Y3YgZm9ybWF0bnYgZnB1dHMgZnB1dHN0IGZzZWVrIGZzdHJlcnJvciBmdGVsbCBmdG9jdiBmdG9zIGZ0b3N0ckMgJyArXG4gICAgICAgICAgICAgICdnYW1tYSBnYW1tYWNwbHggZ2FtbWFpaSBnYXVzc2V0IGdkYUFwcGVuZCBnZGFDcmVhdGUgZ2RhRFN0YXQgZ2RhRFN0YXRNYXQgZ2RhR2V0SW5kZXggZ2RhR2V0TmFtZSBnZGFHZXROYW1lcyBnZGFHZXRPcmRlcnMgJyArXG4gICAgICAgICAgICAgICdnZGFHZXRUeXBlIGdkYUdldFR5cGVzIGdkYUdldFZhckluZm8gZ2RhSXNDcGx4IGdkYUxvYWQgZ2RhUGFjayBnZGFSZWFkIGdkYVJlYWRCeUluZGV4IGdkYVJlYWRTb21lIGdkYVJlYWRTcGFyc2UgJyArXG4gICAgICAgICAgICAgICdnZGFSZWFkU3RydWN0IGdkYVJlcG9ydFZhckluZm8gZ2RhU2F2ZSBnZGFVcGRhdGUgZ2RhVXBkYXRlQW5kUGFjayBnZGFWYXJzIGdkYVdyaXRlIGdkYVdyaXRlMzIgZ2RhV3JpdGVTb21lIGdldGFycmF5ICcgK1xuICAgICAgICAgICAgICAnZ2V0ZGltcyBnZXRmIGdldEdBVVNTaG9tZSBnZXRtYXRyaXggZ2V0bWF0cml4NEQgZ2V0bmFtZSBnZXRuYW1lZiBnZXROZXh0VHJhZGluZ0RheSBnZXROZXh0V2Vla0RheSBnZXRuciBnZXRvcmRlcnMgJyArXG4gICAgICAgICAgICAgICdnZXRwYXRoIGdldFByZXZpb3VzVHJhZGluZ0RheSBnZXRQcmV2aW91c1dlZWtEYXkgZ2V0Um93IGdldHNjYWxhcjNEIGdldHNjYWxhcjREIGdldFRyUm93IGdldHdpbmQgZ2xtIGdyYWRjcGx4IGdyYWRNVCAnICtcbiAgICAgICAgICAgICAgJ2dyYWRNVG0gZ3JhZE1UVCBncmFkTVRUbSBncmFkcCBncmFwaHBydCBncmFwaHNldCBoYXNpbWFnIGhlYWRlciBoZWFkZXJtdCBoZXNzIGhlc3NNVCBoZXNzTVRnIGhlc3NNVGd3IGhlc3NNVG0gJyArXG4gICAgICAgICAgICAgICdoZXNzTVRtdyBoZXNzTVRUIGhlc3NNVFRnIGhlc3NNVFRndyBoZXNzTVRUbSBoZXNzTVR3IGhlc3NwIGhpc3QgaGlzdGYgaGlzdHAgaHNlYyBpbWFnIGluZGN2IGluZGV4Y2F0IGluZGljZXMgaW5kaWNlczIgJyArXG4gICAgICAgICAgICAgICdpbmRpY2VzZiBpbmRpY2VzZm4gaW5kbnYgaW5kc2F2IGludGVncmF0ZTFkIGludGVncmF0ZUNvbnRyb2xDcmVhdGUgaW50Z3JhdDIgaW50Z3JhdDMgaW50aHAxIGludGhwMiBpbnRocDMgaW50aHA0ICcgK1xuICAgICAgICAgICAgICAnaW50aHBDb250cm9sQ3JlYXRlIGludHF1YWQxIGludHF1YWQyIGludHF1YWQzIGludHJsZWF2IGludHJsZWF2c2EgaW50cnNlY3QgaW50c2ltcCBpbnYgaW52cGQgaW52c3dwIGlzY3BseCBpc2NwbHhmICcgK1xuICAgICAgICAgICAgICAnaXNkZW4gaXNpbmZuYW5taXNzIGlzbWlzcyBrZXkga2V5YXYga2V5dyBsYWcgbGFnMSBsYWduIGxhcEVpZ2hiIGxhcEVpZ2hpIGxhcEVpZ2h2YiBsYXBFaWdodmkgbGFwZ0VpZyBsYXBnRWlnaCBsYXBnRWlnaHYgJyArXG4gICAgICAgICAgICAgICdsYXBnRWlndiBsYXBnU2NodXIgbGFwZ1N2ZGNzdCBsYXBnU3ZkcyBsYXBnU3Zkc3QgbGFwU3ZkY3VzdiBsYXBTdmRzIGxhcFN2ZHVzdiBsZGxwIGxkbHNvbCBsaW5Tb2x2ZSBsaXN0d2lzZSBsbiBsbmNkZmJ2biAnICtcbiAgICAgICAgICAgICAgJ2xuY2RmYnZuMiBsbmNkZm12biBsbmNkZm4gbG5jZGZuMiBsbmNkZm5jIGxuZmFjdCBsbmdhbW1hY3BseCBsbnBkZm12biBsbnBkZm12dCBsbnBkZm4gbG5wZGZ0IGxvYWRkIGxvYWRzdHJ1Y3QgbG9hZHdpbmQgJyArXG4gICAgICAgICAgICAgICdsb2VzcyBsb2Vzc210IGxvZXNzbXRDb250cm9sQ3JlYXRlIGxvZyBsb2dsb2cgbG9neCBsb2d5IGxvd2VyIGxvd21hdCBsb3dtYXQxIGx0cmlzb2wgbHUgbHVzb2wgbWFjaEVwc2lsb24gbWFrZSBtYWtldmFycyAnICtcbiAgICAgICAgICAgICAgJ21ha2V3aW5kIG1hcmdpbiBtYXRhbGxvYyBtYXRpbml0IG1hdHRvYXJyYXkgbWF4Ynl0ZXMgbWF4YyBtYXhpbmRjIG1heHYgbWF4dmVjIG1iZXNzZWxlaSBtYmVzc2VsZWkwIG1iZXNzZWxlaTEgbWJlc3NlbGkgJyArXG4gICAgICAgICAgICAgICdtYmVzc2VsaTAgbWJlc3NlbGkxIG1lYW5jIG1lZGlhbiBtZXJnZWJ5IG1lcmdldmFyIG1pbmMgbWluaW5kYyBtaW52IG1pc3MgbWlzc2V4IG1pc3NydiBtb21lbnQgbW9tZW50ZCBtb3ZpbmdhdmUgJyArXG4gICAgICAgICAgICAgICdtb3ZpbmdhdmVFeHB3Z3QgbW92aW5nYXZlV2d0IG5leHRpbmRleCBuZXh0biBuZXh0bmV2biBuZXh0d2luZCBudG9zIG51bGwgbnVsbDEgbnVtQ29tYmluYXRpb25zIG9scyBvbHNtdCBvbHNtdENvbnRyb2xDcmVhdGUgJyArXG4gICAgICAgICAgICAgICdvbHNxciBvbHNxcjIgb2xzcXJtdCBvbmVzIG9wdG4gb3B0bmV2biBvcnRoIG91dHR5cCBwYWNmIHBhY2tlZFRvU3AgcGFja3IgcGFyc2UgcGF1c2UgcGRmQ2F1Y2h5IHBkZkNoaSBwZGZFeHAgcGRmR2VuUGFyZXRvICcgK1xuICAgICAgICAgICAgICAncGRmSHlwZXJHZW8gcGRmTGFwbGFjZSBwZGZMb2dpc3RpYyBwZGZuIHBkZlBvaXNzb24gcGRmUmF5bGVpZ2ggcGRmV2VpYnVsbCBwaSBwaW52IHBpbnZtdCBwbG90QWRkQXJyb3cgcGxvdEFkZEJhciBwbG90QWRkQm94ICcgK1xuICAgICAgICAgICAgICAncGxvdEFkZEhpc3QgcGxvdEFkZEhpc3RGIHBsb3RBZGRIaXN0UCBwbG90QWRkUG9sYXIgcGxvdEFkZFNjYXR0ZXIgcGxvdEFkZFNoYXBlIHBsb3RBZGRUZXh0Ym94IHBsb3RBZGRUUyBwbG90QWRkWFkgcGxvdEFyZWEgJyArXG4gICAgICAgICAgICAgICdwbG90QmFyIHBsb3RCb3ggcGxvdENsZWFyTGF5b3V0IHBsb3RDb250b3VyIHBsb3RDdXN0b21MYXlvdXQgcGxvdEdldERlZmF1bHRzIHBsb3RIaXN0IHBsb3RIaXN0RiBwbG90SGlzdFAgcGxvdExheW91dCAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RMb2dMb2cgcGxvdExvZ1ggcGxvdExvZ1kgcGxvdE9wZW5XaW5kb3cgcGxvdFBvbGFyIHBsb3RTYXZlIHBsb3RTY2F0dGVyIHBsb3RTZXRBeGVzUGVuIHBsb3RTZXRCYXIgcGxvdFNldEJhckZpbGwgJyArXG4gICAgICAgICAgICAgICdwbG90U2V0QmFyU3RhY2tlZCBwbG90U2V0QmtkQ29sb3IgcGxvdFNldEZpbGwgcGxvdFNldEdyaWQgcGxvdFNldExlZ2VuZCBwbG90U2V0TGluZUNvbG9yIHBsb3RTZXRMaW5lU3R5bGUgcGxvdFNldExpbmVTeW1ib2wgJyArXG4gICAgICAgICAgICAgICdwbG90U2V0TGluZVRoaWNrbmVzcyBwbG90U2V0TmV3V2luZG93IHBsb3RTZXRUaXRsZSBwbG90U2V0V2hpY2hZQXhpcyBwbG90U2V0WEF4aXNTaG93IHBsb3RTZXRYTGFiZWwgcGxvdFNldFhSYW5nZSAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RTZXRYVGljSW50ZXJ2YWwgcGxvdFNldFhUaWNMYWJlbCBwbG90U2V0WUF4aXNTaG93IHBsb3RTZXRZTGFiZWwgcGxvdFNldFlSYW5nZSBwbG90U2V0WkF4aXNTaG93IHBsb3RTZXRaTGFiZWwgJyArXG4gICAgICAgICAgICAgICdwbG90U3VyZmFjZSBwbG90VFMgcGxvdFhZIHBvbGFyIHBvbHljaGFyIHBvbHlldmFsIHBvbHlnYW1tYSBwb2x5aW50IHBvbHltYWtlIHBvbHltYXQgcG9seW1yb290IHBvbHltdWx0IHBvbHlyb290ICcgK1xuICAgICAgICAgICAgICAncHFnd2luIHByZXZpb3VzaW5kZXggcHJpbmNvbXAgcHJpbnRmbSBwcmludGZtdCBwcm9kYyBwc2kgcHV0YXJyYXkgcHV0ZiBwdXR2YWxzIHB2Q3JlYXRlIHB2R2V0SW5kZXggcHZHZXRQYXJOYW1lcyAnICtcbiAgICAgICAgICAgICAgJ3B2R2V0UGFyVmVjdG9yIHB2TGVuZ3RoIHB2TGlzdCBwdlBhY2sgcHZQYWNraSBwdlBhY2ttIHB2UGFja21pIHB2UGFja3MgcHZQYWNrc2kgcHZQYWNrc20gcHZQYWNrc21pIHB2UHV0UGFyVmVjdG9yICcgK1xuICAgICAgICAgICAgICAncHZUZXN0IHB2VW5wYWNrIFFOZXd0b24gUU5ld3Rvbm10IFFOZXd0b25tdENvbnRyb2xDcmVhdGUgUU5ld3Rvbm10T3V0Q3JlYXRlIFFOZXd0b25TZXQgUVByb2cgUVByb2dtdCBRUHJvZ210SW5DcmVhdGUgJyArXG4gICAgICAgICAgICAgICdxcXIgcXFyZSBxcXJlcCBxciBxcmUgcXJlcCBxcnNvbCBxcnRzb2wgcXR5ciBxdHlyZSBxdHlyZXAgcXVhbnRpbGUgcXVhbnRpbGVkIHF5ciBxeXJlIHF5cmVwIHF6IHJhbmsgcmFua2luZHggcmVhZHIgJyArXG4gICAgICAgICAgICAgICdyZWFsIHJlY2xhc3NpZnkgcmVjbGFzc2lmeUN1dHMgcmVjb2RlIHJlY3NlcmFyIHJlY3NlcmNwIHJlY3NlcnJjIHJlcnVuIHJlc2NhbGUgcmVzaGFwZSByZXRzIHJldiByZmZ0IHJmZnRpIHJmZnRpcCByZmZ0biAnICtcbiAgICAgICAgICAgICAgJ3JmZnRucCByZmZ0cCBybmRCZXJub3VsbGkgcm5kQmV0YSBybmRCaW5vbWlhbCBybmRDYXVjaHkgcm5kQ2hpU3F1YXJlIHJuZENvbiBybmRDcmVhdGVTdGF0ZSBybmRFeHAgcm5kR2FtbWEgcm5kR2VvIHJuZEd1bWJlbCAnICtcbiAgICAgICAgICAgICAgJ3JuZEh5cGVyR2VvIHJuZGkgcm5kS01iZXRhIHJuZEtNZ2FtIHJuZEtNaSBybmRLTW4gcm5kS01uYiBybmRLTXAgcm5kS011IHJuZEtNdm0gcm5kTGFwbGFjZSBybmRMQ2JldGEgcm5kTENnYW0gcm5kTENpIHJuZExDbiAnICtcbiAgICAgICAgICAgICAgJ3JuZExDbmIgcm5kTENwIHJuZExDdSBybmRMQ3ZtIHJuZExvZ05vcm0gcm5kTVR1IHJuZE1WbiBybmRNVnQgcm5kbiBybmRuYiBybmROZWdCaW5vbWlhbCBybmRwIHJuZFBvaXNzb24gcm5kUmF5bGVpZ2ggJyArXG4gICAgICAgICAgICAgICdybmRTdGF0ZVNraXAgcm5kdSBybmR2bSBybmRXZWlidWxsIHJuZFdpc2hhcnQgcm90YXRlciByb3VuZCByb3dzIHJvd3NmIHJyZWYgc2FtcGxlRGF0YSBzYXRvc3RyQyBzYXZlZCBzYXZlU3RydWN0IHNhdmV3aW5kICcgK1xuICAgICAgICAgICAgICAnc2NhbGUgc2NhbGUzZCBzY2FsZXJyIHNjYWxpbmZuYW5taXNzIHNjYWxtaXNzIHNjaHRvYyBzY2h1ciBzZWFyY2hzb3VyY2VwYXRoIHNlZWtyIHNlbGVjdCBzZWxpZiBzZXFhIHNlcW0gc2V0ZGlmIHNldGRpZnNhICcgK1xuICAgICAgICAgICAgICAnc2V0dmFycyBzZXR2d3Jtb2RlIHNldHdpbmQgc2hlbGwgc2hpZnRyIHNpbiBzaW5nbGVpbmRleCBzaW5oIHNsZWVwIHNvbHBkIHNvcnRjIHNvcnRjYyBzb3J0ZCBzb3J0aGMgc29ydGhjYyBzb3J0aW5kICcgK1xuICAgICAgICAgICAgICAnc29ydGluZGMgc29ydG1jIHNvcnRyIHNvcnRyYyBzcEJpY29uakdyYWRTb2wgc3BDaG9sIHNwQ29uakdyYWRTb2wgc3BDcmVhdGUgc3BEZW5zZVN1Ym1hdCBzcERpYWdSdk1hdCBzcEVpZ3Ygc3BFeWUgc3BMREwgJyArXG4gICAgICAgICAgICAgICdzcGxpbmUgc3BMVSBzcE51bU5aRSBzcE9uZXMgc3ByZWFkU2hlZXRSZWFkTSBzcHJlYWRTaGVldFJlYWRTQSBzcHJlYWRTaGVldFdyaXRlIHNwU2NhbGUgc3BTdWJtYXQgc3BUb0RlbnNlIHNwVHJURGVuc2UgJyArXG4gICAgICAgICAgICAgICdzcFRTY2FsYXIgc3BaZXJvcyBzcXBTb2x2ZSBzcXBTb2x2ZU1UIHNxcFNvbHZlTVRDb250cm9sQ3JlYXRlIHNxcFNvbHZlTVRsYWdyYW5nZUNyZWF0ZSBzcXBTb2x2ZU1Ub3V0Q3JlYXRlIHNxcFNvbHZlU2V0ICcgK1xuICAgICAgICAgICAgICAnc3FydCBzdGF0ZW1lbnRzIHN0ZGMgc3Rkc2Mgc3RvY3Ygc3RvZiBzdHJjb21iaW5lIHN0cmluZHggc3RybGVuIHN0cnB1dCBzdHJyaW5keCBzdHJzZWN0IHN0cnNwbGl0IHN0cnNwbGl0UGFkIHN0cnRvZHQgJyArXG4gICAgICAgICAgICAgICdzdHJ0b2Ygc3RydG9mY3BseCBzdHJ0cmltbCBzdHJ0cmltciBzdHJ0cnVuYyBzdHJ0cnVuY2wgc3RydHJ1bmNwYWQgc3RydHJ1bmNyIHN1Ym1hdCBzdWJzY2F0IHN1YnN0dXRlIHN1YnZlYyBzdW1jIHN1bXIgJyArXG4gICAgICAgICAgICAgICdzdXJmYWNlIHN2ZCBzdmQxIHN2ZDIgc3ZkY3VzdiBzdmRzIHN2ZHVzdiBzeXNzdGF0ZSB0YWIgdGFuIHRhbmggdGVtcG5hbWUgJyArXG4gICAgICAgICAgICAgICd0aW1lIHRpbWVkdCB0aW1lc3RyIHRpbWV1dGMgdGl0bGUgdGtmMmVwcyB0a2YycHMgdG9jYXJ0IHRvZGF5ZHQgdG9lcGxpdHogdG9rZW4gdG9wb2xhciB0cmFwY2hrICcgK1xuICAgICAgICAgICAgICAndHJpZ2FtbWEgdHJpbXIgdHJ1bmMgdHlwZSB0eXBlY3YgdHlwZWYgdW5pb24gdW5pb25zYSB1bmlxaW5keCB1bmlxaW5keHNhIHVuaXF1ZSB1bmlxdWVzYSB1cG1hdCB1cG1hdDEgdXBwZXIgdXRjdG9kdCAnICtcbiAgICAgICAgICAgICAgJ3V0Y3RvZHR2IHV0cmlzb2wgdmFscyB2YXJDb3ZNUyB2YXJDb3ZYUyB2YXJnZXQgdmFyZ2V0bCB2YXJtYWxsIHZhcm1hcmVzIHZhcnB1dCB2YXJwdXRsIHZhcnR5cGVmIHZjbSB2Y21zIHZjeCB2Y3hzICcgK1xuICAgICAgICAgICAgICAndmVjIHZlY2ggdmVjciB2ZWN0b3IgdmdldCB2aWV3IHZpZXd4eXogdmxpc3Qgdm5hbWVjdiB2b2x1bWUgdnB1dCB2cmVhZCB2dHlwZWN2IHdhaXQgd2FpdGMgd2Fsa2luZGV4IHdoZXJlIHdpbmRvdyAnICtcbiAgICAgICAgICAgICAgJ3dyaXRlciB4bGFiZWwgeGxzR2V0U2hlZXRDb3VudCB4bHNHZXRTaGVldFNpemUgeGxzR2V0U2hlZXRUeXBlcyB4bHNNYWtlUmFuZ2UgeGxzUmVhZE0geGxzUmVhZFNBIHhsc1dyaXRlIHhsc1dyaXRlTSAnICtcbiAgICAgICAgICAgICAgJ3hsc1dyaXRlU0EgeHBuZCB4dGljcyB4eSB4eXogeWxhYmVsIHl0aWNzIHplcm9zIHpldGEgemxhYmVsIHp0aWNzIGNkZkVtcGlyaWNhbCBkb3QgaDVjcmVhdGUgaDVvcGVuIGg1cmVhZCBoNXJlYWRBdHRyaWJ1dGUgJyArXG4gICAgICAgICAgICAgICdoNXdyaXRlIGg1d3JpdGVBdHRyaWJ1dGUgbGRsIHBsb3RBZGRFcnJvckJhciBwbG90QWRkU3VyZmFjZSBwbG90Q0RGRW1waXJpY2FsIHBsb3RTZXRDb2xvcm1hcCBwbG90U2V0Q29udG91ckxhYmVscyAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RTZXRMZWdlbmRGb250IHBsb3RTZXRUZXh0SW50ZXJwcmV0ZXIgcGxvdFNldFhUaWNDb3VudCBwbG90U2V0WVRpY0NvdW50IHBsb3RTZXRaTGV2ZWxzIHBvd2VybSBzdHJqb2luIHN5bHZlc3RlciAnICtcbiAgICAgICAgICAgICAgJ3N0cnRyaW0nLFxuICAgIGxpdGVyYWw6ICdEQl9BRlRFUl9MQVNUX1JPVyBEQl9BTExfVEFCTEVTIERCX0JBVENIX09QRVJBVElPTlMgREJfQkVGT1JFX0ZJUlNUX1JPVyBEQl9CTE9CIERCX0VWRU5UX05PVElGSUNBVElPTlMgJyArXG4gICAgICAgICAgICAgJ0RCX0ZJTklTSF9RVUVSWSBEQl9ISUdIX1BSRUNJU0lPTiBEQl9MQVNUX0lOU0VSVF9JRCBEQl9MT1dfUFJFQ0lTSU9OX0RPVUJMRSBEQl9MT1dfUFJFQ0lTSU9OX0lOVDMyICcgK1xuICAgICAgICAgICAgICdEQl9MT1dfUFJFQ0lTSU9OX0lOVDY0IERCX0xPV19QUkVDSVNJT05fTlVNQkVSUyBEQl9NVUxUSVBMRV9SRVNVTFRfU0VUUyBEQl9OQU1FRF9QTEFDRUhPTERFUlMgJyArXG4gICAgICAgICAgICAgJ0RCX1BPU0lUSU9OQUxfUExBQ0VIT0xERVJTIERCX1BSRVBBUkVEX1FVRVJJRVMgREJfUVVFUllfU0laRSBEQl9TSU1QTEVfTE9DS0lORyBEQl9TWVNURU1fVEFCTEVTIERCX1RBQkxFUyAnICtcbiAgICAgICAgICAgICAnREJfVFJBTlNBQ1RJT05TIERCX1VOSUNPREUgREJfVklFV1MgX19TVERJTiBfX1NURE9VVCBfX1NUREVSUiBfX0ZJTEVfRElSJ1xuICB9O1xuXG5cbiAgdmFyIEFUX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnQCcsICdAJyk7XG5cbiAgdmFyIFBSRVBST0NFU1NPUiA9XG4gIHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJyMnLCBlbmQ6ICckJyxcbiAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnZGVmaW5lIGRlZmluZWNzfDEwIHVuZGVmIGlmZGVmIGlmbmRlZiBpZmxpZ2h0IGlmZGxsY2FsbCBpZm1hYyBpZm9zMndpbiBpZnVuaXggZWxzZSBlbmRpZiBsaW5lc29uIGxpbmVzb2ZmIHNyY2ZpbGUgc3JjbGluZSd9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxcXFxcbi8sIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2luY2x1ZGUnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2luY2x1ZGUnfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgXVxuICB9O1xuXG4gIHZhciBTVFJVQ1RfVFlQRSA9XG4gIHtcbiAgICBiZWdpbjogL1xcYnN0cnVjdFxccysvLFxuICAgIGVuZDogL1xccy8sXG4gICAga2V5d29yZHM6IFwic3RydWN0XCIsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInR5cGVcIixcbiAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIC8vIG9ubHkgZm9yIGRlZmluaXRpb25zXG4gIHZhciBQQVJTRV9QQVJBTVMgPSBbXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHsgLy8gZG90c1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgIGJlZ2luOiAvXFwuXFwuXFwuLyxcbiAgICAgICAgfSxcbiAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgICAgIFNUUlVDVF9UWVBFLFxuICAgICAgXVxuICAgIH1cbiAgXTtcblxuICB2YXIgRlVOQ1RJT05fREVGID1cbiAge1xuICAgIGNsYXNzTmFtZTogXCJ0aXRsZVwiLFxuICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuXG4gIHZhciBERUZJTklUSU9OID0gZnVuY3Rpb24gKGJlZ2luS2V5d29yZHMsIGVuZCwgaW5oZXJpdHMpIHtcbiAgICB2YXIgbW9kZSA9IGhsanMuaW5oZXJpdChcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImZ1bmN0aW9uXCIsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6IGJlZ2luS2V5d29yZHMsXG4gICAgICAgIGVuZDogZW5kLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW10uY29uY2F0KFBBUlNFX1BBUkFNUyksXG4gICAgICB9LFxuICAgICAgaW5oZXJpdHMgfHwge31cbiAgICApO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChGVU5DVElPTl9ERUYpO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChobGpzLkNfTlVNQkVSX01PREUpO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFKTtcbiAgICBtb2RlLmNvbnRhaW5zLnB1c2goQVRfQ09NTUVOVF9NT0RFKTtcbiAgICByZXR1cm4gbW9kZTtcbiAgfTtcblxuICB2YXIgQlVJTFRfSU5fUkVGID1cbiAgeyAvLyB0aGVzZSBhcmUgZXhwbGljaXRseSBuYW1lZCBpbnRlcm5hbCBmdW5jdGlvbiBjYWxsc1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKCcgKyBLRVlXT1JEUy5idWlsdF9pbi5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcpXFxcXGInLFxuICB9O1xuXG4gIHZhciBTVFJJTkdfUkVGID1cbiAge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuXG4gIHZhciBGVU5DVElPTl9SRUYgPVxuICB7XG4gICAgLy9jbGFzc05hbWU6IFwiZm5fcmVmXCIsXG4gICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiBLRVlXT1JEUy5rZXl3b3JkLFxuICAgICAgfSxcbiAgICAgIEJVSUxUX0lOX1JFRixcbiAgICAgIHsgLy8gYW1iaWd1b3VzbHkgbmFtZWQgZnVuY3Rpb24gY2FsbHMgZ2V0IGEgcmVsZXZhbmNlIG9mIDBcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgdmFyIEZVTkNUSU9OX1JFRl9QQVJBTVMgPVxuICB7XG4gICAgLy9jbGFzc05hbWU6IFwiZm5fcmVmX3BhcmFtc1wiLFxuICAgIGJlZ2luOiAvXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBrZXl3b3JkczogeyBidWlsdF9pbjogS0VZV09SRFMuYnVpbHRfaW4sIGxpdGVyYWw6IEtFWVdPUkRTLmxpdGVyYWwgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIEFUX0NPTU1FTlRfTU9ERSxcbiAgICAgIEJVSUxUX0lOX1JFRixcbiAgICAgIEZVTkNUSU9OX1JFRixcbiAgICAgIFNUUklOR19SRUYsXG4gICAgICAnc2VsZicsXG4gICAgXSxcbiAgfTtcblxuICBGVU5DVElPTl9SRUYuY29udGFpbnMucHVzaChGVU5DVElPTl9SRUZfUEFSQU1TKTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ3NzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSwgLy8gbGFuZ3VhZ2UgaXMgY2FzZS1pbnNlbnNpdGl2ZVxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvKFxce1slI118WyUjXVxcfXwgPC0gKS8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgICBTVFJJTkdfUkVGLFxuICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46IC9cXGJleHRlcm5hbCAobWF0cml4fHN0cmluZ3xhcnJheXxzcGFyc2UgbWF0cml4fHN0cnVjdHxwcm9jfGtleXdvcmR8Zm4pLyxcbiAgICAgIH0sXG4gICAgICBERUZJTklUSU9OKCdwcm9jIGtleXdvcmQnLCAnOycpLFxuICAgICAgREVGSU5JVElPTignZm4nLCAnPScpLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnZm9yIHRocmVhZGZvcicsXG4gICAgICAgIGVuZDogLzsvLFxuICAgICAgICAvL2VuZDogL1xcKC8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIEFUX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBGVU5DVElPTl9SRUZfUEFSQU1TLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHsgLy8gY3VzdG9tIG1ldGhvZCBndWFyZFxuICAgICAgICAvLyBleGNsdWRlcyBtZXRob2QgbmFtZXMgZnJvbSBrZXl3b3JkIHByb2Nlc3NpbmdcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXC4nICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLCB9LFxuICAgICAgICAgIHsgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccyo9JywgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgfSxcbiAgICAgIEZVTkNUSU9OX1JFRixcbiAgICAgIFNUUlVDVF9UWVBFLFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgdmFyIEdDT0RFX0lERU5UX1JFID0gJ1tBLVpfXVtBLVowLTlfLl0qJztcbiAgICB2YXIgR0NPREVfQ0xPU0VfUkUgPSAnXFxcXCUnO1xuICAgIHZhciBHQ09ERV9LRVlXT1JEUyA9XG4gICAgICAnSUYgRE8gV0hJTEUgRU5EV0hJTEUgQ0FMTCBFTkRJRiBTVUIgRU5EU1VCIEdPVE8gUkVQRUFUIEVORFJFUEVBVCAnICtcbiAgICAgICdFUSBMVCBHVCBORSBHRSBMRSBPUiBYT1InO1xuICAgIHZhciBHQ09ERV9TVEFSVCA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnKFtPXSkoWzAtOV0rKSdcbiAgICB9O1xuICAgIHZhciBHQ09ERV9DT0RFID0gW1xuICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuQ09NTUVOVCgvXFwoLywgL1xcKS8pLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5DX05VTUJFUl9NT0RFLCB7YmVnaW46ICcoWy0rXT8oWzAtOV0qXFxcXC4/WzAtOV0rXFxcXC4/KSl8JyArIGhsanMuQ19OVU1CRVJfUkV9KSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46ICcoW0ddKShbMC05XStcXFxcLj9bMC05XT8pJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFtNXSkoWzAtOV0rXFxcXC4/WzAtOV0/KSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICBiZWdpbjogJyhWQ3xWU3wjKScsXG4gICAgICAgICAgICBlbmQ6ICcoXFxcXGQrKSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICBiZWdpbjogJyhWWk9GWHxWWk9GWXxWWk9GWiknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKEFUQU58QUJTfEFDT1N8QVNJTnxTSU58Q09TfEVYUHxGSVh8RlVQfFJPVU5EfExOfFRBTikoXFxcXFspJyxcbiAgICAgICAgICAgIGVuZDogJyhbLStdPyhbMC05XSpcXFxcLj9bMC05XStcXFxcLj8pKShcXFxcXSknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdOJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFxXJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhbGlhc2VzOiBbJ25jJ10sXG4gICAgICAgIC8vIFNvbWUgaW1wbGVtZW50YXRpb25zIChDTkMgY29udHJvbHMpIG9mIEctY29kZSBhcmUgaW50ZXJvcGVyYWJsZSB3aXRoIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlIGxldHRlcnMgc2VhbWxlc3NseS5cbiAgICAgICAgLy8gSG93ZXZlciwgbW9zdCBwcmVmZXIgYWxsIHVwcGVyY2FzZSBhbmQgdXBwZXJjYXNlIGlzIGN1c3RvbWFyeS5cbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAgbGV4ZW1lczogR0NPREVfSURFTlRfUkUsXG4gICAgICAgIGtleXdvcmRzOiBHQ09ERV9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogR0NPREVfQ0xPU0VfUkVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBHQ09ERV9TVEFSVFxuICAgICAgICBdLmNvbmNhdChHQ09ERV9DT0RFKVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2ZlYXR1cmUnXSxcbiAgICBrZXl3b3JkczogJ0ZlYXR1cmUgQmFja2dyb3VuZCBBYmlsaXR5IEJ1c2luZXNzXFwgTmVlZCBTY2VuYXJpbyBTY2VuYXJpb3MgU2NlbmFyaW9cXCBPdXRsaW5lIFNjZW5hcmlvXFwgVGVtcGxhdGUgRXhhbXBsZXMgR2l2ZW4gQW5kIFRoZW4gQnV0IFdoZW4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXConLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ0BbXkBcXFxcc10rJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcfCcsIGVuZDogJ1xcXFx8XFxcXHcqJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnW158XSsnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAnPCcsIGVuZDogJz4nXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIFN0YXRlbWVudHNcbiAgICAgICAgJ2JyZWFrIGNvbnRpbnVlIGRpc2NhcmQgZG8gZWxzZSBmb3IgaWYgcmV0dXJuIHdoaWxlIHN3aXRjaCBjYXNlIGRlZmF1bHQgJyArXG4gICAgICAgIC8vIFF1YWxpZmllcnNcbiAgICAgICAgJ2F0dHJpYnV0ZSBiaW5kaW5nIGJ1ZmZlciBjY3cgY2VudHJvaWQgY2VudHJvaWQgdmFyeWluZyBjb2hlcmVudCBjb2x1bW5fbWFqb3IgY29uc3QgY3cgJyArXG4gICAgICAgICdkZXB0aF9hbnkgZGVwdGhfZ3JlYXRlciBkZXB0aF9sZXNzIGRlcHRoX3VuY2hhbmdlZCBlYXJseV9mcmFnbWVudF90ZXN0cyBlcXVhbF9zcGFjaW5nICcgK1xuICAgICAgICAnZmxhdCBmcmFjdGlvbmFsX2V2ZW5fc3BhY2luZyBmcmFjdGlvbmFsX29kZF9zcGFjaW5nIGhpZ2hwIGluIGluZGV4IGlub3V0IGludmFyaWFudCAnICtcbiAgICAgICAgJ2ludm9jYXRpb25zIGlzb2xpbmVzIGxheW91dCBsaW5lX3N0cmlwIGxpbmVzIGxpbmVzX2FkamFjZW5jeSBsb2NhbF9zaXplX3ggbG9jYWxfc2l6ZV95ICcgK1xuICAgICAgICAnbG9jYWxfc2l6ZV96IGxvY2F0aW9uIGxvd3AgbWF4X3ZlcnRpY2VzIG1lZGl1bXAgbm9wZXJzcGVjdGl2ZSBvZmZzZXQgb3JpZ2luX3VwcGVyX2xlZnQgJyArXG4gICAgICAgICdvdXQgcGFja2VkIHBhdGNoIHBpeGVsX2NlbnRlcl9pbnRlZ2VyIHBvaW50X21vZGUgcG9pbnRzIHByZWNpc2UgcHJlY2lzaW9uIHF1YWRzIHIxMWZfZzExZl9iMTBmICcrXG4gICAgICAgICdyMTYgcjE2X3Nub3JtIHIxNmYgcjE2aSByMTZ1aSByMzJmIHIzMmkgcjMydWkgcjggcjhfc25vcm0gcjhpIHI4dWkgcmVhZG9ubHkgcmVzdHJpY3QgJyArXG4gICAgICAgICdyZzE2IHJnMTZfc25vcm0gcmcxNmYgcmcxNmkgcmcxNnVpIHJnMzJmIHJnMzJpIHJnMzJ1aSByZzggcmc4X3Nub3JtIHJnOGkgcmc4dWkgcmdiMTBfYTIgJyArXG4gICAgICAgICdyZ2IxMF9hMnVpIHJnYmExNiByZ2JhMTZfc25vcm0gcmdiYTE2ZiByZ2JhMTZpIHJnYmExNnVpIHJnYmEzMmYgcmdiYTMyaSByZ2JhMzJ1aSByZ2JhOCAnICtcbiAgICAgICAgJ3JnYmE4X3Nub3JtIHJnYmE4aSByZ2JhOHVpIHJvd19tYWpvciBzYW1wbGUgc2hhcmVkIHNtb290aCBzdGQxNDAgc3RkNDMwIHN0cmVhbSB0cmlhbmdsZV9zdHJpcCAnICtcbiAgICAgICAgJ3RyaWFuZ2xlcyB0cmlhbmdsZXNfYWRqYWNlbmN5IHVuaWZvcm0gdmFyeWluZyB2ZXJ0aWNlcyB2b2xhdGlsZSB3cml0ZW9ubHknLFxuICAgICAgdHlwZTpcbiAgICAgICAgJ2F0b21pY191aW50IGJvb2wgYnZlYzIgYnZlYzMgYnZlYzQgZG1hdDIgZG1hdDJ4MiBkbWF0MngzIGRtYXQyeDQgZG1hdDMgZG1hdDN4MiBkbWF0M3gzICcgK1xuICAgICAgICAnZG1hdDN4NCBkbWF0NCBkbWF0NHgyIGRtYXQ0eDMgZG1hdDR4NCBkb3VibGUgZHZlYzIgZHZlYzMgZHZlYzQgZmxvYXQgaWltYWdlMUQgaWltYWdlMURBcnJheSAnICtcbiAgICAgICAgJ2lpbWFnZTJEIGlpbWFnZTJEQXJyYXkgaWltYWdlMkRNUyBpaW1hZ2UyRE1TQXJyYXkgaWltYWdlMkRSZWN0IGlpbWFnZTNEIGlpbWFnZUJ1ZmZlcicgK1xuICAgICAgICAnaWltYWdlQ3ViZSBpaW1hZ2VDdWJlQXJyYXkgaW1hZ2UxRCBpbWFnZTFEQXJyYXkgaW1hZ2UyRCBpbWFnZTJEQXJyYXkgaW1hZ2UyRE1TIGltYWdlMkRNU0FycmF5ICcgK1xuICAgICAgICAnaW1hZ2UyRFJlY3QgaW1hZ2UzRCBpbWFnZUJ1ZmZlciBpbWFnZUN1YmUgaW1hZ2VDdWJlQXJyYXkgaW50IGlzYW1wbGVyMUQgaXNhbXBsZXIxREFycmF5ICcgK1xuICAgICAgICAnaXNhbXBsZXIyRCBpc2FtcGxlcjJEQXJyYXkgaXNhbXBsZXIyRE1TIGlzYW1wbGVyMkRNU0FycmF5IGlzYW1wbGVyMkRSZWN0IGlzYW1wbGVyM0QgJyArXG4gICAgICAgICdpc2FtcGxlckJ1ZmZlciBpc2FtcGxlckN1YmUgaXNhbXBsZXJDdWJlQXJyYXkgaXZlYzIgaXZlYzMgaXZlYzQgbWF0MiBtYXQyeDIgbWF0MngzICcgK1xuICAgICAgICAnbWF0Mng0IG1hdDMgbWF0M3gyIG1hdDN4MyBtYXQzeDQgbWF0NCBtYXQ0eDIgbWF0NHgzIG1hdDR4NCBzYW1wbGVyMUQgc2FtcGxlcjFEQXJyYXkgJyArXG4gICAgICAgICdzYW1wbGVyMURBcnJheVNoYWRvdyBzYW1wbGVyMURTaGFkb3cgc2FtcGxlcjJEIHNhbXBsZXIyREFycmF5IHNhbXBsZXIyREFycmF5U2hhZG93ICcgK1xuICAgICAgICAnc2FtcGxlcjJETVMgc2FtcGxlcjJETVNBcnJheSBzYW1wbGVyMkRSZWN0IHNhbXBsZXIyRFJlY3RTaGFkb3cgc2FtcGxlcjJEU2hhZG93IHNhbXBsZXIzRCAnICtcbiAgICAgICAgJ3NhbXBsZXJCdWZmZXIgc2FtcGxlckN1YmUgc2FtcGxlckN1YmVBcnJheSBzYW1wbGVyQ3ViZUFycmF5U2hhZG93IHNhbXBsZXJDdWJlU2hhZG93ICcgK1xuICAgICAgICAnaW1hZ2UxRCB1aW1hZ2UxREFycmF5IHVpbWFnZTJEIHVpbWFnZTJEQXJyYXkgdWltYWdlMkRNUyB1aW1hZ2UyRE1TQXJyYXkgdWltYWdlMkRSZWN0ICcgK1xuICAgICAgICAndWltYWdlM0QgdWltYWdlQnVmZmVyIHVpbWFnZUN1YmUgdWltYWdlQ3ViZUFycmF5IHVpbnQgdXNhbXBsZXIxRCB1c2FtcGxlcjFEQXJyYXkgJyArXG4gICAgICAgICd1c2FtcGxlcjJEIHVzYW1wbGVyMkRBcnJheSB1c2FtcGxlcjJETVMgdXNhbXBsZXIyRE1TQXJyYXkgdXNhbXBsZXIyRFJlY3QgdXNhbXBsZXIzRCAnICtcbiAgICAgICAgJ3NhbXBsZXJCdWZmZXIgdXNhbXBsZXJDdWJlIHVzYW1wbGVyQ3ViZUFycmF5IHV2ZWMyIHV2ZWMzIHV2ZWM0IHZlYzIgdmVjMyB2ZWM0IHZvaWQnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vIENvbnN0YW50c1xuICAgICAgICAnZ2xfTWF4QXRvbWljQ291bnRlckJpbmRpbmdzIGdsX01heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplIGdsX01heENsaXBEaXN0YW5jZXMgZ2xfTWF4Q2xpcFBsYW5lcyAnICtcbiAgICAgICAgJ2dsX01heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4Q29tYmluZWRBdG9taWNDb3VudGVycyBnbF9NYXhDb21iaW5lZEltYWdlVW5pZm9ybXMgJyArXG4gICAgICAgICdnbF9NYXhDb21iaW5lZEltYWdlVW5pdHNBbmRGcmFnbWVudE91dHB1dHMgZ2xfTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyBnbF9NYXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZlcnMgJyArXG4gICAgICAgICdnbF9NYXhDb21wdXRlQXRvbWljQ291bnRlcnMgZ2xfTWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMgZ2xfTWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4Q29tcHV0ZVVuaWZvcm1Db21wb25lbnRzIGdsX01heENvbXB1dGVXb3JrR3JvdXBDb3VudCBnbF9NYXhDb21wdXRlV29ya0dyb3VwU2l6ZSAnICtcbiAgICAgICAgJ2dsX01heERyYXdCdWZmZXJzIGdsX01heEZyYWdtZW50QXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4RnJhZ21lbnRBdG9taWNDb3VudGVycyAnICtcbiAgICAgICAgJ2dsX01heEZyYWdtZW50SW1hZ2VVbmlmb3JtcyBnbF9NYXhGcmFnbWVudElucHV0Q29tcG9uZW50cyBnbF9NYXhGcmFnbWVudElucHV0VmVjdG9ycyAnICtcbiAgICAgICAgJ2dsX01heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMgZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyBnbF9NYXhHZW9tZXRyeUF0b21pY0NvdW50ZXJCdWZmZXJzICcgK1xuICAgICAgICAnZ2xfTWF4R2VvbWV0cnlBdG9taWNDb3VudGVycyBnbF9NYXhHZW9tZXRyeUltYWdlVW5pZm9ybXMgZ2xfTWF4R2VvbWV0cnlJbnB1dENvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhHZW9tZXRyeU91dHB1dENvbXBvbmVudHMgZ2xfTWF4R2VvbWV0cnlPdXRwdXRWZXJ0aWNlcyBnbF9NYXhHZW9tZXRyeVRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4R2VvbWV0cnlUb3RhbE91dHB1dENvbXBvbmVudHMgZ2xfTWF4R2VvbWV0cnlVbmlmb3JtQ29tcG9uZW50cyBnbF9NYXhHZW9tZXRyeVZhcnlpbmdDb21wb25lbnRzICcgK1xuICAgICAgICAnZ2xfTWF4SW1hZ2VTYW1wbGVzIGdsX01heEltYWdlVW5pdHMgZ2xfTWF4TGlnaHRzIGdsX01heFBhdGNoVmVydGljZXMgZ2xfTWF4UHJvZ3JhbVRleGVsT2Zmc2V0ICcgK1xuICAgICAgICAnZ2xfTWF4VGVzc0NvbnRyb2xBdG9taWNDb3VudGVyQnVmZmVycyBnbF9NYXhUZXNzQ29udHJvbEF0b21pY0NvdW50ZXJzIGdsX01heFRlc3NDb250cm9sSW1hZ2VVbmlmb3JtcyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NDb250cm9sSW5wdXRDb21wb25lbnRzIGdsX01heFRlc3NDb250cm9sT3V0cHV0Q29tcG9uZW50cyBnbF9NYXhUZXNzQ29udHJvbFRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4VGVzc0NvbnRyb2xUb3RhbE91dHB1dENvbXBvbmVudHMgZ2xfTWF4VGVzc0NvbnRyb2xVbmlmb3JtQ29tcG9uZW50cyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NFdmFsdWF0aW9uQXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4VGVzc0V2YWx1YXRpb25BdG9taWNDb3VudGVycyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NFdmFsdWF0aW9uSW1hZ2VVbmlmb3JtcyBnbF9NYXhUZXNzRXZhbHVhdGlvbklucHV0Q29tcG9uZW50cyBnbF9NYXhUZXNzRXZhbHVhdGlvbk91dHB1dENvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzRXZhbHVhdGlvblRleHR1cmVJbWFnZVVuaXRzIGdsX01heFRlc3NFdmFsdWF0aW9uVW5pZm9ybUNvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzR2VuTGV2ZWwgZ2xfTWF4VGVzc1BhdGNoQ29tcG9uZW50cyBnbF9NYXhUZXh0dXJlQ29vcmRzIGdsX01heFRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4VGV4dHVyZVVuaXRzIGdsX01heFZhcnlpbmdDb21wb25lbnRzIGdsX01heFZhcnlpbmdGbG9hdHMgZ2xfTWF4VmFyeWluZ1ZlY3RvcnMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhBdG9taWNDb3VudGVyQnVmZmVycyBnbF9NYXhWZXJ0ZXhBdG9taWNDb3VudGVycyBnbF9NYXhWZXJ0ZXhBdHRyaWJzIGdsX01heFZlcnRleEltYWdlVW5pZm9ybXMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhPdXRwdXRDb21wb25lbnRzIGdsX01heFZlcnRleE91dHB1dFZlY3RvcnMgZ2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyBnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyBnbF9NYXhWaWV3cG9ydHMgZ2xfTWluUHJvZ3JhbVRleGVsT2Zmc2V0ICcgK1xuICAgICAgICAvLyBWYXJpYWJsZXNcbiAgICAgICAgJ2dsX0JhY2tDb2xvciBnbF9CYWNrTGlnaHRNb2RlbFByb2R1Y3QgZ2xfQmFja0xpZ2h0UHJvZHVjdCBnbF9CYWNrTWF0ZXJpYWwgJyArXG4gICAgICAgICdnbF9CYWNrU2Vjb25kYXJ5Q29sb3IgZ2xfQ2xpcERpc3RhbmNlIGdsX0NsaXBQbGFuZSBnbF9DbGlwVmVydGV4IGdsX0NvbG9yICcgK1xuICAgICAgICAnZ2xfRGVwdGhSYW5nZSBnbF9FeWVQbGFuZVEgZ2xfRXllUGxhbmVSIGdsX0V5ZVBsYW5lUyBnbF9FeWVQbGFuZVQgZ2xfRm9nIGdsX0ZvZ0Nvb3JkICcgK1xuICAgICAgICAnZ2xfRm9nRnJhZ0Nvb3JkIGdsX0ZyYWdDb2xvciBnbF9GcmFnQ29vcmQgZ2xfRnJhZ0RhdGEgZ2xfRnJhZ0RlcHRoIGdsX0Zyb250Q29sb3IgJyArXG4gICAgICAgICdnbF9Gcm9udEZhY2luZyBnbF9Gcm9udExpZ2h0TW9kZWxQcm9kdWN0IGdsX0Zyb250TGlnaHRQcm9kdWN0IGdsX0Zyb250TWF0ZXJpYWwgJyArXG4gICAgICAgICdnbF9Gcm9udFNlY29uZGFyeUNvbG9yIGdsX0dsb2JhbEludm9jYXRpb25JRCBnbF9JbnN0YW5jZUlEIGdsX0ludm9jYXRpb25JRCBnbF9MYXllciBnbF9MaWdodE1vZGVsICcgK1xuICAgICAgICAnZ2xfTGlnaHRTb3VyY2UgZ2xfTG9jYWxJbnZvY2F0aW9uSUQgZ2xfTG9jYWxJbnZvY2F0aW9uSW5kZXggZ2xfTW9kZWxWaWV3TWF0cml4ICcgK1xuICAgICAgICAnZ2xfTW9kZWxWaWV3TWF0cml4SW52ZXJzZSBnbF9Nb2RlbFZpZXdNYXRyaXhJbnZlcnNlVHJhbnNwb3NlIGdsX01vZGVsVmlld01hdHJpeFRyYW5zcG9zZSAnICtcbiAgICAgICAgJ2dsX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeEludmVyc2UgZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeEludmVyc2VUcmFuc3Bvc2UgJyArXG4gICAgICAgICdnbF9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4VHJhbnNwb3NlIGdsX011bHRpVGV4Q29vcmQwIGdsX011bHRpVGV4Q29vcmQxIGdsX011bHRpVGV4Q29vcmQyICcgK1xuICAgICAgICAnZ2xfTXVsdGlUZXhDb29yZDMgZ2xfTXVsdGlUZXhDb29yZDQgZ2xfTXVsdGlUZXhDb29yZDUgZ2xfTXVsdGlUZXhDb29yZDYgZ2xfTXVsdGlUZXhDb29yZDcgJyArXG4gICAgICAgICdnbF9Ob3JtYWwgZ2xfTm9ybWFsTWF0cml4IGdsX05vcm1hbFNjYWxlIGdsX051bVNhbXBsZXMgZ2xfTnVtV29ya0dyb3VwcyBnbF9PYmplY3RQbGFuZVEgJyArXG4gICAgICAgICdnbF9PYmplY3RQbGFuZVIgZ2xfT2JqZWN0UGxhbmVTIGdsX09iamVjdFBsYW5lVCBnbF9QYXRjaFZlcnRpY2VzSW4gZ2xfUG9pbnQgZ2xfUG9pbnRDb29yZCAnICtcbiAgICAgICAgJ2dsX1BvaW50U2l6ZSBnbF9Qb3NpdGlvbiBnbF9QcmltaXRpdmVJRCBnbF9QcmltaXRpdmVJREluIGdsX1Byb2plY3Rpb25NYXRyaXggZ2xfUHJvamVjdGlvbk1hdHJpeEludmVyc2UgJyArXG4gICAgICAgICdnbF9Qcm9qZWN0aW9uTWF0cml4SW52ZXJzZVRyYW5zcG9zZSBnbF9Qcm9qZWN0aW9uTWF0cml4VHJhbnNwb3NlIGdsX1NhbXBsZUlEIGdsX1NhbXBsZU1hc2sgJyArXG4gICAgICAgICdnbF9TYW1wbGVNYXNrSW4gZ2xfU2FtcGxlUG9zaXRpb24gZ2xfU2Vjb25kYXJ5Q29sb3IgZ2xfVGVzc0Nvb3JkIGdsX1Rlc3NMZXZlbElubmVyIGdsX1Rlc3NMZXZlbE91dGVyICcgK1xuICAgICAgICAnZ2xfVGV4Q29vcmQgZ2xfVGV4dHVyZUVudkNvbG9yIGdsX1RleHR1cmVNYXRyaXggZ2xfVGV4dHVyZU1hdHJpeEludmVyc2UgZ2xfVGV4dHVyZU1hdHJpeEludmVyc2VUcmFuc3Bvc2UgJyArXG4gICAgICAgICdnbF9UZXh0dXJlTWF0cml4VHJhbnNwb3NlIGdsX1ZlcnRleCBnbF9WZXJ0ZXhJRCBnbF9WaWV3cG9ydEluZGV4IGdsX1dvcmtHcm91cElEIGdsX1dvcmtHcm91cFNpemUgZ2xfaW4gZ2xfb3V0ICcgK1xuICAgICAgICAvLyBGdW5jdGlvbnNcbiAgICAgICAgJ0VtaXRTdHJlYW1WZXJ0ZXggRW1pdFZlcnRleCBFbmRQcmltaXRpdmUgRW5kU3RyZWFtUHJpbWl0aXZlIGFicyBhY29zIGFjb3NoIGFsbCBhbnkgYXNpbiAnICtcbiAgICAgICAgJ2FzaW5oIGF0YW4gYXRhbmggYXRvbWljQWRkIGF0b21pY0FuZCBhdG9taWNDb21wU3dhcCBhdG9taWNDb3VudGVyIGF0b21pY0NvdW50ZXJEZWNyZW1lbnQgJyArXG4gICAgICAgICdhdG9taWNDb3VudGVySW5jcmVtZW50IGF0b21pY0V4Y2hhbmdlIGF0b21pY01heCBhdG9taWNNaW4gYXRvbWljT3IgYXRvbWljWG9yIGJhcnJpZXIgJyArXG4gICAgICAgICdiaXRDb3VudCBiaXRmaWVsZEV4dHJhY3QgYml0ZmllbGRJbnNlcnQgYml0ZmllbGRSZXZlcnNlIGNlaWwgY2xhbXAgY29zIGNvc2ggY3Jvc3MgJyArXG4gICAgICAgICdkRmR4IGRGZHkgZGVncmVlcyBkZXRlcm1pbmFudCBkaXN0YW5jZSBkb3QgZXF1YWwgZXhwIGV4cDIgZmFjZWZvcndhcmQgZmluZExTQiBmaW5kTVNCICcgK1xuICAgICAgICAnZmxvYXRCaXRzVG9JbnQgZmxvYXRCaXRzVG9VaW50IGZsb29yIGZtYSBmcmFjdCBmcmV4cCBmdHJhbnNmb3JtIGZ3aWR0aCBncmVhdGVyVGhhbiAnICtcbiAgICAgICAgJ2dyZWF0ZXJUaGFuRXF1YWwgZ3JvdXBNZW1vcnlCYXJyaWVyIGltYWdlQXRvbWljQWRkIGltYWdlQXRvbWljQW5kIGltYWdlQXRvbWljQ29tcFN3YXAgJyArXG4gICAgICAgICdpbWFnZUF0b21pY0V4Y2hhbmdlIGltYWdlQXRvbWljTWF4IGltYWdlQXRvbWljTWluIGltYWdlQXRvbWljT3IgaW1hZ2VBdG9taWNYb3IgaW1hZ2VMb2FkICcgK1xuICAgICAgICAnaW1hZ2VTaXplIGltYWdlU3RvcmUgaW11bEV4dGVuZGVkIGludEJpdHNUb0Zsb2F0IGludGVycG9sYXRlQXRDZW50cm9pZCBpbnRlcnBvbGF0ZUF0T2Zmc2V0ICcgK1xuICAgICAgICAnaW50ZXJwb2xhdGVBdFNhbXBsZSBpbnZlcnNlIGludmVyc2VzcXJ0IGlzaW5mIGlzbmFuIGxkZXhwIGxlbmd0aCBsZXNzVGhhbiBsZXNzVGhhbkVxdWFsIGxvZyAnICtcbiAgICAgICAgJ2xvZzIgbWF0cml4Q29tcE11bHQgbWF4IG1lbW9yeUJhcnJpZXIgbWVtb3J5QmFycmllckF0b21pY0NvdW50ZXIgbWVtb3J5QmFycmllckJ1ZmZlciAnICtcbiAgICAgICAgJ21lbW9yeUJhcnJpZXJJbWFnZSBtZW1vcnlCYXJyaWVyU2hhcmVkIG1pbiBtaXggbW9kIG1vZGYgbm9pc2UxIG5vaXNlMiBub2lzZTMgbm9pc2U0ICcgK1xuICAgICAgICAnbm9ybWFsaXplIG5vdCBub3RFcXVhbCBvdXRlclByb2R1Y3QgcGFja0RvdWJsZTJ4MzIgcGFja0hhbGYyeDE2IHBhY2tTbm9ybTJ4MTYgcGFja1Nub3JtNHg4ICcgK1xuICAgICAgICAncGFja1Vub3JtMngxNiBwYWNrVW5vcm00eDggcG93IHJhZGlhbnMgcmVmbGVjdCByZWZyYWN0IHJvdW5kIHJvdW5kRXZlbiBzaGFkb3cxRCBzaGFkb3cxRExvZCAnICtcbiAgICAgICAgJ3NoYWRvdzFEUHJvaiBzaGFkb3cxRFByb2pMb2Qgc2hhZG93MkQgc2hhZG93MkRMb2Qgc2hhZG93MkRQcm9qIHNoYWRvdzJEUHJvakxvZCBzaWduIHNpbiBzaW5oICcgK1xuICAgICAgICAnc21vb3Roc3RlcCBzcXJ0IHN0ZXAgdGFuIHRhbmggdGV4ZWxGZXRjaCB0ZXhlbEZldGNoT2Zmc2V0IHRleHR1cmUgdGV4dHVyZTFEIHRleHR1cmUxRExvZCAnICtcbiAgICAgICAgJ3RleHR1cmUxRFByb2ogdGV4dHVyZTFEUHJvakxvZCB0ZXh0dXJlMkQgdGV4dHVyZTJETG9kIHRleHR1cmUyRFByb2ogdGV4dHVyZTJEUHJvakxvZCAnICtcbiAgICAgICAgJ3RleHR1cmUzRCB0ZXh0dXJlM0RMb2QgdGV4dHVyZTNEUHJvaiB0ZXh0dXJlM0RQcm9qTG9kIHRleHR1cmVDdWJlIHRleHR1cmVDdWJlTG9kICcgK1xuICAgICAgICAndGV4dHVyZUdhdGhlciB0ZXh0dXJlR2F0aGVyT2Zmc2V0IHRleHR1cmVHYXRoZXJPZmZzZXRzIHRleHR1cmVHcmFkIHRleHR1cmVHcmFkT2Zmc2V0ICcgK1xuICAgICAgICAndGV4dHVyZUxvZCB0ZXh0dXJlTG9kT2Zmc2V0IHRleHR1cmVPZmZzZXQgdGV4dHVyZVByb2ogdGV4dHVyZVByb2pHcmFkIHRleHR1cmVQcm9qR3JhZE9mZnNldCAnICtcbiAgICAgICAgJ3RleHR1cmVQcm9qTG9kIHRleHR1cmVQcm9qTG9kT2Zmc2V0IHRleHR1cmVQcm9qT2Zmc2V0IHRleHR1cmVRdWVyeUxldmVscyB0ZXh0dXJlUXVlcnlMb2QgJyArXG4gICAgICAgICd0ZXh0dXJlU2l6ZSB0cmFuc3Bvc2UgdHJ1bmMgdWFkZENhcnJ5IHVpbnRCaXRzVG9GbG9hdCB1bXVsRXh0ZW5kZWQgdW5wYWNrRG91YmxlMngzMiAnICtcbiAgICAgICAgJ3VucGFja0hhbGYyeDE2IHVucGFja1Nub3JtMngxNiB1bnBhY2tTbm9ybTR4OCB1bnBhY2tVbm9ybTJ4MTYgdW5wYWNrVW5vcm00eDggdXN1YkJvcnJvdycsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGlsbGVnYWw6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBHTUxfS0VZV09SRFMgPSB7XG4gICAga2V5d29yZHM6ICdiZWdpbiBlbmQgaWYgdGhlbiBlbHNlIHdoaWxlIGRvIGZvciBicmVhayBjb250aW51ZSB3aXRoIHVudGlsICcgK1xuICAgICAgJ3JlcGVhdCBleGl0IGFuZCBvciB4b3Igbm90IHJldHVybiBtb2QgZGl2IHN3aXRjaCBjYXNlIGRlZmF1bHQgdmFyICcgK1xuICAgICAgJ2dsb2JhbHZhciBlbnVtICNtYWNybyAjcmVnaW9uICNlbmRyZWdpb24nLFxuICAgIGJ1aWx0X2luOiAnaXNfcmVhbCBpc19zdHJpbmcgaXNfYXJyYXkgaXNfdW5kZWZpbmVkIGlzX2ludDMyIGlzX2ludDY0ICcgK1xuICAgICAgJ2lzX3B0ciBpc192ZWMzIGlzX3ZlYzQgaXNfbWF0cml4IGlzX2Jvb2wgdHlwZW9mICcgK1xuICAgICAgJ3ZhcmlhYmxlX2dsb2JhbF9leGlzdHMgdmFyaWFibGVfZ2xvYmFsX2dldCB2YXJpYWJsZV9nbG9iYWxfc2V0ICcgK1xuICAgICAgJ3ZhcmlhYmxlX2luc3RhbmNlX2V4aXN0cyB2YXJpYWJsZV9pbnN0YW5jZV9nZXQgdmFyaWFibGVfaW5zdGFuY2Vfc2V0ICcgK1xuICAgICAgJ3ZhcmlhYmxlX2luc3RhbmNlX2dldF9uYW1lcyBhcnJheV9sZW5ndGhfMWQgYXJyYXlfbGVuZ3RoXzJkICcgK1xuICAgICAgJ2FycmF5X2hlaWdodF8yZCBhcnJheV9lcXVhbHMgYXJyYXlfY3JlYXRlIGFycmF5X2NvcHkgcmFuZG9tICcgK1xuICAgICAgJ3JhbmRvbV9yYW5nZSBpcmFuZG9tIGlyYW5kb21fcmFuZ2UgcmFuZG9tX3NldF9zZWVkIHJhbmRvbV9nZXRfc2VlZCAnICtcbiAgICAgICdyYW5kb21pemUgcmFuZG9taXNlIGNob29zZSBhYnMgcm91bmQgZmxvb3IgY2VpbCBzaWduIGZyYWMgc3FydCBzcXIgJyArXG4gICAgICAnZXhwIGxuIGxvZzIgbG9nMTAgc2luIGNvcyB0YW4gYXJjc2luIGFyY2NvcyBhcmN0YW4gYXJjdGFuMiBkc2luIGRjb3MgJyArXG4gICAgICAnZHRhbiBkYXJjc2luIGRhcmNjb3MgZGFyY3RhbiBkYXJjdGFuMiBkZWd0b3JhZCByYWR0b2RlZyBwb3dlciBsb2duICcgK1xuICAgICAgJ21pbiBtYXggbWVhbiBtZWRpYW4gY2xhbXAgbGVycCBkb3RfcHJvZHVjdCBkb3RfcHJvZHVjdF8zZCAnICtcbiAgICAgICdkb3RfcHJvZHVjdF9ub3JtYWxpc2VkIGRvdF9wcm9kdWN0XzNkX25vcm1hbGlzZWQgJyArXG4gICAgICAnZG90X3Byb2R1Y3Rfbm9ybWFsaXplZCBkb3RfcHJvZHVjdF8zZF9ub3JtYWxpemVkIG1hdGhfc2V0X2Vwc2lsb24gJyArXG4gICAgICAnbWF0aF9nZXRfZXBzaWxvbiBhbmdsZV9kaWZmZXJlbmNlIHBvaW50X2Rpc3RhbmNlXzNkIHBvaW50X2Rpc3RhbmNlICcgK1xuICAgICAgJ3BvaW50X2RpcmVjdGlvbiBsZW5ndGhkaXJfeCBsZW5ndGhkaXJfeSByZWFsIHN0cmluZyBpbnQ2NCBwdHIgJyArXG4gICAgICAnc3RyaW5nX2Zvcm1hdCBjaHIgYW5zaV9jaGFyIG9yZCBzdHJpbmdfbGVuZ3RoIHN0cmluZ19ieXRlX2xlbmd0aCAnICtcbiAgICAgICdzdHJpbmdfcG9zIHN0cmluZ19jb3B5IHN0cmluZ19jaGFyX2F0IHN0cmluZ19vcmRfYXQgc3RyaW5nX2J5dGVfYXQgJyArXG4gICAgICAnc3RyaW5nX3NldF9ieXRlX2F0IHN0cmluZ19kZWxldGUgc3RyaW5nX2luc2VydCBzdHJpbmdfbG93ZXIgJyArXG4gICAgICAnc3RyaW5nX3VwcGVyIHN0cmluZ19yZXBlYXQgc3RyaW5nX2xldHRlcnMgc3RyaW5nX2RpZ2l0cyAnICtcbiAgICAgICdzdHJpbmdfbGV0dGVyc2RpZ2l0cyBzdHJpbmdfcmVwbGFjZSBzdHJpbmdfcmVwbGFjZV9hbGwgc3RyaW5nX2NvdW50ICcgK1xuICAgICAgJ3N0cmluZ19oYXNoX3RvX25ld2xpbmUgY2xpcGJvYXJkX2hhc190ZXh0IGNsaXBib2FyZF9zZXRfdGV4dCAnICtcbiAgICAgICdjbGlwYm9hcmRfZ2V0X3RleHQgZGF0ZV9jdXJyZW50X2RhdGV0aW1lIGRhdGVfY3JlYXRlX2RhdGV0aW1lICcgK1xuICAgICAgJ2RhdGVfdmFsaWRfZGF0ZXRpbWUgZGF0ZV9pbmNfeWVhciBkYXRlX2luY19tb250aCBkYXRlX2luY193ZWVrICcgK1xuICAgICAgJ2RhdGVfaW5jX2RheSBkYXRlX2luY19ob3VyIGRhdGVfaW5jX21pbnV0ZSBkYXRlX2luY19zZWNvbmQgJyArXG4gICAgICAnZGF0ZV9nZXRfeWVhciBkYXRlX2dldF9tb250aCBkYXRlX2dldF93ZWVrIGRhdGVfZ2V0X2RheSAnICtcbiAgICAgICdkYXRlX2dldF9ob3VyIGRhdGVfZ2V0X21pbnV0ZSBkYXRlX2dldF9zZWNvbmQgZGF0ZV9nZXRfd2Vla2RheSAnICtcbiAgICAgICdkYXRlX2dldF9kYXlfb2ZfeWVhciBkYXRlX2dldF9ob3VyX29mX3llYXIgZGF0ZV9nZXRfbWludXRlX29mX3llYXIgJyArXG4gICAgICAnZGF0ZV9nZXRfc2Vjb25kX29mX3llYXIgZGF0ZV95ZWFyX3NwYW4gZGF0ZV9tb250aF9zcGFuICcgK1xuICAgICAgJ2RhdGVfd2Vla19zcGFuIGRhdGVfZGF5X3NwYW4gZGF0ZV9ob3VyX3NwYW4gZGF0ZV9taW51dGVfc3BhbiAnICtcbiAgICAgICdkYXRlX3NlY29uZF9zcGFuIGRhdGVfY29tcGFyZV9kYXRldGltZSBkYXRlX2NvbXBhcmVfZGF0ZSAnICtcbiAgICAgICdkYXRlX2NvbXBhcmVfdGltZSBkYXRlX2RhdGVfb2YgZGF0ZV90aW1lX29mIGRhdGVfZGF0ZXRpbWVfc3RyaW5nICcgK1xuICAgICAgJ2RhdGVfZGF0ZV9zdHJpbmcgZGF0ZV90aW1lX3N0cmluZyBkYXRlX2RheXNfaW5fbW9udGggJyArXG4gICAgICAnZGF0ZV9kYXlzX2luX3llYXIgZGF0ZV9sZWFwX3llYXIgZGF0ZV9pc190b2RheSBkYXRlX3NldF90aW1lem9uZSAnICtcbiAgICAgICdkYXRlX2dldF90aW1lem9uZSBnYW1lX3NldF9zcGVlZCBnYW1lX2dldF9zcGVlZCBtb3Rpb25fc2V0ICcgK1xuICAgICAgJ21vdGlvbl9hZGQgcGxhY2VfZnJlZSBwbGFjZV9lbXB0eSBwbGFjZV9tZWV0aW5nIHBsYWNlX3NuYXBwZWQgJyArXG4gICAgICAnbW92ZV9yYW5kb20gbW92ZV9zbmFwIG1vdmVfdG93YXJkc19wb2ludCBtb3ZlX2NvbnRhY3Rfc29saWQgJyArXG4gICAgICAnbW92ZV9jb250YWN0X2FsbCBtb3ZlX291dHNpZGVfc29saWQgbW92ZV9vdXRzaWRlX2FsbCAnICtcbiAgICAgICdtb3ZlX2JvdW5jZV9zb2xpZCBtb3ZlX2JvdW5jZV9hbGwgbW92ZV93cmFwIGRpc3RhbmNlX3RvX3BvaW50ICcgK1xuICAgICAgJ2Rpc3RhbmNlX3RvX29iamVjdCBwb3NpdGlvbl9lbXB0eSBwb3NpdGlvbl9tZWV0aW5nIHBhdGhfc3RhcnQgJyArXG4gICAgICAncGF0aF9lbmQgbXBfbGluZWFyX3N0ZXAgbXBfcG90ZW50aWFsX3N0ZXAgbXBfbGluZWFyX3N0ZXBfb2JqZWN0ICcgK1xuICAgICAgJ21wX3BvdGVudGlhbF9zdGVwX29iamVjdCBtcF9wb3RlbnRpYWxfc2V0dGluZ3MgbXBfbGluZWFyX3BhdGggJyArXG4gICAgICAnbXBfcG90ZW50aWFsX3BhdGggbXBfbGluZWFyX3BhdGhfb2JqZWN0IG1wX3BvdGVudGlhbF9wYXRoX29iamVjdCAnICtcbiAgICAgICdtcF9ncmlkX2NyZWF0ZSBtcF9ncmlkX2Rlc3Ryb3kgbXBfZ3JpZF9jbGVhcl9hbGwgbXBfZ3JpZF9jbGVhcl9jZWxsICcgK1xuICAgICAgJ21wX2dyaWRfY2xlYXJfcmVjdGFuZ2xlIG1wX2dyaWRfYWRkX2NlbGwgbXBfZ3JpZF9nZXRfY2VsbCAnICtcbiAgICAgICdtcF9ncmlkX2FkZF9yZWN0YW5nbGUgbXBfZ3JpZF9hZGRfaW5zdGFuY2VzIG1wX2dyaWRfcGF0aCAnICtcbiAgICAgICdtcF9ncmlkX2RyYXcgbXBfZ3JpZF90b19kc19ncmlkIGNvbGxpc2lvbl9wb2ludCBjb2xsaXNpb25fcmVjdGFuZ2xlICcgK1xuICAgICAgJ2NvbGxpc2lvbl9jaXJjbGUgY29sbGlzaW9uX2VsbGlwc2UgY29sbGlzaW9uX2xpbmUgJyArXG4gICAgICAnY29sbGlzaW9uX3BvaW50X2xpc3QgY29sbGlzaW9uX3JlY3RhbmdsZV9saXN0IGNvbGxpc2lvbl9jaXJjbGVfbGlzdCAnICtcbiAgICAgICdjb2xsaXNpb25fZWxsaXBzZV9saXN0IGNvbGxpc2lvbl9saW5lX2xpc3QgaW5zdGFuY2VfcG9zaXRpb25fbGlzdCAnICtcbiAgICAgICdpbnN0YW5jZV9wbGFjZV9saXN0IHBvaW50X2luX3JlY3RhbmdsZSAnICtcbiAgICAgICdwb2ludF9pbl90cmlhbmdsZSBwb2ludF9pbl9jaXJjbGUgcmVjdGFuZ2xlX2luX3JlY3RhbmdsZSAnICtcbiAgICAgICdyZWN0YW5nbGVfaW5fdHJpYW5nbGUgcmVjdGFuZ2xlX2luX2NpcmNsZSBpbnN0YW5jZV9maW5kICcgK1xuICAgICAgJ2luc3RhbmNlX2V4aXN0cyBpbnN0YW5jZV9udW1iZXIgaW5zdGFuY2VfcG9zaXRpb24gaW5zdGFuY2VfbmVhcmVzdCAnICtcbiAgICAgICdpbnN0YW5jZV9mdXJ0aGVzdCBpbnN0YW5jZV9wbGFjZSBpbnN0YW5jZV9jcmVhdGVfZGVwdGggJyArXG4gICAgICAnaW5zdGFuY2VfY3JlYXRlX2xheWVyIGluc3RhbmNlX2NvcHkgaW5zdGFuY2VfY2hhbmdlIGluc3RhbmNlX2Rlc3Ryb3kgJyArXG4gICAgICAncG9zaXRpb25fZGVzdHJveSBwb3NpdGlvbl9jaGFuZ2UgaW5zdGFuY2VfaWRfZ2V0ICcgK1xuICAgICAgJ2luc3RhbmNlX2RlYWN0aXZhdGVfYWxsIGluc3RhbmNlX2RlYWN0aXZhdGVfb2JqZWN0ICcgK1xuICAgICAgJ2luc3RhbmNlX2RlYWN0aXZhdGVfcmVnaW9uIGluc3RhbmNlX2FjdGl2YXRlX2FsbCAnICtcbiAgICAgICdpbnN0YW5jZV9hY3RpdmF0ZV9vYmplY3QgaW5zdGFuY2VfYWN0aXZhdGVfcmVnaW9uIHJvb21fZ290byAnICtcbiAgICAgICdyb29tX2dvdG9fcHJldmlvdXMgcm9vbV9nb3RvX25leHQgcm9vbV9wcmV2aW91cyByb29tX25leHQgJyArXG4gICAgICAncm9vbV9yZXN0YXJ0IGdhbWVfZW5kIGdhbWVfcmVzdGFydCBnYW1lX2xvYWQgZ2FtZV9zYXZlICcgK1xuICAgICAgJ2dhbWVfc2F2ZV9idWZmZXIgZ2FtZV9sb2FkX2J1ZmZlciBldmVudF9wZXJmb3JtIGV2ZW50X3VzZXIgJyArXG4gICAgICAnZXZlbnRfcGVyZm9ybV9vYmplY3QgZXZlbnRfaW5oZXJpdGVkIHNob3dfZGVidWdfbWVzc2FnZSAnICtcbiAgICAgICdzaG93X2RlYnVnX292ZXJsYXkgZGVidWdfZXZlbnQgZGVidWdfZ2V0X2NhbGxzdGFjayBhbGFybV9nZXQgJyArXG4gICAgICAnYWxhcm1fc2V0IGZvbnRfdGV4dHVyZV9wYWdlX3NpemUga2V5Ym9hcmRfc2V0X21hcCBrZXlib2FyZF9nZXRfbWFwICcgK1xuICAgICAgJ2tleWJvYXJkX3Vuc2V0X21hcCBrZXlib2FyZF9jaGVjayBrZXlib2FyZF9jaGVja19wcmVzc2VkICcgK1xuICAgICAgJ2tleWJvYXJkX2NoZWNrX3JlbGVhc2VkIGtleWJvYXJkX2NoZWNrX2RpcmVjdCBrZXlib2FyZF9nZXRfbnVtbG9jayAnICtcbiAgICAgICdrZXlib2FyZF9zZXRfbnVtbG9jayBrZXlib2FyZF9rZXlfcHJlc3Mga2V5Ym9hcmRfa2V5X3JlbGVhc2UgJyArXG4gICAgICAna2V5Ym9hcmRfY2xlYXIgaW9fY2xlYXIgbW91c2VfY2hlY2tfYnV0dG9uICcgK1xuICAgICAgJ21vdXNlX2NoZWNrX2J1dHRvbl9wcmVzc2VkIG1vdXNlX2NoZWNrX2J1dHRvbl9yZWxlYXNlZCAnICtcbiAgICAgICdtb3VzZV93aGVlbF91cCBtb3VzZV93aGVlbF9kb3duIG1vdXNlX2NsZWFyIGRyYXdfc2VsZiBkcmF3X3Nwcml0ZSAnICtcbiAgICAgICdkcmF3X3Nwcml0ZV9wb3MgZHJhd19zcHJpdGVfZXh0IGRyYXdfc3ByaXRlX3N0cmV0Y2hlZCAnICtcbiAgICAgICdkcmF3X3Nwcml0ZV9zdHJldGNoZWRfZXh0IGRyYXdfc3ByaXRlX3RpbGVkIGRyYXdfc3ByaXRlX3RpbGVkX2V4dCAnICtcbiAgICAgICdkcmF3X3Nwcml0ZV9wYXJ0IGRyYXdfc3ByaXRlX3BhcnRfZXh0IGRyYXdfc3ByaXRlX2dlbmVyYWwgZHJhd19jbGVhciAnICtcbiAgICAgICdkcmF3X2NsZWFyX2FscGhhIGRyYXdfcG9pbnQgZHJhd19saW5lIGRyYXdfbGluZV93aWR0aCBkcmF3X3JlY3RhbmdsZSAnICtcbiAgICAgICdkcmF3X3JvdW5kcmVjdCBkcmF3X3JvdW5kcmVjdF9leHQgZHJhd190cmlhbmdsZSBkcmF3X2NpcmNsZSAnICtcbiAgICAgICdkcmF3X2VsbGlwc2UgZHJhd19zZXRfY2lyY2xlX3ByZWNpc2lvbiBkcmF3X2Fycm93IGRyYXdfYnV0dG9uICcgK1xuICAgICAgJ2RyYXdfcGF0aCBkcmF3X2hlYWx0aGJhciBkcmF3X2dldHBpeGVsIGRyYXdfZ2V0cGl4ZWxfZXh0ICcgK1xuICAgICAgJ2RyYXdfc2V0X2NvbG91ciBkcmF3X3NldF9jb2xvciBkcmF3X3NldF9hbHBoYSBkcmF3X2dldF9jb2xvdXIgJyArXG4gICAgICAnZHJhd19nZXRfY29sb3IgZHJhd19nZXRfYWxwaGEgbWVyZ2VfY29sb3VyIG1ha2VfY29sb3VyX3JnYiAnICtcbiAgICAgICdtYWtlX2NvbG91cl9oc3YgY29sb3VyX2dldF9yZWQgY29sb3VyX2dldF9ncmVlbiBjb2xvdXJfZ2V0X2JsdWUgJyArXG4gICAgICAnY29sb3VyX2dldF9odWUgY29sb3VyX2dldF9zYXR1cmF0aW9uIGNvbG91cl9nZXRfdmFsdWUgbWVyZ2VfY29sb3IgJyArXG4gICAgICAnbWFrZV9jb2xvcl9yZ2IgbWFrZV9jb2xvcl9oc3YgY29sb3JfZ2V0X3JlZCBjb2xvcl9nZXRfZ3JlZW4gJyArXG4gICAgICAnY29sb3JfZ2V0X2JsdWUgY29sb3JfZ2V0X2h1ZSBjb2xvcl9nZXRfc2F0dXJhdGlvbiBjb2xvcl9nZXRfdmFsdWUgJyArXG4gICAgICAnbWVyZ2VfY29sb3Igc2NyZWVuX3NhdmUgc2NyZWVuX3NhdmVfcGFydCBkcmF3X3NldF9mb250ICcgK1xuICAgICAgJ2RyYXdfc2V0X2hhbGlnbiBkcmF3X3NldF92YWxpZ24gZHJhd190ZXh0IGRyYXdfdGV4dF9leHQgc3RyaW5nX3dpZHRoICcgK1xuICAgICAgJ3N0cmluZ19oZWlnaHQgc3RyaW5nX3dpZHRoX2V4dCBzdHJpbmdfaGVpZ2h0X2V4dCAnICtcbiAgICAgICdkcmF3X3RleHRfdHJhbnNmb3JtZWQgZHJhd190ZXh0X2V4dF90cmFuc2Zvcm1lZCBkcmF3X3RleHRfY29sb3VyICcgK1xuICAgICAgJ2RyYXdfdGV4dF9leHRfY29sb3VyIGRyYXdfdGV4dF90cmFuc2Zvcm1lZF9jb2xvdXIgJyArXG4gICAgICAnZHJhd190ZXh0X2V4dF90cmFuc2Zvcm1lZF9jb2xvdXIgZHJhd190ZXh0X2NvbG9yIGRyYXdfdGV4dF9leHRfY29sb3IgJyArXG4gICAgICAnZHJhd190ZXh0X3RyYW5zZm9ybWVkX2NvbG9yIGRyYXdfdGV4dF9leHRfdHJhbnNmb3JtZWRfY29sb3IgJyArXG4gICAgICAnZHJhd19wb2ludF9jb2xvdXIgZHJhd19saW5lX2NvbG91ciBkcmF3X2xpbmVfd2lkdGhfY29sb3VyICcgK1xuICAgICAgJ2RyYXdfcmVjdGFuZ2xlX2NvbG91ciBkcmF3X3JvdW5kcmVjdF9jb2xvdXIgJyArXG4gICAgICAnZHJhd19yb3VuZHJlY3RfY29sb3VyX2V4dCBkcmF3X3RyaWFuZ2xlX2NvbG91ciBkcmF3X2NpcmNsZV9jb2xvdXIgJyArXG4gICAgICAnZHJhd19lbGxpcHNlX2NvbG91ciBkcmF3X3BvaW50X2NvbG9yIGRyYXdfbGluZV9jb2xvciAnICtcbiAgICAgICdkcmF3X2xpbmVfd2lkdGhfY29sb3IgZHJhd19yZWN0YW5nbGVfY29sb3IgZHJhd19yb3VuZHJlY3RfY29sb3IgJyArXG4gICAgICAnZHJhd19yb3VuZHJlY3RfY29sb3JfZXh0IGRyYXdfdHJpYW5nbGVfY29sb3IgZHJhd19jaXJjbGVfY29sb3IgJyArXG4gICAgICAnZHJhd19lbGxpcHNlX2NvbG9yIGRyYXdfcHJpbWl0aXZlX2JlZ2luIGRyYXdfdmVydGV4ICcgK1xuICAgICAgJ2RyYXdfdmVydGV4X2NvbG91ciBkcmF3X3ZlcnRleF9jb2xvciBkcmF3X3ByaW1pdGl2ZV9lbmQgJyArXG4gICAgICAnc3ByaXRlX2dldF91dnMgZm9udF9nZXRfdXZzIHNwcml0ZV9nZXRfdGV4dHVyZSBmb250X2dldF90ZXh0dXJlICcgK1xuICAgICAgJ3RleHR1cmVfZ2V0X3dpZHRoIHRleHR1cmVfZ2V0X2hlaWdodCB0ZXh0dXJlX2dldF91dnMgJyArXG4gICAgICAnZHJhd19wcmltaXRpdmVfYmVnaW5fdGV4dHVyZSBkcmF3X3ZlcnRleF90ZXh0dXJlICcgK1xuICAgICAgJ2RyYXdfdmVydGV4X3RleHR1cmVfY29sb3VyIGRyYXdfdmVydGV4X3RleHR1cmVfY29sb3IgJyArXG4gICAgICAndGV4dHVyZV9nbG9iYWxfc2NhbGUgc3VyZmFjZV9jcmVhdGUgc3VyZmFjZV9jcmVhdGVfZXh0ICcgK1xuICAgICAgJ3N1cmZhY2VfcmVzaXplIHN1cmZhY2VfZnJlZSBzdXJmYWNlX2V4aXN0cyBzdXJmYWNlX2dldF93aWR0aCAnICtcbiAgICAgICdzdXJmYWNlX2dldF9oZWlnaHQgc3VyZmFjZV9nZXRfdGV4dHVyZSBzdXJmYWNlX3NldF90YXJnZXQgJyArXG4gICAgICAnc3VyZmFjZV9zZXRfdGFyZ2V0X2V4dCBzdXJmYWNlX3Jlc2V0X3RhcmdldCBzdXJmYWNlX2RlcHRoX2Rpc2FibGUgJyArXG4gICAgICAnc3VyZmFjZV9nZXRfZGVwdGhfZGlzYWJsZSBkcmF3X3N1cmZhY2UgZHJhd19zdXJmYWNlX3N0cmV0Y2hlZCAnICtcbiAgICAgICdkcmF3X3N1cmZhY2VfdGlsZWQgZHJhd19zdXJmYWNlX3BhcnQgZHJhd19zdXJmYWNlX2V4dCAnICtcbiAgICAgICdkcmF3X3N1cmZhY2Vfc3RyZXRjaGVkX2V4dCBkcmF3X3N1cmZhY2VfdGlsZWRfZXh0ICcgK1xuICAgICAgJ2RyYXdfc3VyZmFjZV9wYXJ0X2V4dCBkcmF3X3N1cmZhY2VfZ2VuZXJhbCBzdXJmYWNlX2dldHBpeGVsICcgK1xuICAgICAgJ3N1cmZhY2VfZ2V0cGl4ZWxfZXh0IHN1cmZhY2Vfc2F2ZSBzdXJmYWNlX3NhdmVfcGFydCBzdXJmYWNlX2NvcHkgJyArXG4gICAgICAnc3VyZmFjZV9jb3B5X3BhcnQgYXBwbGljYXRpb25fc3VyZmFjZV9kcmF3X2VuYWJsZSAnICtcbiAgICAgICdhcHBsaWNhdGlvbl9nZXRfcG9zaXRpb24gYXBwbGljYXRpb25fc3VyZmFjZV9lbmFibGUgJyArXG4gICAgICAnYXBwbGljYXRpb25fc3VyZmFjZV9pc19lbmFibGVkIGRpc3BsYXlfZ2V0X3dpZHRoIGRpc3BsYXlfZ2V0X2hlaWdodCAnICtcbiAgICAgICdkaXNwbGF5X2dldF9vcmllbnRhdGlvbiBkaXNwbGF5X2dldF9ndWlfd2lkdGggZGlzcGxheV9nZXRfZ3VpX2hlaWdodCAnICtcbiAgICAgICdkaXNwbGF5X3Jlc2V0IGRpc3BsYXlfbW91c2VfZ2V0X3ggZGlzcGxheV9tb3VzZV9nZXRfeSAnICtcbiAgICAgICdkaXNwbGF5X21vdXNlX3NldCBkaXNwbGF5X3NldF91aV92aXNpYmlsaXR5ICcgK1xuICAgICAgJ3dpbmRvd19zZXRfZnVsbHNjcmVlbiB3aW5kb3dfZ2V0X2Z1bGxzY3JlZW4gJyArXG4gICAgICAnd2luZG93X3NldF9jYXB0aW9uIHdpbmRvd19zZXRfbWluX3dpZHRoIHdpbmRvd19zZXRfbWF4X3dpZHRoICcgK1xuICAgICAgJ3dpbmRvd19zZXRfbWluX2hlaWdodCB3aW5kb3dfc2V0X21heF9oZWlnaHQgd2luZG93X2dldF92aXNpYmxlX3JlY3RzICcgK1xuICAgICAgJ3dpbmRvd19nZXRfY2FwdGlvbiB3aW5kb3dfc2V0X2N1cnNvciB3aW5kb3dfZ2V0X2N1cnNvciAnICtcbiAgICAgICd3aW5kb3dfc2V0X2NvbG91ciB3aW5kb3dfZ2V0X2NvbG91ciB3aW5kb3dfc2V0X2NvbG9yICcgK1xuICAgICAgJ3dpbmRvd19nZXRfY29sb3Igd2luZG93X3NldF9wb3NpdGlvbiB3aW5kb3dfc2V0X3NpemUgJyArXG4gICAgICAnd2luZG93X3NldF9yZWN0YW5nbGUgd2luZG93X2NlbnRlciB3aW5kb3dfZ2V0X3ggd2luZG93X2dldF95ICcgK1xuICAgICAgJ3dpbmRvd19nZXRfd2lkdGggd2luZG93X2dldF9oZWlnaHQgd2luZG93X21vdXNlX2dldF94ICcgK1xuICAgICAgJ3dpbmRvd19tb3VzZV9nZXRfeSB3aW5kb3dfbW91c2Vfc2V0IHdpbmRvd192aWV3X21vdXNlX2dldF94ICcgK1xuICAgICAgJ3dpbmRvd192aWV3X21vdXNlX2dldF95IHdpbmRvd192aWV3c19tb3VzZV9nZXRfeCAnICtcbiAgICAgICd3aW5kb3dfdmlld3NfbW91c2VfZ2V0X3kgYXVkaW9fbGlzdGVuZXJfcG9zaXRpb24gJyArXG4gICAgICAnYXVkaW9fbGlzdGVuZXJfdmVsb2NpdHkgYXVkaW9fbGlzdGVuZXJfb3JpZW50YXRpb24gJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9wb3NpdGlvbiBhdWRpb19lbWl0dGVyX2NyZWF0ZSBhdWRpb19lbWl0dGVyX2ZyZWUgJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9leGlzdHMgYXVkaW9fZW1pdHRlcl9waXRjaCBhdWRpb19lbWl0dGVyX3ZlbG9jaXR5ICcgK1xuICAgICAgJ2F1ZGlvX2VtaXR0ZXJfZmFsbG9mZiBhdWRpb19lbWl0dGVyX2dhaW4gYXVkaW9fcGxheV9zb3VuZCAnICtcbiAgICAgICdhdWRpb19wbGF5X3NvdW5kX29uIGF1ZGlvX3BsYXlfc291bmRfYXQgYXVkaW9fc3RvcF9zb3VuZCAnICtcbiAgICAgICdhdWRpb19yZXN1bWVfbXVzaWMgYXVkaW9fbXVzaWNfaXNfcGxheWluZyBhdWRpb19yZXN1bWVfc291bmQgJyArXG4gICAgICAnYXVkaW9fcGF1c2Vfc291bmQgYXVkaW9fcGF1c2VfbXVzaWMgYXVkaW9fY2hhbm5lbF9udW0gJyArXG4gICAgICAnYXVkaW9fc291bmRfbGVuZ3RoIGF1ZGlvX2dldF90eXBlIGF1ZGlvX2ZhbGxvZmZfc2V0X21vZGVsICcgK1xuICAgICAgJ2F1ZGlvX3BsYXlfbXVzaWMgYXVkaW9fc3RvcF9tdXNpYyBhdWRpb19tYXN0ZXJfZ2FpbiBhdWRpb19tdXNpY19nYWluICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX2dhaW4gYXVkaW9fc291bmRfcGl0Y2ggYXVkaW9fc3RvcF9hbGwgYXVkaW9fcmVzdW1lX2FsbCAnICtcbiAgICAgICdhdWRpb19wYXVzZV9hbGwgYXVkaW9faXNfcGxheWluZyBhdWRpb19pc19wYXVzZWQgYXVkaW9fZXhpc3RzICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX3NldF90cmFja19wb3NpdGlvbiBhdWRpb19zb3VuZF9nZXRfdHJhY2tfcG9zaXRpb24gJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9nZXRfZ2FpbiBhdWRpb19lbWl0dGVyX2dldF9waXRjaCBhdWRpb19lbWl0dGVyX2dldF94ICcgK1xuICAgICAgJ2F1ZGlvX2VtaXR0ZXJfZ2V0X3kgYXVkaW9fZW1pdHRlcl9nZXRfeiBhdWRpb19lbWl0dGVyX2dldF92eCAnICtcbiAgICAgICdhdWRpb19lbWl0dGVyX2dldF92eSBhdWRpb19lbWl0dGVyX2dldF92eiAnICtcbiAgICAgICdhdWRpb19saXN0ZW5lcl9zZXRfcG9zaXRpb24gYXVkaW9fbGlzdGVuZXJfc2V0X3ZlbG9jaXR5ICcgK1xuICAgICAgJ2F1ZGlvX2xpc3RlbmVyX3NldF9vcmllbnRhdGlvbiBhdWRpb19saXN0ZW5lcl9nZXRfZGF0YSAnICtcbiAgICAgICdhdWRpb19zZXRfbWFzdGVyX2dhaW4gYXVkaW9fZ2V0X21hc3Rlcl9nYWluIGF1ZGlvX3NvdW5kX2dldF9nYWluICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX2dldF9waXRjaCBhdWRpb19nZXRfbmFtZSBhdWRpb19zb3VuZF9zZXRfdHJhY2tfcG9zaXRpb24gJyArXG4gICAgICAnYXVkaW9fc291bmRfZ2V0X3RyYWNrX3Bvc2l0aW9uIGF1ZGlvX2NyZWF0ZV9zdHJlYW0gJyArXG4gICAgICAnYXVkaW9fZGVzdHJveV9zdHJlYW0gYXVkaW9fY3JlYXRlX3N5bmNfZ3JvdXAgJyArXG4gICAgICAnYXVkaW9fZGVzdHJveV9zeW5jX2dyb3VwIGF1ZGlvX3BsYXlfaW5fc3luY19ncm91cCAnICtcbiAgICAgICdhdWRpb19zdGFydF9zeW5jX2dyb3VwIGF1ZGlvX3N0b3Bfc3luY19ncm91cCBhdWRpb19wYXVzZV9zeW5jX2dyb3VwICcgK1xuICAgICAgJ2F1ZGlvX3Jlc3VtZV9zeW5jX2dyb3VwIGF1ZGlvX3N5bmNfZ3JvdXBfZ2V0X3RyYWNrX3BvcyAnICtcbiAgICAgICdhdWRpb19zeW5jX2dyb3VwX2RlYnVnIGF1ZGlvX3N5bmNfZ3JvdXBfaXNfcGxheWluZyBhdWRpb19kZWJ1ZyAnICtcbiAgICAgICdhdWRpb19ncm91cF9sb2FkIGF1ZGlvX2dyb3VwX3VubG9hZCBhdWRpb19ncm91cF9pc19sb2FkZWQgJyArXG4gICAgICAnYXVkaW9fZ3JvdXBfbG9hZF9wcm9ncmVzcyBhdWRpb19ncm91cF9uYW1lIGF1ZGlvX2dyb3VwX3N0b3BfYWxsICcgK1xuICAgICAgJ2F1ZGlvX2dyb3VwX3NldF9nYWluIGF1ZGlvX2NyZWF0ZV9idWZmZXJfc291bmQgJyArXG4gICAgICAnYXVkaW9fZnJlZV9idWZmZXJfc291bmQgYXVkaW9fY3JlYXRlX3BsYXlfcXVldWUgJyArXG4gICAgICAnYXVkaW9fZnJlZV9wbGF5X3F1ZXVlIGF1ZGlvX3F1ZXVlX3NvdW5kIGF1ZGlvX2dldF9yZWNvcmRlcl9jb3VudCAnICtcbiAgICAgICdhdWRpb19nZXRfcmVjb3JkZXJfaW5mbyBhdWRpb19zdGFydF9yZWNvcmRpbmcgYXVkaW9fc3RvcF9yZWNvcmRpbmcgJyArXG4gICAgICAnYXVkaW9fc291bmRfZ2V0X2xpc3RlbmVyX21hc2sgYXVkaW9fZW1pdHRlcl9nZXRfbGlzdGVuZXJfbWFzayAnICtcbiAgICAgICdhdWRpb19nZXRfbGlzdGVuZXJfbWFzayBhdWRpb19zb3VuZF9zZXRfbGlzdGVuZXJfbWFzayAnICtcbiAgICAgICdhdWRpb19lbWl0dGVyX3NldF9saXN0ZW5lcl9tYXNrIGF1ZGlvX3NldF9saXN0ZW5lcl9tYXNrICcgK1xuICAgICAgJ2F1ZGlvX2dldF9saXN0ZW5lcl9jb3VudCBhdWRpb19nZXRfbGlzdGVuZXJfaW5mbyBhdWRpb19zeXN0ZW0gJyArXG4gICAgICAnc2hvd19tZXNzYWdlIHNob3dfbWVzc2FnZV9hc3luYyBjbGlja2FibGVfYWRkIGNsaWNrYWJsZV9hZGRfZXh0ICcgK1xuICAgICAgJ2NsaWNrYWJsZV9jaGFuZ2UgY2xpY2thYmxlX2NoYW5nZV9leHQgY2xpY2thYmxlX2RlbGV0ZSAnICtcbiAgICAgICdjbGlja2FibGVfZXhpc3RzIGNsaWNrYWJsZV9zZXRfc3R5bGUgc2hvd19xdWVzdGlvbiAnICtcbiAgICAgICdzaG93X3F1ZXN0aW9uX2FzeW5jIGdldF9pbnRlZ2VyIGdldF9zdHJpbmcgZ2V0X2ludGVnZXJfYXN5bmMgJyArXG4gICAgICAnZ2V0X3N0cmluZ19hc3luYyBnZXRfbG9naW5fYXN5bmMgZ2V0X29wZW5fZmlsZW5hbWUgZ2V0X3NhdmVfZmlsZW5hbWUgJyArXG4gICAgICAnZ2V0X29wZW5fZmlsZW5hbWVfZXh0IGdldF9zYXZlX2ZpbGVuYW1lX2V4dCBzaG93X2Vycm9yICcgK1xuICAgICAgJ2hpZ2hzY29yZV9jbGVhciBoaWdoc2NvcmVfYWRkIGhpZ2hzY29yZV92YWx1ZSBoaWdoc2NvcmVfbmFtZSAnICtcbiAgICAgICdkcmF3X2hpZ2hzY29yZSBzcHJpdGVfZXhpc3RzIHNwcml0ZV9nZXRfbmFtZSBzcHJpdGVfZ2V0X251bWJlciAnICtcbiAgICAgICdzcHJpdGVfZ2V0X3dpZHRoIHNwcml0ZV9nZXRfaGVpZ2h0IHNwcml0ZV9nZXRfeG9mZnNldCAnICtcbiAgICAgICdzcHJpdGVfZ2V0X3lvZmZzZXQgc3ByaXRlX2dldF9iYm94X2xlZnQgc3ByaXRlX2dldF9iYm94X3JpZ2h0ICcgK1xuICAgICAgJ3Nwcml0ZV9nZXRfYmJveF90b3Agc3ByaXRlX2dldF9iYm94X2JvdHRvbSBzcHJpdGVfc2F2ZSAnICtcbiAgICAgICdzcHJpdGVfc2F2ZV9zdHJpcCBzcHJpdGVfc2V0X2NhY2hlX3NpemUgc3ByaXRlX3NldF9jYWNoZV9zaXplX2V4dCAnICtcbiAgICAgICdzcHJpdGVfZ2V0X3RwZSBzcHJpdGVfcHJlZmV0Y2ggc3ByaXRlX3ByZWZldGNoX211bHRpIHNwcml0ZV9mbHVzaCAnICtcbiAgICAgICdzcHJpdGVfZmx1c2hfbXVsdGkgc3ByaXRlX3NldF9zcGVlZCBzcHJpdGVfZ2V0X3NwZWVkX3R5cGUgJyArXG4gICAgICAnc3ByaXRlX2dldF9zcGVlZCBmb250X2V4aXN0cyBmb250X2dldF9uYW1lIGZvbnRfZ2V0X2ZvbnRuYW1lICcgK1xuICAgICAgJ2ZvbnRfZ2V0X2JvbGQgZm9udF9nZXRfaXRhbGljIGZvbnRfZ2V0X2ZpcnN0IGZvbnRfZ2V0X2xhc3QgJyArXG4gICAgICAnZm9udF9nZXRfc2l6ZSBmb250X3NldF9jYWNoZV9zaXplIHBhdGhfZXhpc3RzIHBhdGhfZ2V0X25hbWUgJyArXG4gICAgICAncGF0aF9nZXRfbGVuZ3RoIHBhdGhfZ2V0X3RpbWUgcGF0aF9nZXRfa2luZCBwYXRoX2dldF9jbG9zZWQgJyArXG4gICAgICAncGF0aF9nZXRfcHJlY2lzaW9uIHBhdGhfZ2V0X251bWJlciBwYXRoX2dldF9wb2ludF94IHBhdGhfZ2V0X3BvaW50X3kgJyArXG4gICAgICAncGF0aF9nZXRfcG9pbnRfc3BlZWQgcGF0aF9nZXRfeCBwYXRoX2dldF95IHBhdGhfZ2V0X3NwZWVkICcgK1xuICAgICAgJ3NjcmlwdF9leGlzdHMgc2NyaXB0X2dldF9uYW1lIHRpbWVsaW5lX2FkZCB0aW1lbGluZV9kZWxldGUgJyArXG4gICAgICAndGltZWxpbmVfY2xlYXIgdGltZWxpbmVfZXhpc3RzIHRpbWVsaW5lX2dldF9uYW1lICcgK1xuICAgICAgJ3RpbWVsaW5lX21vbWVudF9jbGVhciB0aW1lbGluZV9tb21lbnRfYWRkX3NjcmlwdCB0aW1lbGluZV9zaXplICcgK1xuICAgICAgJ3RpbWVsaW5lX21heF9tb21lbnQgb2JqZWN0X2V4aXN0cyBvYmplY3RfZ2V0X25hbWUgb2JqZWN0X2dldF9zcHJpdGUgJyArXG4gICAgICAnb2JqZWN0X2dldF9zb2xpZCBvYmplY3RfZ2V0X3Zpc2libGUgb2JqZWN0X2dldF9wZXJzaXN0ZW50ICcgK1xuICAgICAgJ29iamVjdF9nZXRfbWFzayBvYmplY3RfZ2V0X3BhcmVudCBvYmplY3RfZ2V0X3BoeXNpY3MgJyArXG4gICAgICAnb2JqZWN0X2lzX2FuY2VzdG9yIHJvb21fZXhpc3RzIHJvb21fZ2V0X25hbWUgc3ByaXRlX3NldF9vZmZzZXQgJyArXG4gICAgICAnc3ByaXRlX2R1cGxpY2F0ZSBzcHJpdGVfYXNzaWduIHNwcml0ZV9tZXJnZSBzcHJpdGVfYWRkICcgK1xuICAgICAgJ3Nwcml0ZV9yZXBsYWNlIHNwcml0ZV9jcmVhdGVfZnJvbV9zdXJmYWNlIHNwcml0ZV9hZGRfZnJvbV9zdXJmYWNlICcgK1xuICAgICAgJ3Nwcml0ZV9kZWxldGUgc3ByaXRlX3NldF9hbHBoYV9mcm9tX3Nwcml0ZSBzcHJpdGVfY29sbGlzaW9uX21hc2sgJyArXG4gICAgICAnZm9udF9hZGRfZW5hYmxlX2FhIGZvbnRfYWRkX2dldF9lbmFibGVfYWEgZm9udF9hZGQgZm9udF9hZGRfc3ByaXRlICcgK1xuICAgICAgJ2ZvbnRfYWRkX3Nwcml0ZV9leHQgZm9udF9yZXBsYWNlIGZvbnRfcmVwbGFjZV9zcHJpdGUgJyArXG4gICAgICAnZm9udF9yZXBsYWNlX3Nwcml0ZV9leHQgZm9udF9kZWxldGUgcGF0aF9zZXRfa2luZCBwYXRoX3NldF9jbG9zZWQgJyArXG4gICAgICAncGF0aF9zZXRfcHJlY2lzaW9uIHBhdGhfYWRkIHBhdGhfYXNzaWduIHBhdGhfZHVwbGljYXRlIHBhdGhfYXBwZW5kICcgK1xuICAgICAgJ3BhdGhfZGVsZXRlIHBhdGhfYWRkX3BvaW50IHBhdGhfaW5zZXJ0X3BvaW50IHBhdGhfY2hhbmdlX3BvaW50ICcgK1xuICAgICAgJ3BhdGhfZGVsZXRlX3BvaW50IHBhdGhfY2xlYXJfcG9pbnRzIHBhdGhfcmV2ZXJzZSBwYXRoX21pcnJvciAnICtcbiAgICAgICdwYXRoX2ZsaXAgcGF0aF9yb3RhdGUgcGF0aF9yZXNjYWxlIHBhdGhfc2hpZnQgc2NyaXB0X2V4ZWN1dGUgJyArXG4gICAgICAnb2JqZWN0X3NldF9zcHJpdGUgb2JqZWN0X3NldF9zb2xpZCBvYmplY3Rfc2V0X3Zpc2libGUgJyArXG4gICAgICAnb2JqZWN0X3NldF9wZXJzaXN0ZW50IG9iamVjdF9zZXRfbWFzayByb29tX3NldF93aWR0aCByb29tX3NldF9oZWlnaHQgJyArXG4gICAgICAncm9vbV9zZXRfcGVyc2lzdGVudCByb29tX3NldF9iYWNrZ3JvdW5kX2NvbG91ciAnICtcbiAgICAgICdyb29tX3NldF9iYWNrZ3JvdW5kX2NvbG9yIHJvb21fc2V0X3ZpZXcgcm9vbV9zZXRfdmlld3BvcnQgJyArXG4gICAgICAncm9vbV9nZXRfdmlld3BvcnQgcm9vbV9zZXRfdmlld19lbmFibGVkIHJvb21fYWRkIHJvb21fZHVwbGljYXRlICcgK1xuICAgICAgJ3Jvb21fYXNzaWduIHJvb21faW5zdGFuY2VfYWRkIHJvb21faW5zdGFuY2VfY2xlYXIgcm9vbV9nZXRfY2FtZXJhICcgK1xuICAgICAgJ3Jvb21fc2V0X2NhbWVyYSBhc3NldF9nZXRfaW5kZXggYXNzZXRfZ2V0X3R5cGUgJyArXG4gICAgICAnZmlsZV90ZXh0X29wZW5fZnJvbV9zdHJpbmcgZmlsZV90ZXh0X29wZW5fcmVhZCBmaWxlX3RleHRfb3Blbl93cml0ZSAnICtcbiAgICAgICdmaWxlX3RleHRfb3Blbl9hcHBlbmQgZmlsZV90ZXh0X2Nsb3NlIGZpbGVfdGV4dF93cml0ZV9zdHJpbmcgJyArXG4gICAgICAnZmlsZV90ZXh0X3dyaXRlX3JlYWwgZmlsZV90ZXh0X3dyaXRlbG4gZmlsZV90ZXh0X3JlYWRfc3RyaW5nICcgK1xuICAgICAgJ2ZpbGVfdGV4dF9yZWFkX3JlYWwgZmlsZV90ZXh0X3JlYWRsbiBmaWxlX3RleHRfZW9mIGZpbGVfdGV4dF9lb2xuICcgK1xuICAgICAgJ2ZpbGVfZXhpc3RzIGZpbGVfZGVsZXRlIGZpbGVfcmVuYW1lIGZpbGVfY29weSBkaXJlY3RvcnlfZXhpc3RzICcgK1xuICAgICAgJ2RpcmVjdG9yeV9jcmVhdGUgZGlyZWN0b3J5X2Rlc3Ryb3kgZmlsZV9maW5kX2ZpcnN0IGZpbGVfZmluZF9uZXh0ICcgK1xuICAgICAgJ2ZpbGVfZmluZF9jbG9zZSBmaWxlX2F0dHJpYnV0ZXMgZmlsZW5hbWVfbmFtZSBmaWxlbmFtZV9wYXRoICcgK1xuICAgICAgJ2ZpbGVuYW1lX2RpciBmaWxlbmFtZV9kcml2ZSBmaWxlbmFtZV9leHQgZmlsZW5hbWVfY2hhbmdlX2V4dCAnICtcbiAgICAgICdmaWxlX2Jpbl9vcGVuIGZpbGVfYmluX3Jld3JpdGUgZmlsZV9iaW5fY2xvc2UgZmlsZV9iaW5fcG9zaXRpb24gJyArXG4gICAgICAnZmlsZV9iaW5fc2l6ZSBmaWxlX2Jpbl9zZWVrIGZpbGVfYmluX3dyaXRlX2J5dGUgZmlsZV9iaW5fcmVhZF9ieXRlICcgK1xuICAgICAgJ3BhcmFtZXRlcl9jb3VudCBwYXJhbWV0ZXJfc3RyaW5nIGVudmlyb25tZW50X2dldF92YXJpYWJsZSAnICtcbiAgICAgICdpbmlfb3Blbl9mcm9tX3N0cmluZyBpbmlfb3BlbiBpbmlfY2xvc2UgaW5pX3JlYWRfc3RyaW5nICcgK1xuICAgICAgJ2luaV9yZWFkX3JlYWwgaW5pX3dyaXRlX3N0cmluZyBpbmlfd3JpdGVfcmVhbCBpbmlfa2V5X2V4aXN0cyAnICtcbiAgICAgICdpbmlfc2VjdGlvbl9leGlzdHMgaW5pX2tleV9kZWxldGUgaW5pX3NlY3Rpb25fZGVsZXRlICcgK1xuICAgICAgJ2RzX3NldF9wcmVjaXNpb24gZHNfZXhpc3RzIGRzX3N0YWNrX2NyZWF0ZSBkc19zdGFja19kZXN0cm95ICcgK1xuICAgICAgJ2RzX3N0YWNrX2NsZWFyIGRzX3N0YWNrX2NvcHkgZHNfc3RhY2tfc2l6ZSBkc19zdGFja19lbXB0eSAnICtcbiAgICAgICdkc19zdGFja19wdXNoIGRzX3N0YWNrX3BvcCBkc19zdGFja190b3AgZHNfc3RhY2tfd3JpdGUgZHNfc3RhY2tfcmVhZCAnICtcbiAgICAgICdkc19xdWV1ZV9jcmVhdGUgZHNfcXVldWVfZGVzdHJveSBkc19xdWV1ZV9jbGVhciBkc19xdWV1ZV9jb3B5ICcgK1xuICAgICAgJ2RzX3F1ZXVlX3NpemUgZHNfcXVldWVfZW1wdHkgZHNfcXVldWVfZW5xdWV1ZSBkc19xdWV1ZV9kZXF1ZXVlICcgK1xuICAgICAgJ2RzX3F1ZXVlX2hlYWQgZHNfcXVldWVfdGFpbCBkc19xdWV1ZV93cml0ZSBkc19xdWV1ZV9yZWFkICcgK1xuICAgICAgJ2RzX2xpc3RfY3JlYXRlIGRzX2xpc3RfZGVzdHJveSBkc19saXN0X2NsZWFyIGRzX2xpc3RfY29weSAnICtcbiAgICAgICdkc19saXN0X3NpemUgZHNfbGlzdF9lbXB0eSBkc19saXN0X2FkZCBkc19saXN0X2luc2VydCAnICtcbiAgICAgICdkc19saXN0X3JlcGxhY2UgZHNfbGlzdF9kZWxldGUgZHNfbGlzdF9maW5kX2luZGV4IGRzX2xpc3RfZmluZF92YWx1ZSAnICtcbiAgICAgICdkc19saXN0X21hcmtfYXNfbGlzdCBkc19saXN0X21hcmtfYXNfbWFwIGRzX2xpc3Rfc29ydCAnICtcbiAgICAgICdkc19saXN0X3NodWZmbGUgZHNfbGlzdF93cml0ZSBkc19saXN0X3JlYWQgZHNfbGlzdF9zZXQgZHNfbWFwX2NyZWF0ZSAnICtcbiAgICAgICdkc19tYXBfZGVzdHJveSBkc19tYXBfY2xlYXIgZHNfbWFwX2NvcHkgZHNfbWFwX3NpemUgZHNfbWFwX2VtcHR5ICcgK1xuICAgICAgJ2RzX21hcF9hZGQgZHNfbWFwX2FkZF9saXN0IGRzX21hcF9hZGRfbWFwIGRzX21hcF9yZXBsYWNlICcgK1xuICAgICAgJ2RzX21hcF9yZXBsYWNlX21hcCBkc19tYXBfcmVwbGFjZV9saXN0IGRzX21hcF9kZWxldGUgZHNfbWFwX2V4aXN0cyAnICtcbiAgICAgICdkc19tYXBfZmluZF92YWx1ZSBkc19tYXBfZmluZF9wcmV2aW91cyBkc19tYXBfZmluZF9uZXh0ICcgK1xuICAgICAgJ2RzX21hcF9maW5kX2ZpcnN0IGRzX21hcF9maW5kX2xhc3QgZHNfbWFwX3dyaXRlIGRzX21hcF9yZWFkICcgK1xuICAgICAgJ2RzX21hcF9zZWN1cmVfc2F2ZSBkc19tYXBfc2VjdXJlX2xvYWQgZHNfbWFwX3NlY3VyZV9sb2FkX2J1ZmZlciAnICtcbiAgICAgICdkc19tYXBfc2VjdXJlX3NhdmVfYnVmZmVyIGRzX21hcF9zZXQgZHNfcHJpb3JpdHlfY3JlYXRlICcgK1xuICAgICAgJ2RzX3ByaW9yaXR5X2Rlc3Ryb3kgZHNfcHJpb3JpdHlfY2xlYXIgZHNfcHJpb3JpdHlfY29weSAnICtcbiAgICAgICdkc19wcmlvcml0eV9zaXplIGRzX3ByaW9yaXR5X2VtcHR5IGRzX3ByaW9yaXR5X2FkZCAnICtcbiAgICAgICdkc19wcmlvcml0eV9jaGFuZ2VfcHJpb3JpdHkgZHNfcHJpb3JpdHlfZmluZF9wcmlvcml0eSAnICtcbiAgICAgICdkc19wcmlvcml0eV9kZWxldGVfdmFsdWUgZHNfcHJpb3JpdHlfZGVsZXRlX21pbiBkc19wcmlvcml0eV9maW5kX21pbiAnICtcbiAgICAgICdkc19wcmlvcml0eV9kZWxldGVfbWF4IGRzX3ByaW9yaXR5X2ZpbmRfbWF4IGRzX3ByaW9yaXR5X3dyaXRlICcgK1xuICAgICAgJ2RzX3ByaW9yaXR5X3JlYWQgZHNfZ3JpZF9jcmVhdGUgZHNfZ3JpZF9kZXN0cm95IGRzX2dyaWRfY29weSAnICtcbiAgICAgICdkc19ncmlkX3Jlc2l6ZSBkc19ncmlkX3dpZHRoIGRzX2dyaWRfaGVpZ2h0IGRzX2dyaWRfY2xlYXIgJyArXG4gICAgICAnZHNfZ3JpZF9zZXQgZHNfZ3JpZF9hZGQgZHNfZ3JpZF9tdWx0aXBseSBkc19ncmlkX3NldF9yZWdpb24gJyArXG4gICAgICAnZHNfZ3JpZF9hZGRfcmVnaW9uIGRzX2dyaWRfbXVsdGlwbHlfcmVnaW9uIGRzX2dyaWRfc2V0X2Rpc2sgJyArXG4gICAgICAnZHNfZ3JpZF9hZGRfZGlzayBkc19ncmlkX211bHRpcGx5X2Rpc2sgZHNfZ3JpZF9zZXRfZ3JpZF9yZWdpb24gJyArXG4gICAgICAnZHNfZ3JpZF9hZGRfZ3JpZF9yZWdpb24gZHNfZ3JpZF9tdWx0aXBseV9ncmlkX3JlZ2lvbiBkc19ncmlkX2dldCAnICtcbiAgICAgICdkc19ncmlkX2dldF9zdW0gZHNfZ3JpZF9nZXRfbWF4IGRzX2dyaWRfZ2V0X21pbiBkc19ncmlkX2dldF9tZWFuICcgK1xuICAgICAgJ2RzX2dyaWRfZ2V0X2Rpc2tfc3VtIGRzX2dyaWRfZ2V0X2Rpc2tfbWluIGRzX2dyaWRfZ2V0X2Rpc2tfbWF4ICcgK1xuICAgICAgJ2RzX2dyaWRfZ2V0X2Rpc2tfbWVhbiBkc19ncmlkX3ZhbHVlX2V4aXN0cyBkc19ncmlkX3ZhbHVlX3ggJyArXG4gICAgICAnZHNfZ3JpZF92YWx1ZV95IGRzX2dyaWRfdmFsdWVfZGlza19leGlzdHMgZHNfZ3JpZF92YWx1ZV9kaXNrX3ggJyArXG4gICAgICAnZHNfZ3JpZF92YWx1ZV9kaXNrX3kgZHNfZ3JpZF9zaHVmZmxlIGRzX2dyaWRfd3JpdGUgZHNfZ3JpZF9yZWFkICcgK1xuICAgICAgJ2RzX2dyaWRfc29ydCBkc19ncmlkX3NldCBkc19ncmlkX2dldCBlZmZlY3RfY3JlYXRlX2JlbG93ICcgK1xuICAgICAgJ2VmZmVjdF9jcmVhdGVfYWJvdmUgZWZmZWN0X2NsZWFyIHBhcnRfdHlwZV9jcmVhdGUgcGFydF90eXBlX2Rlc3Ryb3kgJyArXG4gICAgICAncGFydF90eXBlX2V4aXN0cyBwYXJ0X3R5cGVfY2xlYXIgcGFydF90eXBlX3NoYXBlIHBhcnRfdHlwZV9zcHJpdGUgJyArXG4gICAgICAncGFydF90eXBlX3NpemUgcGFydF90eXBlX3NjYWxlIHBhcnRfdHlwZV9vcmllbnRhdGlvbiBwYXJ0X3R5cGVfbGlmZSAnICtcbiAgICAgICdwYXJ0X3R5cGVfc3RlcCBwYXJ0X3R5cGVfZGVhdGggcGFydF90eXBlX3NwZWVkIHBhcnRfdHlwZV9kaXJlY3Rpb24gJyArXG4gICAgICAncGFydF90eXBlX2dyYXZpdHkgcGFydF90eXBlX2NvbG91cjEgcGFydF90eXBlX2NvbG91cjIgJyArXG4gICAgICAncGFydF90eXBlX2NvbG91cjMgcGFydF90eXBlX2NvbG91cl9taXggcGFydF90eXBlX2NvbG91cl9yZ2IgJyArXG4gICAgICAncGFydF90eXBlX2NvbG91cl9oc3YgcGFydF90eXBlX2NvbG9yMSBwYXJ0X3R5cGVfY29sb3IyICcgK1xuICAgICAgJ3BhcnRfdHlwZV9jb2xvcjMgcGFydF90eXBlX2NvbG9yX21peCBwYXJ0X3R5cGVfY29sb3JfcmdiICcgK1xuICAgICAgJ3BhcnRfdHlwZV9jb2xvcl9oc3YgcGFydF90eXBlX2FscGhhMSBwYXJ0X3R5cGVfYWxwaGEyICcgK1xuICAgICAgJ3BhcnRfdHlwZV9hbHBoYTMgcGFydF90eXBlX2JsZW5kIHBhcnRfc3lzdGVtX2NyZWF0ZSAnICtcbiAgICAgICdwYXJ0X3N5c3RlbV9jcmVhdGVfbGF5ZXIgcGFydF9zeXN0ZW1fZGVzdHJveSBwYXJ0X3N5c3RlbV9leGlzdHMgJyArXG4gICAgICAncGFydF9zeXN0ZW1fY2xlYXIgcGFydF9zeXN0ZW1fZHJhd19vcmRlciBwYXJ0X3N5c3RlbV9kZXB0aCAnICtcbiAgICAgICdwYXJ0X3N5c3RlbV9wb3NpdGlvbiBwYXJ0X3N5c3RlbV9hdXRvbWF0aWNfdXBkYXRlICcgK1xuICAgICAgJ3BhcnRfc3lzdGVtX2F1dG9tYXRpY19kcmF3IHBhcnRfc3lzdGVtX3VwZGF0ZSBwYXJ0X3N5c3RlbV9kcmF3aXQgJyArXG4gICAgICAncGFydF9zeXN0ZW1fZ2V0X2xheWVyIHBhcnRfc3lzdGVtX2xheWVyIHBhcnRfcGFydGljbGVzX2NyZWF0ZSAnICtcbiAgICAgICdwYXJ0X3BhcnRpY2xlc19jcmVhdGVfY29sb3VyIHBhcnRfcGFydGljbGVzX2NyZWF0ZV9jb2xvciAnICtcbiAgICAgICdwYXJ0X3BhcnRpY2xlc19jbGVhciBwYXJ0X3BhcnRpY2xlc19jb3VudCBwYXJ0X2VtaXR0ZXJfY3JlYXRlICcgK1xuICAgICAgJ3BhcnRfZW1pdHRlcl9kZXN0cm95IHBhcnRfZW1pdHRlcl9kZXN0cm95X2FsbCBwYXJ0X2VtaXR0ZXJfZXhpc3RzICcgK1xuICAgICAgJ3BhcnRfZW1pdHRlcl9jbGVhciBwYXJ0X2VtaXR0ZXJfcmVnaW9uIHBhcnRfZW1pdHRlcl9idXJzdCAnICtcbiAgICAgICdwYXJ0X2VtaXR0ZXJfc3RyZWFtIGV4dGVybmFsX2NhbGwgZXh0ZXJuYWxfZGVmaW5lIGV4dGVybmFsX2ZyZWUgJyArXG4gICAgICAnd2luZG93X2hhbmRsZSB3aW5kb3dfZGV2aWNlIG1hdHJpeF9nZXQgbWF0cml4X3NldCAnICtcbiAgICAgICdtYXRyaXhfYnVpbGRfaWRlbnRpdHkgbWF0cml4X2J1aWxkIG1hdHJpeF9idWlsZF9sb29rYXQgJyArXG4gICAgICAnbWF0cml4X2J1aWxkX3Byb2plY3Rpb25fb3J0aG8gbWF0cml4X2J1aWxkX3Byb2plY3Rpb25fcGVyc3BlY3RpdmUgJyArXG4gICAgICAnbWF0cml4X2J1aWxkX3Byb2plY3Rpb25fcGVyc3BlY3RpdmVfZm92IG1hdHJpeF9tdWx0aXBseSAnICtcbiAgICAgICdtYXRyaXhfdHJhbnNmb3JtX3ZlcnRleCBtYXRyaXhfc3RhY2tfcHVzaCBtYXRyaXhfc3RhY2tfcG9wICcgK1xuICAgICAgJ21hdHJpeF9zdGFja19tdWx0aXBseSBtYXRyaXhfc3RhY2tfc2V0IG1hdHJpeF9zdGFja19jbGVhciAnICtcbiAgICAgICdtYXRyaXhfc3RhY2tfdG9wIG1hdHJpeF9zdGFja19pc19lbXB0eSBicm93c2VyX2lucHV0X2NhcHR1cmUgJyArXG4gICAgICAnb3NfZ2V0X2NvbmZpZyBvc19nZXRfaW5mbyBvc19nZXRfbGFuZ3VhZ2Ugb3NfZ2V0X3JlZ2lvbiAnICtcbiAgICAgICdvc19sb2NrX29yaWVudGF0aW9uIGRpc3BsYXlfZ2V0X2RwaV94IGRpc3BsYXlfZ2V0X2RwaV95ICcgK1xuICAgICAgJ2Rpc3BsYXlfc2V0X2d1aV9zaXplIGRpc3BsYXlfc2V0X2d1aV9tYXhpbWlzZSAnICtcbiAgICAgICdkaXNwbGF5X3NldF9ndWlfbWF4aW1pemUgZGV2aWNlX21vdXNlX2RiY2xpY2tfZW5hYmxlICcgK1xuICAgICAgJ2Rpc3BsYXlfc2V0X3RpbWluZ19tZXRob2QgZGlzcGxheV9nZXRfdGltaW5nX21ldGhvZCAnICtcbiAgICAgICdkaXNwbGF5X3NldF9zbGVlcF9tYXJnaW4gZGlzcGxheV9nZXRfc2xlZXBfbWFyZ2luIHZpcnR1YWxfa2V5X2FkZCAnICtcbiAgICAgICd2aXJ0dWFsX2tleV9oaWRlIHZpcnR1YWxfa2V5X2RlbGV0ZSB2aXJ0dWFsX2tleV9zaG93ICcgK1xuICAgICAgJ2RyYXdfZW5hYmxlX2RyYXdldmVudCBkcmF3X2VuYWJsZV9zd2ZfYWEgZHJhd19zZXRfc3dmX2FhX2xldmVsICcgK1xuICAgICAgJ2RyYXdfZ2V0X3N3Zl9hYV9sZXZlbCBkcmF3X3RleHR1cmVfZmx1c2ggZHJhd19mbHVzaCAnICtcbiAgICAgICdncHVfc2V0X2JsZW5kZW5hYmxlIGdwdV9zZXRfenRlc3RlbmFibGUgZ3B1X3NldF96ZnVuYyAnICtcbiAgICAgICdncHVfc2V0X3p3cml0ZWVuYWJsZSBncHVfc2V0X2xpZ2h0aW5nZW5hYmxlIGdwdV9zZXRfZm9nICcgK1xuICAgICAgJ2dwdV9zZXRfY3VsbG1vZGUgZ3B1X3NldF9ibGVuZG1vZGUgZ3B1X3NldF9ibGVuZG1vZGVfZXh0ICcgK1xuICAgICAgJ2dwdV9zZXRfYmxlbmRtb2RlX2V4dF9zZXBhbHBoYSBncHVfc2V0X2NvbG9yd3JpdGVlbmFibGUgJyArXG4gICAgICAnZ3B1X3NldF9jb2xvdXJ3cml0ZWVuYWJsZSBncHVfc2V0X2FscGhhdGVzdGVuYWJsZSAnICtcbiAgICAgICdncHVfc2V0X2FscGhhdGVzdHJlZiBncHVfc2V0X2FscGhhdGVzdGZ1bmMgZ3B1X3NldF90ZXhmaWx0ZXIgJyArXG4gICAgICAnZ3B1X3NldF90ZXhmaWx0ZXJfZXh0IGdwdV9zZXRfdGV4cmVwZWF0IGdwdV9zZXRfdGV4cmVwZWF0X2V4dCAnICtcbiAgICAgICdncHVfc2V0X3RleF9maWx0ZXIgZ3B1X3NldF90ZXhfZmlsdGVyX2V4dCBncHVfc2V0X3RleF9yZXBlYXQgJyArXG4gICAgICAnZ3B1X3NldF90ZXhfcmVwZWF0X2V4dCBncHVfc2V0X3RleF9taXBfZmlsdGVyICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21pcF9maWx0ZXJfZXh0IGdwdV9zZXRfdGV4X21pcF9iaWFzICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21pcF9iaWFzX2V4dCBncHVfc2V0X3RleF9taW5fbWlwIGdwdV9zZXRfdGV4X21pbl9taXBfZXh0ICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21heF9taXAgZ3B1X3NldF90ZXhfbWF4X21pcF9leHQgZ3B1X3NldF90ZXhfbWF4X2FuaXNvICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21heF9hbmlzb19leHQgZ3B1X3NldF90ZXhfbWlwX2VuYWJsZSAnICtcbiAgICAgICdncHVfc2V0X3RleF9taXBfZW5hYmxlX2V4dCBncHVfZ2V0X2JsZW5kZW5hYmxlIGdwdV9nZXRfenRlc3RlbmFibGUgJyArXG4gICAgICAnZ3B1X2dldF96ZnVuYyBncHVfZ2V0X3p3cml0ZWVuYWJsZSBncHVfZ2V0X2xpZ2h0aW5nZW5hYmxlICcgK1xuICAgICAgJ2dwdV9nZXRfZm9nIGdwdV9nZXRfY3VsbG1vZGUgZ3B1X2dldF9ibGVuZG1vZGUgZ3B1X2dldF9ibGVuZG1vZGVfZXh0ICcgK1xuICAgICAgJ2dwdV9nZXRfYmxlbmRtb2RlX2V4dF9zZXBhbHBoYSBncHVfZ2V0X2JsZW5kbW9kZV9zcmMgJyArXG4gICAgICAnZ3B1X2dldF9ibGVuZG1vZGVfZGVzdCBncHVfZ2V0X2JsZW5kbW9kZV9zcmNhbHBoYSAnICtcbiAgICAgICdncHVfZ2V0X2JsZW5kbW9kZV9kZXN0YWxwaGEgZ3B1X2dldF9jb2xvcndyaXRlZW5hYmxlICcgK1xuICAgICAgJ2dwdV9nZXRfY29sb3Vyd3JpdGVlbmFibGUgZ3B1X2dldF9hbHBoYXRlc3RlbmFibGUgJyArXG4gICAgICAnZ3B1X2dldF9hbHBoYXRlc3RyZWYgZ3B1X2dldF9hbHBoYXRlc3RmdW5jIGdwdV9nZXRfdGV4ZmlsdGVyICcgK1xuICAgICAgJ2dwdV9nZXRfdGV4ZmlsdGVyX2V4dCBncHVfZ2V0X3RleHJlcGVhdCBncHVfZ2V0X3RleHJlcGVhdF9leHQgJyArXG4gICAgICAnZ3B1X2dldF90ZXhfZmlsdGVyIGdwdV9nZXRfdGV4X2ZpbHRlcl9leHQgZ3B1X2dldF90ZXhfcmVwZWF0ICcgK1xuICAgICAgJ2dwdV9nZXRfdGV4X3JlcGVhdF9leHQgZ3B1X2dldF90ZXhfbWlwX2ZpbHRlciAnICtcbiAgICAgICdncHVfZ2V0X3RleF9taXBfZmlsdGVyX2V4dCBncHVfZ2V0X3RleF9taXBfYmlhcyAnICtcbiAgICAgICdncHVfZ2V0X3RleF9taXBfYmlhc19leHQgZ3B1X2dldF90ZXhfbWluX21pcCBncHVfZ2V0X3RleF9taW5fbWlwX2V4dCAnICtcbiAgICAgICdncHVfZ2V0X3RleF9tYXhfbWlwIGdwdV9nZXRfdGV4X21heF9taXBfZXh0IGdwdV9nZXRfdGV4X21heF9hbmlzbyAnICtcbiAgICAgICdncHVfZ2V0X3RleF9tYXhfYW5pc29fZXh0IGdwdV9nZXRfdGV4X21pcF9lbmFibGUgJyArXG4gICAgICAnZ3B1X2dldF90ZXhfbWlwX2VuYWJsZV9leHQgZ3B1X3B1c2hfc3RhdGUgZ3B1X3BvcF9zdGF0ZSAnICtcbiAgICAgICdncHVfZ2V0X3N0YXRlIGdwdV9zZXRfc3RhdGUgZHJhd19saWdodF9kZWZpbmVfYW1iaWVudCAnICtcbiAgICAgICdkcmF3X2xpZ2h0X2RlZmluZV9kaXJlY3Rpb24gZHJhd19saWdodF9kZWZpbmVfcG9pbnQgJyArXG4gICAgICAnZHJhd19saWdodF9lbmFibGUgZHJhd19zZXRfbGlnaHRpbmcgZHJhd19saWdodF9nZXRfYW1iaWVudCAnICtcbiAgICAgICdkcmF3X2xpZ2h0X2dldCBkcmF3X2dldF9saWdodGluZyBzaG9wX2xlYXZlX3JhdGluZyB1cmxfZ2V0X2RvbWFpbiAnICtcbiAgICAgICd1cmxfb3BlbiB1cmxfb3Blbl9leHQgdXJsX29wZW5fZnVsbCBnZXRfdGltZXIgYWNoaWV2ZW1lbnRfbG9naW4gJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfbG9nb3V0IGFjaGlldmVtZW50X3Bvc3QgYWNoaWV2ZW1lbnRfaW5jcmVtZW50ICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3Bvc3Rfc2NvcmUgYWNoaWV2ZW1lbnRfYXZhaWxhYmxlICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3Nob3dfYWNoaWV2ZW1lbnRzIGFjaGlldmVtZW50X3Nob3dfbGVhZGVyYm9hcmRzICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2xvYWRfZnJpZW5kcyBhY2hpZXZlbWVudF9sb2FkX2xlYWRlcmJvYXJkICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3NlbmRfY2hhbGxlbmdlIGFjaGlldmVtZW50X2xvYWRfcHJvZ3Jlc3MgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfcmVzZXQgYWNoaWV2ZW1lbnRfbG9naW5fc3RhdHVzIGFjaGlldmVtZW50X2dldF9waWMgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfc2hvd19jaGFsbGVuZ2Vfbm90aWZpY2F0aW9ucyBhY2hpZXZlbWVudF9nZXRfY2hhbGxlbmdlcyAnICtcbiAgICAgICdhY2hpZXZlbWVudF9ldmVudCBhY2hpZXZlbWVudF9zaG93IGFjaGlldmVtZW50X2dldF9pbmZvICcgK1xuICAgICAgJ2Nsb3VkX2ZpbGVfc2F2ZSBjbG91ZF9zdHJpbmdfc2F2ZSBjbG91ZF9zeW5jaHJvbmlzZSBhZHNfZW5hYmxlICcgK1xuICAgICAgJ2Fkc19kaXNhYmxlIGFkc19zZXR1cCBhZHNfZW5nYWdlbWVudF9sYXVuY2ggYWRzX2VuZ2FnZW1lbnRfYXZhaWxhYmxlICcgK1xuICAgICAgJ2Fkc19lbmdhZ2VtZW50X2FjdGl2ZSBhZHNfZXZlbnQgYWRzX2V2ZW50X3ByZWxvYWQgJyArXG4gICAgICAnYWRzX3NldF9yZXdhcmRfY2FsbGJhY2sgYWRzX2dldF9kaXNwbGF5X2hlaWdodCBhZHNfZ2V0X2Rpc3BsYXlfd2lkdGggJyArXG4gICAgICAnYWRzX21vdmUgYWRzX2ludGVyc3RpdGlhbF9hdmFpbGFibGUgYWRzX2ludGVyc3RpdGlhbF9kaXNwbGF5ICcgK1xuICAgICAgJ2RldmljZV9nZXRfdGlsdF94IGRldmljZV9nZXRfdGlsdF95IGRldmljZV9nZXRfdGlsdF96ICcgK1xuICAgICAgJ2RldmljZV9pc19rZXlwYWRfb3BlbiBkZXZpY2VfbW91c2VfY2hlY2tfYnV0dG9uICcgK1xuICAgICAgJ2RldmljZV9tb3VzZV9jaGVja19idXR0b25fcHJlc3NlZCBkZXZpY2VfbW91c2VfY2hlY2tfYnV0dG9uX3JlbGVhc2VkICcgK1xuICAgICAgJ2RldmljZV9tb3VzZV94IGRldmljZV9tb3VzZV95IGRldmljZV9tb3VzZV9yYXdfeCBkZXZpY2VfbW91c2VfcmF3X3kgJyArXG4gICAgICAnZGV2aWNlX21vdXNlX3hfdG9fZ3VpIGRldmljZV9tb3VzZV95X3RvX2d1aSBpYXBfYWN0aXZhdGUgaWFwX3N0YXR1cyAnICtcbiAgICAgICdpYXBfZW51bWVyYXRlX3Byb2R1Y3RzIGlhcF9yZXN0b3JlX2FsbCBpYXBfYWNxdWlyZSBpYXBfY29uc3VtZSAnICtcbiAgICAgICdpYXBfcHJvZHVjdF9kZXRhaWxzIGlhcF9wdXJjaGFzZV9kZXRhaWxzIGZhY2Vib29rX2luaXQgJyArXG4gICAgICAnZmFjZWJvb2tfbG9naW4gZmFjZWJvb2tfc3RhdHVzIGZhY2Vib29rX2dyYXBoX3JlcXVlc3QgJyArXG4gICAgICAnZmFjZWJvb2tfZGlhbG9nIGZhY2Vib29rX2xvZ291dCBmYWNlYm9va19sYXVuY2hfb2ZmZXJ3YWxsICcgK1xuICAgICAgJ2ZhY2Vib29rX3Bvc3RfbWVzc2FnZSBmYWNlYm9va19zZW5kX2ludml0ZSBmYWNlYm9va191c2VyX2lkICcgK1xuICAgICAgJ2ZhY2Vib29rX2FjY2Vzc3Rva2VuIGZhY2Vib29rX2NoZWNrX3Blcm1pc3Npb24gJyArXG4gICAgICAnZmFjZWJvb2tfcmVxdWVzdF9yZWFkX3Blcm1pc3Npb25zICcgK1xuICAgICAgJ2ZhY2Vib29rX3JlcXVlc3RfcHVibGlzaF9wZXJtaXNzaW9ucyBnYW1lcGFkX2lzX3N1cHBvcnRlZCAnICtcbiAgICAgICdnYW1lcGFkX2dldF9kZXZpY2VfY291bnQgZ2FtZXBhZF9pc19jb25uZWN0ZWQgJyArXG4gICAgICAnZ2FtZXBhZF9nZXRfZGVzY3JpcHRpb24gZ2FtZXBhZF9nZXRfYnV0dG9uX3RocmVzaG9sZCAnICtcbiAgICAgICdnYW1lcGFkX3NldF9idXR0b25fdGhyZXNob2xkIGdhbWVwYWRfZ2V0X2F4aXNfZGVhZHpvbmUgJyArXG4gICAgICAnZ2FtZXBhZF9zZXRfYXhpc19kZWFkem9uZSBnYW1lcGFkX2J1dHRvbl9jb3VudCBnYW1lcGFkX2J1dHRvbl9jaGVjayAnICtcbiAgICAgICdnYW1lcGFkX2J1dHRvbl9jaGVja19wcmVzc2VkIGdhbWVwYWRfYnV0dG9uX2NoZWNrX3JlbGVhc2VkICcgK1xuICAgICAgJ2dhbWVwYWRfYnV0dG9uX3ZhbHVlIGdhbWVwYWRfYXhpc19jb3VudCBnYW1lcGFkX2F4aXNfdmFsdWUgJyArXG4gICAgICAnZ2FtZXBhZF9zZXRfdmlicmF0aW9uIGdhbWVwYWRfc2V0X2NvbG91ciBnYW1lcGFkX3NldF9jb2xvciAnICtcbiAgICAgICdvc19pc19wYXVzZWQgd2luZG93X2hhc19mb2N1cyBjb2RlX2lzX2NvbXBpbGVkIGh0dHBfZ2V0ICcgK1xuICAgICAgJ2h0dHBfZ2V0X2ZpbGUgaHR0cF9wb3N0X3N0cmluZyBodHRwX3JlcXVlc3QganNvbl9lbmNvZGUganNvbl9kZWNvZGUgJyArXG4gICAgICAnemlwX3VuemlwIGxvYWRfY3N2IGJhc2U2NF9lbmNvZGUgYmFzZTY0X2RlY29kZSBtZDVfc3RyaW5nX3VuaWNvZGUgJyArXG4gICAgICAnbWQ1X3N0cmluZ191dGY4IG1kNV9maWxlIG9zX2lzX25ldHdvcmtfY29ubmVjdGVkIHNoYTFfc3RyaW5nX3VuaWNvZGUgJyArXG4gICAgICAnc2hhMV9zdHJpbmdfdXRmOCBzaGExX2ZpbGUgb3NfcG93ZXJzYXZlX2VuYWJsZSBhbmFseXRpY3NfZXZlbnQgJyArXG4gICAgICAnYW5hbHl0aWNzX2V2ZW50X2V4dCB3aW44X2xpdmV0aWxlX3RpbGVfbm90aWZpY2F0aW9uICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfdGlsZV9jbGVhciB3aW44X2xpdmV0aWxlX2JhZGdlX25vdGlmaWNhdGlvbiAnICtcbiAgICAgICd3aW44X2xpdmV0aWxlX2JhZGdlX2NsZWFyIHdpbjhfbGl2ZXRpbGVfcXVldWVfZW5hYmxlICcgK1xuICAgICAgJ3dpbjhfc2Vjb25kYXJ5dGlsZV9waW4gd2luOF9zZWNvbmRhcnl0aWxlX2JhZGdlX25vdGlmaWNhdGlvbiAnICtcbiAgICAgICd3aW44X3NlY29uZGFyeXRpbGVfZGVsZXRlIHdpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX2JlZ2luICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX3NlY29uZGFyeV9iZWdpbiAnICtcbiAgICAgICd3aW44X2xpdmV0aWxlX25vdGlmaWNhdGlvbl9leHBpcnkgd2luOF9saXZldGlsZV9ub3RpZmljYXRpb25fdGFnICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX3RleHRfYWRkICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX2ltYWdlX2FkZCB3aW44X2xpdmV0aWxlX25vdGlmaWNhdGlvbl9lbmQgJyArXG4gICAgICAnd2luOF9hcHBiYXJfZW5hYmxlIHdpbjhfYXBwYmFyX2FkZF9lbGVtZW50ICcgK1xuICAgICAgJ3dpbjhfYXBwYmFyX3JlbW92ZV9lbGVtZW50IHdpbjhfc2V0dGluZ3NjaGFybV9hZGRfZW50cnkgJyArXG4gICAgICAnd2luOF9zZXR0aW5nc2NoYXJtX2FkZF9odG1sX2VudHJ5IHdpbjhfc2V0dGluZ3NjaGFybV9hZGRfeGFtbF9lbnRyeSAnICtcbiAgICAgICd3aW44X3NldHRpbmdzY2hhcm1fc2V0X3hhbWxfcHJvcGVydHkgJyArXG4gICAgICAnd2luOF9zZXR0aW5nc2NoYXJtX2dldF94YW1sX3Byb3BlcnR5IHdpbjhfc2V0dGluZ3NjaGFybV9yZW1vdmVfZW50cnkgJyArXG4gICAgICAnd2luOF9zaGFyZV9pbWFnZSB3aW44X3NoYXJlX3NjcmVlbnNob3Qgd2luOF9zaGFyZV9maWxlICcgK1xuICAgICAgJ3dpbjhfc2hhcmVfdXJsIHdpbjhfc2hhcmVfdGV4dCB3aW44X3NlYXJjaF9lbmFibGUgJyArXG4gICAgICAnd2luOF9zZWFyY2hfZGlzYWJsZSB3aW44X3NlYXJjaF9hZGRfc3VnZ2VzdGlvbnMgJyArXG4gICAgICAnd2luOF9kZXZpY2VfdG91Y2hzY3JlZW5fYXZhaWxhYmxlIHdpbjhfbGljZW5zZV9pbml0aWFsaXplX3NhbmRib3ggJyArXG4gICAgICAnd2luOF9saWNlbnNlX3RyaWFsX3ZlcnNpb24gd2lucGhvbmVfbGljZW5zZV90cmlhbF92ZXJzaW9uICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfdGl0bGUgd2lucGhvbmVfdGlsZV9jb3VudCB3aW5waG9uZV90aWxlX2JhY2tfdGl0bGUgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9iYWNrX2NvbnRlbnQgd2lucGhvbmVfdGlsZV9iYWNrX2NvbnRlbnRfd2lkZSAnICtcbiAgICAgICd3aW5waG9uZV90aWxlX2Zyb250X2ltYWdlIHdpbnBob25lX3RpbGVfZnJvbnRfaW1hZ2Vfc21hbGwgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9mcm9udF9pbWFnZV93aWRlIHdpbnBob25lX3RpbGVfYmFja19pbWFnZSAnICtcbiAgICAgICd3aW5waG9uZV90aWxlX2JhY2tfaW1hZ2Vfd2lkZSB3aW5waG9uZV90aWxlX2JhY2tncm91bmRfY29sb3VyICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfYmFja2dyb3VuZF9jb2xvciB3aW5waG9uZV90aWxlX2ljb25faW1hZ2UgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9zbWFsbF9pY29uX2ltYWdlIHdpbnBob25lX3RpbGVfd2lkZV9jb250ZW50ICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfY3ljbGVfaW1hZ2VzIHdpbnBob25lX3RpbGVfc21hbGxfYmFja2dyb3VuZF9pbWFnZSAnICtcbiAgICAgICdwaHlzaWNzX3dvcmxkX2NyZWF0ZSBwaHlzaWNzX3dvcmxkX2dyYXZpdHkgJyArXG4gICAgICAncGh5c2ljc193b3JsZF91cGRhdGVfc3BlZWQgcGh5c2ljc193b3JsZF91cGRhdGVfaXRlcmF0aW9ucyAnICtcbiAgICAgICdwaHlzaWNzX3dvcmxkX2RyYXdfZGVidWcgcGh5c2ljc19wYXVzZV9lbmFibGUgcGh5c2ljc19maXh0dXJlX2NyZWF0ZSAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfc2V0X2tpbmVtYXRpYyBwaHlzaWNzX2ZpeHR1cmVfc2V0X2RlbnNpdHkgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9hd2FrZSBwaHlzaWNzX2ZpeHR1cmVfc2V0X3Jlc3RpdHV0aW9uICcgK1xuICAgICAgJ3BoeXNpY3NfZml4dHVyZV9zZXRfZnJpY3Rpb24gcGh5c2ljc19maXh0dXJlX3NldF9jb2xsaXNpb25fZ3JvdXAgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9zZW5zb3IgcGh5c2ljc19maXh0dXJlX3NldF9saW5lYXJfZGFtcGluZyAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfc2V0X2FuZ3VsYXJfZGFtcGluZyBwaHlzaWNzX2ZpeHR1cmVfc2V0X2NpcmNsZV9zaGFwZSAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfc2V0X2JveF9zaGFwZSBwaHlzaWNzX2ZpeHR1cmVfc2V0X2VkZ2Vfc2hhcGUgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9wb2x5Z29uX3NoYXBlIHBoeXNpY3NfZml4dHVyZV9zZXRfY2hhaW5fc2hhcGUgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX2FkZF9wb2ludCBwaHlzaWNzX2ZpeHR1cmVfYmluZCAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfYmluZF9leHQgcGh5c2ljc19maXh0dXJlX2RlbGV0ZSBwaHlzaWNzX2FwcGx5X2ZvcmNlICcgK1xuICAgICAgJ3BoeXNpY3NfYXBwbHlfaW1wdWxzZSBwaHlzaWNzX2FwcGx5X2FuZ3VsYXJfaW1wdWxzZSAnICtcbiAgICAgICdwaHlzaWNzX2FwcGx5X2xvY2FsX2ZvcmNlIHBoeXNpY3NfYXBwbHlfbG9jYWxfaW1wdWxzZSAnICtcbiAgICAgICdwaHlzaWNzX2FwcGx5X3RvcnF1ZSBwaHlzaWNzX21hc3NfcHJvcGVydGllcyBwaHlzaWNzX2RyYXdfZGVidWcgJyArXG4gICAgICAncGh5c2ljc190ZXN0X292ZXJsYXAgcGh5c2ljc19yZW1vdmVfZml4dHVyZSBwaHlzaWNzX3NldF9mcmljdGlvbiAnICtcbiAgICAgICdwaHlzaWNzX3NldF9kZW5zaXR5IHBoeXNpY3Nfc2V0X3Jlc3RpdHV0aW9uIHBoeXNpY3NfZ2V0X2ZyaWN0aW9uICcgK1xuICAgICAgJ3BoeXNpY3NfZ2V0X2RlbnNpdHkgcGh5c2ljc19nZXRfcmVzdGl0dXRpb24gJyArXG4gICAgICAncGh5c2ljc19qb2ludF9kaXN0YW5jZV9jcmVhdGUgcGh5c2ljc19qb2ludF9yb3BlX2NyZWF0ZSAnICtcbiAgICAgICdwaHlzaWNzX2pvaW50X3Jldm9sdXRlX2NyZWF0ZSBwaHlzaWNzX2pvaW50X3ByaXNtYXRpY19jcmVhdGUgJyArXG4gICAgICAncGh5c2ljc19qb2ludF9wdWxsZXlfY3JlYXRlIHBoeXNpY3Nfam9pbnRfd2hlZWxfY3JlYXRlICcgK1xuICAgICAgJ3BoeXNpY3Nfam9pbnRfd2VsZF9jcmVhdGUgcGh5c2ljc19qb2ludF9mcmljdGlvbl9jcmVhdGUgJyArXG4gICAgICAncGh5c2ljc19qb2ludF9nZWFyX2NyZWF0ZSBwaHlzaWNzX2pvaW50X2VuYWJsZV9tb3RvciAnICtcbiAgICAgICdwaHlzaWNzX2pvaW50X2dldF92YWx1ZSBwaHlzaWNzX2pvaW50X3NldF92YWx1ZSBwaHlzaWNzX2pvaW50X2RlbGV0ZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2NyZWF0ZSBwaHlzaWNzX3BhcnRpY2xlX2RlbGV0ZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2RlbGV0ZV9yZWdpb25fY2lyY2xlICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZGVsZXRlX3JlZ2lvbl9ib3ggJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9kZWxldGVfcmVnaW9uX3BvbHkgcGh5c2ljc19wYXJ0aWNsZV9zZXRfZmxhZ3MgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9zZXRfY2F0ZWdvcnlfZmxhZ3MgcGh5c2ljc19wYXJ0aWNsZV9kcmF3ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZHJhd19leHQgcGh5c2ljc19wYXJ0aWNsZV9jb3VudCAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dldF9kYXRhIHBoeXNpY3NfcGFydGljbGVfZ2V0X2RhdGFfcGFydGljbGUgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9iZWdpbiBwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2NpcmNsZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2JveCBwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX3BvbHlnb24gJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9hZGRfcG9pbnQgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9lbmQgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9qb2luIHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZGVsZXRlICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ3JvdXBfY291bnQgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfZGF0YSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF9tYXNzIHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X2luZXJ0aWEgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfY2VudHJlX3ggJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfY2VudHJlX3kgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfdmVsX3ggJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfdmVsX3kgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfYW5nX3ZlbCAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF94IHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X3kgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfYW5nbGUgcGh5c2ljc19wYXJ0aWNsZV9zZXRfZ3JvdXBfZmxhZ3MgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9nZXRfZ3JvdXBfZmxhZ3MgcGh5c2ljc19wYXJ0aWNsZV9nZXRfbWF4X2NvdW50ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ2V0X3JhZGl1cyBwaHlzaWNzX3BhcnRpY2xlX2dldF9kZW5zaXR5ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ2V0X2RhbXBpbmcgcGh5c2ljc19wYXJ0aWNsZV9nZXRfZ3Jhdml0eV9zY2FsZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX3NldF9tYXhfY291bnQgcGh5c2ljc19wYXJ0aWNsZV9zZXRfcmFkaXVzICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfc2V0X2RlbnNpdHkgcGh5c2ljc19wYXJ0aWNsZV9zZXRfZGFtcGluZyAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX3NldF9ncmF2aXR5X3NjYWxlIG5ldHdvcmtfY3JlYXRlX3NvY2tldCAnICtcbiAgICAgICduZXR3b3JrX2NyZWF0ZV9zb2NrZXRfZXh0IG5ldHdvcmtfY3JlYXRlX3NlcnZlciAnICtcbiAgICAgICduZXR3b3JrX2NyZWF0ZV9zZXJ2ZXJfcmF3IG5ldHdvcmtfY29ubmVjdCBuZXR3b3JrX2Nvbm5lY3RfcmF3ICcgK1xuICAgICAgJ25ldHdvcmtfc2VuZF9wYWNrZXQgbmV0d29ya19zZW5kX3JhdyBuZXR3b3JrX3NlbmRfYnJvYWRjYXN0ICcgK1xuICAgICAgJ25ldHdvcmtfc2VuZF91ZHAgbmV0d29ya19zZW5kX3VkcF9yYXcgbmV0d29ya19zZXRfdGltZW91dCAnICtcbiAgICAgICduZXR3b3JrX3NldF9jb25maWcgbmV0d29ya19yZXNvbHZlIG5ldHdvcmtfZGVzdHJveSBidWZmZXJfY3JlYXRlICcgK1xuICAgICAgJ2J1ZmZlcl93cml0ZSBidWZmZXJfcmVhZCBidWZmZXJfc2VlayBidWZmZXJfZ2V0X3N1cmZhY2UgJyArXG4gICAgICAnYnVmZmVyX3NldF9zdXJmYWNlIGJ1ZmZlcl9kZWxldGUgYnVmZmVyX2V4aXN0cyBidWZmZXJfZ2V0X3R5cGUgJyArXG4gICAgICAnYnVmZmVyX2dldF9hbGlnbm1lbnQgYnVmZmVyX3Bva2UgYnVmZmVyX3BlZWsgYnVmZmVyX3NhdmUgJyArXG4gICAgICAnYnVmZmVyX3NhdmVfZXh0IGJ1ZmZlcl9sb2FkIGJ1ZmZlcl9sb2FkX2V4dCBidWZmZXJfbG9hZF9wYXJ0aWFsICcgK1xuICAgICAgJ2J1ZmZlcl9jb3B5IGJ1ZmZlcl9maWxsIGJ1ZmZlcl9nZXRfc2l6ZSBidWZmZXJfdGVsbCBidWZmZXJfcmVzaXplICcgK1xuICAgICAgJ2J1ZmZlcl9tZDUgYnVmZmVyX3NoYTEgYnVmZmVyX2Jhc2U2NF9lbmNvZGUgYnVmZmVyX2Jhc2U2NF9kZWNvZGUgJyArXG4gICAgICAnYnVmZmVyX2Jhc2U2NF9kZWNvZGVfZXh0IGJ1ZmZlcl9zaXplb2YgYnVmZmVyX2dldF9hZGRyZXNzICcgK1xuICAgICAgJ2J1ZmZlcl9jcmVhdGVfZnJvbV92ZXJ0ZXhfYnVmZmVyICcgK1xuICAgICAgJ2J1ZmZlcl9jcmVhdGVfZnJvbV92ZXJ0ZXhfYnVmZmVyX2V4dCBidWZmZXJfY29weV9mcm9tX3ZlcnRleF9idWZmZXIgJyArXG4gICAgICAnYnVmZmVyX2FzeW5jX2dyb3VwX2JlZ2luIGJ1ZmZlcl9hc3luY19ncm91cF9vcHRpb24gJyArXG4gICAgICAnYnVmZmVyX2FzeW5jX2dyb3VwX2VuZCBidWZmZXJfbG9hZF9hc3luYyBidWZmZXJfc2F2ZV9hc3luYyAnICtcbiAgICAgICdnbWxfcmVsZWFzZV9tb2RlIGdtbF9wcmFnbWEgc3RlYW1fYWN0aXZhdGVfb3ZlcmxheSAnICtcbiAgICAgICdzdGVhbV9pc19vdmVybGF5X2VuYWJsZWQgc3RlYW1faXNfb3ZlcmxheV9hY3RpdmF0ZWQgJyArXG4gICAgICAnc3RlYW1fZ2V0X3BlcnNvbmFfbmFtZSBzdGVhbV9pbml0aWFsaXNlZCAnICtcbiAgICAgICdzdGVhbV9pc19jbG91ZF9lbmFibGVkX2Zvcl9hcHAgc3RlYW1faXNfY2xvdWRfZW5hYmxlZF9mb3JfYWNjb3VudCAnICtcbiAgICAgICdzdGVhbV9maWxlX3BlcnNpc3RlZCBzdGVhbV9nZXRfcXVvdGFfdG90YWwgc3RlYW1fZ2V0X3F1b3RhX2ZyZWUgJyArXG4gICAgICAnc3RlYW1fZmlsZV93cml0ZSBzdGVhbV9maWxlX3dyaXRlX2ZpbGUgc3RlYW1fZmlsZV9yZWFkICcgK1xuICAgICAgJ3N0ZWFtX2ZpbGVfZGVsZXRlIHN0ZWFtX2ZpbGVfZXhpc3RzIHN0ZWFtX2ZpbGVfc2l6ZSBzdGVhbV9maWxlX3NoYXJlICcgK1xuICAgICAgJ3N0ZWFtX2lzX3NjcmVlbnNob3RfcmVxdWVzdGVkIHN0ZWFtX3NlbmRfc2NyZWVuc2hvdCAnICtcbiAgICAgICdzdGVhbV9pc191c2VyX2xvZ2dlZF9vbiBzdGVhbV9nZXRfdXNlcl9zdGVhbV9pZCBzdGVhbV91c2VyX293bnNfZGxjICcgK1xuICAgICAgJ3N0ZWFtX3VzZXJfaW5zdGFsbGVkX2RsYyBzdGVhbV9zZXRfYWNoaWV2ZW1lbnQgc3RlYW1fZ2V0X2FjaGlldmVtZW50ICcgK1xuICAgICAgJ3N0ZWFtX2NsZWFyX2FjaGlldmVtZW50IHN0ZWFtX3NldF9zdGF0X2ludCBzdGVhbV9zZXRfc3RhdF9mbG9hdCAnICtcbiAgICAgICdzdGVhbV9zZXRfc3RhdF9hdmdfcmF0ZSBzdGVhbV9nZXRfc3RhdF9pbnQgc3RlYW1fZ2V0X3N0YXRfZmxvYXQgJyArXG4gICAgICAnc3RlYW1fZ2V0X3N0YXRfYXZnX3JhdGUgc3RlYW1fcmVzZXRfYWxsX3N0YXRzICcgK1xuICAgICAgJ3N0ZWFtX3Jlc2V0X2FsbF9zdGF0c19hY2hpZXZlbWVudHMgc3RlYW1fc3RhdHNfcmVhZHkgJyArXG4gICAgICAnc3RlYW1fY3JlYXRlX2xlYWRlcmJvYXJkIHN0ZWFtX3VwbG9hZF9zY29yZSBzdGVhbV91cGxvYWRfc2NvcmVfZXh0ICcgK1xuICAgICAgJ3N0ZWFtX2Rvd25sb2FkX3Njb3Jlc19hcm91bmRfdXNlciBzdGVhbV9kb3dubG9hZF9zY29yZXMgJyArXG4gICAgICAnc3RlYW1fZG93bmxvYWRfZnJpZW5kc19zY29yZXMgc3RlYW1fdXBsb2FkX3Njb3JlX2J1ZmZlciAnICtcbiAgICAgICdzdGVhbV91cGxvYWRfc2NvcmVfYnVmZmVyX2V4dCBzdGVhbV9jdXJyZW50X2dhbWVfbGFuZ3VhZ2UgJyArXG4gICAgICAnc3RlYW1fYXZhaWxhYmxlX2xhbmd1YWdlcyBzdGVhbV9hY3RpdmF0ZV9vdmVybGF5X2Jyb3dzZXIgJyArXG4gICAgICAnc3RlYW1fYWN0aXZhdGVfb3ZlcmxheV91c2VyIHN0ZWFtX2FjdGl2YXRlX292ZXJsYXlfc3RvcmUgJyArXG4gICAgICAnc3RlYW1fZ2V0X3VzZXJfcGVyc29uYV9uYW1lIHN0ZWFtX2dldF9hcHBfaWQgJyArXG4gICAgICAnc3RlYW1fZ2V0X3VzZXJfYWNjb3VudF9pZCBzdGVhbV91Z2NfZG93bmxvYWQgc3RlYW1fdWdjX2NyZWF0ZV9pdGVtICcgK1xuICAgICAgJ3N0ZWFtX3VnY19zdGFydF9pdGVtX3VwZGF0ZSBzdGVhbV91Z2Nfc2V0X2l0ZW1fdGl0bGUgJyArXG4gICAgICAnc3RlYW1fdWdjX3NldF9pdGVtX2Rlc2NyaXB0aW9uIHN0ZWFtX3VnY19zZXRfaXRlbV92aXNpYmlsaXR5ICcgK1xuICAgICAgJ3N0ZWFtX3VnY19zZXRfaXRlbV90YWdzIHN0ZWFtX3VnY19zZXRfaXRlbV9jb250ZW50ICcgK1xuICAgICAgJ3N0ZWFtX3VnY19zZXRfaXRlbV9wcmV2aWV3IHN0ZWFtX3VnY19zdWJtaXRfaXRlbV91cGRhdGUgJyArXG4gICAgICAnc3RlYW1fdWdjX2dldF9pdGVtX3VwZGF0ZV9wcm9ncmVzcyBzdGVhbV91Z2Nfc3Vic2NyaWJlX2l0ZW0gJyArXG4gICAgICAnc3RlYW1fdWdjX3Vuc3Vic2NyaWJlX2l0ZW0gc3RlYW1fdWdjX251bV9zdWJzY3JpYmVkX2l0ZW1zICcgK1xuICAgICAgJ3N0ZWFtX3VnY19nZXRfc3Vic2NyaWJlZF9pdGVtcyBzdGVhbV91Z2NfZ2V0X2l0ZW1faW5zdGFsbF9pbmZvICcgK1xuICAgICAgJ3N0ZWFtX3VnY19nZXRfaXRlbV91cGRhdGVfaW5mbyBzdGVhbV91Z2NfcmVxdWVzdF9pdGVtX2RldGFpbHMgJyArXG4gICAgICAnc3RlYW1fdWdjX2NyZWF0ZV9xdWVyeV91c2VyIHN0ZWFtX3VnY19jcmVhdGVfcXVlcnlfdXNlcl9leCAnICtcbiAgICAgICdzdGVhbV91Z2NfY3JlYXRlX3F1ZXJ5X2FsbCBzdGVhbV91Z2NfY3JlYXRlX3F1ZXJ5X2FsbF9leCAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X2Nsb3VkX2ZpbGVuYW1lX2ZpbHRlciAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X21hdGNoX2FueV90YWcgc3RlYW1fdWdjX3F1ZXJ5X3NldF9zZWFyY2hfdGV4dCAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X3JhbmtlZF9ieV90cmVuZF9kYXlzICcgK1xuICAgICAgJ3N0ZWFtX3VnY19xdWVyeV9hZGRfcmVxdWlyZWRfdGFnIHN0ZWFtX3VnY19xdWVyeV9hZGRfZXhjbHVkZWRfdGFnICcgK1xuICAgICAgJ3N0ZWFtX3VnY19xdWVyeV9zZXRfcmV0dXJuX2xvbmdfZGVzY3JpcHRpb24gJyArXG4gICAgICAnc3RlYW1fdWdjX3F1ZXJ5X3NldF9yZXR1cm5fdG90YWxfb25seSAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X2FsbG93X2NhY2hlZF9yZXNwb25zZSBzdGVhbV91Z2Nfc2VuZF9xdWVyeSAnICtcbiAgICAgICdzaGFkZXJfc2V0IHNoYWRlcl9nZXRfbmFtZSBzaGFkZXJfcmVzZXQgc2hhZGVyX2N1cnJlbnQgJyArXG4gICAgICAnc2hhZGVyX2lzX2NvbXBpbGVkIHNoYWRlcl9nZXRfc2FtcGxlcl9pbmRleCBzaGFkZXJfZ2V0X3VuaWZvcm0gJyArXG4gICAgICAnc2hhZGVyX3NldF91bmlmb3JtX2kgc2hhZGVyX3NldF91bmlmb3JtX2lfYXJyYXkgc2hhZGVyX3NldF91bmlmb3JtX2YgJyArXG4gICAgICAnc2hhZGVyX3NldF91bmlmb3JtX2ZfYXJyYXkgc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeCAnICtcbiAgICAgICdzaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4X2FycmF5IHNoYWRlcl9lbmFibGVfY29ybmVyX2lkICcgK1xuICAgICAgJ3RleHR1cmVfc2V0X3N0YWdlIHRleHR1cmVfZ2V0X3RleGVsX3dpZHRoIHRleHR1cmVfZ2V0X3RleGVsX2hlaWdodCAnICtcbiAgICAgICdzaGFkZXJzX2FyZV9zdXBwb3J0ZWQgdmVydGV4X2Zvcm1hdF9iZWdpbiB2ZXJ0ZXhfZm9ybWF0X2VuZCAnICtcbiAgICAgICd2ZXJ0ZXhfZm9ybWF0X2RlbGV0ZSB2ZXJ0ZXhfZm9ybWF0X2FkZF9wb3NpdGlvbiAnICtcbiAgICAgICd2ZXJ0ZXhfZm9ybWF0X2FkZF9wb3NpdGlvbl8zZCB2ZXJ0ZXhfZm9ybWF0X2FkZF9jb2xvdXIgJyArXG4gICAgICAndmVydGV4X2Zvcm1hdF9hZGRfY29sb3IgdmVydGV4X2Zvcm1hdF9hZGRfbm9ybWFsICcgK1xuICAgICAgJ3ZlcnRleF9mb3JtYXRfYWRkX3RleGNvb3JkIHZlcnRleF9mb3JtYXRfYWRkX3RleHRjb29yZCAnICtcbiAgICAgICd2ZXJ0ZXhfZm9ybWF0X2FkZF9jdXN0b20gdmVydGV4X2NyZWF0ZV9idWZmZXIgJyArXG4gICAgICAndmVydGV4X2NyZWF0ZV9idWZmZXJfZXh0IHZlcnRleF9kZWxldGVfYnVmZmVyIHZlcnRleF9iZWdpbiAnICtcbiAgICAgICd2ZXJ0ZXhfZW5kIHZlcnRleF9wb3NpdGlvbiB2ZXJ0ZXhfcG9zaXRpb25fM2QgdmVydGV4X2NvbG91ciAnICtcbiAgICAgICd2ZXJ0ZXhfY29sb3IgdmVydGV4X2FyZ2IgdmVydGV4X3RleGNvb3JkIHZlcnRleF9ub3JtYWwgdmVydGV4X2Zsb2F0MSAnICtcbiAgICAgICd2ZXJ0ZXhfZmxvYXQyIHZlcnRleF9mbG9hdDMgdmVydGV4X2Zsb2F0NCB2ZXJ0ZXhfdWJ5dGU0ICcgK1xuICAgICAgJ3ZlcnRleF9zdWJtaXQgdmVydGV4X2ZyZWV6ZSB2ZXJ0ZXhfZ2V0X251bWJlciB2ZXJ0ZXhfZ2V0X2J1ZmZlcl9zaXplICcgK1xuICAgICAgJ3ZlcnRleF9jcmVhdGVfYnVmZmVyX2Zyb21fYnVmZmVyICcgK1xuICAgICAgJ3ZlcnRleF9jcmVhdGVfYnVmZmVyX2Zyb21fYnVmZmVyX2V4dCBwdXNoX2xvY2FsX25vdGlmaWNhdGlvbiAnICtcbiAgICAgICdwdXNoX2dldF9maXJzdF9sb2NhbF9ub3RpZmljYXRpb24gcHVzaF9nZXRfbmV4dF9sb2NhbF9ub3RpZmljYXRpb24gJyArXG4gICAgICAncHVzaF9jYW5jZWxfbG9jYWxfbm90aWZpY2F0aW9uIHNrZWxldG9uX2FuaW1hdGlvbl9zZXQgJyArXG4gICAgICAnc2tlbGV0b25fYW5pbWF0aW9uX2dldCBza2VsZXRvbl9hbmltYXRpb25fbWl4ICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9zZXRfZXh0IHNrZWxldG9uX2FuaW1hdGlvbl9nZXRfZXh0ICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9nZXRfZHVyYXRpb24gc2tlbGV0b25fYW5pbWF0aW9uX2dldF9mcmFtZXMgJyArXG4gICAgICAnc2tlbGV0b25fYW5pbWF0aW9uX2NsZWFyIHNrZWxldG9uX3NraW5fc2V0IHNrZWxldG9uX3NraW5fZ2V0ICcgK1xuICAgICAgJ3NrZWxldG9uX2F0dGFjaG1lbnRfc2V0IHNrZWxldG9uX2F0dGFjaG1lbnRfZ2V0ICcgK1xuICAgICAgJ3NrZWxldG9uX2F0dGFjaG1lbnRfY3JlYXRlIHNrZWxldG9uX2NvbGxpc2lvbl9kcmF3X3NldCAnICtcbiAgICAgICdza2VsZXRvbl9ib25lX2RhdGFfZ2V0IHNrZWxldG9uX2JvbmVfZGF0YV9zZXQgJyArXG4gICAgICAnc2tlbGV0b25fYm9uZV9zdGF0ZV9nZXQgc2tlbGV0b25fYm9uZV9zdGF0ZV9zZXQgc2tlbGV0b25fZ2V0X21pbm1heCAnICtcbiAgICAgICdza2VsZXRvbl9nZXRfbnVtX2JvdW5kcyBza2VsZXRvbl9nZXRfYm91bmRzICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9nZXRfZnJhbWUgc2tlbGV0b25fYW5pbWF0aW9uX3NldF9mcmFtZSAnICtcbiAgICAgICdkcmF3X3NrZWxldG9uIGRyYXdfc2tlbGV0b25fdGltZSBkcmF3X3NrZWxldG9uX2luc3RhbmNlICcgK1xuICAgICAgJ2RyYXdfc2tlbGV0b25fY29sbGlzaW9uIHNrZWxldG9uX2FuaW1hdGlvbl9saXN0IHNrZWxldG9uX3NraW5fbGlzdCAnICtcbiAgICAgICdza2VsZXRvbl9zbG90X2RhdGEgbGF5ZXJfZ2V0X2lkIGxheWVyX2dldF9pZF9hdF9kZXB0aCAnICtcbiAgICAgICdsYXllcl9nZXRfZGVwdGggbGF5ZXJfY3JlYXRlIGxheWVyX2Rlc3Ryb3kgbGF5ZXJfZGVzdHJveV9pbnN0YW5jZXMgJyArXG4gICAgICAnbGF5ZXJfYWRkX2luc3RhbmNlIGxheWVyX2hhc19pbnN0YW5jZSBsYXllcl9zZXRfdmlzaWJsZSAnICtcbiAgICAgICdsYXllcl9nZXRfdmlzaWJsZSBsYXllcl9leGlzdHMgbGF5ZXJfeCBsYXllcl95IGxheWVyX2dldF94ICcgK1xuICAgICAgJ2xheWVyX2dldF95IGxheWVyX2hzcGVlZCBsYXllcl92c3BlZWQgbGF5ZXJfZ2V0X2hzcGVlZCAnICtcbiAgICAgICdsYXllcl9nZXRfdnNwZWVkIGxheWVyX3NjcmlwdF9iZWdpbiBsYXllcl9zY3JpcHRfZW5kIGxheWVyX3NoYWRlciAnICtcbiAgICAgICdsYXllcl9nZXRfc2NyaXB0X2JlZ2luIGxheWVyX2dldF9zY3JpcHRfZW5kIGxheWVyX2dldF9zaGFkZXIgJyArXG4gICAgICAnbGF5ZXJfc2V0X3RhcmdldF9yb29tIGxheWVyX2dldF90YXJnZXRfcm9vbSBsYXllcl9yZXNldF90YXJnZXRfcm9vbSAnICtcbiAgICAgICdsYXllcl9nZXRfYWxsIGxheWVyX2dldF9hbGxfZWxlbWVudHMgbGF5ZXJfZ2V0X25hbWUgbGF5ZXJfZGVwdGggJyArXG4gICAgICAnbGF5ZXJfZ2V0X2VsZW1lbnRfbGF5ZXIgbGF5ZXJfZ2V0X2VsZW1lbnRfdHlwZSBsYXllcl9lbGVtZW50X21vdmUgJyArXG4gICAgICAnbGF5ZXJfZm9yY2VfZHJhd19kZXB0aCBsYXllcl9pc19kcmF3X2RlcHRoX2ZvcmNlZCAnICtcbiAgICAgICdsYXllcl9nZXRfZm9yY2VkX2RlcHRoIGxheWVyX2JhY2tncm91bmRfZ2V0X2lkICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfZXhpc3RzIGxheWVyX2JhY2tncm91bmRfY3JlYXRlICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfZGVzdHJveSBsYXllcl9iYWNrZ3JvdW5kX3Zpc2libGUgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9jaGFuZ2UgbGF5ZXJfYmFja2dyb3VuZF9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9odGlsZWQgbGF5ZXJfYmFja2dyb3VuZF92dGlsZWQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9zdHJldGNoIGxheWVyX2JhY2tncm91bmRfeXNjYWxlICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfeHNjYWxlIGxheWVyX2JhY2tncm91bmRfYmxlbmQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9hbHBoYSBsYXllcl9iYWNrZ3JvdW5kX2luZGV4IGxheWVyX2JhY2tncm91bmRfc3BlZWQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfdmlzaWJsZSBsYXllcl9iYWNrZ3JvdW5kX2dldF9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfaHRpbGVkIGxheWVyX2JhY2tncm91bmRfZ2V0X3Z0aWxlZCAnICtcbiAgICAgICdsYXllcl9iYWNrZ3JvdW5kX2dldF9zdHJldGNoIGxheWVyX2JhY2tncm91bmRfZ2V0X3lzY2FsZSAnICtcbiAgICAgICdsYXllcl9iYWNrZ3JvdW5kX2dldF94c2NhbGUgbGF5ZXJfYmFja2dyb3VuZF9nZXRfYmxlbmQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfYWxwaGEgbGF5ZXJfYmFja2dyb3VuZF9nZXRfaW5kZXggJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfc3BlZWQgbGF5ZXJfc3ByaXRlX2dldF9pZCBsYXllcl9zcHJpdGVfZXhpc3RzICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9jcmVhdGUgbGF5ZXJfc3ByaXRlX2Rlc3Ryb3kgbGF5ZXJfc3ByaXRlX2NoYW5nZSAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfaW5kZXggbGF5ZXJfc3ByaXRlX3NwZWVkIGxheWVyX3Nwcml0ZV94c2NhbGUgJyArXG4gICAgICAnbGF5ZXJfc3ByaXRlX3lzY2FsZSBsYXllcl9zcHJpdGVfYW5nbGUgbGF5ZXJfc3ByaXRlX2JsZW5kICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9hbHBoYSBsYXllcl9zcHJpdGVfeCBsYXllcl9zcHJpdGVfeSAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfZ2V0X3Nwcml0ZSBsYXllcl9zcHJpdGVfZ2V0X2luZGV4ICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9nZXRfc3BlZWQgbGF5ZXJfc3ByaXRlX2dldF94c2NhbGUgJyArXG4gICAgICAnbGF5ZXJfc3ByaXRlX2dldF95c2NhbGUgbGF5ZXJfc3ByaXRlX2dldF9hbmdsZSAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfZ2V0X2JsZW5kIGxheWVyX3Nwcml0ZV9nZXRfYWxwaGEgbGF5ZXJfc3ByaXRlX2dldF94ICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9nZXRfeSBsYXllcl90aWxlbWFwX2dldF9pZCBsYXllcl90aWxlbWFwX2V4aXN0cyAnICtcbiAgICAgICdsYXllcl90aWxlbWFwX2NyZWF0ZSBsYXllcl90aWxlbWFwX2Rlc3Ryb3kgdGlsZW1hcF90aWxlc2V0IHRpbGVtYXBfeCAnICtcbiAgICAgICd0aWxlbWFwX3kgdGlsZW1hcF9zZXQgdGlsZW1hcF9zZXRfYXRfcGl4ZWwgdGlsZW1hcF9nZXRfdGlsZXNldCAnICtcbiAgICAgICd0aWxlbWFwX2dldF90aWxlX3dpZHRoIHRpbGVtYXBfZ2V0X3RpbGVfaGVpZ2h0IHRpbGVtYXBfZ2V0X3dpZHRoICcgK1xuICAgICAgJ3RpbGVtYXBfZ2V0X2hlaWdodCB0aWxlbWFwX2dldF94IHRpbGVtYXBfZ2V0X3kgdGlsZW1hcF9nZXQgJyArXG4gICAgICAndGlsZW1hcF9nZXRfYXRfcGl4ZWwgdGlsZW1hcF9nZXRfY2VsbF94X2F0X3BpeGVsICcgK1xuICAgICAgJ3RpbGVtYXBfZ2V0X2NlbGxfeV9hdF9waXhlbCB0aWxlbWFwX2NsZWFyIGRyYXdfdGlsZW1hcCBkcmF3X3RpbGUgJyArXG4gICAgICAndGlsZW1hcF9zZXRfZ2xvYmFsX21hc2sgdGlsZW1hcF9nZXRfZ2xvYmFsX21hc2sgdGlsZW1hcF9zZXRfbWFzayAnICtcbiAgICAgICd0aWxlbWFwX2dldF9tYXNrIHRpbGVtYXBfZ2V0X2ZyYW1lIHRpbGVfc2V0X2VtcHR5IHRpbGVfc2V0X2luZGV4ICcgK1xuICAgICAgJ3RpbGVfc2V0X2ZsaXAgdGlsZV9zZXRfbWlycm9yIHRpbGVfc2V0X3JvdGF0ZSB0aWxlX2dldF9lbXB0eSAnICtcbiAgICAgICd0aWxlX2dldF9pbmRleCB0aWxlX2dldF9mbGlwIHRpbGVfZ2V0X21pcnJvciB0aWxlX2dldF9yb3RhdGUgJyArXG4gICAgICAnbGF5ZXJfdGlsZV9leGlzdHMgbGF5ZXJfdGlsZV9jcmVhdGUgbGF5ZXJfdGlsZV9kZXN0cm95ICcgK1xuICAgICAgJ2xheWVyX3RpbGVfY2hhbmdlIGxheWVyX3RpbGVfeHNjYWxlIGxheWVyX3RpbGVfeXNjYWxlICcgK1xuICAgICAgJ2xheWVyX3RpbGVfYmxlbmQgbGF5ZXJfdGlsZV9hbHBoYSBsYXllcl90aWxlX3ggbGF5ZXJfdGlsZV95ICcgK1xuICAgICAgJ2xheWVyX3RpbGVfcmVnaW9uIGxheWVyX3RpbGVfdmlzaWJsZSBsYXllcl90aWxlX2dldF9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJfdGlsZV9nZXRfeHNjYWxlIGxheWVyX3RpbGVfZ2V0X3lzY2FsZSBsYXllcl90aWxlX2dldF9ibGVuZCAnICtcbiAgICAgICdsYXllcl90aWxlX2dldF9hbHBoYSBsYXllcl90aWxlX2dldF94IGxheWVyX3RpbGVfZ2V0X3kgJyArXG4gICAgICAnbGF5ZXJfdGlsZV9nZXRfcmVnaW9uIGxheWVyX3RpbGVfZ2V0X3Zpc2libGUgJyArXG4gICAgICAnbGF5ZXJfaW5zdGFuY2VfZ2V0X2luc3RhbmNlIGluc3RhbmNlX2FjdGl2YXRlX2xheWVyICcgK1xuICAgICAgJ2luc3RhbmNlX2RlYWN0aXZhdGVfbGF5ZXIgY2FtZXJhX2NyZWF0ZSBjYW1lcmFfY3JlYXRlX3ZpZXcgJyArXG4gICAgICAnY2FtZXJhX2Rlc3Ryb3kgY2FtZXJhX2FwcGx5IGNhbWVyYV9nZXRfYWN0aXZlIGNhbWVyYV9nZXRfZGVmYXVsdCAnICtcbiAgICAgICdjYW1lcmFfc2V0X2RlZmF1bHQgY2FtZXJhX3NldF92aWV3X21hdCBjYW1lcmFfc2V0X3Byb2pfbWF0ICcgK1xuICAgICAgJ2NhbWVyYV9zZXRfdXBkYXRlX3NjcmlwdCBjYW1lcmFfc2V0X2JlZ2luX3NjcmlwdCAnICtcbiAgICAgICdjYW1lcmFfc2V0X2VuZF9zY3JpcHQgY2FtZXJhX3NldF92aWV3X3BvcyBjYW1lcmFfc2V0X3ZpZXdfc2l6ZSAnICtcbiAgICAgICdjYW1lcmFfc2V0X3ZpZXdfc3BlZWQgY2FtZXJhX3NldF92aWV3X2JvcmRlciBjYW1lcmFfc2V0X3ZpZXdfYW5nbGUgJyArXG4gICAgICAnY2FtZXJhX3NldF92aWV3X3RhcmdldCBjYW1lcmFfZ2V0X3ZpZXdfbWF0IGNhbWVyYV9nZXRfcHJval9tYXQgJyArXG4gICAgICAnY2FtZXJhX2dldF91cGRhdGVfc2NyaXB0IGNhbWVyYV9nZXRfYmVnaW5fc2NyaXB0ICcgK1xuICAgICAgJ2NhbWVyYV9nZXRfZW5kX3NjcmlwdCBjYW1lcmFfZ2V0X3ZpZXdfeCBjYW1lcmFfZ2V0X3ZpZXdfeSAnICtcbiAgICAgICdjYW1lcmFfZ2V0X3ZpZXdfd2lkdGggY2FtZXJhX2dldF92aWV3X2hlaWdodCBjYW1lcmFfZ2V0X3ZpZXdfc3BlZWRfeCAnICtcbiAgICAgICdjYW1lcmFfZ2V0X3ZpZXdfc3BlZWRfeSBjYW1lcmFfZ2V0X3ZpZXdfYm9yZGVyX3ggJyArXG4gICAgICAnY2FtZXJhX2dldF92aWV3X2JvcmRlcl95IGNhbWVyYV9nZXRfdmlld19hbmdsZSAnICtcbiAgICAgICdjYW1lcmFfZ2V0X3ZpZXdfdGFyZ2V0IHZpZXdfZ2V0X2NhbWVyYSB2aWV3X2dldF92aXNpYmxlICcgK1xuICAgICAgJ3ZpZXdfZ2V0X3hwb3J0IHZpZXdfZ2V0X3lwb3J0IHZpZXdfZ2V0X3dwb3J0IHZpZXdfZ2V0X2hwb3J0ICcgK1xuICAgICAgJ3ZpZXdfZ2V0X3N1cmZhY2VfaWQgdmlld19zZXRfY2FtZXJhIHZpZXdfc2V0X3Zpc2libGUgdmlld19zZXRfeHBvcnQgJyArXG4gICAgICAndmlld19zZXRfeXBvcnQgdmlld19zZXRfd3BvcnQgdmlld19zZXRfaHBvcnQgdmlld19zZXRfc3VyZmFjZV9pZCAnICtcbiAgICAgICdnZXN0dXJlX2RyYWdfdGltZSBnZXN0dXJlX2RyYWdfZGlzdGFuY2UgZ2VzdHVyZV9mbGlja19zcGVlZCAnICtcbiAgICAgICdnZXN0dXJlX2RvdWJsZV90YXBfdGltZSBnZXN0dXJlX2RvdWJsZV90YXBfZGlzdGFuY2UgJyArXG4gICAgICAnZ2VzdHVyZV9waW5jaF9kaXN0YW5jZSBnZXN0dXJlX3BpbmNoX2FuZ2xlX3Rvd2FyZHMgJyArXG4gICAgICAnZ2VzdHVyZV9waW5jaF9hbmdsZV9hd2F5IGdlc3R1cmVfcm90YXRlX3RpbWUgZ2VzdHVyZV9yb3RhdGVfYW5nbGUgJyArXG4gICAgICAnZ2VzdHVyZV90YXBfY291bnQgZ2VzdHVyZV9nZXRfZHJhZ190aW1lIGdlc3R1cmVfZ2V0X2RyYWdfZGlzdGFuY2UgJyArXG4gICAgICAnZ2VzdHVyZV9nZXRfZmxpY2tfc3BlZWQgZ2VzdHVyZV9nZXRfZG91YmxlX3RhcF90aW1lICcgK1xuICAgICAgJ2dlc3R1cmVfZ2V0X2RvdWJsZV90YXBfZGlzdGFuY2UgZ2VzdHVyZV9nZXRfcGluY2hfZGlzdGFuY2UgJyArXG4gICAgICAnZ2VzdHVyZV9nZXRfcGluY2hfYW5nbGVfdG93YXJkcyBnZXN0dXJlX2dldF9waW5jaF9hbmdsZV9hd2F5ICcgK1xuICAgICAgJ2dlc3R1cmVfZ2V0X3JvdGF0ZV90aW1lIGdlc3R1cmVfZ2V0X3JvdGF0ZV9hbmdsZSAnICtcbiAgICAgICdnZXN0dXJlX2dldF90YXBfY291bnQga2V5Ym9hcmRfdmlydHVhbF9zaG93IGtleWJvYXJkX3ZpcnR1YWxfaGlkZSAnICtcbiAgICAgICdrZXlib2FyZF92aXJ0dWFsX3N0YXR1cyBrZXlib2FyZF92aXJ0dWFsX2hlaWdodCcsXG4gICAgbGl0ZXJhbDogJ3NlbGYgb3RoZXIgYWxsIG5vb25lIGdsb2JhbCBsb2NhbCB1bmRlZmluZWQgcG9pbnRlcl9pbnZhbGlkICcgK1xuICAgICAgJ3BvaW50ZXJfbnVsbCBwYXRoX2FjdGlvbl9zdG9wIHBhdGhfYWN0aW9uX3Jlc3RhcnQgJyArXG4gICAgICAncGF0aF9hY3Rpb25fY29udGludWUgcGF0aF9hY3Rpb25fcmV2ZXJzZSB0cnVlIGZhbHNlIHBpIEdNX2J1aWxkX2RhdGUgJyArXG4gICAgICAnR01fdmVyc2lvbiBHTV9ydW50aW1lX3ZlcnNpb24gIHRpbWV6b25lX2xvY2FsIHRpbWV6b25lX3V0YyAnICtcbiAgICAgICdnYW1lc3BlZWRfZnBzIGdhbWVzcGVlZF9taWNyb3NlY29uZHMgIGV2X2NyZWF0ZSBldl9kZXN0cm95IGV2X3N0ZXAgJyArXG4gICAgICAnZXZfYWxhcm0gZXZfa2V5Ym9hcmQgZXZfbW91c2UgZXZfY29sbGlzaW9uIGV2X290aGVyIGV2X2RyYXcgJyArXG4gICAgICAnZXZfZHJhd19iZWdpbiBldl9kcmF3X2VuZCBldl9kcmF3X3ByZSBldl9kcmF3X3Bvc3QgZXZfa2V5cHJlc3MgJyArXG4gICAgICAnZXZfa2V5cmVsZWFzZSBldl90cmlnZ2VyIGV2X2xlZnRfYnV0dG9uIGV2X3JpZ2h0X2J1dHRvbiAnICtcbiAgICAgICdldl9taWRkbGVfYnV0dG9uIGV2X25vX2J1dHRvbiBldl9sZWZ0X3ByZXNzIGV2X3JpZ2h0X3ByZXNzICcgK1xuICAgICAgJ2V2X21pZGRsZV9wcmVzcyBldl9sZWZ0X3JlbGVhc2UgZXZfcmlnaHRfcmVsZWFzZSBldl9taWRkbGVfcmVsZWFzZSAnICtcbiAgICAgICdldl9tb3VzZV9lbnRlciBldl9tb3VzZV9sZWF2ZSBldl9tb3VzZV93aGVlbF91cCBldl9tb3VzZV93aGVlbF9kb3duICcgK1xuICAgICAgJ2V2X2dsb2JhbF9sZWZ0X2J1dHRvbiBldl9nbG9iYWxfcmlnaHRfYnV0dG9uIGV2X2dsb2JhbF9taWRkbGVfYnV0dG9uICcgK1xuICAgICAgJ2V2X2dsb2JhbF9sZWZ0X3ByZXNzIGV2X2dsb2JhbF9yaWdodF9wcmVzcyBldl9nbG9iYWxfbWlkZGxlX3ByZXNzICcgK1xuICAgICAgJ2V2X2dsb2JhbF9sZWZ0X3JlbGVhc2UgZXZfZ2xvYmFsX3JpZ2h0X3JlbGVhc2UgJyArXG4gICAgICAnZXZfZ2xvYmFsX21pZGRsZV9yZWxlYXNlIGV2X2pveXN0aWNrMV9sZWZ0IGV2X2pveXN0aWNrMV9yaWdodCAnICtcbiAgICAgICdldl9qb3lzdGljazFfdXAgZXZfam95c3RpY2sxX2Rvd24gZXZfam95c3RpY2sxX2J1dHRvbjEgJyArXG4gICAgICAnZXZfam95c3RpY2sxX2J1dHRvbjIgZXZfam95c3RpY2sxX2J1dHRvbjMgZXZfam95c3RpY2sxX2J1dHRvbjQgJyArXG4gICAgICAnZXZfam95c3RpY2sxX2J1dHRvbjUgZXZfam95c3RpY2sxX2J1dHRvbjYgZXZfam95c3RpY2sxX2J1dHRvbjcgJyArXG4gICAgICAnZXZfam95c3RpY2sxX2J1dHRvbjggZXZfam95c3RpY2syX2xlZnQgZXZfam95c3RpY2syX3JpZ2h0ICcgK1xuICAgICAgJ2V2X2pveXN0aWNrMl91cCBldl9qb3lzdGljazJfZG93biBldl9qb3lzdGljazJfYnV0dG9uMSAnICtcbiAgICAgICdldl9qb3lzdGljazJfYnV0dG9uMiBldl9qb3lzdGljazJfYnV0dG9uMyBldl9qb3lzdGljazJfYnV0dG9uNCAnICtcbiAgICAgICdldl9qb3lzdGljazJfYnV0dG9uNSBldl9qb3lzdGljazJfYnV0dG9uNiBldl9qb3lzdGljazJfYnV0dG9uNyAnICtcbiAgICAgICdldl9qb3lzdGljazJfYnV0dG9uOCBldl9vdXRzaWRlIGV2X2JvdW5kYXJ5IGV2X2dhbWVfc3RhcnQgJyArXG4gICAgICAnZXZfZ2FtZV9lbmQgZXZfcm9vbV9zdGFydCBldl9yb29tX2VuZCBldl9ub19tb3JlX2xpdmVzICcgK1xuICAgICAgJ2V2X2FuaW1hdGlvbl9lbmQgZXZfZW5kX29mX3BhdGggZXZfbm9fbW9yZV9oZWFsdGggZXZfY2xvc2VfYnV0dG9uICcgK1xuICAgICAgJ2V2X3VzZXIwIGV2X3VzZXIxIGV2X3VzZXIyIGV2X3VzZXIzIGV2X3VzZXI0IGV2X3VzZXI1IGV2X3VzZXI2ICcgK1xuICAgICAgJ2V2X3VzZXI3IGV2X3VzZXI4IGV2X3VzZXI5IGV2X3VzZXIxMCBldl91c2VyMTEgZXZfdXNlcjEyIGV2X3VzZXIxMyAnICtcbiAgICAgICdldl91c2VyMTQgZXZfdXNlcjE1IGV2X3N0ZXBfbm9ybWFsIGV2X3N0ZXBfYmVnaW4gZXZfc3RlcF9lbmQgZXZfZ3VpICcgK1xuICAgICAgJ2V2X2d1aV9iZWdpbiBldl9ndWlfZW5kIGV2X2NsZWFudXAgZXZfZ2VzdHVyZSBldl9nZXN0dXJlX3RhcCAnICtcbiAgICAgICdldl9nZXN0dXJlX2RvdWJsZV90YXAgZXZfZ2VzdHVyZV9kcmFnX3N0YXJ0IGV2X2dlc3R1cmVfZHJhZ2dpbmcgJyArXG4gICAgICAnZXZfZ2VzdHVyZV9kcmFnX2VuZCBldl9nZXN0dXJlX2ZsaWNrIGV2X2dlc3R1cmVfcGluY2hfc3RhcnQgJyArXG4gICAgICAnZXZfZ2VzdHVyZV9waW5jaF9pbiBldl9nZXN0dXJlX3BpbmNoX291dCBldl9nZXN0dXJlX3BpbmNoX2VuZCAnICtcbiAgICAgICdldl9nZXN0dXJlX3JvdGF0ZV9zdGFydCBldl9nZXN0dXJlX3JvdGF0aW5nIGV2X2dlc3R1cmVfcm90YXRlX2VuZCAnICtcbiAgICAgICdldl9nbG9iYWxfZ2VzdHVyZV90YXAgZXZfZ2xvYmFsX2dlc3R1cmVfZG91YmxlX3RhcCAnICtcbiAgICAgICdldl9nbG9iYWxfZ2VzdHVyZV9kcmFnX3N0YXJ0IGV2X2dsb2JhbF9nZXN0dXJlX2RyYWdnaW5nICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX2RyYWdfZW5kIGV2X2dsb2JhbF9nZXN0dXJlX2ZsaWNrICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX3BpbmNoX3N0YXJ0IGV2X2dsb2JhbF9nZXN0dXJlX3BpbmNoX2luICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX3BpbmNoX291dCBldl9nbG9iYWxfZ2VzdHVyZV9waW5jaF9lbmQgJyArXG4gICAgICAnZXZfZ2xvYmFsX2dlc3R1cmVfcm90YXRlX3N0YXJ0IGV2X2dsb2JhbF9nZXN0dXJlX3JvdGF0aW5nICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX3JvdGF0ZV9lbmQgdmtfbm9rZXkgdmtfYW55a2V5IHZrX2VudGVyIHZrX3JldHVybiAnICtcbiAgICAgICd2a19zaGlmdCB2a19jb250cm9sIHZrX2FsdCB2a19lc2NhcGUgdmtfc3BhY2UgdmtfYmFja3NwYWNlIHZrX3RhYiAnICtcbiAgICAgICd2a19wYXVzZSB2a19wcmludHNjcmVlbiB2a19sZWZ0IHZrX3JpZ2h0IHZrX3VwIHZrX2Rvd24gdmtfaG9tZSAnICtcbiAgICAgICd2a19lbmQgdmtfZGVsZXRlIHZrX2luc2VydCB2a19wYWdldXAgdmtfcGFnZWRvd24gdmtfZjEgdmtfZjIgdmtfZjMgJyArXG4gICAgICAndmtfZjQgdmtfZjUgdmtfZjYgdmtfZjcgdmtfZjggdmtfZjkgdmtfZjEwIHZrX2YxMSB2a19mMTIgdmtfbnVtcGFkMCAnICtcbiAgICAgICd2a19udW1wYWQxIHZrX251bXBhZDIgdmtfbnVtcGFkMyB2a19udW1wYWQ0IHZrX251bXBhZDUgdmtfbnVtcGFkNiAnICtcbiAgICAgICd2a19udW1wYWQ3IHZrX251bXBhZDggdmtfbnVtcGFkOSB2a19kaXZpZGUgdmtfbXVsdGlwbHkgdmtfc3VidHJhY3QgJyArXG4gICAgICAndmtfYWRkIHZrX2RlY2ltYWwgdmtfbHNoaWZ0IHZrX2xjb250cm9sIHZrX2xhbHQgdmtfcnNoaWZ0ICcgK1xuICAgICAgJ3ZrX3Jjb250cm9sIHZrX3JhbHQgIG1iX2FueSBtYl9ub25lIG1iX2xlZnQgbWJfcmlnaHQgbWJfbWlkZGxlICcgK1xuICAgICAgJ2NfYXF1YSBjX2JsYWNrIGNfYmx1ZSBjX2RrZ3JheSBjX2Z1Y2hzaWEgY19ncmF5IGNfZ3JlZW4gY19saW1lICcgK1xuICAgICAgJ2NfbHRncmF5IGNfbWFyb29uIGNfbmF2eSBjX29saXZlIGNfcHVycGxlIGNfcmVkIGNfc2lsdmVyIGNfdGVhbCAnICtcbiAgICAgICdjX3doaXRlIGNfeWVsbG93IGNfb3JhbmdlIGZhX2xlZnQgZmFfY2VudGVyIGZhX3JpZ2h0IGZhX3RvcCAnICtcbiAgICAgICdmYV9taWRkbGUgZmFfYm90dG9tIHByX3BvaW50bGlzdCBwcl9saW5lbGlzdCBwcl9saW5lc3RyaXAgJyArXG4gICAgICAncHJfdHJpYW5nbGVsaXN0IHByX3RyaWFuZ2xlc3RyaXAgcHJfdHJpYW5nbGVmYW4gYm1fY29tcGxleCBibV9ub3JtYWwgJyArXG4gICAgICAnYm1fYWRkIGJtX21heCBibV9zdWJ0cmFjdCBibV96ZXJvIGJtX29uZSBibV9zcmNfY29sb3VyICcgK1xuICAgICAgJ2JtX2ludl9zcmNfY29sb3VyIGJtX3NyY19jb2xvciBibV9pbnZfc3JjX2NvbG9yIGJtX3NyY19hbHBoYSAnICtcbiAgICAgICdibV9pbnZfc3JjX2FscGhhIGJtX2Rlc3RfYWxwaGEgYm1faW52X2Rlc3RfYWxwaGEgYm1fZGVzdF9jb2xvdXIgJyArXG4gICAgICAnYm1faW52X2Rlc3RfY29sb3VyIGJtX2Rlc3RfY29sb3IgYm1faW52X2Rlc3RfY29sb3IgYm1fc3JjX2FscGhhX3NhdCAnICtcbiAgICAgICd0Zl9wb2ludCB0Zl9saW5lYXIgdGZfYW5pc290cm9waWMgbWlwX29mZiBtaXBfb24gbWlwX21hcmtlZG9ubHkgJyArXG4gICAgICAnYXVkaW9fZmFsbG9mZl9ub25lIGF1ZGlvX2ZhbGxvZmZfaW52ZXJzZV9kaXN0YW5jZSAnICtcbiAgICAgICdhdWRpb19mYWxsb2ZmX2ludmVyc2VfZGlzdGFuY2VfY2xhbXBlZCBhdWRpb19mYWxsb2ZmX2xpbmVhcl9kaXN0YW5jZSAnICtcbiAgICAgICdhdWRpb19mYWxsb2ZmX2xpbmVhcl9kaXN0YW5jZV9jbGFtcGVkICcgK1xuICAgICAgJ2F1ZGlvX2ZhbGxvZmZfZXhwb25lbnRfZGlzdGFuY2UgJyArXG4gICAgICAnYXVkaW9fZmFsbG9mZl9leHBvbmVudF9kaXN0YW5jZV9jbGFtcGVkIGF1ZGlvX29sZF9zeXN0ZW0gJyArXG4gICAgICAnYXVkaW9fbmV3X3N5c3RlbSBhdWRpb19tb25vIGF1ZGlvX3N0ZXJlbyBhdWRpb18zZCBjcl9kZWZhdWx0IGNyX25vbmUgJyArXG4gICAgICAnY3JfYXJyb3cgY3JfY3Jvc3MgY3JfYmVhbSBjcl9zaXplX25lc3cgY3Jfc2l6ZV9ucyBjcl9zaXplX253c2UgJyArXG4gICAgICAnY3Jfc2l6ZV93ZSBjcl91cGFycm93IGNyX2hvdXJnbGFzcyBjcl9kcmFnIGNyX2FwcHN0YXJ0IGNyX2hhbmRwb2ludCAnICtcbiAgICAgICdjcl9zaXplX2FsbCBzcHJpdGVzcGVlZF9mcmFtZXNwZXJzZWNvbmQgJyArXG4gICAgICAnc3ByaXRlc3BlZWRfZnJhbWVzcGVyZ2FtZWZyYW1lIGFzc2V0X29iamVjdCBhc3NldF91bmtub3duICcgK1xuICAgICAgJ2Fzc2V0X3Nwcml0ZSBhc3NldF9zb3VuZCBhc3NldF9yb29tIGFzc2V0X3BhdGggYXNzZXRfc2NyaXB0ICcgK1xuICAgICAgJ2Fzc2V0X2ZvbnQgYXNzZXRfdGltZWxpbmUgYXNzZXRfdGlsZXMgYXNzZXRfc2hhZGVyIGZhX3JlYWRvbmx5ICcgK1xuICAgICAgJ2ZhX2hpZGRlbiBmYV9zeXNmaWxlIGZhX3ZvbHVtZWlkIGZhX2RpcmVjdG9yeSBmYV9hcmNoaXZlICAnICtcbiAgICAgICdkc190eXBlX21hcCBkc190eXBlX2xpc3QgZHNfdHlwZV9zdGFjayBkc190eXBlX3F1ZXVlIGRzX3R5cGVfZ3JpZCAnICtcbiAgICAgICdkc190eXBlX3ByaW9yaXR5IGVmX2V4cGxvc2lvbiBlZl9yaW5nIGVmX2VsbGlwc2UgZWZfZmlyZXdvcmsgJyArXG4gICAgICAnZWZfc21va2UgZWZfc21va2V1cCBlZl9zdGFyIGVmX3NwYXJrIGVmX2ZsYXJlIGVmX2Nsb3VkIGVmX3JhaW4gJyArXG4gICAgICAnZWZfc25vdyBwdF9zaGFwZV9waXhlbCBwdF9zaGFwZV9kaXNrIHB0X3NoYXBlX3NxdWFyZSBwdF9zaGFwZV9saW5lICcgK1xuICAgICAgJ3B0X3NoYXBlX3N0YXIgcHRfc2hhcGVfY2lyY2xlIHB0X3NoYXBlX3JpbmcgcHRfc2hhcGVfc3BoZXJlICcgK1xuICAgICAgJ3B0X3NoYXBlX2ZsYXJlIHB0X3NoYXBlX3NwYXJrIHB0X3NoYXBlX2V4cGxvc2lvbiBwdF9zaGFwZV9jbG91ZCAnICtcbiAgICAgICdwdF9zaGFwZV9zbW9rZSBwdF9zaGFwZV9zbm93IHBzX2Rpc3RyX2xpbmVhciBwc19kaXN0cl9nYXVzc2lhbiAnICtcbiAgICAgICdwc19kaXN0cl9pbnZnYXVzc2lhbiBwc19zaGFwZV9yZWN0YW5nbGUgcHNfc2hhcGVfZWxsaXBzZSAnICtcbiAgICAgICdwc19zaGFwZV9kaWFtb25kIHBzX3NoYXBlX2xpbmUgdHlfcmVhbCB0eV9zdHJpbmcgZGxsX2NkZWNsICcgK1xuICAgICAgJ2RsbF9zdGRjYWxsIG1hdHJpeF92aWV3IG1hdHJpeF9wcm9qZWN0aW9uIG1hdHJpeF93b3JsZCBvc193aW4zMiAnICtcbiAgICAgICdvc193aW5kb3dzIG9zX21hY29zeCBvc19pb3Mgb3NfYW5kcm9pZCBvc19zeW1iaWFuIG9zX2xpbnV4ICcgK1xuICAgICAgJ29zX3Vua25vd24gb3Nfd2lucGhvbmUgb3NfdGl6ZW4gb3Nfd2luOG5hdGl2ZSAnICtcbiAgICAgICdvc193aWl1IG9zXzNkcyAgb3NfcHN2aXRhIG9zX2JiMTAgb3NfcHM0IG9zX3hib3hvbmUgJyArXG4gICAgICAnb3NfcHMzIG9zX3hib3gzNjAgb3NfdXdwIG9zX3R2b3Mgb3Nfc3dpdGNoICcgK1xuICAgICAgJ2Jyb3dzZXJfbm90X2FfYnJvd3NlciBicm93c2VyX3Vua25vd24gYnJvd3Nlcl9pZSBicm93c2VyX2ZpcmVmb3ggJyArXG4gICAgICAnYnJvd3Nlcl9jaHJvbWUgYnJvd3Nlcl9zYWZhcmkgYnJvd3Nlcl9zYWZhcmlfbW9iaWxlIGJyb3dzZXJfb3BlcmEgJyArXG4gICAgICAnYnJvd3Nlcl90aXplbiBicm93c2VyX2VkZ2UgYnJvd3Nlcl93aW5kb3dzX3N0b3JlIGJyb3dzZXJfaWVfbW9iaWxlICAnICtcbiAgICAgICdkZXZpY2VfaW9zX3Vua25vd24gZGV2aWNlX2lvc19pcGhvbmUgZGV2aWNlX2lvc19pcGhvbmVfcmV0aW5hICcgK1xuICAgICAgJ2RldmljZV9pb3NfaXBhZCBkZXZpY2VfaW9zX2lwYWRfcmV0aW5hIGRldmljZV9pb3NfaXBob25lNSAnICtcbiAgICAgICdkZXZpY2VfaW9zX2lwaG9uZTYgZGV2aWNlX2lvc19pcGhvbmU2cGx1cyBkZXZpY2VfZW11bGF0b3IgJyArXG4gICAgICAnZGV2aWNlX3RhYmxldCBkaXNwbGF5X2xhbmRzY2FwZSBkaXNwbGF5X2xhbmRzY2FwZV9mbGlwcGVkICcgK1xuICAgICAgJ2Rpc3BsYXlfcG9ydHJhaXQgZGlzcGxheV9wb3J0cmFpdF9mbGlwcGVkIHRtX3NsZWVwIHRtX2NvdW50dnN5bmNzICcgK1xuICAgICAgJ29mX2NoYWxsZW5nZV93aW4gb2ZfY2hhbGxlbiBnZV9sb3NlIG9mX2NoYWxsZW5nZV90aWUgJyArXG4gICAgICAnbGVhZGVyYm9hcmRfdHlwZV9udW1iZXIgbGVhZGVyYm9hcmRfdHlwZV90aW1lX21pbnNfc2VjcyAnICtcbiAgICAgICdjbXBmdW5jX25ldmVyIGNtcGZ1bmNfbGVzcyBjbXBmdW5jX2VxdWFsIGNtcGZ1bmNfbGVzc2VxdWFsICcgK1xuICAgICAgJ2NtcGZ1bmNfZ3JlYXRlciBjbXBmdW5jX25vdGVxdWFsIGNtcGZ1bmNfZ3JlYXRlcmVxdWFsIGNtcGZ1bmNfYWx3YXlzICcgK1xuICAgICAgJ2N1bGxfbm9jdWxsaW5nIGN1bGxfY2xvY2t3aXNlIGN1bGxfY291bnRlcmNsb2Nrd2lzZSBsaWdodHR5cGVfZGlyICcgK1xuICAgICAgJ2xpZ2h0dHlwZV9wb2ludCBpYXBfZXZfc3RvcmVsb2FkIGlhcF9ldl9wcm9kdWN0IGlhcF9ldl9wdXJjaGFzZSAnICtcbiAgICAgICdpYXBfZXZfY29uc3VtZSBpYXBfZXZfcmVzdG9yZSBpYXBfc3RvcmVsb2FkX29rIGlhcF9zdG9yZWxvYWRfZmFpbGVkICcgK1xuICAgICAgJ2lhcF9zdGF0dXNfdW5pbml0aWFsaXNlZCBpYXBfc3RhdHVzX3VuYXZhaWxhYmxlIGlhcF9zdGF0dXNfbG9hZGluZyAnICtcbiAgICAgICdpYXBfc3RhdHVzX2F2YWlsYWJsZSBpYXBfc3RhdHVzX3Byb2Nlc3NpbmcgaWFwX3N0YXR1c19yZXN0b3JpbmcgJyArXG4gICAgICAnaWFwX2ZhaWxlZCBpYXBfdW5hdmFpbGFibGUgaWFwX2F2YWlsYWJsZSBpYXBfcHVyY2hhc2VkIGlhcF9jYW5jZWxlZCAnICtcbiAgICAgICdpYXBfcmVmdW5kZWQgZmJfbG9naW5fZGVmYXVsdCBmYl9sb2dpbl9mYWxsYmFja190b193ZWJ2aWV3ICcgK1xuICAgICAgJ2ZiX2xvZ2luX25vX2ZhbGxiYWNrX3RvX3dlYnZpZXcgZmJfbG9naW5fZm9yY2luZ193ZWJ2aWV3ICcgK1xuICAgICAgJ2ZiX2xvZ2luX3VzZV9zeXN0ZW1fYWNjb3VudCBmYl9sb2dpbl9mb3JjaW5nX3NhZmFyaSAgJyArXG4gICAgICAncGh5X2pvaW50X2FuY2hvcl8xX3ggcGh5X2pvaW50X2FuY2hvcl8xX3kgcGh5X2pvaW50X2FuY2hvcl8yX3ggJyArXG4gICAgICAncGh5X2pvaW50X2FuY2hvcl8yX3kgcGh5X2pvaW50X3JlYWN0aW9uX2ZvcmNlX3ggJyArXG4gICAgICAncGh5X2pvaW50X3JlYWN0aW9uX2ZvcmNlX3kgcGh5X2pvaW50X3JlYWN0aW9uX3RvcnF1ZSAnICtcbiAgICAgICdwaHlfam9pbnRfbW90b3Jfc3BlZWQgcGh5X2pvaW50X2FuZ2xlIHBoeV9qb2ludF9tb3Rvcl90b3JxdWUgJyArXG4gICAgICAncGh5X2pvaW50X21heF9tb3Rvcl90b3JxdWUgcGh5X2pvaW50X3RyYW5zbGF0aW9uIHBoeV9qb2ludF9zcGVlZCAnICtcbiAgICAgICdwaHlfam9pbnRfbW90b3JfZm9yY2UgcGh5X2pvaW50X21heF9tb3Rvcl9mb3JjZSBwaHlfam9pbnRfbGVuZ3RoXzEgJyArXG4gICAgICAncGh5X2pvaW50X2xlbmd0aF8yIHBoeV9qb2ludF9kYW1waW5nX3JhdGlvIHBoeV9qb2ludF9mcmVxdWVuY3kgJyArXG4gICAgICAncGh5X2pvaW50X2xvd2VyX2FuZ2xlX2xpbWl0IHBoeV9qb2ludF91cHBlcl9hbmdsZV9saW1pdCAnICtcbiAgICAgICdwaHlfam9pbnRfYW5nbGVfbGltaXRzIHBoeV9qb2ludF9tYXhfbGVuZ3RoIHBoeV9qb2ludF9tYXhfdG9ycXVlICcgK1xuICAgICAgJ3BoeV9qb2ludF9tYXhfZm9yY2UgcGh5X2RlYnVnX3JlbmRlcl9hYWJiICcgK1xuICAgICAgJ3BoeV9kZWJ1Z19yZW5kZXJfY29sbGlzaW9uX3BhaXJzIHBoeV9kZWJ1Z19yZW5kZXJfY29tcyAnICtcbiAgICAgICdwaHlfZGVidWdfcmVuZGVyX2NvcmVfc2hhcGVzIHBoeV9kZWJ1Z19yZW5kZXJfam9pbnRzICcgK1xuICAgICAgJ3BoeV9kZWJ1Z19yZW5kZXJfb2JiIHBoeV9kZWJ1Z19yZW5kZXJfc2hhcGVzICAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZmxhZ193YXRlciBwaHlfcGFydGljbGVfZmxhZ196b21iaWUgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2ZsYWdfd2FsbCBwaHlfcGFydGljbGVfZmxhZ19zcHJpbmcgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2ZsYWdfZWxhc3RpYyBwaHlfcGFydGljbGVfZmxhZ192aXNjb3VzICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9mbGFnX3Bvd2RlciBwaHlfcGFydGljbGVfZmxhZ190ZW5zaWxlICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9mbGFnX2NvbG91cm1peGluZyBwaHlfcGFydGljbGVfZmxhZ19jb2xvcm1peGluZyAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZ3JvdXBfZmxhZ19zb2xpZCBwaHlfcGFydGljbGVfZ3JvdXBfZmxhZ19yaWdpZCAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZGF0YV9mbGFnX3R5cGVmbGFncyBwaHlfcGFydGljbGVfZGF0YV9mbGFnX3Bvc2l0aW9uICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9kYXRhX2ZsYWdfdmVsb2NpdHkgcGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19jb2xvdXIgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19jb2xvciBwaHlfcGFydGljbGVfZGF0YV9mbGFnX2NhdGVnb3J5ICAnICtcbiAgICAgICdhY2hpZXZlbWVudF9vdXJfaW5mbyBhY2hpZXZlbWVudF9mcmllbmRzX2luZm8gJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfbGVhZGVyYm9hcmRfaW5mbyBhY2hpZXZlbWVudF9hY2hpZXZlbWVudF9pbmZvICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2ZpbHRlcl9hbGxfcGxheWVycyBhY2hpZXZlbWVudF9maWx0ZXJfZnJpZW5kc19vbmx5ICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2ZpbHRlcl9mYXZvcml0ZXNfb25seSAnICtcbiAgICAgICdhY2hpZXZlbWVudF90eXBlX2FjaGlldmVtZW50X2NoYWxsZW5nZSAnICtcbiAgICAgICdhY2hpZXZlbWVudF90eXBlX3Njb3JlX2NoYWxsZW5nZSBhY2hpZXZlbWVudF9waWNfbG9hZGVkICAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zaG93X3VpIGFjaGlldmVtZW50X3Nob3dfcHJvZmlsZSAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zaG93X2xlYWRlcmJvYXJkIGFjaGlldmVtZW50X3Nob3dfYWNoaWV2ZW1lbnQgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfc2hvd19iYW5rIGFjaGlldmVtZW50X3Nob3dfZnJpZW5kX3BpY2tlciAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zaG93X3B1cmNoYXNlX3Byb21wdCBuZXR3b3JrX3NvY2tldF90Y3AgJyArXG4gICAgICAnbmV0d29ya19zb2NrZXRfdWRwIG5ldHdvcmtfc29ja2V0X2JsdWV0b290aCBuZXR3b3JrX3R5cGVfY29ubmVjdCAnICtcbiAgICAgICduZXR3b3JrX3R5cGVfZGlzY29ubmVjdCBuZXR3b3JrX3R5cGVfZGF0YSAnICtcbiAgICAgICduZXR3b3JrX3R5cGVfbm9uX2Jsb2NraW5nX2Nvbm5lY3QgbmV0d29ya19jb25maWdfY29ubmVjdF90aW1lb3V0ICcgK1xuICAgICAgJ25ldHdvcmtfY29uZmlnX3VzZV9ub25fYmxvY2tpbmdfc29ja2V0ICcgK1xuICAgICAgJ25ldHdvcmtfY29uZmlnX2VuYWJsZV9yZWxpYWJsZV91ZHAgJyArXG4gICAgICAnbmV0d29ya19jb25maWdfZGlzYWJsZV9yZWxpYWJsZV91ZHAgYnVmZmVyX2ZpeGVkIGJ1ZmZlcl9ncm93ICcgK1xuICAgICAgJ2J1ZmZlcl93cmFwIGJ1ZmZlcl9mYXN0IGJ1ZmZlcl92YnVmZmVyIGJ1ZmZlcl9uZXR3b3JrIGJ1ZmZlcl91OCAnICtcbiAgICAgICdidWZmZXJfczggYnVmZmVyX3UxNiBidWZmZXJfczE2IGJ1ZmZlcl91MzIgYnVmZmVyX3MzMiBidWZmZXJfdTY0ICcgK1xuICAgICAgJ2J1ZmZlcl9mMTYgYnVmZmVyX2YzMiBidWZmZXJfZjY0IGJ1ZmZlcl9ib29sIGJ1ZmZlcl90ZXh0ICcgK1xuICAgICAgJ2J1ZmZlcl9zdHJpbmcgYnVmZmVyX3N1cmZhY2VfY29weSBidWZmZXJfc2Vla19zdGFydCAnICtcbiAgICAgICdidWZmZXJfc2Vla19yZWxhdGl2ZSBidWZmZXJfc2Vla19lbmQgJyArXG4gICAgICAnYnVmZmVyX2dlbmVyYWxlcnJvciBidWZmZXJfb3V0b2ZzcGFjZSBidWZmZXJfb3V0b2Zib3VuZHMgJyArXG4gICAgICAnYnVmZmVyX2ludmFsaWR0eXBlICB0ZXh0X3R5cGUgYnV0dG9uX3R5cGUgaW5wdXRfdHlwZSBBTlNJX0NIQVJTRVQgJyArXG4gICAgICAnREVGQVVMVF9DSEFSU0VUIEVBU1RFVVJPUEVfQ0hBUlNFVCBSVVNTSUFOX0NIQVJTRVQgU1lNQk9MX0NIQVJTRVQgJyArXG4gICAgICAnU0hJRlRKSVNfQ0hBUlNFVCBIQU5HRVVMX0NIQVJTRVQgR0IyMzEyX0NIQVJTRVQgQ0hJTkVTRUJJRzVfQ0hBUlNFVCAnICtcbiAgICAgICdKT0hBQl9DSEFSU0VUIEhFQlJFV19DSEFSU0VUIEFSQUJJQ19DSEFSU0VUIEdSRUVLX0NIQVJTRVQgJyArXG4gICAgICAnVFVSS0lTSF9DSEFSU0VUIFZJRVROQU1FU0VfQ0hBUlNFVCBUSEFJX0NIQVJTRVQgTUFDX0NIQVJTRVQgJyArXG4gICAgICAnQkFMVElDX0NIQVJTRVQgT0VNX0NIQVJTRVQgIGdwX2ZhY2UxIGdwX2ZhY2UyIGdwX2ZhY2UzIGdwX2ZhY2U0ICcgK1xuICAgICAgJ2dwX3Nob3VsZGVybCBncF9zaG91bGRlcnIgZ3Bfc2hvdWxkZXJsYiBncF9zaG91bGRlcnJiIGdwX3NlbGVjdCAnICtcbiAgICAgICdncF9zdGFydCBncF9zdGlja2wgZ3Bfc3RpY2tyIGdwX3BhZHUgZ3BfcGFkZCBncF9wYWRsIGdwX3BhZHIgJyArXG4gICAgICAnZ3BfYXhpc2xoIGdwX2F4aXNsdiBncF9heGlzcmggZ3BfYXhpc3J2IG92X2ZyaWVuZHMgb3ZfY29tbXVuaXR5ICcgK1xuICAgICAgJ292X3BsYXllcnMgb3Zfc2V0dGluZ3Mgb3ZfZ2FtZWdyb3VwIG92X2FjaGlldmVtZW50cyBsYl9zb3J0X25vbmUgJyArXG4gICAgICAnbGJfc29ydF9hc2NlbmRpbmcgbGJfc29ydF9kZXNjZW5kaW5nIGxiX2Rpc3Bfbm9uZSBsYl9kaXNwX251bWVyaWMgJyArXG4gICAgICAnbGJfZGlzcF90aW1lX3NlYyBsYl9kaXNwX3RpbWVfbXMgdWdjX3Jlc3VsdF9zdWNjZXNzICcgK1xuICAgICAgJ3VnY19maWxldHlwZV9jb21tdW5pdHkgdWdjX2ZpbGV0eXBlX21pY3JvdHJhbnMgdWdjX3Zpc2liaWxpdHlfcHVibGljICcgK1xuICAgICAgJ3VnY192aXNpYmlsaXR5X2ZyaWVuZHNfb25seSB1Z2NfdmlzaWJpbGl0eV9wcml2YXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9SYW5rZWRCeVZvdGUgdWdjX3F1ZXJ5X1JhbmtlZEJ5UHVibGljYXRpb25EYXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9BY2NlcHRlZEZvckdhbWVSYW5rZWRCeUFjY2VwdGFuY2VEYXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9SYW5rZWRCeVRyZW5kICcgK1xuICAgICAgJ3VnY19xdWVyeV9GYXZvcml0ZWRCeUZyaWVuZHNSYW5rZWRCeVB1YmxpY2F0aW9uRGF0ZSAnICtcbiAgICAgICd1Z2NfcXVlcnlfQ3JlYXRlZEJ5RnJpZW5kc1JhbmtlZEJ5UHVibGljYXRpb25EYXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9SYW5rZWRCeU51bVRpbWVzUmVwb3J0ZWQgJyArXG4gICAgICAndWdjX3F1ZXJ5X0NyZWF0ZWRCeUZvbGxvd2VkVXNlcnNSYW5rZWRCeVB1YmxpY2F0aW9uRGF0ZSAnICtcbiAgICAgICd1Z2NfcXVlcnlfTm90WWV0UmF0ZWQgdWdjX3F1ZXJ5X1JhbmtlZEJ5VG90YWxWb3Rlc0FzYyAnICtcbiAgICAgICd1Z2NfcXVlcnlfUmFua2VkQnlWb3Rlc1VwIHVnY19xdWVyeV9SYW5rZWRCeVRleHRTZWFyY2ggJyArXG4gICAgICAndWdjX3NvcnRvcmRlcl9DcmVhdGlvbk9yZGVyRGVzYyB1Z2Nfc29ydG9yZGVyX0NyZWF0aW9uT3JkZXJBc2MgJyArXG4gICAgICAndWdjX3NvcnRvcmRlcl9UaXRsZUFzYyB1Z2Nfc29ydG9yZGVyX0xhc3RVcGRhdGVkRGVzYyAnICtcbiAgICAgICd1Z2Nfc29ydG9yZGVyX1N1YnNjcmlwdGlvbkRhdGVEZXNjIHVnY19zb3J0b3JkZXJfVm90ZVNjb3JlRGVzYyAnICtcbiAgICAgICd1Z2Nfc29ydG9yZGVyX0Zvck1vZGVyYXRpb24gdWdjX2xpc3RfUHVibGlzaGVkIHVnY19saXN0X1ZvdGVkT24gJyArXG4gICAgICAndWdjX2xpc3RfVm90ZWRVcCB1Z2NfbGlzdF9Wb3RlZERvd24gdWdjX2xpc3RfV2lsbFZvdGVMYXRlciAnICtcbiAgICAgICd1Z2NfbGlzdF9GYXZvcml0ZWQgdWdjX2xpc3RfU3Vic2NyaWJlZCB1Z2NfbGlzdF9Vc2VkT3JQbGF5ZWQgJyArXG4gICAgICAndWdjX2xpc3RfRm9sbG93ZWQgdWdjX21hdGNoX0l0ZW1zIHVnY19tYXRjaF9JdGVtc19NdHggJyArXG4gICAgICAndWdjX21hdGNoX0l0ZW1zX1JlYWR5VG9Vc2UgdWdjX21hdGNoX0NvbGxlY3Rpb25zIHVnY19tYXRjaF9BcnR3b3JrICcgK1xuICAgICAgJ3VnY19tYXRjaF9WaWRlb3MgdWdjX21hdGNoX1NjcmVlbnNob3RzIHVnY19tYXRjaF9BbGxHdWlkZXMgJyArXG4gICAgICAndWdjX21hdGNoX1dlYkd1aWRlcyB1Z2NfbWF0Y2hfSW50ZWdyYXRlZEd1aWRlcyAnICtcbiAgICAgICd1Z2NfbWF0Y2hfVXNhYmxlSW5HYW1lIHVnY19tYXRjaF9Db250cm9sbGVyQmluZGluZ3MgICcgK1xuICAgICAgJ3ZlcnRleF91c2FnZV9wb3NpdGlvbiB2ZXJ0ZXhfdXNhZ2VfY29sb3VyIHZlcnRleF91c2FnZV9jb2xvciAnICtcbiAgICAgICd2ZXJ0ZXhfdXNhZ2Vfbm9ybWFsIHZlcnRleF91c2FnZV90ZXhjb29yZCB2ZXJ0ZXhfdXNhZ2VfdGV4dGNvb3JkICcgK1xuICAgICAgJ3ZlcnRleF91c2FnZV9ibGVuZHdlaWdodCB2ZXJ0ZXhfdXNhZ2VfYmxlbmRpbmRpY2VzICcgK1xuICAgICAgJ3ZlcnRleF91c2FnZV9wc2l6ZSB2ZXJ0ZXhfdXNhZ2VfdGFuZ2VudCB2ZXJ0ZXhfdXNhZ2VfYmlub3JtYWwgJyArXG4gICAgICAndmVydGV4X3VzYWdlX2ZvZyB2ZXJ0ZXhfdXNhZ2VfZGVwdGggdmVydGV4X3VzYWdlX3NhbXBsZSAnICtcbiAgICAgICd2ZXJ0ZXhfdHlwZV9mbG9hdDEgdmVydGV4X3R5cGVfZmxvYXQyIHZlcnRleF90eXBlX2Zsb2F0MyAnICtcbiAgICAgICd2ZXJ0ZXhfdHlwZV9mbG9hdDQgdmVydGV4X3R5cGVfY29sb3VyIHZlcnRleF90eXBlX2NvbG9yICcgK1xuICAgICAgJ3ZlcnRleF90eXBlX3VieXRlNCBsYXllcmVsZW1lbnR0eXBlX3VuZGVmaW5lZCAnICtcbiAgICAgICdsYXllcmVsZW1lbnR0eXBlX2JhY2tncm91bmQgbGF5ZXJlbGVtZW50dHlwZV9pbnN0YW5jZSAnICtcbiAgICAgICdsYXllcmVsZW1lbnR0eXBlX29sZHRpbGVtYXAgbGF5ZXJlbGVtZW50dHlwZV9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJlbGVtZW50dHlwZV90aWxlbWFwIGxheWVyZWxlbWVudHR5cGVfcGFydGljbGVzeXN0ZW0gJyArXG4gICAgICAnbGF5ZXJlbGVtZW50dHlwZV90aWxlIHRpbGVfcm90YXRlIHRpbGVfZmxpcCB0aWxlX21pcnJvciAnICtcbiAgICAgICd0aWxlX2luZGV4X21hc2sga2J2X3R5cGVfZGVmYXVsdCBrYnZfdHlwZV9hc2NpaSBrYnZfdHlwZV91cmwgJyArXG4gICAgICAna2J2X3R5cGVfZW1haWwga2J2X3R5cGVfbnVtYmVycyBrYnZfdHlwZV9waG9uZSBrYnZfdHlwZV9waG9uZV9uYW1lICcgK1xuICAgICAgJ2tidl9yZXR1cm5rZXlfZGVmYXVsdCBrYnZfcmV0dXJua2V5X2dvIGtidl9yZXR1cm5rZXlfZ29vZ2xlICcgK1xuICAgICAgJ2tidl9yZXR1cm5rZXlfam9pbiBrYnZfcmV0dXJua2V5X25leHQga2J2X3JldHVybmtleV9yb3V0ZSAnICtcbiAgICAgICdrYnZfcmV0dXJua2V5X3NlYXJjaCBrYnZfcmV0dXJua2V5X3NlbmQga2J2X3JldHVybmtleV95YWhvbyAnICtcbiAgICAgICdrYnZfcmV0dXJua2V5X2RvbmUga2J2X3JldHVybmtleV9jb250aW51ZSBrYnZfcmV0dXJua2V5X2VtZXJnZW5jeSAnICtcbiAgICAgICdrYnZfYXV0b2NhcGl0YWxpemVfbm9uZSBrYnZfYXV0b2NhcGl0YWxpemVfd29yZHMgJyArXG4gICAgICAna2J2X2F1dG9jYXBpdGFsaXplX3NlbnRlbmNlcyBrYnZfYXV0b2NhcGl0YWxpemVfY2hhcmFjdGVycycsXG4gICAgc3ltYm9sOiAnYXJndW1lbnRfcmVsYXRpdmUgYXJndW1lbnQgYXJndW1lbnQwIGFyZ3VtZW50MSBhcmd1bWVudDIgJyArXG4gICAgICAnYXJndW1lbnQzIGFyZ3VtZW50NCBhcmd1bWVudDUgYXJndW1lbnQ2IGFyZ3VtZW50NyBhcmd1bWVudDggJyArXG4gICAgICAnYXJndW1lbnQ5IGFyZ3VtZW50MTAgYXJndW1lbnQxMSBhcmd1bWVudDEyIGFyZ3VtZW50MTMgYXJndW1lbnQxNCAnICtcbiAgICAgICdhcmd1bWVudDE1IGFyZ3VtZW50X2NvdW50IHggeSB4cHJldmlvdXMgeXByZXZpb3VzIHhzdGFydCB5c3RhcnQgJyArXG4gICAgICAnaHNwZWVkIHZzcGVlZCBkaXJlY3Rpb24gc3BlZWQgZnJpY3Rpb24gZ3Jhdml0eSBncmF2aXR5X2RpcmVjdGlvbiAnICtcbiAgICAgICdwYXRoX2luZGV4IHBhdGhfcG9zaXRpb24gcGF0aF9wb3NpdGlvbnByZXZpb3VzIHBhdGhfc3BlZWQgJyArXG4gICAgICAncGF0aF9zY2FsZSBwYXRoX29yaWVudGF0aW9uIHBhdGhfZW5kYWN0aW9uIG9iamVjdF9pbmRleCBpZCBzb2xpZCAnICtcbiAgICAgICdwZXJzaXN0ZW50IG1hc2tfaW5kZXggaW5zdGFuY2VfY291bnQgaW5zdGFuY2VfaWQgcm9vbV9zcGVlZCBmcHMgJyArXG4gICAgICAnZnBzX3JlYWwgY3VycmVudF90aW1lIGN1cnJlbnRfeWVhciBjdXJyZW50X21vbnRoIGN1cnJlbnRfZGF5ICcgK1xuICAgICAgJ2N1cnJlbnRfd2Vla2RheSBjdXJyZW50X2hvdXIgY3VycmVudF9taW51dGUgY3VycmVudF9zZWNvbmQgYWxhcm0gJyArXG4gICAgICAndGltZWxpbmVfaW5kZXggdGltZWxpbmVfcG9zaXRpb24gdGltZWxpbmVfc3BlZWQgdGltZWxpbmVfcnVubmluZyAnICtcbiAgICAgICd0aW1lbGluZV9sb29wIHJvb20gcm9vbV9maXJzdCByb29tX2xhc3Qgcm9vbV93aWR0aCByb29tX2hlaWdodCAnICtcbiAgICAgICdyb29tX2NhcHRpb24gcm9vbV9wZXJzaXN0ZW50IHNjb3JlIGxpdmVzIGhlYWx0aCBzaG93X3Njb3JlICcgK1xuICAgICAgJ3Nob3dfbGl2ZXMgc2hvd19oZWFsdGggY2FwdGlvbl9zY29yZSBjYXB0aW9uX2xpdmVzIGNhcHRpb25faGVhbHRoICcgK1xuICAgICAgJ2V2ZW50X3R5cGUgZXZlbnRfbnVtYmVyIGV2ZW50X29iamVjdCBldmVudF9hY3Rpb24gJyArXG4gICAgICAnYXBwbGljYXRpb25fc3VyZmFjZSBnYW1lbWFrZXJfcHJvIGdhbWVtYWtlcl9yZWdpc3RlcmVkICcgK1xuICAgICAgJ2dhbWVtYWtlcl92ZXJzaW9uIGVycm9yX29jY3VycmVkIGVycm9yX2xhc3QgZGVidWdfbW9kZSAnICtcbiAgICAgICdrZXlib2FyZF9rZXkga2V5Ym9hcmRfbGFzdGtleSBrZXlib2FyZF9sYXN0Y2hhciBrZXlib2FyZF9zdHJpbmcgJyArXG4gICAgICAnbW91c2VfeCBtb3VzZV95IG1vdXNlX2J1dHRvbiBtb3VzZV9sYXN0YnV0dG9uIGN1cnNvcl9zcHJpdGUgJyArXG4gICAgICAndmlzaWJsZSBzcHJpdGVfaW5kZXggc3ByaXRlX3dpZHRoIHNwcml0ZV9oZWlnaHQgc3ByaXRlX3hvZmZzZXQgJyArXG4gICAgICAnc3ByaXRlX3lvZmZzZXQgaW1hZ2VfbnVtYmVyIGltYWdlX2luZGV4IGltYWdlX3NwZWVkIGRlcHRoICcgK1xuICAgICAgJ2ltYWdlX3hzY2FsZSBpbWFnZV95c2NhbGUgaW1hZ2VfYW5nbGUgaW1hZ2VfYWxwaGEgaW1hZ2VfYmxlbmQgJyArXG4gICAgICAnYmJveF9sZWZ0IGJib3hfcmlnaHQgYmJveF90b3AgYmJveF9ib3R0b20gbGF5ZXIgYmFja2dyb3VuZF9jb2xvdXIgICcgK1xuICAgICAgJ2JhY2tncm91bmRfc2hvd2NvbG91ciBiYWNrZ3JvdW5kX2NvbG9yIGJhY2tncm91bmRfc2hvd2NvbG9yICcgK1xuICAgICAgJ3ZpZXdfZW5hYmxlZCB2aWV3X2N1cnJlbnQgdmlld192aXNpYmxlIHZpZXdfeHZpZXcgdmlld195dmlldyAnICtcbiAgICAgICd2aWV3X3d2aWV3IHZpZXdfaHZpZXcgdmlld194cG9ydCB2aWV3X3lwb3J0IHZpZXdfd3BvcnQgdmlld19ocG9ydCAnICtcbiAgICAgICd2aWV3X2FuZ2xlIHZpZXdfaGJvcmRlciB2aWV3X3Zib3JkZXIgdmlld19oc3BlZWQgdmlld192c3BlZWQgJyArXG4gICAgICAndmlld19vYmplY3Qgdmlld19zdXJmYWNlX2lkIHZpZXdfY2FtZXJhIGdhbWVfaWQgZ2FtZV9kaXNwbGF5X25hbWUgJyArXG4gICAgICAnZ2FtZV9wcm9qZWN0X25hbWUgZ2FtZV9zYXZlX2lkIHdvcmtpbmdfZGlyZWN0b3J5IHRlbXBfZGlyZWN0b3J5ICcgK1xuICAgICAgJ3Byb2dyYW1fZGlyZWN0b3J5IGJyb3dzZXJfd2lkdGggYnJvd3Nlcl9oZWlnaHQgb3NfdHlwZSBvc19kZXZpY2UgJyArXG4gICAgICAnb3NfYnJvd3NlciBvc192ZXJzaW9uIGRpc3BsYXlfYWEgYXN5bmNfbG9hZCBkZWx0YV90aW1lICcgK1xuICAgICAgJ3dlYmdsX2VuYWJsZWQgZXZlbnRfZGF0YSBpYXBfZGF0YSBwaHlfcm90YXRpb24gcGh5X3Bvc2l0aW9uX3ggJyArXG4gICAgICAncGh5X3Bvc2l0aW9uX3kgcGh5X2FuZ3VsYXJfdmVsb2NpdHkgcGh5X2xpbmVhcl92ZWxvY2l0eV94ICcgK1xuICAgICAgJ3BoeV9saW5lYXJfdmVsb2NpdHlfeSBwaHlfc3BlZWRfeCBwaHlfc3BlZWRfeSBwaHlfc3BlZWQgJyArXG4gICAgICAncGh5X2FuZ3VsYXJfZGFtcGluZyBwaHlfbGluZWFyX2RhbXBpbmcgcGh5X2J1bGxldCAnICtcbiAgICAgICdwaHlfZml4ZWRfcm90YXRpb24gcGh5X2FjdGl2ZSBwaHlfbWFzcyBwaHlfaW5lcnRpYSBwaHlfY29tX3ggJyArXG4gICAgICAncGh5X2NvbV95IHBoeV9keW5hbWljIHBoeV9raW5lbWF0aWMgcGh5X3NsZWVwaW5nICcgK1xuICAgICAgJ3BoeV9jb2xsaXNpb25fcG9pbnRzIHBoeV9jb2xsaXNpb25feCBwaHlfY29sbGlzaW9uX3kgJyArXG4gICAgICAncGh5X2NvbF9ub3JtYWxfeCBwaHlfY29sX25vcm1hbF95IHBoeV9wb3NpdGlvbl94cHJldmlvdXMgJyArXG4gICAgICAncGh5X3Bvc2l0aW9uX3lwcmV2aW91cydcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ21sJywgJ0dNTCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLCAvLyBsYW5ndWFnZSBpcyBjYXNlLWluc2Vuc2l0aXZlXG4gICAga2V5d29yZHM6IEdNTF9LRVlXT1JEUyxcblxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBHT19LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2JyZWFrIGRlZmF1bHQgZnVuYyBpbnRlcmZhY2Ugc2VsZWN0IGNhc2UgbWFwIHN0cnVjdCBjaGFuIGVsc2UgZ290byBwYWNrYWdlIHN3aXRjaCAnICtcbiAgICAgICdjb25zdCBmYWxsdGhyb3VnaCBpZiByYW5nZSB0eXBlIGNvbnRpbnVlIGZvciBpbXBvcnQgcmV0dXJuIHZhciBnbyBkZWZlciAnICtcbiAgICAgICdib29sIGJ5dGUgY29tcGxleDY0IGNvbXBsZXgxMjggZmxvYXQzMiBmbG9hdDY0IGludDggaW50MTYgaW50MzIgaW50NjQgc3RyaW5nIHVpbnQ4ICcgK1xuICAgICAgJ3VpbnQxNiB1aW50MzIgdWludDY0IGludCB1aW50IHVpbnRwdHIgcnVuZScsXG4gICAgbGl0ZXJhbDpcbiAgICAgICAndHJ1ZSBmYWxzZSBpb3RhIG5pbCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnYXBwZW5kIGNhcCBjbG9zZSBjb21wbGV4IGNvcHkgaW1hZyBsZW4gbWFrZSBuZXcgcGFuaWMgcHJpbnQgcHJpbnRsbiByZWFsIHJlY292ZXIgZGVsZXRlJ1xuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ29sYW5nJ10sXG4gICAga2V5d29yZHM6IEdPX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICB7YmVnaW46ICdcXCcnLCBlbmQ6ICdbXlxcXFxcXFxcXVxcJyd9LFxuICAgICAgICAgIHtiZWdpbjogJ2AnLCBlbmQ6ICdgJ30sXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiBobGpzLkNfTlVNQkVSX1JFICsgJ1tpXScsIHJlbGV2YW5jZTogMX0sXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvOj0vIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jJywgZW5kOiAnXFxcXHMqKFxcXFx7fCQpJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlRJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBHT19LRVlXT1JEUyxcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bXCInXS9cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHJldHVybiB7XG4gICAgICBrZXl3b3Jkczoge1xuICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICdwcmludGxuIHJlYWRsbiBwcmludCBpbXBvcnQgbW9kdWxlIGZ1bmN0aW9uIGxvY2FsIHJldHVybiBsZXQgdmFyICcgK1xuICAgICAgICAgICd3aGlsZSBmb3IgZm9yZWFjaCB0aW1lcyBpbiBjYXNlIHdoZW4gbWF0Y2ggd2l0aCBicmVhayBjb250aW51ZSAnICtcbiAgICAgICAgICAnYXVnbWVudCBhdWdtZW50YXRpb24gZWFjaCBmaW5kIGZpbHRlciByZWR1Y2UgJyArXG4gICAgICAgICAgJ2lmIHRoZW4gZWxzZSBvdGhlcndpc2UgdHJ5IGNhdGNoIGZpbmFsbHkgcmFpc2UgdGhyb3cgb3JJZk51bGwgJyArXG4gICAgICAgICAgJ0R5bmFtaWNPYmplY3R8MTAgRHluYW1pY1ZhcmlhYmxlIHN0cnVjdCBPYnNlcnZhYmxlIG1hcCBzZXQgdmVjdG9yIGxpc3QgYXJyYXknLFxuICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICd0cnVlIGZhbHNlIG51bGwnXG4gICAgICB9LFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ3Rhc2sgcHJvamVjdCBhbGxwcm9qZWN0cyBzdWJwcm9qZWN0cyBhcnRpZmFjdHMgYnVpbGRzY3JpcHQgY29uZmlndXJhdGlvbnMgJyArXG4gICAgICAgICdkZXBlbmRlbmNpZXMgcmVwb3NpdG9yaWVzIHNvdXJjZVNldHMgZGVzY3JpcHRpb24gZGVsZXRlIGZyb20gaW50byBpbmNsdWRlICcgK1xuICAgICAgICAnZXhjbHVkZSBzb3VyY2UgY2xhc3NwYXRoIGRlc3RpbmF0aW9uRGlyIGluY2x1ZGVzIG9wdGlvbnMgc291cmNlQ29tcGF0aWJpbGl0eSAnICtcbiAgICAgICAgJ3RhcmdldENvbXBhdGliaWxpdHkgZ3JvdXAgZmxhdERpciBkb0xhc3QgZG9GaXJzdCBmbGF0dGVuIHRvZGlyIGZyb21kaXIgYW50ICcgK1xuICAgICAgICAnZGVmIGFic3RyYWN0IGJyZWFrIGNhc2UgY2F0Y2ggY29udGludWUgZGVmYXVsdCBkbyBlbHNlIGV4dGVuZHMgZmluYWwgZmluYWxseSAnICtcbiAgICAgICAgJ2ZvciBpZiBpbXBsZW1lbnRzIGluc3RhbmNlb2YgbmF0aXZlIG5ldyBwcml2YXRlIHByb3RlY3RlZCBwdWJsaWMgcmV0dXJuIHN0YXRpYyAnICtcbiAgICAgICAgJ3N3aXRjaCBzeW5jaHJvbml6ZWQgdGhyb3cgdGhyb3dzIHRyYW5zaWVudCB0cnkgdm9sYXRpbGUgd2hpbGUgc3RyaWN0ZnAgcGFja2FnZSAnICtcbiAgICAgICAgJ2ltcG9ydCBmYWxzZSBudWxsIHN1cGVyIHRoaXMgdHJ1ZSBhbnRscnRhc2sgY2hlY2tzdHlsZSBjb2RlbmFyYyBjb3B5IGJvb2xlYW4gJyArXG4gICAgICAgICdieXRlIGNoYXIgY2xhc3MgZG91YmxlIGZsb2F0IGludCBpbnRlcmZhY2UgbG9uZyBzaG9ydCB2b2lkIGNvbXBpbGUgcnVuVGltZSAnICtcbiAgICAgICAgJ2ZpbGUgZmlsZVRyZWUgYWJzIGFueSBhcHBlbmQgYXNMaXN0IGFzV3JpdGFibGUgY2FsbCBjb2xsZWN0IGNvbXBhcmVUbyBjb3VudCAnICtcbiAgICAgICAgJ2RpdiBkdW1wIGVhY2ggZWFjaEJ5dGUgZWFjaEZpbGUgZWFjaExpbmUgZXZlcnkgZmluZCBmaW5kQWxsIGZsYXR0ZW4gZ2V0QXQgJyArXG4gICAgICAgICdnZXRFcnIgZ2V0SW4gZ2V0T3V0IGdldFRleHQgZ3JlcCBpbW11dGFibGUgaW5qZWN0IGluc3BlY3QgaW50ZXJzZWN0IGludm9rZU1ldGhvZHMgJyArXG4gICAgICAgICdpc0Nhc2Ugam9pbiBsZWZ0U2hpZnQgbWludXMgbXVsdGlwbHkgbmV3SW5wdXRTdHJlYW0gbmV3T3V0cHV0U3RyZWFtIG5ld1ByaW50V3JpdGVyICcgK1xuICAgICAgICAnbmV3UmVhZGVyIG5ld1dyaXRlciBuZXh0IHBsdXMgcG9wIHBvd2VyIHByZXZpb3VzIHByaW50IHByaW50bG4gcHVzaCBwdXRBdCByZWFkICcgK1xuICAgICAgICAncmVhZEJ5dGVzIHJlYWRMaW5lcyByZXZlcnNlIHJldmVyc2VFYWNoIHJvdW5kIHNpemUgc29ydCBzcGxpdEVhY2hMaW5lIHN0ZXAgc3ViTWFwICcgK1xuICAgICAgICAndGltZXMgdG9JbnRlZ2VyIHRvTGlzdCB0b2tlbml6ZSB1cHRvIHdhaXRGb3JPcktpbGwgd2l0aFByaW50V3JpdGVyIHdpdGhSZWFkZXIgJyArXG4gICAgICAgICd3aXRoU3RyZWFtIHdpdGhXcml0ZXIgd2l0aFdyaXRlckFwcGVuZCB3cml0ZSB3cml0ZUxpbmUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5SRUdFWFBfTU9ERVxuXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHJldHVybiB7XG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICBsaXRlcmFsIDogJ3RydWUgZmFsc2UgbnVsbCcsXG4gICAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgJ2J5dGUgc2hvcnQgY2hhciBpbnQgbG9uZyBib29sZWFuIGZsb2F0IGRvdWJsZSB2b2lkICcgK1xuICAgICAgICAgICAgLy8gZ3Jvb3Z5IHNwZWNpZmljIGtleXdvcmRzXG4gICAgICAgICAgICAnZGVmIGFzIGluIGFzc2VydCB0cmFpdCAnICtcbiAgICAgICAgICAgIC8vIGNvbW1vbiBrZXl3b3JkcyB3aXRoIEphdmFcbiAgICAgICAgICAgICdzdXBlciB0aGlzIGFic3RyYWN0IHN0YXRpYyB2b2xhdGlsZSB0cmFuc2llbnQgcHVibGljIHByaXZhdGUgcHJvdGVjdGVkIHN5bmNocm9uaXplZCBmaW5hbCAnICtcbiAgICAgICAgICAgICdjbGFzcyBpbnRlcmZhY2UgZW51bSBpZiBlbHNlIGZvciB3aGlsZSBzd2l0Y2ggY2FzZSBicmVhayBkZWZhdWx0IGNvbnRpbnVlICcgK1xuICAgICAgICAgICAgJ3Rocm93IHRocm93cyB0cnkgY2F0Y2ggZmluYWxseSBpbXBsZW1lbnRzIGV4dGVuZHMgbmV3IGltcG9ydCBwYWNrYWdlIHJldHVybiBpbnN0YW5jZW9mJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgICAgICAgICAnXFxcXCovJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZSA6IDAsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWF0IHVwIEAncyBpbiBlbWFpbHMgdG8gcHJldmVudCB0aGVtIHRvIGJlIHJlY29nbml6ZWQgYXMgZG9jdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcdytALywgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA6ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46IFwiJycnXCIsIGVuZDogXCInJydcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBcIlxcXFwkL1wiLCBlbmQ6IFwiL1xcXFwkXCIsXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvfj9cXC9bXlxcL1xcbl0rXFwvLyxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEVcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogXCJeIyEvdXNyL2Jpbi9lbnZcIiwgZW5kOiAnJCcsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogJ1xcbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSB0cmFpdCBlbnVtJywgZW5kOiAneycsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogJzonLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBoaWdobGlnaHQgbWFwIGtleXMgYW5kIG5hbWVkIHBhcmFtZXRlcnMgYXMgc3RyaW5nc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsIGJlZ2luOiAvW15cXD9dezB9W0EtWmEtejAtOV8kXSsgKjovXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGNhdGNoIG1pZGRsZSBlbGVtZW50IG9mIHRoZSB0ZXJuYXJ5IG9wZXJhdG9yXG4gICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgaGlnaGxpZ2h0IGl0IGFzIGEgbGFiZWwsIG5hbWVkIHBhcmFtZXRlciwgb3IgbWFwIGtleVxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXFw/LywgZW5kOiAvXFw6L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBoaWdobGlnaHQgbGFiZWxlZCBzdGF0ZW1lbnRzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJywgYmVnaW46ICdeXFxcXHMqW0EtWmEtejAtOV8kXSs6JyxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogLyN8PFxcLy9cbiAgICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLy8gVE9ETyBzdXBwb3J0IGZpbHRlciB0YWdzIGxpa2UgOmphdmFzY3JpcHQsIHN1cHBvcnQgaW5saW5lIEhUTUxcbmZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ14hISEoICg1fDFcXFxcLjF8U3RyaWN0fEZyYW1lc2V0fEJhc2ljfE1vYmlsZXxSREZhfFhNTFxcXFxiLiopKT8kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIEZJWE1FIHRoZXNlIGNvbW1lbnRzIHNob3VsZCBiZSBhbGxvd2VkIHRvIHNwYW4gaW5kZW50ZWQgbGluZXNcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ15cXFxccyooIT0jfD0jfC0jfC8pLiokJyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqKC18PXwhPSkoPyEjKScsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcXFxuJyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ3J1YnknXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKiUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLXRhZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFx3KydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJyxcbiAgICAgICAgICAgIGJlZ2luOiAnI1tcXFxcdy1dKydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWNsYXNzJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXC5bXFxcXHctXSsnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ3tcXFxccyonLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqfScsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICc6XFxcXHcrXFxcXHMqPT4nLFxuICAgICAgICAgICAgICAgIGVuZDogJyxcXFxccysnLFxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJzpcXFxcdysnXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcdysnLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXChcXFxccyonLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqXFxcXCknLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFx3K1xcXFxzKj0nLFxuICAgICAgICAgICAgICAgIGVuZDogJ1xcXFxzKycsXG4gICAgICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHcrJyxcbiAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcdysnLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKls9fl1cXFxccyonXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyN7JyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnfScsXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6ICdydWJ5J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHZhciBCVUlMVF9JTlMgPSB7J2J1aWx0aW4tbmFtZSc6ICdlYWNoIGluIHdpdGggaWYgZWxzZSB1bmxlc3MgYmluZGF0dHIgYWN0aW9uIGNvbGxlY3Rpb24gZGVidWdnZXIgbG9nIG91dGxldCB0ZW1wbGF0ZSB1bmJvdW5kIHZpZXcgeWllbGQgbG9va3VwJ307XG5cbiAgdmFyIElERU5USUZJRVJfUExBSU5fT1JfUVVPVEVEID0ge1xuICAgIGJlZ2luOiAvXCIuKj9cInwnLio/J3xcXFsuKj9cXF18XFx3Ky9cbiAgfTtcblxuICB2YXIgRVhQUkVTU0lPTl9PUl9IRUxQRVJfQ0FMTCA9IGhsanMuaW5oZXJpdChJREVOVElGSUVSX1BMQUlOX09SX1FVT1RFRCwge1xuICAgIGtleXdvcmRzOiBCVUlMVF9JTlMsXG4gICAgc3RhcnRzOiB7XG4gICAgICAvLyBoZWxwZXIgcGFyYW1zXG4gICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbaGxqcy5pbmhlcml0KElERU5USUZJRVJfUExBSU5fT1JfUVVPVEVELCB7cmVsZXZhbmNlOiAwfSldXG4gICAgfVxuICB9KTtcblxuICB2YXIgQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFMgPSBobGpzLmluaGVyaXQoRVhQUkVTU0lPTl9PUl9IRUxQRVJfQ0FMTCwge1xuICAgIGNsYXNzTmFtZTogJ25hbWUnXG4gIH0pO1xuXG4gIHZhciBCQVNJQ19NVVNUQUNIRV9DT05URU5UUyA9IGhsanMuaW5oZXJpdChFWFBSRVNTSU9OX09SX0hFTFBFUl9DQUxMLCB7XG4gICAgLy8gcmVsZXZhbmNlIDAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgY29uY2VybmluZyBhdXRvLWRldGVjdGlvblxuICAgIHJlbGV2YW5jZTogMFxuICB9KTtcblxuICB2YXIgRVNDQVBFX01VU1RBQ0hFX1dJVEhfUFJFQ0VFRElOR19CQUNLU0xBU0ggPSB7YmVnaW46IC9cXFxcXFx7XFx7Lywgc2tpcDogdHJ1ZX07XG4gIHZhciBQUkVWRU5UX0VTQ0FQRV9XSVRIX0FOT1RIRVJfUFJFQ0VFRElOR19CQUNLU0xBU0ggPSB7YmVnaW46IC9cXFxcXFxcXCg/PVxce1xceykvLCBza2lwOiB0cnVlfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaGJzJywgJ2h0bWwuaGJzJywgJ2h0bWwuaGFuZGxlYmFycyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBFU0NBUEVfTVVTVEFDSEVfV0lUSF9QUkVDRUVESU5HX0JBQ0tTTEFTSCxcbiAgICAgIFBSRVZFTlRfRVNDQVBFX1dJVEhfQU5PVEhFUl9QUkVDRUVESU5HX0JBQ0tTTEFTSCxcbiAgICAgIGhsanMuQ09NTUVOVCgvXFx7XFx7IS0tLywgLy0tXFx9XFx9LyksXG4gICAgICBobGpzLkNPTU1FTlQoL1xce1xceyEvLCAvXFx9XFx9LyksXG4gICAgICB7XG4gICAgICAgIC8vIG9wZW4gcmF3IGJsb2NrIFwie3t7e3Jhd319fX0gY29udGVudCBub3QgZXZhbHVhdGVkIHt7e3svcmF3fX19fVwiXG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXRhZycsXG4gICAgICAgIGJlZ2luOiAvXFx7XFx7XFx7XFx7KD8hXFwvKS8sIGVuZDogL1xcfVxcfVxcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFNdLFxuICAgICAgICBzdGFydHM6IHtlbmQ6IC9cXHtcXHtcXHtcXHtcXC8vLCByZXR1cm5FbmQ6IHRydWUsIHN1Ykxhbmd1YWdlOiAneG1sJ31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGNsb3NlIHJhdyBibG9ja1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1xce1xce1xcLy8sIGVuZDogL1xcfVxcfVxcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFNdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBvcGVuIGJsb2NrIHN0YXRlbWVudFxuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1sjXFwvXS8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFNdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGVtcGxhdGUgdmFyaWFibGUgb3IgaGVscGVyLWNhbGwgdGhhdCBpcyBOT1QgaHRtbC1lc2NhcGVkXG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHtcXHsvLCBlbmQ6IC9cXH1cXH1cXH0vLFxuICAgICAgICBrZXl3b3JkczogQlVJTFRfSU5TLFxuICAgICAgICBjb250YWluczogW0JBU0lDX01VU1RBQ0hFX0NPTlRFTlRTXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGVtcGxhdGUgdmFyaWFibGUgb3IgaGVscGVyLWNhbGwgdGhhdCBpcyBodG1sLWVzY2FwZWRcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xce1xcey8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGtleXdvcmRzOiBCVUlMVF9JTlMsXG4gICAgICAgIGNvbnRhaW5zOiBbQkFTSUNfTVVTVEFDSEVfQ09OVEVOVFNdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlQgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAney0nLFxuICAgICAgICAnLX0nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdXG4gIH07XG5cbiAgdmFyIFBSQUdNQSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ3stIycsIGVuZDogJyMtfSdcbiAgfTtcblxuICB2YXIgUFJFUFJPQ0VTU09SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMnLCBlbmQ6ICckJ1xuICB9O1xuXG4gIHZhciBDT05TVFJVQ1RPUiA9IHtcbiAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHdcXCddKicsIC8vIFRPRE86IG90aGVyIGNvbnN0cnVjdG9ycyAoYnVpbGQtaW4sIGluZml4KS5cbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGlsbGVnYWw6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFBSQUdNQSxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtjbGFzc05hbWU6ICd0eXBlJywgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XSooXFxcXCgoXFxcXC5cXFxcLnwsfFxcXFx3KylcXFxcKSk/J30sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdbX2Etel1bXFxcXHdcXCddKid9KSxcbiAgICAgIENPTU1FTlRcbiAgICBdXG4gIH07XG5cbiAgdmFyIFJFQ09SRCA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICBjb250YWluczogTElTVC5jb250YWluc1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydocyddLFxuICAgIGtleXdvcmRzOlxuICAgICAgJ2xldCBpbiBpZiB0aGVuIGVsc2UgY2FzZSBvZiB3aGVyZSBkbyBtb2R1bGUgaW1wb3J0IGhpZGluZyAnICtcbiAgICAgICdxdWFsaWZpZWQgdHlwZSBkYXRhIG5ld3R5cGUgZGVyaXZpbmcgY2xhc3MgaW5zdGFuY2UgYXMgZGVmYXVsdCAnICtcbiAgICAgICdpbmZpeCBpbmZpeGwgaW5maXhyIGZvcmVpZ24gZXhwb3J0IGNjYWxsIHN0ZGNhbGwgY3BsdXNwbHVzICcgK1xuICAgICAgJ2p2bSBkb3RuZXQgc2FmZSB1bnNhZmUgZmFtaWx5IGZvcmFsbCBtZG8gcHJvYyByZWMnLFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIC8vIFRvcC1sZXZlbCBjb25zdHJ1Y3Rpb25zLlxuXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdtb2R1bGUnLCBlbmQ6ICd3aGVyZScsXG4gICAgICAgIGtleXdvcmRzOiAnbW9kdWxlIHdoZXJlJyxcbiAgICAgICAgY29udGFpbnM6IFtMSVNULCBDT01NRU5UXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxXXFxcXC58OydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGJpbXBvcnRcXFxcYicsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ2ltcG9ydCBxdWFsaWZpZWQgYXMgaGlkaW5nJyxcbiAgICAgICAgY29udGFpbnM6IFtMSVNULCBDT01NRU5UXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxXXFxcXC58OydcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbjogJ14oXFxcXHMqKT8oY2xhc3N8aW5zdGFuY2UpXFxcXGInLCBlbmQ6ICd3aGVyZScsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgZmFtaWx5IGluc3RhbmNlIHdoZXJlJyxcbiAgICAgICAgY29udGFpbnM6IFtDT05TVFJVQ1RPUiwgTElTVCwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihkYXRhfChuZXcpP3R5cGUpXFxcXGInLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdkYXRhIGZhbWlseSB0eXBlIG5ld3R5cGUgZGVyaXZpbmcnLFxuICAgICAgICBjb250YWluczogW1BSQUdNQSwgQ09OU1RSVUNUT1IsIExJU1QsIFJFQ09SRCwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWZhdWx0JywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIExJU1QsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW5maXggaW5maXhsIGluZml4cicsIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW2hsanMuQ19OVU1CRVJfTU9ERSwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGJmb3JlaWduXFxcXGInLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdmb3JlaWduIGltcG9ydCBleHBvcnQgY2NhbGwgc3RkY2FsbCBjcGx1c3BsdXMganZtICcgK1xuICAgICAgICAgICAgICAgICAgJ2RvdG5ldCBzYWZlIHVuc2FmZScsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIGhsanMuUVVPVEVfU1RSSU5HX01PREUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjIVxcXFwvdXNyXFxcXC9iaW5cXFxcL2VudlxcIHJ1bmhhc2tlbGwnLCBlbmQ6ICckJ1xuICAgICAgfSxcblxuICAgICAgLy8gXCJXaGl0ZXNwYWNlc1wiLlxuXG4gICAgICBQUkFHTUEsXG4gICAgICBQUkVQUk9DRVNTT1IsXG5cbiAgICAgIC8vIExpdGVyYWxzIGFuZCBuYW1lcy5cblxuICAgICAgLy8gVE9ETzogY2hhcmFjdGVycy5cbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBDT05TVFJVQ1RPUixcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJ15bX2Etel1bXFxcXHdcXCddKid9KSxcblxuICAgICAgQ09NTUVOVCxcblxuICAgICAge2JlZ2luOiAnLT58PC0nfSAvLyBObyBtYXJrdXAsIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVpfJF1bYS16QS1aMC05XyRdKic7XG4gIHZhciBJREVOVF9GVU5DX1JFVFVSTl9UWVBFX1JFID0gJyhbKl18W2EtekEtWl8kXVthLXpBLVowLTlfJF0qKSc7XG5cbiAgdmFyIEhBWEVfQkFTSUNfVFlQRVMgPSAnSW50IEZsb2F0IFN0cmluZyBCb29sIER5bmFtaWMgVm9pZCBBcnJheSAnO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydoeCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYnJlYWsgY2FzZSBjYXN0IGNhdGNoIGNvbnRpbnVlIGRlZmF1bHQgZG8gZHluYW1pYyBlbHNlIGVudW0gZXh0ZXJuICcgK1xuICAgICAgICAgICAgICAgJ2ZvciBmdW5jdGlvbiBoZXJlIGlmIGltcG9ydCBpbiBpbmxpbmUgbmV2ZXIgbmV3IG92ZXJyaWRlIHBhY2thZ2UgcHJpdmF0ZSBnZXQgc2V0ICcgK1xuICAgICAgICAgICAgICAgJ3B1YmxpYyByZXR1cm4gc3RhdGljIHN1cGVyIHN3aXRjaCB0aGlzIHRocm93IHRyYWNlIHRyeSB0eXBlZGVmIHVudHlwZWQgdXNpbmcgdmFyIHdoaWxlICcgK1xuICAgICAgICAgICAgICAgSEFYRV9CQVNJQ19UWVBFUyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAndHJhY2UgdGhpcycsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBudWxsIF8nXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgeyBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyBpbnRlcnBvbGF0ZS1hYmxlIHN0cmluZ3NcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3N1YnN0JywgLy8gaW50ZXJwb2xhdGlvblxuICAgICAgICAgICAgYmVnaW46ICdcXFxcJFxcXFx7JywgZW5kOiAnXFxcXH0nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3N1YnN0JywgLy8gaW50ZXJwb2xhdGlvblxuICAgICAgICAgICAgYmVnaW46ICdcXFxcJCcsIGVuZDogJ1xcXFxXfSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnbWV0YScsIC8vIGNvbXBpbGVyIG1ldGFcbiAgICAgICAgYmVnaW46ICdAOicsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdtZXRhJywgLy8gY29tcGlsZXIgY29uZGl0aW9uYWxzXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbHNlaWYgZW5kIGVycm9yJ31cbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ3R5cGUnLCAvLyBmdW5jdGlvbiB0eXBlc1xuICAgICAgICBiZWdpbjogJzpbIFxcdF0qJywgZW5kOiAnW15BLVphLXowLTlfIFxcdFxcXFwtPl0nLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsIC8vIHR5cGVzXG4gICAgICAgIGJlZ2luOiAnOlsgXFx0XSonLCBlbmQ6ICdcXFxcVycsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsIC8vIGluc3RhbnRpYXRpb25cbiAgICAgICAgYmVnaW46ICduZXcgKicsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdjbGFzcycsIC8vIGVudW1zXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdlbnVtJywgZW5kOiAnXFxcXHsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdjbGFzcycsIC8vIGFic3RyYWN0c1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnYWJzdHJhY3QnLCBlbmQ6ICdbXFxcXHskXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogJ2Zyb20gKycsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAndG8gKycsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF0sXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAga2V5d29yZDogJ2Fic3RyYWN0IGZyb20gdG8nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ2NsYXNzJywgLy8gY2xhc3Nlc1xuICAgICAgICBiZWdpbjogJ1xcXFxiKGNsYXNzfGludGVyZmFjZSkgKycsIGVuZDogJ1tcXFxceyRdJywgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihleHRlbmRzfGltcGxlbWVudHMpICsnLFxuICAgICAgICAgICAga2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFLFxuICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlRJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICdcXFxcKCcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcUycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC88XFwvL1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IC9bXFx3XFwuX10rLyxcbiAgICBrZXl3b3JkczogJ2dvdG8gZ29zdWIgcmV0dXJuIGJyZWFrIHJlcGVhdCBsb29wIGNvbnRpbnVlIHdhaXQgYXdhaXQgZGltIHNkaW0gZm9yZWFjaCBkaW10eXBlIGR1cCBkdXBwdHIgZW5kIHN0b3AgbmV3bW9kIGRlbG1vZCBtcmVmIHJ1biBleGdvdG8gb24gbWNhbGwgYXNzZXJ0IGxvZ21lcyBuZXdsYWIgcmVzdW1lIHlpZWxkIG9uZXhpdCBvbmVycm9yIG9ua2V5IG9uY2xpY2sgb25jbWQgZXhpc3QgZGVsZXRlIG1rZGlyIGNoZGlyIGRpcmxpc3QgYmxvYWQgYnNhdmUgYmNvcHkgbWVtZmlsZSBpZiBlbHNlIHBva2Ugd3Bva2UgbHBva2UgZ2V0c3RyIGNoZHBtIG1lbWV4cGFuZCBtZW1jcHkgbWVtc2V0IG5vdGVzZWwgbm90ZWFkZCBub3RlZGVsIG5vdGVsb2FkIG5vdGVzYXZlIHJhbmRvbWl6ZSBub3RldW5zZWwgbm90ZWdldCBzcGxpdCBzdHJyZXAgc2V0ZWFzZSBidXR0b24gY2hnZGlzcCBleGVjIGRpYWxvZyBtbWxvYWQgbW1wbGF5IG1tc3RvcCBtY2kgcHNldCBwZ2V0IHN5c2NvbG9yIG1lcyBwcmludCB0aXRsZSBwb3MgY2lyY2xlIGNscyBmb250IHN5c2ZvbnQgb2Jqc2l6ZSBwaWNsb2FkIGNvbG9yIHBhbGNvbG9yIHBhbGV0dGUgcmVkcmF3IHdpZHRoIGdzZWwgZ2NvcHkgZ3pvb20gZ21vZGUgYm1wc2F2ZSBoc3Zjb2xvciBnZXRrZXkgbGlzdGJveCBjaGtib3ggY29tYm94IGlucHV0IG1lc2JveCBidWZmZXIgc2NyZWVuIGJnc2NyIG1vdXNlIG9ianNlbCBncm9sbCBsaW5lIGNscm9iaiBib3hmIG9ianBybSBvYmptb2RlIHN0aWNrIGdyZWN0IGdyb3RhdGUgZ3NxdWFyZSBncmFkZiBvYmppbWFnZSBvYmpza2lwIG9iamVuYWJsZSBjZWxsb2FkIGNlbGRpdiBjZWxwdXQgbmV3Y29tIHF1ZXJ5Y29tIGRlbGNvbSBjbnZzdG93IGNvbXJlcyBheG9iaiB3aW5vYmogc2VuZG1zZyBjb21ldmVudCBjb21ldmFyZyBzYXJyYXljb252IGNhbGxmdW5jIGNudnd0b3MgY29tZXZkaXNwIGxpYnB0ciBzeXN0ZW0gaHNwc3RhdCBoc3B2ZXIgc3RhdCBjbnQgZXJyIHN0cnNpemUgbG9vcGxldiBzdWJsZXYgaXBhcmFtIHdwYXJhbSBscGFyYW0gcmVmc3RyIHJlZmR2YWwgaW50IHJuZCBzdHJsZW4gbGVuZ3RoIGxlbmd0aDIgbGVuZ3RoMyBsZW5ndGg0IHZhcnR5cGUgZ2V0dGltZSBwZWVrIHdwZWVrIGxwZWVrIHZhcnB0ciB2YXJ1c2Ugbm90ZWluZm8gaW5zdHIgYWJzIGxpbWl0IGdldGVhc2Ugc3RyIHN0cm1pZCBzdHJmIGdldHBhdGggc3RydHJpbSBzaW4gY29zIHRhbiBhdGFuIHNxcnQgZG91YmxlIGFic2YgZXhwZiBsb2dmIGxpbWl0ZiBwb3dmIGdldGVhc2VmIG1vdXNleCBtb3VzZXkgbW91c2V3IGh3bmQgaGluc3RhbmNlIGhkYyBnaW5mbyBvYmppbmZvIGRpcmluZm8gc3lzaW5mbyB0aGlzbW9kIF9faHNwdmVyX18gX19oc3AzMF9fIF9fZGF0ZV9fIF9fdGltZV9fIF9fbGluZV9fIF9fZmlsZV9fIF9kZWJ1ZyBfX2hzcGRlZl9fIGFuZCBvciB4b3Igbm90IHNjcmVlbl9ub3JtYWwgc2NyZWVuX3BhbGV0dGUgc2NyZWVuX2hpZGUgc2NyZWVuX2ZpeGVkc2l6ZSBzY3JlZW5fdG9vbCBzY3JlZW5fZnJhbWUgZ21vZGVfZ2RpIGdtb2RlX21lbSBnbW9kZV9yZ2IwIGdtb2RlX2FscGhhIGdtb2RlX3JnYjBhbHBoYSBnbW9kZV9hZGQgZ21vZGVfc3ViIGdtb2RlX3BpeGVsYSBnaW5mb19teCBnaW5mb19teSBnaW5mb19hY3QgZ2luZm9fc2VsIGdpbmZvX3d4MSBnaW5mb193eTEgZ2luZm9fd3gyIGdpbmZvX3d5MiBnaW5mb192eCBnaW5mb192eSBnaW5mb19zaXpleCBnaW5mb19zaXpleSBnaW5mb193aW54IGdpbmZvX3dpbnkgZ2luZm9fbWVzeCBnaW5mb19tZXN5IGdpbmZvX3IgZ2luZm9fZyBnaW5mb19iIGdpbmZvX3BhbHVzZSBnaW5mb19kaXNweCBnaW5mb19kaXNweSBnaW5mb19jeCBnaW5mb19jeSBnaW5mb19pbnRpZCBnaW5mb19uZXdpZCBnaW5mb19zeCBnaW5mb19zeSBvYmppbmZvX21vZGUgb2JqaW5mb19ibXNjciBvYmppbmZvX2h3bmQgbm90ZW1heCBub3Rlc2l6ZSBkaXJfY3VyIGRpcl9leGUgZGlyX3dpbiBkaXJfc3lzIGRpcl9jbWRsaW5lIGRpcl9kZXNrdG9wIGRpcl9teWRvYyBkaXJfdHYgZm9udF9ub3JtYWwgZm9udF9ib2xkIGZvbnRfaXRhbGljIGZvbnRfdW5kZXJsaW5lIGZvbnRfc3RyaWtlb3V0IGZvbnRfYW50aWFsaWFzIG9iam1vZGVfbm9ybWFsIG9iam1vZGVfZ3VpZm9udCBvYmptb2RlX3VzZWZvbnQgZ3NxdWFyZV9ncmFkIG1zZ290aGljIG1zbWluY2hvIGRvIHVudGlsIHdoaWxlIHdlbmQgZm9yIG5leHQgX2JyZWFrIF9jb250aW51ZSBzd2l0Y2ggY2FzZSBkZWZhdWx0IHN3YnJlYWsgc3dlbmQgZGRpbSBsZGltIGFsbG9jIG1fcGkgcmFkMmRlZyBkZWcycmFkIGVhc2VfbGluZWFyIGVhc2VfcXVhZF9pbiBlYXNlX3F1YWRfb3V0IGVhc2VfcXVhZF9pbm91dCBlYXNlX2N1YmljX2luIGVhc2VfY3ViaWNfb3V0IGVhc2VfY3ViaWNfaW5vdXQgZWFzZV9xdWFydGljX2luIGVhc2VfcXVhcnRpY19vdXQgZWFzZV9xdWFydGljX2lub3V0IGVhc2VfYm91bmNlX2luIGVhc2VfYm91bmNlX291dCBlYXNlX2JvdW5jZV9pbm91dCBlYXNlX3NoYWtlX2luIGVhc2Vfc2hha2Vfb3V0IGVhc2Vfc2hha2VfaW5vdXQgZWFzZV9sb29wJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG5cbiAgICAgIHtcbiAgICAgICAgLy8gbXVsdGktbGluZSBzdHJpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICd7XCInLCBlbmQ6ICdcIn0nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG5cbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuXG4gICAgICB7XG4gICAgICAgIC8vIHByZS1wcm9jZXNzb3JcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnYWRkaW9uIGNmdW5jIGNtZCBjbXBvcHQgY29tZnVuYyBjb25zdCBkZWZjZnVuYyBkZWZmdW5jIGRlZmluZSBlbHNlIGVuZGlmIGVudW0gZXBhY2sgZnVuYyBnbG9iYWwgaWYgaWZkZWYgaWZuZGVmIGluY2x1ZGUgbW9kY2Z1bmMgbW9kZnVuYyBtb2Rpbml0IG1vZHRlcm0gbW9kdWxlIHBhY2sgcGFja29wdCByZWdjbWQgcnVudGltZSB1bmRlZiB1c2Vjb20gdXNlbGliJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdtZXRhLXN0cmluZyd9KSxcbiAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIC8vIGxhYmVsXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwqKFxcXFx3K3xAKSdcbiAgICAgIH0sXG5cbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRfSU5TID0gJ2FjdGlvbiBjb2xsZWN0aW9uIGNvbXBvbmVudCBjb25jYXQgZGVidWdnZXIgZWFjaCBlYWNoLWluIGVsc2UgZ2V0IGhhc2ggaWYgaW5wdXQgbGluay10byBsb2MgbG9nIG11dCBvdXRsZXQgcGFydGlhbCBxdWVyeS1wYXJhbXMgcmVuZGVyIHRleHRhcmVhIHVuYm91bmQgdW5sZXNzIHdpdGggeWllbGQgdmlldyc7XG5cbiAgdmFyIEFUVFJfQVNTSUdOTUVOVCA9IHtcbiAgICBpbGxlZ2FsOiAvXFx9XFx9LyxcbiAgICBiZWdpbjogL1thLXpBLVowLTlfXSs9LyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsIGJlZ2luOiAvW2EtekEtWjAtOV9dKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNVQl9FWFBSID0ge1xuICAgIGlsbGVnYWw6IC9cXH1cXH0vLFxuICAgIGJlZ2luOiAvXFwpLywgZW5kOiAvXFwpLyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1thLXpBLVpcXC5cXC1dKy8sXG4gICAgICAgIGtleXdvcmRzOiB7YnVpbHRfaW46IEJVSUxUX0lOU30sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLCByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBUQUdfSU5OQVJEUyA9IHtcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgcmVsZXZhbmNlOiAwLFxuICAgIGtleXdvcmRzOiB7a2V5d29yZDogJ2FzJywgYnVpbHRfaW46IEJVSUxUX0lOU30sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBBVFRSX0FTU0lHTk1FTlQsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgne3shKC0tKT8nLCAnKC0tKT99fScpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1sjXFwvXS8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogL1thLXpBLVpcXC5cXC1dKy8sXG4gICAgICAgICAgICBrZXl3b3JkczogeydidWlsdGluLW5hbWUnOiBCVUlMVF9JTlN9LFxuICAgICAgICAgICAgc3RhcnRzOiBUQUdfSU5OQVJEU1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xce1xce1thLXpBLVpdW2EtekEtWlxcLV0rLywgZW5kOiAvXFx9XFx9LyxcbiAgICAgICAga2V5d29yZHM6IHtrZXl3b3JkOiAnYXMnLCBidWlsdF9pbjogQlVJTFRfSU5TfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVkVSU0lPTiA9ICdIVFRQL1swLTlcXFxcLl0rJztcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2h0dHBzJ10sXG4gICAgaWxsZWdhbDogJ1xcXFxTJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ14nICsgVkVSU0lPTiwgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbe2NsYXNzTmFtZTogJ251bWJlcicsIGJlZ2luOiAnXFxcXGJcXFxcZHszfVxcXFxiJ31dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ15bQS1aXSsgKC4qPykgJyArIFZFUlNJT04gKyAnJCcsIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICcgJywgZW5kOiAnICcsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBWRVJTSU9OXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiAnW0EtWl0rJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHcnLCBlbmQ6ICc6ICcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbnxcXFxcc3w9JyxcbiAgICAgICAgc3RhcnRzOiB7ZW5kOiAnJCcsIHJlbGV2YW5jZTogMH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXG5cXFxcbicsXG4gICAgICAgIHN0YXJ0czoge3N1Ykxhbmd1YWdlOiBbXSwgZW5kc1dpdGhQYXJlbnQ6IHRydWV9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGtleXdvcmRzID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgLy8ga2V5d29yZHNcbiAgICAgICchPSAlICU9ICYgJj0gKiAqKiAqKj0gKj0gKm1hcCAnICtcbiAgICAgICcrICs9ICwgLS1idWlsZC1jbGFzcy0tIC0taW1wb3J0LS0gLT0gLiAvIC8vIC8vPSAnICtcbiAgICAgICcvPSA8IDw8IDw8PSA8PSA9ID4gPj0gPj4gPj49ICcgK1xuICAgICAgJ0AgQD0gXiBePSBhYnMgYWNjdW11bGF0ZSBhbGwgYW5kIGFueSBhcC1jb21wb3NlICcgK1xuICAgICAgJ2FwLWRvdGltZXMgYXAtZWFjaCBhcC1lYWNoLXdoaWxlIGFwLWZpbHRlciBhcC1maXJzdCBhcC1pZiBhcC1sYXN0IGFwLW1hcCBhcC1tYXAtd2hlbiBhcC1waXBlICcgK1xuICAgICAgJ2FwLXJlZHVjZSBhcC1yZWplY3QgYXBwbHkgYXMtPiBhc2NpaSBhc3NlcnQgYXNzb2MgYmluIGJyZWFrIGJ1dGxhc3QgJyArXG4gICAgICAnY2FsbGFibGUgY2FsbGluZy1tb2R1bGUtbmFtZSBjYXIgY2FzZSBjZHIgY2hhaW4gY2hyIGNvbGw/IGNvbWJpbmF0aW9ucyBjb21waWxlICcgK1xuICAgICAgJ2NvbXByZXNzIGNvbmQgY29ucyBjb25zPyBjb250aW51ZSBjb3VudCBjdXJyeSBjdXQgY3ljbGUgZGVjICcgK1xuICAgICAgJ2RlZiBkZWZhdWx0LW1ldGhvZCBkZWZjbGFzcyBkZWZtYWNybyBkZWZtYWNyby1hbGlhcyBkZWZtYWNyby9nISBkZWZtYWluIGRlZm1ldGhvZCBkZWZtdWx0aSBkZWZuICcgK1xuICAgICAgJ2RlZm4tYWxpYXMgZGVmbmMgZGVmbnIgZGVmcmVhZGVyIGRlZnNlcSBkZWwgZGVsYXR0ciBkZWxldGUtcm91dGUgZGljdC1jb21wIGRpciAnICtcbiAgICAgICdkaXNhc3NlbWJsZSBkaXNwYXRjaC1yZWFkZXItbWFjcm8gZGlzdGluY3QgZGl2bW9kIGRvIGRvdG8gZHJvcCBkcm9wLWxhc3QgZHJvcC13aGlsZSBlbXB0eT8gJyArXG4gICAgICAnZW5kLXNlcXVlbmNlIGV2YWwgZXZhbC1hbmQtY29tcGlsZSBldmFsLXdoZW4tY29tcGlsZSBldmVuPyBldmVyeT8gZXhjZXB0IGV4ZWMgZmlsdGVyIGZpcnN0ICcgK1xuICAgICAgJ2ZsYXR0ZW4gZmxvYXQ/IGZuIGZuYyBmbnIgZm9yIGZvciogZm9ybWF0IGZyYWN0aW9uIGdlbmV4cHIgJyArXG4gICAgICAnZ2Vuc3ltIGdldCBnZXRhdHRyIGdsb2JhbCBnbG9iYWxzIGdyb3VwLWJ5IGhhc2F0dHIgaGFzaCBoZXggaWQgJyArXG4gICAgICAnaWRlbnRpdHkgaWYgaWYqIGlmLW5vdCBpZi1weXRob24yIGltcG9ydCBpbiBpbmMgaW5wdXQgaW5zdGFuY2U/ICcgK1xuICAgICAgJ2ludGVnZXIgaW50ZWdlci1jaGFyPyBpbnRlZ2VyPyBpbnRlcmxlYXZlIGludGVycG9zZSBpcyBpcy1jb2xsIGlzLWNvbnMgaXMtZW1wdHkgaXMtZXZlbiAnICtcbiAgICAgICdpcy1ldmVyeSBpcy1mbG9hdCBpcy1pbnN0YW5jZSBpcy1pbnRlZ2VyIGlzLWludGVnZXItY2hhciBpcy1pdGVyYWJsZSBpcy1pdGVyYXRvciBpcy1rZXl3b3JkIGlzLW5lZyBpcy1ub25lICcgK1xuICAgICAgJ2lzLW5vdCBpcy1udW1lcmljIGlzLW9kZCBpcy1wb3MgaXMtc3RyaW5nIGlzLXN5bWJvbCBpcy16ZXJvIGlzaW5zdGFuY2UgaXNsaWNlIGlzc3ViY2xhc3MgJyArXG4gICAgICAnaXRlciBpdGVyYWJsZT8gaXRlcmF0ZSBpdGVyYXRvcj8ga2V5d29yZCBrZXl3b3JkPyBsYW1iZGEgbGFzdCBsZW4gbGV0ICcgK1xuICAgICAgJ2xpZiBsaWYtbm90IGxpc3QqIGxpc3QtY29tcCBsb2NhbHMgbG9vcCBtYWNyby1lcnJvciBtYWNyb2V4cGFuZCBtYWNyb2V4cGFuZC0xIG1hY3JvZXhwYW5kLWFsbCAnICtcbiAgICAgICdtYXAgbWF4IG1lcmdlLXdpdGggbWV0aG9kLWRlY29yYXRvciBtaW4gbXVsdGktZGVjb3JhdG9yIG11bHRpY29tYmluYXRpb25zIG5hbWUgbmVnPyBuZXh0ICcgK1xuICAgICAgJ25vbmU/IG5vbmxvY2FsIG5vdCBub3QtaW4gbm90PyBudGggbnVtZXJpYz8gb2N0IG9kZD8gb3BlbiAnICtcbiAgICAgICdvciBvcmQgcGFydGl0aW9uIHBlcm11dGF0aW9ucyBwb3M/IHBvc3Qtcm91dGUgcG9zdHdhbGsgcG93IHByZXdhbGsgcHJpbnQgJyArXG4gICAgICAncHJvZHVjdCBwcm9maWxlL2NhbGxzIHByb2ZpbGUvY3B1IHB1dC1yb3V0ZSBxdWFzaXF1b3RlIHF1b3RlIHJhaXNlIHJhbmdlIHJlYWQgcmVhZC1zdHIgJyArXG4gICAgICAncmVjdXJzaXZlLXJlcGxhY2UgcmVkdWNlIHJlbW92ZSByZXBlYXQgcmVwZWF0ZWRseSByZXByIHJlcXVpcmUgcmVzdCByb3VuZCByb3V0ZSAnICtcbiAgICAgICdyb3V0ZS13aXRoLW1ldGhvZHMgcndtIHNlY29uZCBzZXEgc2V0LWNvbXAgc2V0YXR0ciBzZXR2IHNvbWUgc29ydGVkIHN0cmluZyAnICtcbiAgICAgICdzdHJpbmc/IHN1bSBzd2l0Y2ggc3ltYm9sPyB0YWtlIHRha2UtbnRoIHRha2Utd2hpbGUgdGVlIHRyeSB1bmxlc3MgJyArXG4gICAgICAndW5xdW90ZSB1bnF1b3RlLXNwbGljaW5nIHZhcnMgd2FsayB3aGVuIHdoaWxlIHdpdGggd2l0aCogd2l0aC1kZWNvcmF0b3Igd2l0aC1nZW5zeW1zICcgK1xuICAgICAgJ3hpIHhvciB5aWVsZCB5aWVsZC1mcm9tIHplcm8/IHppcCB6aXAtbG9uZ2VzdCB8IHw9IH4nXG4gICB9O1xuXG4gIHZhciBTWU1CT0xTVEFSVCA9ICdhLXpBLVpfXFxcXC0hLj8rKj08PiYjXFwnJztcbiAgdmFyIFNZTUJPTF9SRSA9ICdbJyArIFNZTUJPTFNUQVJUICsgJ11bJyArIFNZTUJPTFNUQVJUICsgJzAtOS87Ol0qJztcbiAgdmFyIFNJTVBMRV9OVU1CRVJfUkUgPSAnWy0rXT9cXFxcZCsoXFxcXC5cXFxcZCspPyc7XG5cbiAgdmFyIFNIRUJBTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdeIyEnLCBlbmQ6ICckJ1xuICB9O1xuXG4gIHZhciBTWU1CT0wgPSB7XG4gICAgYmVnaW46IFNZTUJPTF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogU0lNUExFX05VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pO1xuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnOycsXG4gICAgJyQnLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46IC9cXGIoW1R0XXJ1ZXxbRmZdYWxzZXxuaWx8Tm9uZSlcXGIvXG4gIH07XG4gIHZhciBDT0xMRUNUSU9OID0ge1xuICAgIGJlZ2luOiAnW1xcXFxbXFxcXHtdJywgZW5kOiAnW1xcXFxdXFxcXH1dJ1xuICB9O1xuICB2YXIgSElOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogJ1xcXFxeJyArIFNZTUJPTF9SRVxuICB9O1xuICB2YXIgSElOVF9DT0wgPSBobGpzLkNPTU1FTlQoJ1xcXFxeXFxcXHsnLCAnXFxcXH0nKTtcbiAgdmFyIEtFWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzpdezEsMn0nICsgU1lNQk9MX1JFXG4gIH07XG4gIHZhciBMSVNUID0ge1xuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSdcbiAgfTtcbiAgdmFyIEJPRFkgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBOQU1FID0ge1xuICAgIGtleXdvcmRzOiBrZXl3b3JkcyxcbiAgICBsZXhlbWVzOiBTWU1CT0xfUkUsXG4gICAgY2xhc3NOYW1lOiAnbmFtZScsIGJlZ2luOiBTWU1CT0xfUkUsXG4gICAgc3RhcnRzOiBCT0RZXG4gIH07XG4gIHZhciBERUZBVUxUX0NPTlRBSU5TID0gW0xJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMLCBTWU1CT0xdO1xuXG4gIExJU1QuY29udGFpbnMgPSBbaGxqcy5DT01NRU5UKCdjb21tZW50JywgJycpLCBOQU1FLCBCT0RZXTtcbiAgQk9EWS5jb250YWlucyA9IERFRkFVTFRfQ09OVEFJTlM7XG4gIENPTExFQ1RJT04uY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydoeWxhbmcnXSxcbiAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICBjb250YWluczogW1NIRUJBTkcsIExJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RBUlRfQlJBQ0tFVCA9ICdcXFxcWyc7XG4gIHZhciBFTkRfQlJBQ0tFVCA9ICdcXFxcXSc7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydpNyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIC8vIFNvbWUga2V5d29yZHMgbW9yZSBvciBsZXNzIHVuaXF1ZSB0byBJNywgZm9yIHJlbGV2YW5jZS5cbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIGtpbmQ6XG4gICAgICAgICd0aGluZyByb29tIHBlcnNvbiBtYW4gd29tYW4gYW5pbWFsIGNvbnRhaW5lciAnICtcbiAgICAgICAgJ3N1cHBvcnRlciBiYWNrZHJvcCBkb29yICcgK1xuICAgICAgICAvLyBjaGFyYWN0ZXJpc3RpYzpcbiAgICAgICAgJ3NjZW5lcnkgb3BlbiBjbG9zZWQgbG9ja2VkIGluc2lkZSBnZW5kZXIgJyArXG4gICAgICAgIC8vIHZlcmI6XG4gICAgICAgICdpcyBhcmUgc2F5IHVuZGVyc3RhbmQgJyArXG4gICAgICAgIC8vIG1pc2Mga2V5d29yZDpcbiAgICAgICAgJ2tpbmQgb2YgcnVsZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgICAgICAgICBiZWdpbjogU1RBUlRfQlJBQ0tFVCwgZW5kOiBFTkRfQlJBQ0tFVFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIGJlZ2luOiAvXihWb2x1bWV8Qm9va3xQYXJ0fENoYXB0ZXJ8U2VjdGlvbnxUYWJsZSlcXGIvLFxuICAgICAgICBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gUnVsZSBkZWZpbml0aW9uXG4gICAgICAgIC8vIFRoaXMgaXMgaGVyZSBmb3IgcmVsZXZhbmNlLlxuICAgICAgICBiZWdpbjogL14oQ2hlY2t8Q2Fycnkgb3V0fFJlcG9ydHxJbnN0ZWFkIG9mfFRvfFJ1bGV8V2hlbnxCZWZvcmV8QWZ0ZXIpXFxiLyxcbiAgICAgICAgZW5kOiAnOicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy9SdWxlIG5hbWVcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXChUaGlzJywgZW5kOiAnXFxcXCknXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46IFNUQVJUX0JSQUNLRVQsIGVuZDogRU5EX0JSQUNLRVQsXG4gICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiBcInN0cmluZ1wiLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogXCInJydcIiwgZW5kOiBcIicnJ1wiLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LCB7XG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSwge1xuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInXG4gICAgICB9LCB7XG4gICAgICAgIGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIlxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RvbWwnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJzsnLCAnJCcpLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIGJlZ2luOiAvXlxccypcXFsrLywgZW5kOiAvXFxdKy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXlthLXowLTlcXFtcXF1fXFwuLV0rXFxzKj1cXHMqLywgZW5kOiAnJCcsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgYmVnaW46IC9bYS16MC05XFxbXFxdX1xcLi1dKy9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvPS8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnKSxcbiAgICAgICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXFxib258b2ZmfHRydWV8ZmFsc2V8eWVzfG5vXFxiL1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICB7YmVnaW46IC9cXCRbXFx3XFxkXCJdW1xcd1xcZF9dKi99LFxuICAgICAgICAgICAgICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46IC8oW1xcK1xcLV0rKT9bXFxkXStfW1xcZF9dKy9cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG5cbiAgdmFyIEZfS0VZV09SRFMgPSB7XG4gICAgbGl0ZXJhbDogJy5GYWxzZS4gLlRydWUuJyxcbiAgICBrZXl3b3JkOiAna2luZCBkbyB3aGlsZSBwcml2YXRlIGNhbGwgaW50cmluc2ljIHdoZXJlIGVsc2V3aGVyZSAnICtcbiAgICAgICd0eXBlIGVuZHR5cGUgZW5kbW9kdWxlIGVuZHNlbGVjdCBlbmRpbnRlcmZhY2UgZW5kIGVuZGRvIGVuZGlmIGlmIGZvcmFsbCBlbmRmb3JhbGwgb25seSBjb250YWlucyBkZWZhdWx0IHJldHVybiBzdG9wIHRoZW4gJyArXG4gICAgICAncHVibGljIHN1YnJvdXRpbmV8MTAgZnVuY3Rpb24gcHJvZ3JhbSAuYW5kLiAub3IuIC5ub3QuIC5sZS4gLmVxLiAuZ2UuIC5ndC4gLmx0LiAnICtcbiAgICAgICdnb3RvIHNhdmUgZWxzZSB1c2UgbW9kdWxlIHNlbGVjdCBjYXNlICcgK1xuICAgICAgJ2FjY2VzcyBibGFuayBkaXJlY3QgZXhpc3QgZmlsZSBmbXQgZm9ybSBmb3JtYXR0ZWQgaW9zdGF0IG5hbWUgbmFtZWQgbmV4dHJlYyBudW1iZXIgb3BlbmVkIHJlYyByZWNsIHNlcXVlbnRpYWwgc3RhdHVzIHVuZm9ybWF0dGVkIHVuaXQgJyArXG4gICAgICAnY29udGludWUgZm9ybWF0IHBhdXNlIGN5Y2xlIGV4aXQgJyArXG4gICAgICAnY19udWxsX2NoYXIgY19hbGVydCBjX2JhY2tzcGFjZSBjX2Zvcm1fZmVlZCBmbHVzaCB3YWl0IGRlY2ltYWwgcm91bmQgaW9tc2cgJyArXG4gICAgICAnc3luY2hyb25vdXMgbm9wYXNzIG5vbl9vdmVycmlkYWJsZSBwYXNzIHByb3RlY3RlZCB2b2xhdGlsZSBhYnN0cmFjdCBleHRlbmRzIGltcG9ydCAnICtcbiAgICAgICdub25faW50cmluc2ljIHZhbHVlIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvciBjbGFzcyBhc3NvY2lhdGUgYmluZCBlbnVtICcgK1xuICAgICAgJ2NfaW50IGNfc2hvcnQgY19sb25nIGNfbG9uZ19sb25nIGNfc2lnbmVkX2NoYXIgY19zaXplX3QgY19pbnQ4X3QgY19pbnQxNl90IGNfaW50MzJfdCBjX2ludDY0X3QgY19pbnRfbGVhc3Q4X3QgY19pbnRfbGVhc3QxNl90ICcgK1xuICAgICAgJ2NfaW50X2xlYXN0MzJfdCBjX2ludF9sZWFzdDY0X3QgY19pbnRfZmFzdDhfdCBjX2ludF9mYXN0MTZfdCBjX2ludF9mYXN0MzJfdCBjX2ludF9mYXN0NjRfdCBjX2ludG1heF90IENfaW50cHRyX3QgY19mbG9hdCBjX2RvdWJsZSAnICtcbiAgICAgICdjX2xvbmdfZG91YmxlIGNfZmxvYXRfY29tcGxleCBjX2RvdWJsZV9jb21wbGV4IGNfbG9uZ19kb3VibGVfY29tcGxleCBjX2Jvb2wgY19jaGFyIGNfbnVsbF9wdHIgY19udWxsX2Z1bnB0ciAnICtcbiAgICAgICdjX25ld19saW5lIGNfY2FycmlhZ2VfcmV0dXJuIGNfaG9yaXpvbnRhbF90YWIgY192ZXJ0aWNhbF90YWIgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyICcgK1xuICAgICAgJ2NfcHRyIGNfZnVucHRyIGlzb19mb3J0cmFuX2VudiBjaGFyYWN0ZXJfc3RvcmFnZV9zaXplIGVycm9yX3VuaXQgZmlsZV9zdG9yYWdlX3NpemUgaW5wdXRfdW5pdCBpb3N0YXRfZW5kIGlvc3RhdF9lb3IgJyArXG4gICAgICAnbnVtZXJpY19zdG9yYWdlX3NpemUgb3V0cHV0X3VuaXQgY19mX3Byb2Nwb2ludGVyIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgJyArXG4gICAgICAnaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgbmV3dW5pdCBjb250aWd1b3VzIHJlY3Vyc2l2ZSAnICtcbiAgICAgICdwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZSBlb3IgYWR2YW5jZSBubWwgaW50ZXJmYWNlIHByb2NlZHVyZSBuYW1lbGlzdCBpbmNsdWRlIHNlcXVlbmNlIGVsZW1lbnRhbCBwdXJlICcgK1xuICAgICAgJ2ludGVnZXIgcmVhbCBjaGFyYWN0ZXIgY29tcGxleCBsb2dpY2FsIGRpbWVuc2lvbiBhbGxvY2F0YWJsZXwxMCBwYXJhbWV0ZXIgJyArXG4gICAgICAnZXh0ZXJuYWwgaW1wbGljaXR8MTAgbm9uZSBkb3VibGUgcHJlY2lzaW9uIGFzc2lnbiBpbnRlbnQgb3B0aW9uYWwgcG9pbnRlciAnICtcbiAgICAgICd0YXJnZXQgaW4gb3V0IGNvbW1vbiBlcXVpdmFsZW5jZSBkYXRhICcgK1xuICAgICAgLy8gSVJQRjkwIHNwZWNpYWwga2V5d29yZHNcbiAgICAgICdiZWdpbl9wcm92aWRlciAmYmVnaW5fcHJvdmlkZXIgZW5kX3Byb3ZpZGVyIGJlZ2luX3NoZWxsIGVuZF9zaGVsbCBiZWdpbl90ZW1wbGF0ZSBlbmRfdGVtcGxhdGUgc3Vic3QgYXNzZXJ0IHRvdWNoICcgK1xuICAgICAgJ3NvZnRfdG91Y2ggcHJvdmlkZSBub19kZXAgZnJlZSBpcnBfaWYgaXJwX2Vsc2UgaXJwX2VuZGlmIGlycF93cml0ZSBpcnBfcmVhZCcsXG4gICAgYnVpbHRfaW46ICdhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50ICcgK1xuICAgICAgJ2Rsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgJyArXG4gICAgICAnYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hICcgK1xuICAgICAgJ2lxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgJyArXG4gICAgICAncW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgJyArXG4gICAgICAnbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgJyArXG4gICAgICAnYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgJyArXG4gICAgICAnZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCAnICtcbiAgICAgICdtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0ICcgK1xuICAgICAgJ3JhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kICcgK1xuICAgICAgJ3NldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgJyArXG4gICAgICAnZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kICcgK1xuICAgICAgJ2llZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgJyArXG4gICAgICAnaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mJyAgK1xuICAgICAgJ2Fjb3NoIGFzaW5oIGF0YW5oIGJlc3NlbF9qMCBiZXNzZWxfajEgYmVzc2VsX2puIGJlc3NlbF95MCBiZXNzZWxfeTEgYmVzc2VsX3luIGVyZiBlcmZjIGVyZmNfc2NhbGVkIGdhbW1hIGxvZ19nYW1tYSBoeXBvdCBub3JtMiAnICtcbiAgICAgICdhdG9taWNfZGVmaW5lIGF0b21pY19yZWYgZXhlY3V0ZV9jb21tYW5kX2xpbmUgbGVhZHogdHJhaWx6IHN0b3JhZ2Vfc2l6ZSBtZXJnZV9iaXRzICcgK1xuICAgICAgJ2JnZSBiZ3QgYmxlIGJsdCBkc2hpZnRsIGRzaGlmdHIgZmluZGxvYyBpYWxsIGlhbnkgaXBhcml0eSBpbWFnZV9pbmRleCBsY29ib3VuZCB1Y29ib3VuZCBtYXNrbCBtYXNrciAnICtcbiAgICAgICdudW1faW1hZ2VzIHBhcml0eSBwb3BjbnQgcG9wcGFyIHNoaWZ0YSBzaGlmdGwgc2hpZnRyIHRoaXNfaW1hZ2UgJyArXG4gICAgICAvLyBJUlBGOTAgc3BlY2lhbCBidWlsdF9pbnNcbiAgICAgICdJUlBfQUxJR04gaXJwX2hlcmUnXG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogRl9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ3N0cmluZycsIHJlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtJyxcbiAgICAgICAgaWxsZWdhbDogJ1skez1cXFxcbl0nLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCBQQVJBTVNdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCchJywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLkNPTU1FTlQoJ2JlZ2luX2RvYycsICdlbmRfZG9jJywge3JlbGV2YW5jZTogMTB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoPz1cXFxcYnxcXFxcK3xcXFxcLXxcXFxcLikoPz1cXFxcLlxcXFxkfFxcXFxkKSg/OlxcXFxkKyk/KD86XFxcXC4/XFxcXGQqKSg/OltkZV1bKy1dP1xcXFxkKyk/XFxcXGJcXFxcLj8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyDQntC/0YDQtdC00LXQu9C10L3QuNC1INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0L7QslxuICB2YXIgVU5ERVJTQ09SRV9JREVOVF9SRSA9IFwiW0EtWmEtetCQLdCv0LAt0Y/RkdCBXyFdW0EtWmEtetCQLdCv0LAt0Y/RkdCBXzAtOV0qXCI7XG5cbiAgLy8g0J7Qv9GA0LXQtNC10LvQtdC90LjQtSDQuNC80LXQvSDRhNGD0L3QutGG0LjQuVxuICB2YXIgRlVOQ1RJT05fTkFNRV9JREVOVF9SRSA9IFwiW0EtWmEtetCQLdCv0LAt0Y/RkdCBX11bQS1aYS160JAt0K/QsC3Rj9GR0IFfMC05XSpcIjtcblxuICAvLyBrZXl3b3JkIDog0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwXG4gIHZhciBLRVlXT1JEID1cbiAgICBcImFuZCDQuCBlbHNlINC40L3QsNGH0LUgZW5kZXhjZXB0IGVuZGZpbmFsbHkgZW5kZm9yZWFjaCDQutC+0L3QtdGG0LLRgdC1IGVuZGlmINC60L7QvdC10YbQtdGB0LvQuCBlbmR3aGlsZSDQutC+0L3QtdGG0L/QvtC60LAgXCIgK1xuICAgIFwiZXhjZXB0IGV4aXRmb3IgZmluYWxseSBmb3JlYWNoINCy0YHQtSBpZiDQtdGB0LvQuCBpbiDQsiBub3Qg0L3QtSBvciDQuNC70LggdHJ5IHdoaWxlINC/0L7QutCwIFwiO1xuXG4gIC8vIFNZU1JFUyBDb25zdGFudHNcbiAgdmFyIHN5c3Jlc19jb25zdGFudHMgPVxuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTX1JJR0hUX1RZUEVfRURJVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNfUklHSFRfVFlQRV9GVUxMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU19SSUdIVF9UWVBFX1ZJRVcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19NT0RFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfTk9fQUNDRVNTX1ZJRVcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19OT19BQ0NFU1NfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0FERF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19BRERfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0NIQU5HRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19DSEFOR0VfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0RFTEVURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19ERUxFVEVfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0VYRUNVVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfRVhFQ1VURV9SRVFVSVNJVEVfWUVTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfTk9fQUNDRVNTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX05PX0FDQ0VTU19SRVFVSVNJVEVfWUVTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfUkFUSUZZX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX1JBVElGWV9SRVFVSVNJVEVfWUVTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfVklFVyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfVklFV19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19WSUVXX1JFUVVJU0lURV9ZRVNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfQ0hBTkdFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9DSEFOR0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfRVhJU1RTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9FWElTVFNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfRlVMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfRlVMTF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9WSUVXIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0FCT1JUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9BQ0NFUFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0FERF9BVFRBQ0hNRU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9DSEFOR0VfQ0FSRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ0hBTkdFX0tJTkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0NIQU5HRV9TVE9SQUdFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9DT05USU5VRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ09QWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ1JFQVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9DUkVBVEVfVkVSU0lPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfREVMRVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9ERUxFVEVfQVRUQUNITUVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfREVMRVRFX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0RJU0FCTEVfREVMRUdBVEVfQUNDRVNTX1JJR0hUUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfRU5BQkxFX0RFTEVHQVRFX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0VOQ1JZUFRJT05fQllfQ0VSVElGSUNBVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0VOQ1JZUFRJT05fQllfQ0VSVElGSUNBVEVfQU5EX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FTkNSWVBUSU9OX0JZX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FWFBPUlRfV0lUSF9MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FWFBPUlRfV0lUSE9VVF9MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9JTVBPUlRfV0lUSF9VTkxPQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0lNUE9SVF9XSVRIT1VUX1VOTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTElGRV9DWUNMRV9TVEFHRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTE9DS19GT1JfU0VSVkVSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9MT0NLX01PRElGWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTUFSS19BU19SRUFERUQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01BUktfQVNfVU5SRUFERUQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01PRElGWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTU9ESUZZX0NBUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01PVkVfVE9fQVJDSElWRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfT0ZGX0VOQ1JZUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1BBU1NXT1JEX0NIQU5HRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfUEVSRk9STSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfUkVDT1ZFUl9GUk9NX0xPQ0FMX0NPUFkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1JFU1RBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1JFU1RPUkVfRlJPTV9BUkNISVZFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9SRVZJU0lPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfU0VORF9CWV9NQUlMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9TSUdOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9TVEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfVU5MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9VTkxPQ0tfRlJPTV9TRVJWRVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1ZFUlNJT05fU1RBVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1ZFUlNJT05fVklTSUJJTElUWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfVklFVyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfVklFV19TSEFET1dfQ09QWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfV09SS0ZMT1dfREVTQ1JJUFRJT05fTU9ESUZZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9XUklURV9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJVkVfVkVSU0lPTl9TVEFURV9QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRERfUkVGRVJFTkNFX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURESVRJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FERElUSU9OQUxfUEFSQU1TX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRElUSU9OQUxfSk9CX0VORF9EQVRFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRElUSU9OQUxfSk9CX1JFQURfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FESVRJT05BTF9KT0JfU1RBUlRfREFURV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURJVElPTkFMX0pPQl9TVEFURV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9BRERJTkdfVVNFUl9UT19HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQURESU5HX1VTRVJfVE9fR1JPVVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fQ09NUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fQ09NUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9DUkVBVElPTl9HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fR1JPVVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fVVNFUl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fVVNFUl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9EQVRBQkFTRV9VU0VSX0NSRUFUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RBVEFCQVNFX1VTRVJfQ1JFQVRJT05fQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RBVEFCQVNFX1VTRVJfREVMRVRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREFUQUJBU0VfVVNFUl9ERUxFVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fQ09NUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fQ09NUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9ERUxFVElPTl9HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fR1JPVVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fVVNFUl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fVVNFUl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9ERUxFVElPTl9VU0VSX0ZST01fR1JPVVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RFTEVUSU9OX1VTRVJfRlJPTV9HUk9VUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9HUkFOVElOR19GSUxURVJFUl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfRklMVEVSRVJfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfRklMVEVSRVJfUkVTVFJJQ1RJT05fQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX0ZJTFRFUkVSX1JFU1RSSUNUSU9OX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX1BSSVZJTEVHRV9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfUFJJVklMRUdFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX1JJR0hUU19BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfUklHSFRTX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0lTX01BSU5fU0VSVkVSX0NIQU5HRURfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0lTX01BSU5fU0VSVkVSX0NIQU5HRURfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfSVNfUFVCTElDX0NIQU5HRURfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0lTX1BVQkxJQ19DSEFOR0VEX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1JFTU9WSU5HX0ZJTFRFUkVSX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19GSUxURVJFUl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19GSUxURVJFUl9SRVNUUklDVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfRklMVEVSRVJfUkVTVFJJQ1RJT05fQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfUFJJVklMRUdFX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19QUklWSUxFR0VfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfUklHSFRTX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19SSUdIVFNfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfU0VSVkVSX0xPR0lOX0NSRUFUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1NFUlZFUl9MT0dJTl9DUkVBVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfU0VSVkVSX0xPR0lOX0RFTEVUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1NFUlZFUl9MT0dJTl9ERUxFVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfQ0FURUdPUllfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0NBVEVHT1JZX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0NPTVBfVElUTEVfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0NPTVBfVElUTEVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfRlVMTF9OQU1FX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19GVUxMX05BTUVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfR1JPVVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0dST1VQX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX1BBUkVOVF9HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfUEFSRU5UX0dST1VQX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX1VTRVJfQVVUSF9UWVBFX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX0FVVEhfVFlQRV9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX0xPR0lOX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX0xPR0lOX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX1VTRVJfU1RBVFVTX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX1NUQVRVU19BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VU0VSX1BBU1NXT1JEX0NIQU5HRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VU0VSX1BBU1NXT1JEX0NIQU5HRV9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FMTF9BQ0NFUFRfQ09ORElUSU9OX1JVUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUxMX1VTRVJTX0dST1VQIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BTExfVVNFUlNfR1JPVVBfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUxMX1VTRVJTX1NFUlZFUl9HUk9VUF9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BTExPV0VEX0FDQ0VTU19UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FMTE9XRURfQUNDRVNTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVBQX1ZJRVdFUl9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BUFBST1ZJTkdfU0lHTkFUVVJFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FQUFJPVklOR19TSUdOQVRVUkVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FTU0lTVEFOVF9TVUJTVElUVUVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVNTSVNUQU5UX1NVQlNUSVRVRV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FUVEFDSF9UWVBFX0NPTVBPTkVOVF9UT0tFTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVRUQUNIX1RZUEVfRE9DIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9FRE9DIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9GT0xERVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FUVEFDSF9UWVBFX0pPQiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVRUQUNIX1RZUEVfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9UQVNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIX0VOQ09ERURfUEFTU1dPUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVEhfRU5DT0RFRF9QQVNTV09SRF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIX05PVkVMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUSF9QQVNTV09SRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUSF9QQVNTV09SRF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIX1dJTkRPV1MgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVEhFTlRJQ0FUSU5HX1NJR05BVFVSRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIRU5USUNBVElOR19TSUdOQVRVUkVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9fRU5VTV9NRVRIT0RfRkxBRyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT19OVU1FUkFUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9fU1RST05HX0VOVU1fTUVUSE9EX0ZMQUcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1RFWFRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX0FMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNBR0VfQUxMX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX1NJR04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX1NJR05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNBR0VfV09SSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNBR0VfV09SS19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRPVEVYVF9VU0VfQU5ZV0hFUkVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNFX09OX1NJR05JTkdfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNFX09OX1dPUktfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQkVHSU5fREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQkxBQ0tfTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9CTFVFX0xJRkVfQ1lDTEVfU1RBR0VfRk9OVF9DT0xPUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQlROX1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBTENVTEFURURfUk9MRV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBTExfVFlQRV9WQVJJQUJMRV9CVVRUT05fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBTExfVFlQRV9WQVJJQUJMRV9QUk9HUkFNX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DQU5DRUxfTUVTU0FHRV9GVU5DVElPTl9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBUkRfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0FSRF9SRUZFUkVOQ0VfTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DRVJUSUZJQ0FURV9UWVBFX1JFUVVJU0lURV9FTkNSWVBUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DRVJUSUZJQ0FURV9UWVBFX1JFUVVJU0lURV9TSUdOX0FORF9FTkNSWVBUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DRVJUSUZJQ0FURV9UWVBFX1JFUVVJU0lURV9TSUdOX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DSEVDS19QQVJBTV9WQUxVRV9EQVRFX1BBUkFNX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NIRUNLX1BBUkFNX1ZBTFVFX0ZMT0FUX1BBUkFNX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NIRUNLX1BBUkFNX1ZBTFVFX0lOVEVHRVJfUEFSQU1fVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0hFQ0tfUEFSQU1fVkFMVUVfUElDS19QQVJBTV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DSEVDS19QQVJBTV9WQUxVRV9SRUVGUkVOQ0VfUEFSQU1fVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0xPU0VEX1JFQ09SRF9GTEFHX1ZBTFVFX0ZFTUlOSU5FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DTE9TRURfUkVDT1JEX0ZMQUdfVkFMVUVfTUFTQ1VMSU5FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX0FETUlOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX0RFVkVMT1BFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9ET0NTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX0VET0NfQ0FSRFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfQ09NUE9ORU5UX1RZUEVfRVhURVJOQUxfRVhFQ1VUQUJMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9PVEhFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfQ09NUE9ORU5UX1RZUEVfUkVQT1JUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX1NDUklQVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9VUkwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfUkVRVUlTSVRFX0FDQ0VTUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9SRVFVSVNJVEVfQ09NUE9ORU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX1JFUVVJU0lURV9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9SRVFVSVNJVEVfRVhDTFVERV9DT01QT05FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfUkVRVUlTSVRFX1JFQ09SRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NTUVOVF9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NTU9OX1NFVFRJTkdTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QX0NPREVfR1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfR1JPVVBfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfQURNSU5fQ09NUE9ORU5UUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfREVWRUxPUEVSX0NPTVBPTkVOVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0RPQ1MgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0VET0NfQ0FSRFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0VET0NTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9FWFRFUk5BTF9FWEVDVVRBQkxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9PVEhFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfUkVGRVJFTkNFX1RZUEVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9SRUZFUkVOQ0VTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9SRVBPUlRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9TQ1JJUFRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9VUkwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVFNfUkVNT1RFX1NFUlZFUlNfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05ESVRJT05fQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTlNUX0ZJUk1fU1RBVFVTX0NPTU1PTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OU1RfRklSTV9TVEFUVVNfSU5ESVZJRFVBTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OU1RfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTlNUX1BPU0lUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05TVF9TRVJWRVJfU1RBVFVTX0RPTlRfUkVQTElDQVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05TVF9TRVJWRVJfU1RBVFVTX1JFUExJQ0FURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OVEVOVFNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9CT09MRUFOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfREFURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFUQV9UWVBFX0ZMT0FUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfSU5URUdFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFUQV9UWVBFX1BJQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9TVFJJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9URVhUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfVkFSSUFOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFURV9DTE9TRV9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFURV9GT1JNQVRfREFURV9PTkxZX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfT1BFTl9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFURV9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfUkVRVUlTSVRFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfVFlQRV9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRFVElNRV9GT1JNQVRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFQV9BQ0NFU1NfUklHSFRTX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVNDUklQVElPTl9MT0NBTElaRV9JRF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVTQ1JJUFRJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVDFfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUMl9QQVJUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVQzX1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVDRfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUNV9QQVJUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVQ2X1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVEFJTF9EQVRBU0VUX0tFWV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUQUlMX1BJQ0tfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVEFJTF9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9fTk9UX1VTRV9BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ET19OT1RfVVNFX0FDQ0VTU19UWVBFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RPX05PVF9VU0VfT05fVklFV19BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ET19OT1RfVVNFX09OX1ZJRVdfQUNDRVNTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9DVU1FTlRfU1RPUkFHRVNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9DVU1FTlRfVEVNUExBVEVTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9VQkxFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JfQ0xPU0VfRklMRV9PQlNFUlZfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JfQ0xPU0VfUFJPQ0VTU19PQlNFUlZfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19BUFBMSUNBVElPTl9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JTX0NSRUFURV9TRVZFUkFMX1BST0NFU1NFU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19FWFRFTlNJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VESVRPUlNfT0JTRVJWRVJfQllfUFJPQ0VTU19UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JTX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JTX1JFUExBQ0VfU1BFQ19DSEFSU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19VU0VfUExVR0lOU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19WSUVXX0RPQ1VNRU5UX09QRU5FRF9UT19FRElUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfQ0FSRF9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX0NBUkRfVFlQRVNfTElOS19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19DRVJUSUZJQ0FURV9BTkRfUEFTU1dPUkRfRU5DT0RFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfQ0VSVElGSUNBVEVfRU5DT0RFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19LSU5EX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX0tJTkRTX0JZX1RFTVBMQVRFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX01BTkFHRV9BQ0NFU1NfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19OT05FX0VOQ09ERV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX05VTUJFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19QQVNTV09SRF9FTkNPREVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19SRUFET05MWV9BQ0NFU1NfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TSEVMTF9MSUZFX1RZUEVfVklFV19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TSVpFX1JFU1RSSUNUSU9OX1BSSU9SSVRZX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1NUT1JBR0VfQ0hFQ0tfQUNDRVNTX1JJR0hUU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TVE9SQUdFX0NPTVBVVEVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfU1RPUkFHRV9EQVRBQkFTRV9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1NUT1JBR0VfRURJVF9JTl9TVE9SQUdFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1NUT1JBR0VfTE9DQUxfUEFUSF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TVE9SQUdFX1NIQVJFRF9TT1VSQ0VfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19URU1QTEFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19UWVBFU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19WRVJTSU9OX0FDVElWRV9TVEFHRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1ZFUlNJT05fREVTSUdOX1NUQUdFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfVkVSU0lPTl9PQlNPTEVURV9TVEFHRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1dSSVRFX0FDQ0VTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NVTUVOVF9DQVJEX1JFUVVJU0lURVNfUkVGRVJFTkNFX0NPREVfU0VMRUNURURfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FTkNPREVfQ0VSVElGSUNBVEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FTkRfREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRU5VTUVSQVRJT05fVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhFQ1VURV9BQ0NFU1NfUklHSFRTX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhFQ1VUSVZFX0ZJTEVfU1RPUkFHRV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWElTVF9DT05TVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhJU1RfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYUE9SVF9MT0NLX1RZUEVfQVNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWFBPUlRfTE9DS19UWVBFX1dJVEhfTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhQT1JUX0xPQ0tfVFlQRV9XSVRIT1VUX0xPQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYUE9SVF9WRVJTSU9OX1RZUEVfQVNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWFBPUlRfVkVSU0lPTl9UWVBFX0xBU1QgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYUE9SVF9WRVJTSU9OX1RZUEVfTEFTVF9BQ1RJVkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYVEVOU0lPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRklMVEVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRklMVEVSX1RZUEVfQ09NTU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9UWVBFX0NPTU1PTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GSUxURVJfVFlQRV9VU0VSX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9UWVBFX1VTRVJfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRklMVEVSX1ZBTFVFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GTE9BVF9OVU1CRVJfRk9STUFUX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZMT0FUX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfQVVUSE9SX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfS0lORF9BTllfT0JKRUNUUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX0tJTkRfQ09NUE9ORU5UUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX0tJTkRfRURPQ1MgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9LSU5EX0pPQlMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9LSU5EX1RBU0tTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9DT01NT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9UWVBFX0NPTVBPTkVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfRkFWT1JJVEVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9JTkJPWCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfT1VUQk9YIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9RVUlDS19MQVVOQ0ggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9UWVBFX1NFQVJDSCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfU0hPUlRDVVRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9VU0VSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GUk9NX0RJQ1RJT05BUllfRU5VTV9NRVRIT0RfRkxBRyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRlVMTF9TVUJTVElUVVRFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTExfU1VCU1RJVFVURV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX0NBTkNFTF9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX0NBVEVHT1JZX1NZU1RFTSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRlVOQ1RJT05fQ0FURUdPUllfVVNFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRlVOQ1RJT05fRkFJTFVSRV9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX1NBVkVfUkVTVUxUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HRU5FUkFURURfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUkVFTl9MSUZFX0NZQ0xFX1NUQUdFX0ZPTlRfQ09MT1IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0FDQ09VTlRfVFlQRV9WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9DQVRFR09SWV9OT1JNQUxfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfQ0FURUdPUllfTk9STUFMX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0NBVEVHT1JZX1NFUlZJQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfQ0FURUdPUllfU0VSVklDRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9DT01NT05fQ0FURUdPUllfRklFTERfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0ZVTExfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfUklHSFRTX1RfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1NFUlZFUl9DT0RFU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfU0VSVkVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1NFUlZJQ0VfQ0FURUdPUllfRklFTERfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1VTRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ISURERU5fTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ISUdIX0xWTF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSElTVE9SWV9BQ1RJT05fQ1JFQVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0hJU1RPUllfQUNUSU9OX0RFTEVURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ISVNUT1JZX0FDVElPTl9FRElUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0hPVVJfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lEU1BTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTUFHRV9NT0RFX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTUFHRV9NT0RFX0dSRVlTQ0FMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU1BR0VfTU9ERV9NT05PQ0hST01FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTVBPUlRBTkNFX0hJR0ggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lNUE9SVEFOQ0VfTE9XIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTVBPUlRBTkNFX05PUk1BTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5fREVTSUdOX1ZFUlNJT05fU1RBVEVfUElDS19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5DT01JTkdfV09SS19SVUxFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5UX1JFUVVJU0lURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5UX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTlRFR0VSX05VTUJFUl9GT1JNQVRfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5URUdFUl9UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX0dFTkVSQVRFRF9SRVFVSVNJVEVfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX1BVQkxJQ19ST0xFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JU19SRU1PVEVfVVNFUl9ORUdBVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSVNfUkVNT1RFX1VTRVJfUE9TSVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX1NUT1JFRF9SRVFVSVNJVEVfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX1NUT1JFRF9SRVFVSVNJVEVfU1RPUkVEX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JVEFMSUNfTElGRV9DWUNMRV9TVEFHRV9EUkFXX1NUWUxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9KT0JfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9LSU5EX0NPTlRST0xfSk9CIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9KT0JfS0lORF9KT0IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9LSU5EX05PVElDRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSk9CX1NUQVRFX0FCT1JURUQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9TVEFURV9DT01QTEVURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSk9CX1NUQVRFX1dPUktJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRTX0NSRUFURV9TSEFET1dfQ09QSUVTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19ERUZBVUxUX0VET0NfTElGRV9TVEFHRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19BTExfVEVQTEFURVNfQUxMT1dFRF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19BTExPV19MSUZFX0NZQ0xFX1NUQUdFX0NIQU5HSU5HX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19FRE9DX0FMTE9XX01VTFRJUExFX0FDVElWRV9WRVJTSU9OU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19TSEFSRV9BQ0NFU19SSUdIVFNfQllfREVGQVVMVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19FRE9DX1RFTVBMQVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19FRE9DX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRTX1NJR05FUlNfUkVRVUlTSVRFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LT0RfSU5QVVRfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTEFTVF9VUERBVEVfREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElGRV9DWUNMRV9TVEFSVF9TVEFHRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElMQUNfTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX09CSkVDVF9LSU5EX0NPTVBPTkVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9ET0NVTUVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9FRE9DIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX09CSkVDVF9LSU5EX0ZPTERFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9KT0IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJTktfT0JKRUNUX0tJTkRfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX09CSkVDVF9LSU5EX1RBU0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJTktfUkVGX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJU1RfUkVGRVJFTkNFX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTE9DQUxJWkFUSU9OX0RJQ1RJT05BUllfTUFJTl9WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01BSU5fVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NQU5VQUxfRU5VTV9NRVRIT0RfRkxBRyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUFTVEVSX0NPTVBfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUFTVEVSX1RBQkxFX1JFQ19JRF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUFYSU1JWkVEX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FU1NBR0VfQVRURU5USU9OX0NBUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FU1NBR0VfQ09ORklSTUFUSU9OX0NBUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FU1NBR0VfRVJST1JfQ0FQVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUVTU0FHRV9JTkZPUk1BVElPTl9DQVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NSU5JTUlaRURfTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NSU5VVEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTU9EVUxFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NT05JVE9SSU5HX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NT05USF9GT1JNQVRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVfTE9DQUxJWkVfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVfU0lOR1VMQVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVBTl9JTlBVVF9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ORUdBVElWRV9QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ORUdBVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk8gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PX1BJQ0tfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PX1NJR05BVFVSRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PTkVfQUNDRVNTX1JJR0hUU19UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PTk9QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9OT1BFUkFUSU5HX1JFQ09SRF9GTEFHX1ZBTFVFX01BU0NVTElORSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9STUFMX0FDQ0VTU19SSUdIVFNfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1JNQUxfTElGRV9DWUNMRV9TVEFHRV9EUkFXX1NUWUxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1JNQUxfTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RfQUxMT1dFRF9BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RfQUxMT1dFRF9BQ0NFU1NfVFlQRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RJQ0VfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTV9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTV9TVFJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTUVSQVRJT05fQVVUT19OT1RfU1RST05HIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1FUkFUSU9OX0FVVE9fU1RST05HIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1FUkFUSU9OX0ZST01fRElDVE9OQVJZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1FUkFUSU9OX01BTlVBTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTlVNRVJJQ19UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTVJFUV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT0JTT0xFVEVfVkVSU0lPTl9TVEFURV9QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfVkFMVUVfRkVNSU5JTkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRV9NQVNDVUxJTkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09QVElPTkFMX0ZPUk1fQ09NUF9SRVFDT0RFX1BSRUZJWCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT1JBTkdFX0xJRkVfQ1lDTEVfU1RBR0VfRk9OVF9DT0xPUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT1JJR0lOQUxSRUZfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09VUkZJUk1fUkVGX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09VUkZJUk1fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09VUkZJUk1fVkFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PVVRHT0lOR19XT1JLX1JVTEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QSUNLX05FR0FUSVZFX1JFU1VMVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUElDS19QT1NJVElWRV9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BJQ0tfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QSUNLX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QSUNLX1RZUEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUExBTl9TVEFUVVNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BMQVRGT1JNX1ZFUlNJT05fQ09NTUVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUExVR0lOU19TRVRUSU5HU19ERVNDUklQVElPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUE9TSVRJVkVfUElDS19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUE9XRVJfVE9fQ1JFQVRFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QT1dFUl9UT19TSUdOX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QUklPUklUWV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUVVBTElGSUVEX1RBU0tfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUVVBTElGSUVEX1RBU0tfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUNTVEFUX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRURfTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZfSURfVF9SRUZfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVGX1JFUVVJU0lURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVGX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZfUkVRVUlTSVRFU19SRUZFUkVOQ0VfQ09ERV9TRUxFQ1RFRF9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9SRUNPUkRfSElTVE9SWV9DUkVBVEVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9SRUNPUkRfSElTVE9SWV9ERUxFVEVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9SRUNPUkRfSElTVE9SWV9NT0RJRllfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9UWVBFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZFUkVOQ0VTX0FERF9QQVJBTVNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRVNfRElTUExBWV9SRVFVSVNJVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFTU9URV9TRVJWRVJfU1RBVFVTX1dPUktJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFTU9URV9TRVJWRVJfVFlQRV9NQUlOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRU1PVEVfU0VSVkVSX1RZUEVfU0VDT05EQVJZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRU1PVEVfVVNFUl9GTEFHX1ZBTFVFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUE9SVF9BUFBfRURJVE9SX0lOVEVSTkFMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVBPUlRfQkFTRV9SRVBPUlRfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUE9SVF9CQVNFX1JFUE9SVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVQT1JUX1NDUklQVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVQT1JUX1RFTVBMQVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVBPUlRfVklFV0VSX0NPREVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9BTExPV19DT01QT05FTlRfREVGQVVMVF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX0FMTE9XX1JFQ09SRF9ERUZBVUxUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfQUxMT1dfU0VSVkVSX0NPTVBPTkVOVF9ERUZBVUxUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfTU9ERV9BVkFJTEFCTEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX01PREVfRURJVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfTU9ERV9ISURERU5fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX01PREVfTk9UX0FWQUlMQUJMRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfTU9ERV9WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9OVU1CRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9TRUNUSU9OX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfVFlQRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9CWV9VTklUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfRk9STUFUX0RBVEVfRlVMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9EQVRFX1RJTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9GT1JNQVRfTEVGVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9SSUdIVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9XSVRIT1VUX1VOSVQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9OVU1CRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX0FDVElPTlMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX0JVVFRPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fQlVUVE9OUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fQ0FSRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTAgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTEgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTYgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyNCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUzIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFNSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEU2IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFOCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEU5IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVTX1BTRVVET1JFRkVSRU5DRV9SRVFVSVNJVEVfTlVNQkVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SSUdIVF9BTElHTk1FTlRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9MRVNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JPVVRFX1NURVBfQUZURVJfUlVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ST1VURV9TVEVQX0FORF9DT05ESVRJT05fUlVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ST1VURV9TVEVQX09SX0NPTkRJVElPTl9SVVMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JPVVRFX1RZUEVfQ09NUExFWCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9VVEVfVFlQRV9QQVJBTExFTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9VVEVfVFlQRV9TRVJJQUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NCREFUQVNFVERFU0NfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NCREFUQVNFVERFU0NfUE9TSVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NCVklFV1NERVNDX1BPU0lUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TQ1JJUFRfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSF9CWV9URVhUX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUFSQ0hFU19DT01QT05FTlRfQ09OVEVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfQ1JJVEVSSUFfQUNUSU9OX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSEVTX0VET0NfQ09OVEVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfRk9MREVSX0NPTlRFTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSEVTX0pPQl9DT05URU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUFSQ0hFU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfVEFTS19DT05URU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNPTkRfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfQUNUSU9OU19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfQ0FSRF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfREVUQUlMXzFfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0RFVEFJTF8yX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNUSU9OX1JFUVVJU0lURV9ERVRBSUxfM19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfREVUQUlMXzRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0RFVEFJTF81X1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNUSU9OX1JFUVVJU0lURV9ERVRBSUxfNl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VMRUNUX1JFRkVSRU5DRV9NT0RFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFTEVDVF9UWVBFX1NFTEVDVEFCTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFTEVDVF9UWVBFX1NFTEVDVEFCTEVfT05MWV9DSElMRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VMRUNUX1RZUEVfU0VMRUNUQUJMRV9XSVRIX0NISUxEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUxFQ1RfVFlQRV9VTlNMRUNUQUJMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VSVkVSX1RZUEVfTUFJTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VSVklDRV9VU0VSX0NBVEVHT1JZX0ZJRUxEX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRVRUSU5HU19VU0VSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TSUdOQVRVUkVfQU5EX0VOQ09ERV9DRVJUSUZJQ0FURV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NJR05BVFVSRV9DRVJUSUZJQ0FURV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NJTkdVTEFSX1RJVExFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TUUxfU0VSVkVSX0FVVEhFTlRJRklDQVRJT05fRkxBR19WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TUUxfU0VSVkVSX0VOQ09ERV9BVVRIRU5USUZJQ0FUSU9OX0ZMQUdfVkFMVUVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBTkRBUlRfUk9VVEVfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQU5EQVJUX1JPVVRFX1JFRkVSRU5DRV9DT01NRU5UX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFOREFSVF9ST1VURVNfR1JPVVBTX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFURV9SRVFfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVEVfUkVRVUlTSVRFX0FDVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVEVfUkVRVUlTSVRFX0NMT1NFRF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRJQ19ST0xFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1BMQU5fREVGQVVMVF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX0FVVE9DTEVBTklORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX0JMVUVfU1FVQVJFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfQ09NUExFVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9HUkVFTl9TUVVBUkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9PUkFOR0VfU1FVQVJFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfUFVSUExFX1NRVUFSRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX1JFRF9TUVVBUkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9TVVNQRU5EIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfWUVMTE9XX1NRVUFSRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1REUk9VVEVfU0hPV19UT19VU0VSU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RPUkFHRV9UWVBFX0ZJTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUT1JBR0VfVFlQRV9TUUxfU0VSVkVSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJJS0VPVVRfTElGRV9DWUNMRV9TVEFHRV9EUkFXX1NUWUxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJJTkdfRk9STUFUX0xFRlRfQUxJR05fQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RSSU5HX0ZPUk1BVF9SSUdIVF9BTElHTl9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJJTkdfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUUklOR19SRVFVSVNJVEVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RSSU5HX1RZUEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1VCU1RJVFVURVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NVQlRBU0tfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NZU1RFTV9TRVRUSU5HX0NVUlJFTlRfVVNFUl9QQVJBTV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1lTVEVNX1NFVFRJTkdfRU1QVFlfVkFMVUVfUEFSQU1fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NZU1RFTV9WRVJTSU9OX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfQUNDRVNTX1RZUEVfQUxMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0FDQ0VTU19UWVBFX0FMTF9NRU1CRVJTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0FDQ0VTU19UWVBFX01BTlVBTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19FTkNPREVfVFlQRV9DRVJUSUZJQ0FUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0VOQ09ERV9UWVBFX0NFUlRJRklDQVRJT05fQU5EX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0VOQ09ERV9UWVBFX05PTkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfRU5DT0RFX1RZUEVfUEFTU1dPUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfUk9VVEVfQUxMX0NPTkRJVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19ST1VURV9BTkRfQ09ORElUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1JPVVRFX09SX0NPTkRJVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19TVEFURV9BQk9SVEVEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1NUQVRFX0NPTVBMRVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1NUQVRFX0NPTlRJTlVFRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19TVEFURV9DT05UUk9MIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1NUQVRFX0lOSVQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfU1RBVEVfV09SS0lORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19USVRMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19UWVBFU19HUk9VUFNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfVFlQRVNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFTVBMQVRFU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9EQVRFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0RFVl9EQVRBQkFTRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0RFVl9TWVNURU1fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9FRE1TX0RBVEFCQVNFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19NQUlOX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19NQUlOX0RCX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19TRUNPTkRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9FRE1TX1NFQ09ORF9EQl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0VETVNfU1lTVEVNX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfTlVNRVJJQ19SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVYVF9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFWFRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFWFRfUkVRVUlTSVRFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFWFRfVFlQRV9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UWVBFX0NPREVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOREVGSU5FRF9MSUZFX0NZQ0xFX1NUQUdFX0ZPTlRfQ09MT1IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOSVRTX1NFQ1RJT05fSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOSVRTX1NFQ1RJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOT1BFUkFUSU5HX1JFQ09SRF9GTEFHX1ZBTFVFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOU1RPUkVEX0RBVEFfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOU1RPUkVEX0RBVEFfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRV9BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VfQUNDRVNTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9BQ0NPVU5UX1RZUEVfVkFMVUVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9BRERJVElPTkFMX0lORk9STUFUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0FORF9HUk9VUF9JRF9GUk9NX1BTRVVET1JFRkVSRU5DRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9DQVRFR09SWV9OT1JNQUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ0VSVElGSUNBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ0VSVElGSUNBVEVfU1RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ0VSVElGSUNBVEVfU1VCSkVDVF9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0NFUlRJRklDQVRFX1RIVU1CUFJJTlRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ09NTU9OX0NBVEVHT1JZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0NPTU1PTl9DQVRFR09SWV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0ZVTExfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9HUk9VUF9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0xPR0lOX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1JFTU9URV9DT05UUk9MTEVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1JFTU9URV9TWVNURU1fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfUklHSFRTX1RfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU0VSVkVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU0VSVklDRV9DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TRVJWSUNFX0NBVEVHT1JZX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0FETUlOSVNUUkFUT1JfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfQURNSU5JU1RSQVRPUl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19ERVZFTE9QRVJfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfREVWRUxPUEVSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0RJU0FCTEVEX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0RJU0FCTEVEX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX1NZU1RFTV9ERVZFTE9QRVJfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfVVNFUl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19VU0VSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX1VTRVJfTkFNRV9ERVBSRUNBVEVEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1RZUEVfRklFTERfVkFMVUVfVVNFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19DT05UUk9MTEVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19JU19NQUlOX1NFUlZFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1JFR0lTVFJBVElPTl9DRVJUSUZJQ0FURVNfQUNUSU9OX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19TWVNURU1fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1VTRVJfQUNDRVNTX1JJR0hUU19UWVBSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19VU0VSX0FVVEhFTlRJQ0FUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19VU0VSX0NPTVBPTkVOVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfVVNFUl9HUk9VUF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfVklFV19DRVJUSUZJQ0FURVNfQUNUSU9OX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1ZJRVdfREVGQVVMVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9WSUVXX0RFRkFVTFRfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVklFV0VSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XQUlUSU5HX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XSVpBUkRfRk9STV9MQUJFTF9URVNUX1NUUklORyAgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dJWkFSRF9RVUVSWV9QQVJBTV9IRUlHSFRfRVRBTE9OX1NUUklORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV0laQVJEX1JFRkVSRU5DRV9DT01NRU5UX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1JVTEVTX0RFU0NSSVBUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1RJTUVfQ0FMRU5EQVJfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dPUktfV09SS0ZMT1dfSEFSRF9ST1VURV9UWVBFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1dPUktGTE9XX0hBUkRfUk9VVEVfVFlQRV9WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1dPUktGTE9XX0hBUkRfUk9VVEVfVFlQRV9WQUxVRV9DT0RFX1JVUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV09SS19XT1JLRkxPV19TT0ZUX1JPVVRFX1RZUEVfVkFMVUVfQ09ERV9SVVMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dPUktGTE9XX1JPVVRFX1RZUFJfSEFSRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV09SS0ZMT1dfUk9VVEVfVFlQUl9TT0ZUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9YTUxfRU5DT0RJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1hSRUNfU1RBVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWFJFQ0lEX0ZJRUxEX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWUVTX05PXzJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFU19OT19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWUVTX05PX1RfUkVGX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFU19QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ZRVNfVkFMVUUgXCI7XG5cbiAgLy8gQmFzZSBjb25zdGFudFxuICB2YXIgYmFzZV9jb25zdGFudHMgPSBcIkNSIEZBTFNFIG5pbCBOT19WQUxVRSBOVUxMIFRBQiBUUlVFIFlFU19WQUxVRSBcIjtcblxuICAvLyBCYXNlIGdyb3VwIG5hbWVcbiAgdmFyIGJhc2VfZ3JvdXBfbmFtZV9jb25zdGFudHMgPVxuICAgIFwiQURNSU5JU1RSQVRPUlNfR1JPVVBfTkFNRSBDVVNUT01JWkVSU19HUk9VUF9OQU1FIERFVkVMT1BFUlNfR1JPVVBfTkFNRSBTRVJWSUNFX1VTRVJTX0dST1VQX05BTUUgXCI7XG5cbiAgLy8gRGVjaXNpb24gYmxvY2sgcHJvcGVydGllc1xuICB2YXIgZGVjaXNpb25fYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiREVDSVNJT05fQkxPQ0tfRklSU1RfT1BFUkFORF9QUk9QRVJUWSBERUNJU0lPTl9CTE9DS19OQU1FX1BST1BFUlRZIERFQ0lTSU9OX0JMT0NLX09QRVJBVElPTl9QUk9QRVJUWSBcIiArXG4gICAgXCJERUNJU0lPTl9CTE9DS19SRVNVTFRfVFlQRV9QUk9QRVJUWSBERUNJU0lPTl9CTE9DS19TRUNPTkRfT1BFUkFORF9QUk9QRVJUWSBcIjtcblxuICAvLyBGaWxlIGV4dGVuc2lvblxuICB2YXIgZmlsZV9leHRlbnNpb25fY29uc3RhbnRzID1cbiAgICBcIkFOWV9GSUxFX0VYVEVOVElPTiBDT01QUkVTU0VEX0RPQ1VNRU5UX0VYVEVOU0lPTiBFWFRFTkRFRF9ET0NVTUVOVF9FWFRFTlNJT04gXCIgK1xuICAgIFwiU0hPUlRfQ09NUFJFU1NFRF9ET0NVTUVOVF9FWFRFTlNJT04gU0hPUlRfRVhURU5ERURfRE9DVU1FTlRfRVhURU5TSU9OIFwiO1xuXG4gIC8vIEpvYiBibG9jayBwcm9wZXJ0aWVzXG4gIHZhciBqb2JfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiSk9CX0JMT0NLX0FCT1JUX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0FGVEVSX1FVRVJZX1BBUkFNRVRFUlNfRVZFTlQgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0FUVEFDSE1FTlRfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19HUk9VUF9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfQVRUQUNITUVOVFNfUklHSFRTX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0JFRk9SRV9RVUVSWV9QQVJBTUVURVJTX0VWRU5UIFwiICtcbiAgICBcIkpPQl9CTE9DS19CRUZPUkVfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0NSRUFURURfSk9CU19QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0VYRUNVVElPTl9SRVNVTFRTX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19JU19QQVJBTExFTF9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfSVNfUkVMQVRJVkVfQUJPUlRfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19KT0JfVEVYVF9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfTkVFRF9TSUdOX09OX1BFUkZPUk1fUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX1BFUkZPUk1FUl9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfUkVMQVRJVkVfQUJPUlRfREVBRExJTkVfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfUkVMQVRJVkVfREVBRExJTkVfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfU1VCSkVDVF9QUk9QRVJUWSBcIjtcblxuICAvLyBMYW5ndWFnZSBjb2RlXG4gIHZhciBsYW5ndWFnZV9jb2RlX2NvbnN0YW50cyA9IFwiRU5HTElTSF9MQU5HVUFHRV9DT0RFIFJVU1NJQU5fTEFOR1VBR0VfQ09ERSBcIjtcblxuICAvLyBMYXVuY2hpbmcgZXh0ZXJuYWwgYXBwbGljYXRpb25zXG4gIHZhciBsYXVuY2hpbmdfZXh0ZXJuYWxfYXBwbGljYXRpb25zX2NvbnN0YW50cyA9XG4gICAgXCJzbUhpZGRlbiBzbU1heGltaXplZCBzbU1pbmltaXplZCBzbU5vcm1hbCB3bU5vIHdtWWVzIFwiO1xuXG4gIC8vIExpbmsga2luZFxuICB2YXIgbGlua19raW5kX2NvbnN0YW50cyA9XG4gICAgXCJDT01QT05FTlRfVE9LRU5fTElOS19LSU5EIFwiICtcbiAgICBcIkRPQ1VNRU5UX0xJTktfS0lORCBcIiArXG4gICAgXCJFRE9DVU1FTlRfTElOS19LSU5EIFwiICtcbiAgICBcIkZPTERFUl9MSU5LX0tJTkQgXCIgK1xuICAgIFwiSk9CX0xJTktfS0lORCBcIiArXG4gICAgXCJSRUZFUkVOQ0VfTElOS19LSU5EIFwiICtcbiAgICBcIlRBU0tfTElOS19LSU5EIFwiO1xuXG4gIC8vIExvY2sgdHlwZVxuICB2YXIgbG9ja190eXBlX2NvbnN0YW50cyA9XG4gICAgXCJDT01QT05FTlRfVE9LRU5fTE9DS19UWVBFIEVET0NVTUVOVF9WRVJTSU9OX0xPQ0tfVFlQRSBcIjtcblxuICAvLyBNb25pdG9yIGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIG1vbml0b3JfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiTU9OSVRPUl9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19CRUZPUkVfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX0lOVEVSVkFMX1BST1BFUlRZIFwiICtcbiAgICBcIk1PTklUT1JfQkxPQ0tfSU5URVJWQUxfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIk1PTklUT1JfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX1JFTEFUSVZFX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19TRUFSQ0hfU0NSSVBUX1BST1BFUlRZIFwiO1xuXG4gIC8vIE5vdGljZSBibG9jayBwcm9wZXJ0aWVzXG4gIHZhciBub3RpY2VfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiTk9USUNFX0JMT0NLX0FGVEVSX0ZJTklTSF9FVkVOVCBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQVRUQUNITUVOVF9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQVRUQUNITUVOVFNfUklHSFRTX0dST1VQX1BST1BFUlRZIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19BVFRBQ0hNRU5UU19SSUdIVFNfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQkVGT1JFX1NUQVJUX0VWRU5UIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19DUkVBVEVEX05PVElDRVNfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19JU19SRUxBVElWRV9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfTk9USUNFX1RFWFRfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX1BFUkZPUk1FUl9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfUkVMQVRJVkVfREVBRExJTkVfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfU1VCSkVDVF9QUk9QRVJUWSBcIjtcblxuICAvLyBPYmplY3QgZXZlbnRzXG4gIHZhciBvYmplY3RfZXZlbnRzX2NvbnN0YW50cyA9XG4gICAgXCJkc2VBZnRlckNhbmNlbCBcIiArXG4gICAgXCJkc2VBZnRlckNsb3NlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlT3V0T2ZUcmFuc2FjdGlvbiBcIiArXG4gICAgXCJkc2VBZnRlckluc2VydCBcIiArXG4gICAgXCJkc2VBZnRlck9wZW4gXCIgK1xuICAgIFwiZHNlQWZ0ZXJTY3JvbGwgXCIgK1xuICAgIFwiZHNlQWZ0ZXJVcGRhdGUgXCIgK1xuICAgIFwiZHNlQWZ0ZXJVcGRhdGVPdXRPZlRyYW5zYWN0aW9uIFwiICtcbiAgICBcImRzZUJlZm9yZUNhbmNlbCBcIiArXG4gICAgXCJkc2VCZWZvcmVDbG9zZSBcIiArXG4gICAgXCJkc2VCZWZvcmVEZWxldGUgXCIgK1xuICAgIFwiZHNlQmVmb3JlRGV0YWlsVXBkYXRlIFwiICtcbiAgICBcImRzZUJlZm9yZUluc2VydCBcIiArXG4gICAgXCJkc2VCZWZvcmVPcGVuIFwiICtcbiAgICBcImRzZUJlZm9yZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPbkFueVJlcXVpc2l0ZUNoYW5nZSBcIiArXG4gICAgXCJkc2VPbkNsb3NlUmVjb3JkIFwiICtcbiAgICBcImRzZU9uRGVsZXRlRXJyb3IgXCIgK1xuICAgIFwiZHNlT25PcGVuUmVjb3JkIFwiICtcbiAgICBcImRzZU9uUHJlcGFyZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPblVwZGF0ZUVycm9yIFwiICtcbiAgICBcImRzZU9uVXBkYXRlUmF0aWZpZWRSZWNvcmQgXCIgK1xuICAgIFwiZHNlT25WYWxpZERlbGV0ZSBcIiArXG4gICAgXCJkc2VPblZhbGlkVXBkYXRlIFwiICtcbiAgICBcInJlT25DaGFuZ2UgXCIgK1xuICAgIFwicmVPbkNoYW5nZVZhbHVlcyBcIiArXG4gICAgXCJTRUxFQ1RJT05fQkVHSU5fUk9VVEVfRVZFTlQgXCIgK1xuICAgIFwiU0VMRUNUSU9OX0VORF9ST1VURV9FVkVOVCBcIjtcblxuICAvLyBPYmplY3QgcGFyYW1zXG4gIHZhciBvYmplY3RfcGFyYW1zX2NvbnN0YW50cyA9XG4gICAgXCJDVVJSRU5UX1BFUklPRF9JU19SRVFVSVJFRCBcIiArXG4gICAgXCJQUkVWSU9VU19DQVJEX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTSE9XX1JFQ09SRF9QUk9QRVJUSUVTX0ZPUk0gXCI7XG5cbiAgLy8gT3RoZXJcbiAgdmFyIG90aGVyX2NvbnN0YW50cyA9XG4gICAgXCJBQ0NFU1NfUklHSFRTX1NFVFRJTkdfRElBTE9HX0NPREUgXCIgK1xuICAgIFwiQURNSU5JU1RSQVRPUl9VU0VSX0NPREUgXCIgK1xuICAgIFwiQU5BTFlUSUNfUkVQT1JUX1RZUEUgXCIgK1xuICAgIFwiYXNydEhpZGVMb2NhbCBcIiArXG4gICAgXCJhc3J0SGlkZVJlbW90ZSBcIiArXG4gICAgXCJDQUxDVUxBVEVEX1JPTEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIkNPTVBPTkVOVFNfUkVGRVJFTkNFX0RFVkVMT1BFUl9WSUVXX0NPREUgXCIgK1xuICAgIFwiRENUU19URVNUX1BST1RPQ09MU19GT0xERVJfUEFUSCBcIiArXG4gICAgXCJFX0VET0NfVkVSU0lPTl9BTFJFQURZX0FQUFJPVklOR0xZX1NJR05FRCBcIiArXG4gICAgXCJFX0VET0NfVkVSU0lPTl9BTFJFQURZX0FQUFJPVklOR0xZX1NJR05FRF9CWV9VU0VSIFwiICtcbiAgICBcIkVfRURPQ19WRVJTSU9OX0FMUkVEWV9TSUdORUQgXCIgK1xuICAgIFwiRV9FRE9DX1ZFUlNJT05fQUxSRURZX1NJR05FRF9CWV9VU0VSIFwiICtcbiAgICBcIkVET0NfVFlQRVNfQ09ERV9SRVFVSVNJVEVfRklFTERfTkFNRSBcIiArXG4gICAgXCJFRE9DVU1FTlRTX0FMSUFTX05BTUUgXCIgK1xuICAgIFwiRklMRVNfRk9MREVSX1BBVEggXCIgK1xuICAgIFwiRklMVEVSX09QRVJBTkRTX0RFTElNSVRFUiBcIiArXG4gICAgXCJGSUxURVJfT1BFUkFUSU9OU19ERUxJTUlURVIgXCIgK1xuICAgIFwiRk9STUNBUkRfTkFNRSBcIiArXG4gICAgXCJGT1JNTElTVF9OQU1FIFwiICtcbiAgICBcIkdFVF9FWFRFTkRFRF9ET0NVTUVOVF9FWFRFTlNJT05fQ1JFQVRJT05fTU9ERSBcIiArXG4gICAgXCJHRVRfRVhURU5ERURfRE9DVU1FTlRfRVhURU5TSU9OX0lNUE9SVF9NT0RFIFwiICtcbiAgICBcIklOVEVHUkFURURfUkVQT1JUX1RZUEUgXCIgK1xuICAgIFwiSVNfQlVJTERFUl9BUFBMSUNBVElPTl9ST0xFIFwiICtcbiAgICBcIklTX0JVSUxERVJfQVBQTElDQVRJT05fUk9MRTIgXCIgK1xuICAgIFwiSVNfQlVJTERFUl9VU0VSUyBcIiArXG4gICAgXCJJU0JTWVNERVYgXCIgK1xuICAgIFwiTE9HX0ZPTERFUl9QQVRIIFwiICtcbiAgICBcIm1iQ2FuY2VsIFwiICtcbiAgICBcIm1iTm8gXCIgK1xuICAgIFwibWJOb1RvQWxsIFwiICtcbiAgICBcIm1iT0sgXCIgK1xuICAgIFwibWJZZXMgXCIgK1xuICAgIFwibWJZZXNUb0FsbCBcIiArXG4gICAgXCJNRU1PUllfREFUQVNFVF9ERVNSSVBUSU9OU19GSUxFTkFNRSBcIiArXG4gICAgXCJtck5vIFwiICtcbiAgICBcIm1yTm9Ub0FsbCBcIiArXG4gICAgXCJtclllcyBcIiArXG4gICAgXCJtclllc1RvQWxsIFwiICtcbiAgICBcIk1VTFRJUExFX1NFTEVDVF9ESUFMT0dfQ09ERSBcIiArXG4gICAgXCJOT05PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfRkVNSU5JTkUgXCIgK1xuICAgIFwiTk9OT1BFUkFUSU5HX1JFQ09SRF9GTEFHX01BU0NVTElORSBcIiArXG4gICAgXCJPUEVSQVRJTkdfUkVDT1JEX0ZMQUdfRkVNSU5JTkUgXCIgK1xuICAgIFwiT1BFUkFUSU5HX1JFQ09SRF9GTEFHX01BU0NVTElORSBcIiArXG4gICAgXCJQUk9GSUxJTkdfU0VUVElOR1NfQ09NTU9OX1NFVFRJTkdTX0NPREVfVkFMVUUgXCIgK1xuICAgIFwiUFJPR1JBTV9JTklUSUFURURfTE9PS1VQX0FDVElPTiBcIiArXG4gICAgXCJyYXREZWxldGUgXCIgK1xuICAgIFwicmF0RWRpdCBcIiArXG4gICAgXCJyYXRJbnNlcnQgXCIgK1xuICAgIFwiUkVQT1JUX1RZUEUgXCIgK1xuICAgIFwiUkVRVUlSRURfUElDS19WQUxVRVNfVkFSSUFCTEUgXCIgK1xuICAgIFwicm1DYXJkIFwiICtcbiAgICBcInJtTGlzdCBcIiArXG4gICAgXCJTQlJURV9QUk9HSURfREVWIFwiICtcbiAgICBcIlNCUlRFX1BST0dJRF9SRUxFQVNFIFwiICtcbiAgICBcIlNUQVRJQ19ST0xFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTVVBQUkVTU19FTVBUWV9URU1QTEFURV9DUkVBVElPTiBcIiArXG4gICAgXCJTWVNURU1fVVNFUl9DT0RFIFwiICtcbiAgICBcIlVQREFURV9ESUFMT0dfREFUQVNFVCBcIiArXG4gICAgXCJVU0VEX0lOX09CSkVDVF9ISU5UX1BBUkFNIFwiICtcbiAgICBcIlVTRVJfSU5JVElBVEVEX0xPT0tVUF9BQ1RJT04gXCIgK1xuICAgIFwiVVNFUl9OQU1FX0ZPUk1BVCBcIiArXG4gICAgXCJVU0VSX1NFTEVDVElPTl9SRVNUUklDVElPTlMgXCIgK1xuICAgIFwiV09SS0ZMT1dfVEVTVF9QUk9UT0NPTFNfRk9MREVSX1BBVEggXCIgK1xuICAgIFwiRUxTX1NVQlRZUEVfQ09OVFJPTF9OQU1FIFwiICtcbiAgICBcIkVMU19GT0xERVJfS0lORF9DT05UUk9MX05BTUUgXCIgK1xuICAgIFwiUkVQRUFUX1BST0NFU1NfQ1VSUkVOVF9PQkpFQ1RfRVhDRVBUSU9OX05BTUUgXCI7XG5cbiAgLy8gUHJpdmlsZWdlc1xuICB2YXIgcHJpdmlsZWdlc19jb25zdGFudHMgPVxuICAgIFwiUFJJVklMRUdFX0NPTVBPTkVOVF9GVUxMX0FDQ0VTUyBcIiArXG4gICAgXCJQUklWSUxFR0VfREVWRUxPUE1FTlRfRVhQT1JUIFwiICtcbiAgICBcIlBSSVZJTEVHRV9ERVZFTE9QTUVOVF9JTVBPUlQgXCIgK1xuICAgIFwiUFJJVklMRUdFX0RPQ1VNRU5UX0RFTEVURSBcIiArXG4gICAgXCJQUklWSUxFR0VfRVNEIFwiICtcbiAgICBcIlBSSVZJTEVHRV9GT0xERVJfREVMRVRFIFwiICtcbiAgICBcIlBSSVZJTEVHRV9NQU5BR0VfQUNDRVNTX1JJR0hUUyBcIiArXG4gICAgXCJQUklWSUxFR0VfTUFOQUdFX1JFUExJQ0FUSU9OIFwiICtcbiAgICBcIlBSSVZJTEVHRV9NQU5BR0VfU0VTU0lPTl9TRVJWRVIgXCIgK1xuICAgIFwiUFJJVklMRUdFX09CSkVDVF9GVUxMX0FDQ0VTUyBcIiArXG4gICAgXCJQUklWSUxFR0VfT0JKRUNUX1ZJRVcgXCIgK1xuICAgIFwiUFJJVklMRUdFX1JFU0VSVkVfTElDRU5TRSBcIiArXG4gICAgXCJQUklWSUxFR0VfU1lTVEVNX0NVU1RPTUlaRSBcIiArXG4gICAgXCJQUklWSUxFR0VfU1lTVEVNX0RFVkVMT1AgXCIgK1xuICAgIFwiUFJJVklMRUdFX1NZU1RFTV9JTlNUQUxMIFwiICtcbiAgICBcIlBSSVZJTEVHRV9UQVNLX0RFTEVURSBcIiArXG4gICAgXCJQUklWSUxFR0VfVVNFUl9QTFVHSU5fU0VUVElOR1NfQ1VTVE9NSVpFIFwiICtcbiAgICBcIlBSSVZJTEVHRVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCI7XG5cbiAgLy8gUHNldWRvcmVmZXJlbmNlIGNvZGVcbiAgdmFyIHBzZXVkb3JlZmVyZW5jZV9jb2RlX2NvbnN0YW50cyA9XG4gICAgXCJBQ0NFU1NfVFlQRVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiQUxMX0FWQUlMQUJMRV9DT01QT05FTlRTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIkFMTF9BVkFJTEFCTEVfUFJJVklMRUdFU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJBTExfUkVQTElDQVRFX0NPTVBPTkVOVFNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiQVZBSUxBQkxFX0RFVkVMT1BFUlNfQ09NUE9ORU5UU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJDT01QT05FTlRTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIkZJTFRSQVRFUl9TRVRUSU5HU19DT05GTElDVFNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiR1JPVVBTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlJFQ0VJVkVfUFJPVE9DT0xfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiUkVGRVJFTkNFX1JFUVVJU0lURV9QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJSRUZFUkVOQ0VfUkVRVUlTSVRFU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJSRUZUWVBFU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJSRVBMSUNBVElPTl9TRUFOQ0VTX0RJQVJZX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNFTkRfUFJPVE9DT0xfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1VCU1RJVFVURVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTVEVNX1NFVFRJTkdTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlVOSVRTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlVTRVJTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlZJRVdFUlNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCI7XG5cbiAgLy8gUmVxdWlzaXRlIElTQkNlcnRpZmljYXRlVHlwZSB2YWx1ZXNcbiAgdmFyIHJlcXVpc2l0ZV9JU0JDZXJ0aWZpY2F0ZVR5cGVfdmFsdWVzX2NvbnN0YW50cyA9XG4gICAgXCJDRVJUSUZJQ0FURV9UWVBFX0VOQ1JZUFQgXCIgK1xuICAgIFwiQ0VSVElGSUNBVEVfVFlQRV9TSUdOIFwiICtcbiAgICBcIkNFUlRJRklDQVRFX1RZUEVfU0lHTl9BTkRfRU5DUllQVCBcIjtcblxuICAvLyBSZXF1aXNpdGUgSVNCRURvY1N0b3JhZ2VUeXBlIHZhbHVlc1xuICB2YXIgcmVxdWlzaXRlX0lTQkVEb2NTdG9yYWdlVHlwZV92YWx1ZXNfY29uc3RhbnRzID1cbiAgICBcIlNUT1JBR0VfVFlQRV9GSUxFIFwiICtcbiAgICBcIlNUT1JBR0VfVFlQRV9OQVNfQ0lGUyBcIiArXG4gICAgXCJTVE9SQUdFX1RZUEVfU0FQRVJJT04gXCIgK1xuICAgIFwiU1RPUkFHRV9UWVBFX1NRTF9TRVJWRVIgXCI7XG5cbiAgLy8gUmVxdWlzaXRlIENvbXBUeXBlMiB2YWx1ZXNcbiAgdmFyIHJlcXVpc2l0ZV9jb21wVHlwZTJfdmFsdWVzX2NvbnN0YW50cyA9XG4gICAgXCJDT01QVFlQRTJfUkVRVUlTSVRFX0RPQ1VNRU5UU19WQUxVRSBcIiArXG4gICAgXCJDT01QVFlQRTJfUkVRVUlTSVRFX1RBU0tTX1ZBTFVFIFwiICtcbiAgICBcIkNPTVBUWVBFMl9SRVFVSVNJVEVfRk9MREVSU19WQUxVRSBcIiArXG4gICAgXCJDT01QVFlQRTJfUkVRVUlTSVRFX1JFRkVSRU5DRVNfVkFMVUUgXCI7XG5cbiAgLy8gUmVxdWlzaXRlIG5hbWVcbiAgdmFyIHJlcXVpc2l0ZV9uYW1lX2NvbnN0YW50cyA9XG4gICAgXCJTWVNSRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfQ09NUFRZUEUyIFwiICtcbiAgICBcIlNZU1JFUV9DT05TVF9BVkFJTEFCTEVfRk9SX1dFQiBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfQ09NTU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0NPTlNUX0NPTU1PTl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfRklSTV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9DT05TVF9GSVJNX1NUQVRVUyBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfRklSTV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfU0VSVkVSX1NUQVRVUyBcIiArXG4gICAgXCJTWVNSRVFfQ09OVEVOVFMgXCIgK1xuICAgIFwiU1lTUkVRX0RBVEVfT1BFTiBcIiArXG4gICAgXCJTWVNSRVFfREFURV9DTE9TRSBcIiArXG4gICAgXCJTWVNSRVFfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVRX0RFU0NSSVBUSU9OX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9ET1VCTEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfQUNDRVNTX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfQVVUSE9SIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0NSRUFURUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfREVMRUdBVEVfUklHSFRTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0VESVRPUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19FTkNPREVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19FTkNSWVBUSU9OX1BMVUdJTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0VOQ1JZUFRJT05fUExVR0lOX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfRVhQT1JUX0RBVEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfRVhQT1JURVIgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfS0lORCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19MSUZFX1NUQUdFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfTE9DS0VEX0ZPUl9TRVJWRVJfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19NT0RJRklFRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX05PVEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfUVVBTElGSUVEX0lEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NFU1NJT05fS0VZIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NFU1NJT05fS0VZX0VOQ1JZUFRJT05fUExVR0lOX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU0VTU0lPTl9LRVlfRU5DUllQVElPTl9QTFVHSU5fVkVSU0lPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TSUdOQVRVUkVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TSUdORUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19BUkNISVZFX1NUT1JBR0UgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfQ0hFQ0tfUklHSFRTIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0NPTVBVVEVSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfRURJVF9JTl9TVE9SQUdFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0VYRUNVVElWRV9TVE9SQUdFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0ZVTkNUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0lOSVRJQUxJWkVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0xPQ0FMX1BBVEggXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfU0FQRVJJT05fREFUQUJBU0VfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19TRUFSQ0hfQllfVEVYVCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19TRVJWRVJfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19TSEFSRURfU09VUkNFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19URVhUX01PRElGSUVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfQUNUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfREVTQ1JJUFRJT05fTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfT05fRVhFQ1VURSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0FDVF9PTl9FWEVDVVRFX0VYSVNUUyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0FDVF9TRUNUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfQUREX1BBUkFNUyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9FVkVOVF9URVhUIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfTkFNRV9JTl9TSU5HVUxBUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX05BTUVfSU5fU0lOR1VMQVJfTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9OQU1FX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfTlVNRVJBVElPTl9NRVRIT0QgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9QU0VVRE9fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9ERVNDUklQVElPTl9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9JU19MRUFESU5HIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUkVRX0lTX1JFUVVJUkVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUkVRX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9PTl9DSEFOR0UgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfT05fQ0hBTkdFX0VYSVNUUyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9PTl9TRUxFQ1QgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfT05fU0VMRUNUX0tJTkQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfU0VDVElPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfQ0FSRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfQ09NTUVOVCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfSVNfTUFJTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfTkFNRV9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0FVVEhPUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0NSQyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0RBVEEgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9FRElUT1IgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9FWFBPUlRfREFURSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0VYUE9SVEVSIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fSElEREVOIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fTElGRV9TVEFHRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX01PRElGSUVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fTk9URSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1NJR05BVFVSRV9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fU0lHTkVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fU0laRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1NPVVJDRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1RFWFRfTU9ESUZJRUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NLSU5EX0RFRkFVTFRfVkVSU0lPTl9TVEFURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9GT0xERVJfS0lORCBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19DT01NRU5UIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX0dST1VQIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX0dST1VQX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX0ZVTkNfR1JPVVBfTlVNQkVSIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX0hFTFAgXCIgK1xuICAgIFwiU1lTUkVRX0ZVTkNfUEFSQU1fREVGX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX1BBUkFNX0lERU5UIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX1BBUkFNX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19QQVJBTV9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX1RFWFQgXCIgK1xuICAgIFwiU1lTUkVRX0dST1VQX0NBVEVHT1JZIFwiICtcbiAgICBcIlNZU1JFUV9JRCBcIiArXG4gICAgXCJTWVNSRVFfTEFTVF9VUERBVEUgXCIgK1xuICAgIFwiU1lTUkVRX0xFQURFUl9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVRX0xJTkVfTlVNQkVSIFwiICtcbiAgICBcIlNZU1JFUV9NQUlOX1JFQ09SRF9JRCBcIiArXG4gICAgXCJTWVNSRVFfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfTkFNRV9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfTk9URSBcIiArXG4gICAgXCJTWVNSRVFfT1JJR0lOQUxfUkVDT1JEIFwiICtcbiAgICBcIlNZU1JFUV9PVVJfRklSTSBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX0JBVENIX0xPR0lORyBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX0JBVENIX1NJWkUgXCIgK1xuICAgIFwiU1lTUkVRX1BST0ZJTElOR19TRVRUSU5HU19QUk9GSUxJTkdfRU5BQkxFRCBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX1NRTF9QUk9GSUxJTkdfRU5BQkxFRCBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX1NUQVJUX0xPR0dFRCBcIiArXG4gICAgXCJTWVNSRVFfUkVDT1JEX1NUQVRVUyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9GSUVMRF9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX0ZPUk1BVCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9HRU5FUkFURUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfTEVOR1RIIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX1BSRUNJU0lPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfU0VDVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9TVE9SRUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfVE9LRU5TIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfVklFVyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX0FDVF9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX0RFU0NSSVBUSU9OX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9BQ1RfT05fRVhFQ1VURSBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX09OX0VYRUNVVEVfRVhJU1RTIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9BQ1RfU0VDVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUREX1BBUkFNUyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQ09NTUVOVCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQ09NTU9OX1NFVFRJTkdTIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9ESVNQTEFZX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9FVkVOVF9URVhUIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9NQUlOX0xFQURJTkdfUkVGIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OQU1FX0lOX1NJTkdVTEFSIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OQU1FX0lOX1NJTkdVTEFSX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OQU1FX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OVU1FUkFUSU9OX01FVEhPRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0RFU0NSSVBUSU9OX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9SRVFfSVNfQ09OVFJPTCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0lTX0ZJTFRFUiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0lTX0xFQURJTkcgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9JU19SRVFVSVJFRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX09OX0NIQU5HRSBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX09OX0NIQU5HRV9FWElTVFMgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9PTl9TRUxFQ1QgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9PTl9TRUxFQ1RfS0lORCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX1NFQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1ZJRVdfQ0FSRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9WSUVXX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1ZJRVdfSVNfTUFJTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfVklFV19OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9WSUVXX05BTUVfTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRkVSRU5DRV9UWVBFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9TVEFURSBcIiArXG4gICAgXCJTWVNSRVFfU1RBVNCVIFwiICtcbiAgICBcIlNZU1JFUV9TWVNURU1fU0VUVElOR1NfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVRX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX1VOSVQgXCIgK1xuICAgIFwiU1lTUkVRX1VOSVRfSUQgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJfR1JPVVBTX0dST1VQX0ZVTExfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUl9HUk9VUFNfR1JPVVBfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUl9HUk9VUFNfR1JPVVBfU0VSVkVSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0FVVEhFTlRJQ0FUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfQ09NUE9ORU5UIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19DT01QT05FTlRfVVNFUl9JU19QVUJMSUMgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0RPTUFJTiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfRlVMTF9VU0VSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0dST1VQIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19JU19NQUlOX1NFUlZFUiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfTE9HSU4gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1JFRkVSRU5DRV9VU0VSX0lTX1BVQkxJQyBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfU1RBVFVTIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFX0lORk8gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfUExVR0lOX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfUExVR0lOX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfU1RBVEUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfU1VCSkVDVF9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFX1RIVU1CUFJJTlQgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfREVGQVVMVF9DRVJUSUZJQ0FURSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9HTE9CQUxfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9MT0dJTiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9NQUlOX1NFUlZFUiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9XT1JLX1JVTEVTX0ZPTERFUl9JRCBcIjtcblxuICAvLyBSZXN1bHRcbiAgdmFyIHJlc3VsdF9jb25zdGFudHMgPSBcIlJFU1VMVF9WQVJfTkFNRSBSRVNVTFRfVkFSX05BTUVfRU5HIFwiO1xuXG4gIC8vIFJ1bGUgaWRlbnRpZmljYXRpb25cbiAgdmFyIHJ1bGVfaWRlbnRpZmljYXRpb25fY29uc3RhbnRzID1cbiAgICBcIkFVVE9fTlVNRVJBVElPTl9SVUxFX0lEIFwiICtcbiAgICBcIkNBTlRfQ0hBTkdFX0lEX1JFUVVJU0lURV9SVUxFX0lEIFwiICtcbiAgICBcIkNBTlRfQ0hBTkdFX09VUkZJUk1fUkVRVUlTSVRFX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfQ0hBTkdJTkdfUkVGRVJFTkNFX1JFQ09SRF9VU0VfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19DT0RFX1JFUVVJU0lURV9SVUxFX0lEIFwiICtcbiAgICBcIkNIRUNLX0RFTEVUSU5HX1JFRkVSRU5DRV9SRUNPUkRfVVNFX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfRklMVFJBVEVSX0NIQU5HRVNfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19SRUNPUkRfSU5URVJWQUxfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19SRUZFUkVOQ0VfSU5URVJWQUxfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19SRVFVSVJFRF9EQVRBX0ZVTExORVNTX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfUkVRVUlSRURfUkVRVUlTSVRFU19GVUxMTkVTU19SVUxFX0lEIFwiICtcbiAgICBcIk1BS0VfUkVDT1JEX1VOUkFUSUZJRURfUlVMRV9JRCBcIiArXG4gICAgXCJSRVNUT1JFX0FVVE9fTlVNRVJBVElPTl9SVUxFX0lEIFwiICtcbiAgICBcIlNFVF9GSVJNX0NPTlRFWFRfRlJPTV9SRUNPUkRfUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfRklSU1RfUkVDT1JEX0lOX0xJU1RfRk9STV9SVUxFX0lEIFwiICtcbiAgICBcIlNFVF9JRFNQU19WQUxVRV9SVUxFX0lEIFwiICtcbiAgICBcIlNFVF9ORVhUX0NPREVfVkFMVUVfUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfT1VSRklSTV9CT1VORFNfUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfT1VSRklSTV9SRVFVSVNJVEVfUlVMRV9JRCBcIjtcblxuICAvLyBTY3JpcHQgYmxvY2sgcHJvcGVydGllc1xuICB2YXIgc2NyaXB0X2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzID1cbiAgICBcIlNDUklQVF9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiU0NSSVBUX0JMT0NLX0JFRk9SRV9TVEFSVF9FVkVOVCBcIiArXG4gICAgXCJTQ1JJUFRfQkxPQ0tfRVhFQ1VUSU9OX1JFU1VMVFNfUFJPUEVSVFkgXCIgK1xuICAgIFwiU0NSSVBUX0JMT0NLX05BTUVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU0NSSVBUX0JMT0NLX1NDUklQVF9QUk9QRVJUWSBcIjtcblxuICAvLyBTdWJ0YXNrIGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIHN1YnRhc2tfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiU1VCVEFTS19CTE9DS19BQk9SVF9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FGVEVSX0ZJTklTSF9FVkVOVCBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FTU0lHTl9QQVJBTVNfRVZFTlQgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19BVFRBQ0hNRU5UU19QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19HUk9VUF9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfQkVGT1JFX1NUQVJUX0VWRU5UIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfQ1JFQVRFRF9UQVNLX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfQ1JFQVRJT05fRVZFTlQgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0lNUE9SVEFOQ0VfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19JTklUSUFUT1JfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19JU19SRUxBVElWRV9BQk9SVF9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfSk9CU19UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1BBUkFMTEVMX1JPVVRFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfUEVSRk9STUVSU19QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1JFTEFUSVZFX0FCT1JUX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19SRUxBVElWRV9ERUFETElORV9UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfUkVRVUlSRV9TSUdOX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfU1RBTkRBUkRfUk9VVEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19TVEFSVF9FVkVOVCBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1NURVBfQ09OVFJPTF9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1NVQkpFQ1RfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19UQVNLX0NPTlRST0xfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19URVhUX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfVU5MT0NLX0FUVEFDSE1FTlRTX09OX1NUT1BfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19VU0VfU1RBTkRBUkRfUk9VVEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19XQUlUX0ZPUl9UQVNLX0NPTVBMRVRFX1BST1BFUlRZIFwiO1xuXG4gIC8vIFN5c3RlbSBjb21wb25lbnRcbiAgdmFyIHN5c3RlbV9jb21wb25lbnRfY29uc3RhbnRzID1cbiAgICBcIlNZU0NPTVBfQ09OVFJPTF9KT0JTIFwiICtcbiAgICBcIlNZU0NPTVBfRk9MREVSUyBcIiArXG4gICAgXCJTWVNDT01QX0pPQlMgXCIgK1xuICAgIFwiU1lTQ09NUF9OT1RJQ0VTIFwiICtcbiAgICBcIlNZU0NPTVBfVEFTS1MgXCI7XG5cbiAgLy8gU3lzdGVtIGRpYWxvZ3NcbiAgdmFyIHN5c3RlbV9kaWFsb2dzX2NvbnN0YW50cyA9XG4gICAgXCJTWVNETEdfQ1JFQVRFX0VET0NVTUVOVCBcIiArXG4gICAgXCJTWVNETEdfQ1JFQVRFX0VET0NVTUVOVF9WRVJTSU9OIFwiICtcbiAgICBcIlNZU0RMR19DVVJSRU5UX1BFUklPRCBcIiArXG4gICAgXCJTWVNETEdfRURJVF9GVU5DVElPTl9IRUxQIFwiICtcbiAgICBcIlNZU0RMR19FRE9DVU1FTlRfS0lORFNfRk9SX1RFTVBMQVRFIFwiICtcbiAgICBcIlNZU0RMR19FWFBPUlRfTVVMVElQTEVfRURPQ1VNRU5UUyBcIiArXG4gICAgXCJTWVNETEdfRVhQT1JUX1NJTkdMRV9FRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTRExHX0lNUE9SVF9FRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTRExHX01VTFRJUExFX1NFTEVDVCBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfQUNDRVNTX1JJR0hUUyBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfREVGQVVMVF9SSUdIVFMgXCIgK1xuICAgIFwiU1lTRExHX1NFVFVQX0ZJTFRFUl9DT05ESVRJT04gXCIgK1xuICAgIFwiU1lTRExHX1NFVFVQX1NJR05fUklHSFRTIFwiICtcbiAgICBcIlNZU0RMR19TRVRVUF9UQVNLX09CU0VSVkVSUyBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfVEFTS19ST1VURSBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfVVNFUlNfTElTVCBcIiArXG4gICAgXCJTWVNETEdfU0lHTl9FRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTRExHX1NJR05fTVVMVElQTEVfRURPQ1VNRU5UUyBcIjtcblxuICAvLyBTeXN0ZW0gcmVmZXJlbmNlIG5hbWVzXG4gIHZhciBzeXN0ZW1fcmVmZXJlbmNlX25hbWVzX2NvbnN0YW50cyA9XG4gICAgXCJTWVNSRUZfQUNDRVNTX1JJR0hUU19UWVBFUyBcIiArXG4gICAgXCJTWVNSRUZfQURNSU5JU1RSQVRJT05fSElTVE9SWSBcIiArXG4gICAgXCJTWVNSRUZfQUxMX0FWQUlMQUJMRV9DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9BTExfQVZBSUxBQkxFX1BSSVZJTEVHRVMgXCIgK1xuICAgIFwiU1lTUkVGX0FMTF9SRVBMSUNBVElOR19DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9BVkFJTEFCTEVfREVWRUxPUEVSU19DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9DQUxFTkRBUl9FVkVOVFMgXCIgK1xuICAgIFwiU1lTUkVGX0NPTVBPTkVOVF9UT0tFTl9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9DT01QT05FTlRfVE9LRU5TIFwiICtcbiAgICBcIlNZU1JFRl9DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9DT05TVEFOVFMgXCIgK1xuICAgIFwiU1lTUkVGX0RBVEFfUkVDRUlWRV9QUk9UT0NPTCBcIiArXG4gICAgXCJTWVNSRUZfREFUQV9TRU5EX1BST1RPQ09MIFwiICtcbiAgICBcIlNZU1JFRl9ESUFMT0dTIFwiICtcbiAgICBcIlNZU1JFRl9ESUFMT0dTX1JFUVVJU0lURVMgXCIgK1xuICAgIFwiU1lTUkVGX0VESVRPUlMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NfQ0FSRFMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NfVFlQRVMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9DQVJEX1JFUVVJU0lURVMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9DQVJEX1RZUEVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfQ0FSRF9UWVBFU19SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9DQVJEUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX0hJU1RPUlkgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9LSU5EUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX1JFUVVJU0lURVMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9TSUdOQVRVUkVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfVEVNUExBVEVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfVEVYVF9TVE9SQUdFUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX1ZJRVdTIFwiICtcbiAgICBcIlNZU1JFRl9GSUxURVJFUl9TRVRVUF9DT05GTElDVFMgXCIgK1xuICAgIFwiU1lTUkVGX0ZJTFRSQVRFUl9TRVRUSU5HX0NPTkZMSUNUUyBcIiArXG4gICAgXCJTWVNSRUZfRk9MREVSX0hJU1RPUlkgXCIgK1xuICAgIFwiU1lTUkVGX0ZPTERFUlMgXCIgK1xuICAgIFwiU1lTUkVGX0ZVTkNUSU9OX0dST1VQUyBcIiArXG4gICAgXCJTWVNSRUZfRlVOQ1RJT05fUEFSQU1TIFwiICtcbiAgICBcIlNZU1JFRl9GVU5DVElPTlMgXCIgK1xuICAgIFwiU1lTUkVGX0pPQl9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9MSU5LUyBcIiArXG4gICAgXCJTWVNSRUZfTE9DQUxJWkFUSU9OX0RJQ1RJT05BUlkgXCIgK1xuICAgIFwiU1lTUkVGX0xPQ0FMSVpBVElPTl9MQU5HVUFHRVMgXCIgK1xuICAgIFwiU1lTUkVGX01PRFVMRVMgXCIgK1xuICAgIFwiU1lTUkVGX1BSSVZJTEVHRVMgXCIgK1xuICAgIFwiU1lTUkVGX1JFQ09SRF9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9SRUZFUkVOQ0VfUkVRVUlTSVRFUyBcIiArXG4gICAgXCJTWVNSRUZfUkVGRVJFTkNFX1RZUEVfVklFV1MgXCIgK1xuICAgIFwiU1lTUkVGX1JFRkVSRU5DRV9UWVBFUyBcIiArXG4gICAgXCJTWVNSRUZfUkVGRVJFTkNFUyBcIiArXG4gICAgXCJTWVNSRUZfUkVGRVJFTkNFU19SRVFVSVNJVEVTIFwiICtcbiAgICBcIlNZU1JFRl9SRU1PVEVfU0VSVkVSUyBcIiArXG4gICAgXCJTWVNSRUZfUkVQTElDQVRJT05fU0VTU0lPTlNfTE9HIFwiICtcbiAgICBcIlNZU1JFRl9SRVBMSUNBVElPTl9TRVNTSU9OU19QUk9UT0NPTCBcIiArXG4gICAgXCJTWVNSRUZfUkVQT1JUUyBcIiArXG4gICAgXCJTWVNSRUZfUk9MRVMgXCIgK1xuICAgIFwiU1lTUkVGX1JPVVRFX0JMT0NLX0dST1VQUyBcIiArXG4gICAgXCJTWVNSRUZfUk9VVEVfQkxPQ0tTIFwiICtcbiAgICBcIlNZU1JFRl9TQ1JJUFRTIFwiICtcbiAgICBcIlNZU1JFRl9TRUFSQ0hFUyBcIiArXG4gICAgXCJTWVNSRUZfU0VSVkVSX0VWRU5UUyBcIiArXG4gICAgXCJTWVNSRUZfU0VSVkVSX0VWRU5UU19ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9TVEFOREFSRF9ST1VURV9HUk9VUFMgXCIgK1xuICAgIFwiU1lTUkVGX1NUQU5EQVJEX1JPVVRFUyBcIiArXG4gICAgXCJTWVNSRUZfU1RBVFVTRVMgXCIgK1xuICAgIFwiU1lTUkVGX1NZU1RFTV9TRVRUSU5HUyBcIiArXG4gICAgXCJTWVNSRUZfVEFTS19ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLX0tJTkRfR1JPVVBTIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLX0tJTkRTIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLX1JJR0hUUyBcIiArXG4gICAgXCJTWVNSRUZfVEFTS19TSUdOQVRVUkVTIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLUyBcIiArXG4gICAgXCJTWVNSRUZfVU5JVFMgXCIgK1xuICAgIFwiU1lTUkVGX1VTRVJfR1JPVVBTIFwiICtcbiAgICBcIlNZU1JFRl9VU0VSX0dST1VQU19SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVGX1VTRVJfU1VCU1RJVFVUSU9OIFwiICtcbiAgICBcIlNZU1JFRl9VU0VSUyBcIiArXG4gICAgXCJTWVNSRUZfVVNFUlNfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFRl9WSUVXRVJTIFwiICtcbiAgICBcIlNZU1JFRl9XT1JLSU5HX1RJTUVfQ0FMRU5EQVJTIFwiO1xuXG4gIC8vIFRhYmxlIG5hbWVcbiAgdmFyIHRhYmxlX25hbWVfY29uc3RhbnRzID1cbiAgICBcIkFDQ0VTU19SSUdIVFNfVEFCTEVfTkFNRSBcIiArXG4gICAgXCJFRE1TX0FDQ0VTU19UQUJMRV9OQU1FIFwiICtcbiAgICBcIkVET0NfVFlQRVNfVEFCTEVfTkFNRSBcIjtcblxuICAvLyBUZXN0XG4gIHZhciB0ZXN0X2NvbnN0YW50cyA9XG4gICAgXCJURVNUX0RFVl9EQl9OQU1FIFwiICtcbiAgICBcIlRFU1RfREVWX1NZU1RFTV9DT0RFIFwiICtcbiAgICBcIlRFU1RfRURNU19EQl9OQU1FIFwiICtcbiAgICBcIlRFU1RfRURNU19NQUlOX0NPREUgXCIgK1xuICAgIFwiVEVTVF9FRE1TX01BSU5fREJfTkFNRSBcIiArXG4gICAgXCJURVNUX0VETVNfU0VDT05EX0NPREUgXCIgK1xuICAgIFwiVEVTVF9FRE1TX1NFQ09ORF9EQl9OQU1FIFwiICtcbiAgICBcIlRFU1RfRURNU19TWVNURU1fQ09ERSBcIiArXG4gICAgXCJURVNUX0lTQjVfTUFJTl9DT0RFIFwiICtcbiAgICBcIlRFU1RfSVNCNV9TRUNPTkRfQ09ERSBcIiArXG4gICAgXCJURVNUX1NRTF9TRVJWRVJfMjAwNV9OQU1FIFwiICtcbiAgICBcIlRFU1RfU1FMX1NFUlZFUl9OQU1FIFwiO1xuXG4gIC8vIFVzaW5nIHRoZSBkaWFsb2cgd2luZG93c1xuICB2YXIgdXNpbmdfdGhlX2RpYWxvZ193aW5kb3dzX2NvbnN0YW50cyA9XG4gICAgXCJBVFRFTlRJT05fQ0FQVElPTiBcIiArXG4gICAgXCJjYnNDb21tYW5kTGlua3MgXCIgK1xuICAgIFwiY2JzRGVmYXVsdCBcIiArXG4gICAgXCJDT05GSVJNQVRJT05fQ0FQVElPTiBcIiArXG4gICAgXCJFUlJPUl9DQVBUSU9OIFwiICtcbiAgICBcIklORk9STUFUSU9OX0NBUFRJT04gXCIgK1xuICAgIFwibXJDYW5jZWwgXCIgK1xuICAgIFwibXJPayBcIjtcblxuICAvLyBVc2luZyB0aGUgZG9jdW1lbnRcbiAgdmFyIHVzaW5nX3RoZV9kb2N1bWVudF9jb25zdGFudHMgPVxuICAgIFwiRURPQ19WRVJTSU9OX0FDVElWRV9TVEFHRV9DT0RFIFwiICtcbiAgICBcIkVET0NfVkVSU0lPTl9ERVNJR05fU1RBR0VfQ09ERSBcIiArXG4gICAgXCJFRE9DX1ZFUlNJT05fT0JTT0xFVEVfU1RBR0VfQ09ERSBcIjtcblxuICAvLyBVc2luZyB0aGUgRUEgYW5kIGVuY3J5cHRpb25cbiAgdmFyIHVzaW5nX3RoZV9FQV9hbmRfZW5jcnlwdGlvbl9jb25zdGFudHMgPVxuICAgIFwiY3BEYXRhRW5jaXBoZXJtZW50RW5hYmxlZCBcIiArXG4gICAgXCJjcERpZ2l0YWxTaWduYXR1cmVFbmFibGVkIFwiICtcbiAgICBcImNwSUQgXCIgK1xuICAgIFwiY3BJc3N1ZXIgXCIgK1xuICAgIFwiY3BQbHVnaW5WZXJzaW9uIFwiICtcbiAgICBcImNwU2VyaWFsIFwiICtcbiAgICBcImNwU3ViamVjdE5hbWUgXCIgK1xuICAgIFwiY3BTdWJqU2ltcGxlTmFtZSBcIiArXG4gICAgXCJjcFZhbGlkRnJvbURhdGUgXCIgK1xuICAgIFwiY3BWYWxpZFRvRGF0ZSBcIjtcblxuICAvLyBVc2luZyB0aGUgSVNCTC1lZGl0b3JcbiAgdmFyIHVzaW5nX3RoZV9JU0JMX2VkaXRvcl9jb25zdGFudHMgPVxuICAgIFwiSVNCTF9TWU5UQVggXCIgKyBcIk5PX1NZTlRBWCBcIiArIFwiWE1MX1NZTlRBWCBcIjtcblxuICAvLyBXYWl0IGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIHdhaXRfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiV0FJVF9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiV0FJVF9CTE9DS19CRUZPUkVfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiV0FJVF9CTE9DS19ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJXQUlUX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIldBSVRfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJXQUlUX0JMT0NLX1JFTEFUSVZFX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCI7XG5cbiAgLy8gU1lTUkVTIENvbW1vblxuICB2YXIgc3lzcmVzX2NvbW1vbl9jb25zdGFudHMgPVxuICAgIFwiU1lTUkVTX0NPTU1PTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1QgXCIgK1xuICAgIFwiU1lTUkVTX01CRlVOQyBcIiArXG4gICAgXCJTWVNSRVNfU0JEQVRBIFwiICtcbiAgICBcIlNZU1JFU19TQkdVSSBcIiArXG4gICAgXCJTWVNSRVNfU0JJTlRGIFwiICtcbiAgICBcIlNZU1JFU19TQlJFRkRTQyBcIiArXG4gICAgXCJTWVNSRVNfU1FMRVJST1JTIFwiICtcbiAgICBcIlNZU1JFU19TWVNDT01QIFwiO1xuXG4gIC8vINCa0L7QvdGB0YLQsNC90YLRiyA9PT4gYnVpbHRfaW5cbiAgdmFyIENPTlNUQU5UUyA9XG4gICAgc3lzcmVzX2NvbnN0YW50cyArXG4gICAgYmFzZV9jb25zdGFudHMgK1xuICAgIGJhc2VfZ3JvdXBfbmFtZV9jb25zdGFudHMgK1xuICAgIGRlY2lzaW9uX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzICtcbiAgICBmaWxlX2V4dGVuc2lvbl9jb25zdGFudHMgK1xuICAgIGpvYl9ibG9ja19wcm9wZXJ0aWVzX2NvbnN0YW50cyArXG4gICAgbGFuZ3VhZ2VfY29kZV9jb25zdGFudHMgK1xuICAgIGxhdW5jaGluZ19leHRlcm5hbF9hcHBsaWNhdGlvbnNfY29uc3RhbnRzICtcbiAgICBsaW5rX2tpbmRfY29uc3RhbnRzICtcbiAgICBsb2NrX3R5cGVfY29uc3RhbnRzICtcbiAgICBtb25pdG9yX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzICtcbiAgICBub3RpY2VfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIG9iamVjdF9ldmVudHNfY29uc3RhbnRzICtcbiAgICBvYmplY3RfcGFyYW1zX2NvbnN0YW50cyArXG4gICAgb3RoZXJfY29uc3RhbnRzICtcbiAgICBwcml2aWxlZ2VzX2NvbnN0YW50cyArXG4gICAgcHNldWRvcmVmZXJlbmNlX2NvZGVfY29uc3RhbnRzICtcbiAgICByZXF1aXNpdGVfSVNCQ2VydGlmaWNhdGVUeXBlX3ZhbHVlc19jb25zdGFudHMgK1xuICAgIHJlcXVpc2l0ZV9JU0JFRG9jU3RvcmFnZVR5cGVfdmFsdWVzX2NvbnN0YW50cyArXG4gICAgcmVxdWlzaXRlX2NvbXBUeXBlMl92YWx1ZXNfY29uc3RhbnRzICtcbiAgICByZXF1aXNpdGVfbmFtZV9jb25zdGFudHMgK1xuICAgIHJlc3VsdF9jb25zdGFudHMgK1xuICAgIHJ1bGVfaWRlbnRpZmljYXRpb25fY29uc3RhbnRzICtcbiAgICBzY3JpcHRfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIHN1YnRhc2tfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIHN5c3RlbV9jb21wb25lbnRfY29uc3RhbnRzICtcbiAgICBzeXN0ZW1fZGlhbG9nc19jb25zdGFudHMgK1xuICAgIHN5c3RlbV9yZWZlcmVuY2VfbmFtZXNfY29uc3RhbnRzICtcbiAgICB0YWJsZV9uYW1lX2NvbnN0YW50cyArXG4gICAgdGVzdF9jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9kaWFsb2dfd2luZG93c19jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9kb2N1bWVudF9jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9FQV9hbmRfZW5jcnlwdGlvbl9jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9JU0JMX2VkaXRvcl9jb25zdGFudHMgK1xuICAgIHdhaXRfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIHN5c3Jlc19jb21tb25fY29uc3RhbnRzO1xuXG4gIC8vIGVudW0gVEFjY291bnRUeXBlXG4gIHZhciBUQWNjb3VudFR5cGUgPSBcImF0VXNlciBhdEdyb3VwIGF0Um9sZSBcIjtcblxuICAvLyBlbnVtIFRBY3Rpb25FbmFibGVkTW9kZVxuICB2YXIgVEFjdGlvbkVuYWJsZWRNb2RlID1cbiAgICBcImFlbUVuYWJsZWRBbHdheXMgXCIgK1xuICAgIFwiYWVtRGlzYWJsZWRBbHdheXMgXCIgK1xuICAgIFwiYWVtRW5hYmxlZE9uQnJvd3NlIFwiICtcbiAgICBcImFlbUVuYWJsZWRPbkVkaXQgXCIgK1xuICAgIFwiYWVtRGlzYWJsZWRPbkJyb3dzZUVtcHR5IFwiO1xuXG4gIC8vIGVudW0gVEFkZFBvc2l0aW9uXG4gIHZhciBUQWRkUG9zaXRpb24gPSBcImFwQmVnaW4gYXBFbmQgXCI7XG5cbiAgLy8gZW51bSBUQWxpZ25tZW50XG4gIHZhciBUQWxpZ25tZW50ID0gXCJhbExlZnQgYWxSaWdodCBcIjtcblxuICAvLyBlbnVtIFRBcmVhU2hvd01vZGVcbiAgdmFyIFRBcmVhU2hvd01vZGUgPVxuICAgIFwiYXNtTmV2ZXIgXCIgK1xuICAgIFwiYXNtTm9CdXRDdXN0b21pemUgXCIgK1xuICAgIFwiYXNtQXNMYXN0VGltZSBcIiArXG4gICAgXCJhc21ZZXNCdXRDdXN0b21pemUgXCIgK1xuICAgIFwiYXNtQWx3YXlzIFwiO1xuXG4gIC8vIGVudW0gVENlcnRpZmljYXRlSW52YWxpZGF0aW9uUmVhc29uXG4gIHZhciBUQ2VydGlmaWNhdGVJbnZhbGlkYXRpb25SZWFzb24gPSBcImNpckNvbW1vbiBjaXJSZXZva2VkIFwiO1xuXG4gIC8vIGVudW0gVENlcnRpZmljYXRlVHlwZVxuICB2YXIgVENlcnRpZmljYXRlVHlwZSA9IFwiY3RTaWduYXR1cmUgY3RFbmNvZGUgY3RTaWduYXR1cmVFbmNvZGUgXCI7XG5cbiAgLy8gZW51bSBUQ2hlY2tMaXN0Qm94SXRlbVN0YXRlXG4gIHZhciBUQ2hlY2tMaXN0Qm94SXRlbVN0YXRlID0gXCJjbGJVbmNoZWNrZWQgY2xiQ2hlY2tlZCBjbGJHcmF5ZWQgXCI7XG5cbiAgLy8gZW51bSBUQ2xvc2VPbkVzY1xuICB2YXIgVENsb3NlT25Fc2MgPSBcImNlSVNCIGNlQWx3YXlzIGNlTmV2ZXIgXCI7XG5cbiAgLy8gZW51bSBUQ29tcFR5cGVcbiAgdmFyIFRDb21wVHlwZSA9XG4gICAgXCJjdERvY3VtZW50IFwiICtcbiAgICBcImN0UmVmZXJlbmNlIFwiICtcbiAgICBcImN0U2NyaXB0IFwiICtcbiAgICBcImN0VW5rbm93biBcIiArXG4gICAgXCJjdFJlcG9ydCBcIiArXG4gICAgXCJjdERpYWxvZyBcIiArXG4gICAgXCJjdEZ1bmN0aW9uIFwiICtcbiAgICBcImN0Rm9sZGVyIFwiICtcbiAgICBcImN0RURvY3VtZW50IFwiICtcbiAgICBcImN0VGFzayBcIiArXG4gICAgXCJjdEpvYiBcIiArXG4gICAgXCJjdE5vdGljZSBcIiArXG4gICAgXCJjdENvbnRyb2xKb2IgXCI7XG5cbiAgLy8gZW51bSBUQ29uZGl0aW9uRm9ybWF0XG4gIHZhciBUQ29uZGl0aW9uRm9ybWF0ID0gXCJjZkludGVybmFsIGNmRGlzcGxheSBcIjtcblxuICAvLyBlbnVtIFRDb25uZWN0aW9uSW50ZW50XG4gIHZhciBUQ29ubmVjdGlvbkludGVudCA9IFwiY2lVbnNwZWNpZmllZCBjaVdyaXRlIGNpUmVhZCBcIjtcblxuICAvLyBlbnVtIFRDb250ZW50S2luZFxuICB2YXIgVENvbnRlbnRLaW5kID1cbiAgICBcImNrRm9sZGVyIFwiICtcbiAgICBcImNrRURvY3VtZW50IFwiICtcbiAgICBcImNrVGFzayBcIiArXG4gICAgXCJja0pvYiBcIiArXG4gICAgXCJja0NvbXBvbmVudFRva2VuIFwiICtcbiAgICBcImNrQW55IFwiICtcbiAgICBcImNrUmVmZXJlbmNlIFwiICtcbiAgICBcImNrU2NyaXB0IFwiICtcbiAgICBcImNrUmVwb3J0IFwiICtcbiAgICBcImNrRGlhbG9nIFwiO1xuXG4gIC8vIGVudW0gVENvbnRyb2xUeXBlXG4gIHZhciBUQ29udHJvbFR5cGUgPVxuICAgIFwiY3RJU0JMRWRpdG9yIFwiICtcbiAgICBcImN0QmV2ZWwgXCIgK1xuICAgIFwiY3RCdXR0b24gXCIgK1xuICAgIFwiY3RDaGVja0xpc3RCb3ggXCIgK1xuICAgIFwiY3RDb21ib0JveCBcIiArXG4gICAgXCJjdENvbWJvRWRpdCBcIiArXG4gICAgXCJjdEdyaWQgXCIgK1xuICAgIFwiY3REQkNoZWNrQm94IFwiICtcbiAgICBcImN0REJDb21ib0JveCBcIiArXG4gICAgXCJjdERCRWRpdCBcIiArXG4gICAgXCJjdERCRWxsaXBzaXMgXCIgK1xuICAgIFwiY3REQk1lbW8gXCIgK1xuICAgIFwiY3REQk5hdmlnYXRvciBcIiArXG4gICAgXCJjdERCUmFkaW9Hcm91cCBcIiArXG4gICAgXCJjdERCU3RhdHVzTGFiZWwgXCIgK1xuICAgIFwiY3RFZGl0IFwiICtcbiAgICBcImN0R3JvdXBCb3ggXCIgK1xuICAgIFwiY3RJbnBsYWNlSGludCBcIiArXG4gICAgXCJjdE1lbW8gXCIgK1xuICAgIFwiY3RQYW5lbCBcIiArXG4gICAgXCJjdExpc3RCb3ggXCIgK1xuICAgIFwiY3RSYWRpb0J1dHRvbiBcIiArXG4gICAgXCJjdFJpY2hFZGl0IFwiICtcbiAgICBcImN0VGFiU2hlZXQgXCIgK1xuICAgIFwiY3RXZWJCcm93c2VyIFwiICtcbiAgICBcImN0SW1hZ2UgXCIgK1xuICAgIFwiY3RIeXBlckxpbmsgXCIgK1xuICAgIFwiY3RMYWJlbCBcIiArXG4gICAgXCJjdERCTXVsdGlFbGxpcHNpcyBcIiArXG4gICAgXCJjdFJpYmJvbiBcIiArXG4gICAgXCJjdFJpY2hWaWV3IFwiICtcbiAgICBcImN0SW5uZXJQYW5lbCBcIiArXG4gICAgXCJjdFBhbmVsR3JvdXAgXCIgK1xuICAgIFwiY3RCaXRCdXR0b24gXCI7XG5cbiAgLy8gZW51bSBUQ3JpdGVyaW9uQ29udGVudFR5cGVcbiAgdmFyIFRDcml0ZXJpb25Db250ZW50VHlwZSA9XG4gICAgXCJjY3REYXRlIFwiICtcbiAgICBcImNjdEludGVnZXIgXCIgK1xuICAgIFwiY2N0TnVtZXJpYyBcIiArXG4gICAgXCJjY3RQaWNrIFwiICtcbiAgICBcImNjdFJlZmVyZW5jZSBcIiArXG4gICAgXCJjY3RTdHJpbmcgXCIgK1xuICAgIFwiY2N0VGV4dCBcIjtcblxuICAvLyBlbnVtIFRDdWx0dXJlVHlwZVxuICB2YXIgVEN1bHR1cmVUeXBlID0gXCJjbHRJbnRlcm5hbCBjbHRQcmltYXJ5IGNsdEdVSSBcIjtcblxuICAvLyBlbnVtIFREYXRhU2V0RXZlbnRUeXBlXG4gIHZhciBURGF0YVNldEV2ZW50VHlwZSA9XG4gICAgXCJkc2VCZWZvcmVPcGVuIFwiICtcbiAgICBcImRzZUFmdGVyT3BlbiBcIiArXG4gICAgXCJkc2VCZWZvcmVDbG9zZSBcIiArXG4gICAgXCJkc2VBZnRlckNsb3NlIFwiICtcbiAgICBcImRzZU9uVmFsaWREZWxldGUgXCIgK1xuICAgIFwiZHNlQmVmb3JlRGVsZXRlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlT3V0T2ZUcmFuc2FjdGlvbiBcIiArXG4gICAgXCJkc2VPbkRlbGV0ZUVycm9yIFwiICtcbiAgICBcImRzZUJlZm9yZUluc2VydCBcIiArXG4gICAgXCJkc2VBZnRlckluc2VydCBcIiArXG4gICAgXCJkc2VPblZhbGlkVXBkYXRlIFwiICtcbiAgICBcImRzZUJlZm9yZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPblVwZGF0ZVJhdGlmaWVkUmVjb3JkIFwiICtcbiAgICBcImRzZUFmdGVyVXBkYXRlIFwiICtcbiAgICBcImRzZUFmdGVyVXBkYXRlT3V0T2ZUcmFuc2FjdGlvbiBcIiArXG4gICAgXCJkc2VPblVwZGF0ZUVycm9yIFwiICtcbiAgICBcImRzZUFmdGVyU2Nyb2xsIFwiICtcbiAgICBcImRzZU9uT3BlblJlY29yZCBcIiArXG4gICAgXCJkc2VPbkNsb3NlUmVjb3JkIFwiICtcbiAgICBcImRzZUJlZm9yZUNhbmNlbCBcIiArXG4gICAgXCJkc2VBZnRlckNhbmNlbCBcIiArXG4gICAgXCJkc2VPblVwZGF0ZURlYWRsb2NrRXJyb3IgXCIgK1xuICAgIFwiZHNlQmVmb3JlRGV0YWlsVXBkYXRlIFwiICtcbiAgICBcImRzZU9uUHJlcGFyZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPbkFueVJlcXVpc2l0ZUNoYW5nZSBcIjtcblxuICAvLyBlbnVtIFREYXRhU2V0U3RhdGVcbiAgdmFyIFREYXRhU2V0U3RhdGUgPSBcImRzc0VkaXQgZHNzSW5zZXJ0IGRzc0Jyb3dzZSBkc3NJbkFjdGl2ZSBcIjtcblxuICAvLyBlbnVtIFREYXRlRm9ybWF0VHlwZVxuICB2YXIgVERhdGVGb3JtYXRUeXBlID0gXCJkZnREYXRlIGRmdFNob3J0RGF0ZSBkZnREYXRlVGltZSBkZnRUaW1lU3RhbXAgXCI7XG5cbiAgLy8gZW51bSBURGF0ZU9mZnNldFR5cGVcbiAgdmFyIFREYXRlT2Zmc2V0VHlwZSA9IFwiZG90RGF5cyBkb3RIb3VycyBkb3RNaW51dGVzIGRvdFNlY29uZHMgXCI7XG5cbiAgLy8gZW51bSBURGF0ZVRpbWVLaW5kXG4gIHZhciBURGF0ZVRpbWVLaW5kID0gXCJkdGtuZExvY2FsIGR0a25kVVRDIFwiO1xuXG4gIC8vIGVudW0gVERlYUFjY2Vzc1JpZ2h0c1xuICB2YXIgVERlYUFjY2Vzc1JpZ2h0cyA9IFwiYXJOb25lIGFyVmlldyBhckVkaXQgYXJGdWxsIFwiO1xuXG4gIC8vIGVudW0gVERvY3VtZW50RGVmYXVsdEFjdGlvblxuICB2YXIgVERvY3VtZW50RGVmYXVsdEFjdGlvbiA9IFwiZGRhVmlldyBkZGFFZGl0IFwiO1xuXG4gIC8vIGVudW0gVEVkaXRNb2RlXG4gIHZhciBURWRpdE1vZGUgPVxuICAgIFwiZW1Mb2NrIFwiICtcbiAgICBcImVtRWRpdCBcIiArXG4gICAgXCJlbVNpZ24gXCIgK1xuICAgIFwiZW1FeHBvcnRXaXRoTG9jayBcIiArXG4gICAgXCJlbUltcG9ydFdpdGhVbmxvY2sgXCIgK1xuICAgIFwiZW1DaGFuZ2VWZXJzaW9uTm90ZSBcIiArXG4gICAgXCJlbU9wZW5Gb3JNb2RpZnkgXCIgK1xuICAgIFwiZW1DaGFuZ2VMaWZlU3RhZ2UgXCIgK1xuICAgIFwiZW1EZWxldGUgXCIgK1xuICAgIFwiZW1DcmVhdGVWZXJzaW9uIFwiICtcbiAgICBcImVtSW1wb3J0IFwiICtcbiAgICBcImVtVW5sb2NrRXhwb3J0ZWRXaXRoTG9jayBcIiArXG4gICAgXCJlbVN0YXJ0IFwiICtcbiAgICBcImVtQWJvcnQgXCIgK1xuICAgIFwiZW1SZUluaXQgXCIgK1xuICAgIFwiZW1NYXJrQXNSZWFkZWQgXCIgK1xuICAgIFwiZW1NYXJrQXNVbnJlYWRlZCBcIiArXG4gICAgXCJlbVBlcmZvcm0gXCIgK1xuICAgIFwiZW1BY2NlcHQgXCIgK1xuICAgIFwiZW1SZXN1bWUgXCIgK1xuICAgIFwiZW1DaGFuZ2VSaWdodHMgXCIgK1xuICAgIFwiZW1FZGl0Um91dGUgXCIgK1xuICAgIFwiZW1FZGl0T2JzZXJ2ZXIgXCIgK1xuICAgIFwiZW1SZWNvdmVyeUZyb21Mb2NhbENvcHkgXCIgK1xuICAgIFwiZW1DaGFuZ2VXb3JrQWNjZXNzVHlwZSBcIiArXG4gICAgXCJlbUNoYW5nZUVuY29kZVR5cGVUb0NlcnRpZmljYXRlIFwiICtcbiAgICBcImVtQ2hhbmdlRW5jb2RlVHlwZVRvUGFzc3dvcmQgXCIgK1xuICAgIFwiZW1DaGFuZ2VFbmNvZGVUeXBlVG9Ob25lIFwiICtcbiAgICBcImVtQ2hhbmdlRW5jb2RlVHlwZVRvQ2VydGlmaWNhdGVQYXNzd29yZCBcIiArXG4gICAgXCJlbUNoYW5nZVN0YW5kYXJkUm91dGUgXCIgK1xuICAgIFwiZW1HZXRUZXh0IFwiICtcbiAgICBcImVtT3BlbkZvclZpZXcgXCIgK1xuICAgIFwiZW1Nb3ZlVG9TdG9yYWdlIFwiICtcbiAgICBcImVtQ3JlYXRlT2JqZWN0IFwiICtcbiAgICBcImVtQ2hhbmdlVmVyc2lvbkhpZGRlbiBcIiArXG4gICAgXCJlbURlbGV0ZVZlcnNpb24gXCIgK1xuICAgIFwiZW1DaGFuZ2VMaWZlQ3ljbGVTdGFnZSBcIiArXG4gICAgXCJlbUFwcHJvdmluZ1NpZ24gXCIgK1xuICAgIFwiZW1FeHBvcnQgXCIgK1xuICAgIFwiZW1Db250aW51ZSBcIiArXG4gICAgXCJlbUxvY2tGcm9tRWRpdCBcIiArXG4gICAgXCJlbVVuTG9ja0ZvckVkaXQgXCIgK1xuICAgIFwiZW1Mb2NrRm9yU2VydmVyIFwiICtcbiAgICBcImVtVW5sb2NrRnJvbVNlcnZlciBcIiArXG4gICAgXCJlbURlbGVnYXRlQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcImVtUmVFbmNvZGUgXCI7XG5cbiAgLy8gZW51bSBURWRpdG9yQ2xvc2VPYnNlcnZUeXBlXG4gIHZhciBURWRpdG9yQ2xvc2VPYnNlcnZUeXBlID0gXCJlY290RmlsZSBlY290UHJvY2VzcyBcIjtcblxuICAvLyBlbnVtIFRFZG1zQXBwbGljYXRpb25BY3Rpb25cbiAgdmFyIFRFZG1zQXBwbGljYXRpb25BY3Rpb24gPSBcImVhR2V0IGVhQ29weSBlYUNyZWF0ZSBlYUNyZWF0ZVN0YW5kYXJkUm91dGUgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50TG9ja1R5cGVcbiAgdmFyIFRFRG9jdW1lbnRMb2NrVHlwZSA9IFwiZWRsdEFsbCBlZGx0Tm90aGluZyBlZGx0UXVlcnkgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50U3RlcFNob3dNb2RlXG4gIHZhciBURURvY3VtZW50U3RlcFNob3dNb2RlID0gXCJlc3NtVGV4dCBlc3NtQ2FyZCBcIjtcblxuICAvLyBlbnVtIFRFRG9jdW1lbnRTdGVwVmVyc2lvblR5cGVcbiAgdmFyIFRFRG9jdW1lbnRTdGVwVmVyc2lvblR5cGUgPSBcImVzdnRMYXN0IGVzdnRMYXN0QWN0aXZlIGVzdnRTcGVjaWZpZWQgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50U3RvcmFnZUZ1bmN0aW9uXG4gIHZhciBURURvY3VtZW50U3RvcmFnZUZ1bmN0aW9uID0gXCJlZHNmRXhlY3V0aXZlIGVkc2ZBcmNoaXZlIFwiO1xuXG4gIC8vIGVudW0gVEVEb2N1bWVudFN0b3JhZ2VUeXBlXG4gIHZhciBURURvY3VtZW50U3RvcmFnZVR5cGUgPSBcImVkc3RTUUxTZXJ2ZXIgZWRzdEZpbGUgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50VmVyc2lvblNvdXJjZVR5cGVcbiAgdmFyIFRFRG9jdW1lbnRWZXJzaW9uU291cmNlVHlwZSA9XG4gICAgXCJlZHZzdE5vbmUgZWR2c3RFRG9jdW1lbnRWZXJzaW9uQ29weSBlZHZzdEZpbGUgZWR2c3RUZW1wbGF0ZSBlZHZzdFNjYW5uZWRGaWxlIFwiO1xuXG4gIC8vIGVudW0gVEVEb2N1bWVudFZlcnNpb25TdGF0ZVxuICB2YXIgVEVEb2N1bWVudFZlcnNpb25TdGF0ZSA9IFwidnNEZWZhdWx0IHZzRGVzaWduIHZzQWN0aXZlIHZzT2Jzb2xldGUgXCI7XG5cbiAgLy8gZW51bSBURW5jb2RlVHlwZVxuICB2YXIgVEVuY29kZVR5cGUgPSBcImV0Tm9uZSBldENlcnRpZmljYXRlIGV0UGFzc3dvcmQgZXRDZXJ0aWZpY2F0ZVBhc3N3b3JkIFwiO1xuXG4gIC8vIGVudW0gVEV4Y2VwdGlvbkNhdGVnb3J5XG4gIHZhciBURXhjZXB0aW9uQ2F0ZWdvcnkgPSBcImVjRXhjZXB0aW9uIGVjV2FybmluZyBlY0luZm9ybWF0aW9uIFwiO1xuXG4gIC8vIGVudW0gVEV4cG9ydGVkU2lnbmF0dXJlc1R5cGVcbiAgdmFyIFRFeHBvcnRlZFNpZ25hdHVyZXNUeXBlID0gXCJlc3RBbGwgZXN0QXBwcm92aW5nT25seSBcIjtcblxuICAvLyBlbnVtIFRFeHBvcnRlZFZlcnNpb25UeXBlXG4gIHZhciBURXhwb3J0ZWRWZXJzaW9uVHlwZSA9IFwiZXZ0TGFzdCBldnRMYXN0QWN0aXZlIGV2dFF1ZXJ5IFwiO1xuXG4gIC8vIGVudW0gVEZpZWxkRGF0YVR5cGVcbiAgdmFyIFRGaWVsZERhdGFUeXBlID1cbiAgICBcImZkdFN0cmluZyBcIiArXG4gICAgXCJmZHROdW1lcmljIFwiICtcbiAgICBcImZkdEludGVnZXIgXCIgK1xuICAgIFwiZmR0RGF0ZSBcIiArXG4gICAgXCJmZHRUZXh0IFwiICtcbiAgICBcImZkdFVua25vd24gXCIgK1xuICAgIFwiZmR0V2lkZVN0cmluZyBcIiArXG4gICAgXCJmZHRMYXJnZUludGVnZXIgXCI7XG5cbiAgLy8gZW51bSBURm9sZGVyVHlwZVxuICB2YXIgVEZvbGRlclR5cGUgPVxuICAgIFwiZnRJbmJveCBcIiArXG4gICAgXCJmdE91dGJveCBcIiArXG4gICAgXCJmdEZhdm9yaXRlcyBcIiArXG4gICAgXCJmdENvbW1vbkZvbGRlciBcIiArXG4gICAgXCJmdFVzZXJGb2xkZXIgXCIgK1xuICAgIFwiZnRDb21wb25lbnRzIFwiICtcbiAgICBcImZ0UXVpY2tMYXVuY2ggXCIgK1xuICAgIFwiZnRTaG9ydGN1dHMgXCIgK1xuICAgIFwiZnRTZWFyY2ggXCI7XG5cbiAgLy8gZW51bSBUR3JpZFJvd0hlaWdodFxuICB2YXIgVEdyaWRSb3dIZWlnaHQgPSBcImdyaEF1dG8gXCIgKyBcImdyaFgxIFwiICsgXCJncmhYMiBcIiArIFwiZ3JoWDMgXCI7XG5cbiAgLy8gZW51bSBUSHlwZXJsaW5rVHlwZVxuICB2YXIgVEh5cGVybGlua1R5cGUgPSBcImhsdFRleHQgXCIgKyBcImhsdFJURiBcIiArIFwiaGx0SFRNTCBcIjtcblxuICAvLyBlbnVtIFRJbWFnZUZpbGVGb3JtYXRcbiAgdmFyIFRJbWFnZUZpbGVGb3JtYXQgPVxuICAgIFwiaWZmQk1QIFwiICtcbiAgICBcImlmZkpQRUcgXCIgK1xuICAgIFwiaWZmTXVsdGlQYWdlVElGRiBcIiArXG4gICAgXCJpZmZTaW5nbGVQYWdlVElGRiBcIiArXG4gICAgXCJpZmZUSUZGIFwiICtcbiAgICBcImlmZlBORyBcIjtcblxuICAvLyBlbnVtIFRJbWFnZU1vZGVcbiAgdmFyIFRJbWFnZU1vZGUgPSBcImltOGJHcmF5c2NhbGUgXCIgKyBcImltMjRiUkdCIFwiICsgXCJpbTFiTW9ub2Nocm9tZSBcIjtcblxuICAvLyBlbnVtIFRJbWFnZVR5cGVcbiAgdmFyIFRJbWFnZVR5cGUgPSBcIml0Qk1QIFwiICsgXCJpdEpQRUcgXCIgKyBcIml0V01GIFwiICsgXCJpdFBORyBcIjtcblxuICAvLyBlbnVtIFRJbnBsYWNlSGludEtpbmRcbiAgdmFyIFRJbnBsYWNlSGludEtpbmQgPVxuICAgIFwiaWtoSW5mb3JtYXRpb24gXCIgKyBcImlraFdhcm5pbmcgXCIgKyBcImlraEVycm9yIFwiICsgXCJpa2hOb0ljb24gXCI7XG5cbiAgLy8gZW51bSBUSVNCTENvbnRleHRcbiAgdmFyIFRJU0JMQ29udGV4dCA9XG4gICAgXCJpY1Vua25vd24gXCIgK1xuICAgIFwiaWNTY3JpcHQgXCIgK1xuICAgIFwiaWNGdW5jdGlvbiBcIiArXG4gICAgXCJpY0ludGVncmF0ZWRSZXBvcnQgXCIgK1xuICAgIFwiaWNBbmFseXRpY1JlcG9ydCBcIiArXG4gICAgXCJpY0RhdGFTZXRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNBY3Rpb25IYW5kbGVyIFwiICtcbiAgICBcImljRm9ybUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0xvb2tVcEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1JlcXVpc2l0ZUNoYW5nZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0JlZm9yZVNlYXJjaEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1JvbGVDYWxjdWxhdGlvbiBcIiArXG4gICAgXCJpY1NlbGVjdFJvdXRlRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljQmxvY2tQcm9wZXJ0eUNhbGN1bGF0aW9uIFwiICtcbiAgICBcImljQmxvY2tRdWVyeVBhcmFtc0V2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0NoYW5nZVNlYXJjaFJlc3VsdEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0Jsb2NrRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljU3ViVGFza0luaXRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNFRG9jRGF0YVNldEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0VEb2NMb29rVXBFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNFRG9jQWN0aW9uSGFuZGxlciBcIiArXG4gICAgXCJpY0VEb2NGb3JtRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRURvY1JlcXVpc2l0ZUNoYW5nZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1N0cnVjdHVyZWRDb252ZXJzaW9uUnVsZSBcIiArXG4gICAgXCJpY1N0cnVjdHVyZWRDb252ZXJzaW9uRXZlbnRCZWZvcmUgXCIgK1xuICAgIFwiaWNTdHJ1Y3R1cmVkQ29udmVyc2lvbkV2ZW50QWZ0ZXIgXCIgK1xuICAgIFwiaWNXaXphcmRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXaXphcmRGaW5pc2hFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXaXphcmRTdGVwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljV2l6YXJkU3RlcEZpbmlzaEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1dpemFyZEFjdGlvbkVuYWJsZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1dpemFyZEFjdGlvbkV4ZWN1dGVFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNDcmVhdGVKb2JzSGFuZGxlciBcIiArXG4gICAgXCJpY0NyZWF0ZU5vdGljZXNIYW5kbGVyIFwiICtcbiAgICBcImljQmVmb3JlTG9va1VwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljQWZ0ZXJMb29rVXBFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNUYXNrQWJvcnRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXb3JrZmxvd0Jsb2NrQWN0aW9uSGFuZGxlciBcIiArXG4gICAgXCJpY0RpYWxvZ0RhdGFTZXRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNEaWFsb2dBY3Rpb25IYW5kbGVyIFwiICtcbiAgICBcImljRGlhbG9nTG9va1VwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRGlhbG9nUmVxdWlzaXRlQ2hhbmdlRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRGlhbG9nRm9ybUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0RpYWxvZ1ZhbGlkQ2xvc2VFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNCbG9ja0Zvcm1FdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNUYXNrRm9ybUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1JlZmVyZW5jZU1ldGhvZCBcIiArXG4gICAgXCJpY0VEb2NNZXRob2QgXCIgK1xuICAgIFwiaWNEaWFsb2dNZXRob2QgXCIgK1xuICAgIFwiaWNQcm9jZXNzTWVzc2FnZUhhbmRsZXIgXCI7XG5cbiAgLy8gZW51bSBUSXRlbVNob3dcbiAgdmFyIFRJdGVtU2hvdyA9IFwiaXNTaG93IFwiICsgXCJpc0hpZGUgXCIgKyBcImlzQnlVc2VyU2V0dGluZ3MgXCI7XG5cbiAgLy8gZW51bSBUSm9iS2luZFxuICB2YXIgVEpvYktpbmQgPSBcImprSm9iIFwiICsgXCJqa05vdGljZSBcIiArIFwiamtDb250cm9sSm9iIFwiO1xuXG4gIC8vIGVudW0gVEpvaW5UeXBlXG4gIHZhciBUSm9pblR5cGUgPSBcImp0SW5uZXIgXCIgKyBcImp0TGVmdCBcIiArIFwianRSaWdodCBcIiArIFwianRGdWxsIFwiICsgXCJqdENyb3NzIFwiO1xuXG4gIC8vIGVudW0gVExhYmVsUG9zXG4gIHZhciBUTGFiZWxQb3MgPSBcImxicEFib3ZlIFwiICsgXCJsYnBCZWxvdyBcIiArIFwibGJwTGVmdCBcIiArIFwibGJwUmlnaHQgXCI7XG5cbiAgLy8gZW51bSBUTGljZW5zaW5nVHlwZVxuICB2YXIgVExpY2Vuc2luZ1R5cGUgPSBcImVsdFBlckNvbm5lY3Rpb24gXCIgKyBcImVsdFBlclVzZXIgXCI7XG5cbiAgLy8gZW51bSBUTGlmZUN5Y2xlU3RhZ2VGb250Q29sb3JcbiAgdmFyIFRMaWZlQ3ljbGVTdGFnZUZvbnRDb2xvciA9XG4gICAgXCJzZmNVbmRlZmluZWQgXCIgK1xuICAgIFwic2ZjQmxhY2sgXCIgK1xuICAgIFwic2ZjR3JlZW4gXCIgK1xuICAgIFwic2ZjUmVkIFwiICtcbiAgICBcInNmY0JsdWUgXCIgK1xuICAgIFwic2ZjT3JhbmdlIFwiICtcbiAgICBcInNmY0xpbGFjIFwiO1xuXG4gIC8vIGVudW0gVExpZmVDeWNsZVN0YWdlRm9udFN0eWxlXG4gIHZhciBUTGlmZUN5Y2xlU3RhZ2VGb250U3R5bGUgPSBcInNmc0l0YWxpYyBcIiArIFwic2ZzU3RyaWtlb3V0IFwiICsgXCJzZnNOb3JtYWwgXCI7XG5cbiAgLy8gZW51bSBUTG9ja2FibGVEZXZlbG9wbWVudENvbXBvbmVudFR5cGVcbiAgdmFyIFRMb2NrYWJsZURldmVsb3BtZW50Q29tcG9uZW50VHlwZSA9XG4gICAgXCJsZGN0U3RhbmRhcmRSb3V0ZSBcIiArXG4gICAgXCJsZGN0V2l6YXJkIFwiICtcbiAgICBcImxkY3RTY3JpcHQgXCIgK1xuICAgIFwibGRjdEZ1bmN0aW9uIFwiICtcbiAgICBcImxkY3RSb3V0ZUJsb2NrIFwiICtcbiAgICBcImxkY3RJbnRlZ3JhdGVkUmVwb3J0IFwiICtcbiAgICBcImxkY3RBbmFseXRpY1JlcG9ydCBcIiArXG4gICAgXCJsZGN0UmVmZXJlbmNlVHlwZSBcIiArXG4gICAgXCJsZGN0RURvY3VtZW50VHlwZSBcIiArXG4gICAgXCJsZGN0RGlhbG9nIFwiICtcbiAgICBcImxkY3RTZXJ2ZXJFdmVudHMgXCI7XG5cbiAgLy8gZW51bSBUTWF4UmVjb3JkQ291bnRSZXN0cmljdGlvblR5cGVcbiAgdmFyIFRNYXhSZWNvcmRDb3VudFJlc3RyaWN0aW9uVHlwZSA9XG4gICAgXCJtcmNydE5vbmUgXCIgKyBcIm1yY3J0VXNlciBcIiArIFwibXJjcnRNYXhpbWFsIFwiICsgXCJtcmNydEN1c3RvbSBcIjtcblxuICAvLyBlbnVtIFRSYW5nZVZhbHVlVHlwZVxuICB2YXIgVFJhbmdlVmFsdWVUeXBlID1cbiAgICBcInZ0RXF1YWwgXCIgKyBcInZ0R3JlYXRlck9yRXF1YWwgXCIgKyBcInZ0TGVzc09yRXF1YWwgXCIgKyBcInZ0UmFuZ2UgXCI7XG5cbiAgLy8gZW51bSBUUmVsYXRpdmVEYXRlXG4gIHZhciBUUmVsYXRpdmVEYXRlID1cbiAgICBcInJkWWVzdGVyZGF5IFwiICtcbiAgICBcInJkVG9kYXkgXCIgK1xuICAgIFwicmRUb21vcnJvdyBcIiArXG4gICAgXCJyZFRoaXNXZWVrIFwiICtcbiAgICBcInJkVGhpc01vbnRoIFwiICtcbiAgICBcInJkVGhpc1llYXIgXCIgK1xuICAgIFwicmROZXh0TW9udGggXCIgK1xuICAgIFwicmROZXh0V2VlayBcIiArXG4gICAgXCJyZExhc3RXZWVrIFwiICtcbiAgICBcInJkTGFzdE1vbnRoIFwiO1xuXG4gIC8vIGVudW0gVFJlcG9ydERlc3RpbmF0aW9uXG4gIHZhciBUUmVwb3J0RGVzdGluYXRpb24gPSBcInJkV2luZG93IFwiICsgXCJyZEZpbGUgXCIgKyBcInJkUHJpbnRlciBcIjtcblxuICAvLyBlbnVtIFRSZXFEYXRhVHlwZVxuICB2YXIgVFJlcURhdGFUeXBlID1cbiAgICBcInJkdFN0cmluZyBcIiArXG4gICAgXCJyZHROdW1lcmljIFwiICtcbiAgICBcInJkdEludGVnZXIgXCIgK1xuICAgIFwicmR0RGF0ZSBcIiArXG4gICAgXCJyZHRSZWZlcmVuY2UgXCIgK1xuICAgIFwicmR0QWNjb3VudCBcIiArXG4gICAgXCJyZHRUZXh0IFwiICtcbiAgICBcInJkdFBpY2sgXCIgK1xuICAgIFwicmR0VW5rbm93biBcIiArXG4gICAgXCJyZHRMYXJnZUludGVnZXIgXCIgK1xuICAgIFwicmR0RG9jdW1lbnQgXCI7XG5cbiAgLy8gZW51bSBUUmVxdWlzaXRlRXZlbnRUeXBlXG4gIHZhciBUUmVxdWlzaXRlRXZlbnRUeXBlID0gXCJyZU9uQ2hhbmdlIFwiICsgXCJyZU9uQ2hhbmdlVmFsdWVzIFwiO1xuXG4gIC8vIGVudW0gVFNCVGltZVR5cGVcbiAgdmFyIFRTQlRpbWVUeXBlID0gXCJ0dEdsb2JhbCBcIiArIFwidHRMb2NhbCBcIiArIFwidHRVc2VyIFwiICsgXCJ0dFN5c3RlbSBcIjtcblxuICAvLyBlbnVtIFRTZWFyY2hTaG93TW9kZVxuICB2YXIgVFNlYXJjaFNob3dNb2RlID1cbiAgICBcInNzbUJyb3dzZSBcIiArIFwic3NtU2VsZWN0IFwiICsgXCJzc21NdWx0aVNlbGVjdCBcIiArIFwic3NtQnJvd3NlTW9kYWwgXCI7XG5cbiAgLy8gZW51bSBUU2VsZWN0TW9kZVxuICB2YXIgVFNlbGVjdE1vZGUgPSBcInNtU2VsZWN0IFwiICsgXCJzbUxpa2UgXCIgKyBcInNtQ2FyZCBcIjtcblxuICAvLyBlbnVtIFRTaWduYXR1cmVUeXBlXG4gIHZhciBUU2lnbmF0dXJlVHlwZSA9IFwic3ROb25lIFwiICsgXCJzdEF1dGhlbnRpY2F0aW5nIFwiICsgXCJzdEFwcHJvdmluZyBcIjtcblxuICAvLyBlbnVtIFRTaWduZXJDb250ZW50VHlwZVxuICB2YXIgVFNpZ25lckNvbnRlbnRUeXBlID0gXCJzY3RTdHJpbmcgXCIgKyBcInNjdFN0cmVhbSBcIjtcblxuICAvLyBlbnVtIFRTdHJpbmdzU29ydFR5cGVcbiAgdmFyIFRTdHJpbmdzU29ydFR5cGUgPSBcInNzdEFuc2lTb3J0IFwiICsgXCJzc3ROYXR1cmFsU29ydCBcIjtcblxuICAvLyBlbnVtIFRTdHJpbmdWYWx1ZVR5cGVcbiAgdmFyIFRTdHJpbmdWYWx1ZVR5cGUgPSBcInN2dEVxdWFsIFwiICsgXCJzdnRDb250YWluIFwiO1xuXG4gIC8vIGVudW0gVFN0cnVjdHVyZWRPYmplY3RBdHRyaWJ1dGVUeXBlXG4gIHZhciBUU3RydWN0dXJlZE9iamVjdEF0dHJpYnV0ZVR5cGUgPVxuICAgIFwic29hdFN0cmluZyBcIiArXG4gICAgXCJzb2F0TnVtZXJpYyBcIiArXG4gICAgXCJzb2F0SW50ZWdlciBcIiArXG4gICAgXCJzb2F0RGF0ZXRpbWUgXCIgK1xuICAgIFwic29hdFJlZmVyZW5jZVJlY29yZCBcIiArXG4gICAgXCJzb2F0VGV4dCBcIiArXG4gICAgXCJzb2F0UGljayBcIiArXG4gICAgXCJzb2F0Qm9vbGVhbiBcIiArXG4gICAgXCJzb2F0RURvY3VtZW50IFwiICtcbiAgICBcInNvYXRBY2NvdW50IFwiICtcbiAgICBcInNvYXRJbnRlZ2VyQ29sbGVjdGlvbiBcIiArXG4gICAgXCJzb2F0TnVtZXJpY0NvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdFN0cmluZ0NvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdFBpY2tDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXREYXRldGltZUNvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdEJvb2xlYW5Db2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRSZWZlcmVuY2VSZWNvcmRDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRFRG9jdW1lbnRDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRBY2NvdW50Q29sbGVjdGlvbiBcIiArXG4gICAgXCJzb2F0Q29udGVudHMgXCIgK1xuICAgIFwic29hdFVua25vd24gXCI7XG5cbiAgLy8gZW51bSBUVGFza0Fib3J0UmVhc29uXG4gIHZhciBUVGFza0Fib3J0UmVhc29uID0gXCJ0YXJBYm9ydEJ5VXNlciBcIiArIFwidGFyQWJvcnRCeVdvcmtmbG93RXhjZXB0aW9uIFwiO1xuXG4gIC8vIGVudW0gVFRleHRWYWx1ZVR5cGVcbiAgdmFyIFRUZXh0VmFsdWVUeXBlID0gXCJ0dnRBbGxXb3JkcyBcIiArIFwidHZ0RXhhY3RQaHJhc2UgXCIgKyBcInR2dEFueVdvcmQgXCI7XG5cbiAgLy8gZW51bSBUVXNlck9iamVjdFN0YXR1c1xuICB2YXIgVFVzZXJPYmplY3RTdGF0dXMgPVxuICAgIFwidXNOb25lIFwiICtcbiAgICBcInVzQ29tcGxldGVkIFwiICtcbiAgICBcInVzUmVkU3F1YXJlIFwiICtcbiAgICBcInVzQmx1ZVNxdWFyZSBcIiArXG4gICAgXCJ1c1llbGxvd1NxdWFyZSBcIiArXG4gICAgXCJ1c0dyZWVuU3F1YXJlIFwiICtcbiAgICBcInVzT3JhbmdlU3F1YXJlIFwiICtcbiAgICBcInVzUHVycGxlU3F1YXJlIFwiICtcbiAgICBcInVzRm9sbG93VXAgXCI7XG5cbiAgLy8gZW51bSBUVXNlclR5cGVcbiAgdmFyIFRVc2VyVHlwZSA9XG4gICAgXCJ1dFVua25vd24gXCIgK1xuICAgIFwidXRVc2VyIFwiICtcbiAgICBcInV0RGV2ZWxvcGVyIFwiICtcbiAgICBcInV0QWRtaW5pc3RyYXRvciBcIiArXG4gICAgXCJ1dFN5c3RlbURldmVsb3BlciBcIiArXG4gICAgXCJ1dERpc2Nvbm5lY3RlZCBcIjtcblxuICAvLyBlbnVtIFRWYWx1ZXNCdWlsZFR5cGVcbiAgdmFyIFRWYWx1ZXNCdWlsZFR5cGUgPVxuICAgIFwiYnRBbmQgXCIgKyBcImJ0RGV0YWlsQW5kIFwiICsgXCJidE9yIFwiICsgXCJidE5vdE9yIFwiICsgXCJidE9ubHkgXCI7XG5cbiAgLy8gZW51bSBUVmlld01vZGVcbiAgdmFyIFRWaWV3TW9kZSA9IFwidm1WaWV3IFwiICsgXCJ2bVNlbGVjdCBcIiArIFwidm1OYXZpZ2F0aW9uIFwiO1xuXG4gIC8vIGVudW0gVFZpZXdTZWxlY3Rpb25Nb2RlXG4gIHZhciBUVmlld1NlbGVjdGlvbk1vZGUgPVxuICAgIFwidnNtU2luZ2xlIFwiICsgXCJ2c21NdWx0aXBsZSBcIiArIFwidnNtTXVsdGlwbGVDaGVjayBcIiArIFwidnNtTm9TZWxlY3Rpb24gXCI7XG5cbiAgLy8gZW51bSBUV2l6YXJkQWN0aW9uVHlwZVxuICB2YXIgVFdpemFyZEFjdGlvblR5cGUgPVxuICAgIFwid2ZhdFByZXZpb3VzIFwiICsgXCJ3ZmF0TmV4dCBcIiArIFwid2ZhdENhbmNlbCBcIiArIFwid2ZhdEZpbmlzaCBcIjtcblxuICAvLyBlbnVtIFRXaXphcmRGb3JtRWxlbWVudFByb3BlcnR5XG4gIHZhciBUV2l6YXJkRm9ybUVsZW1lbnRQcm9wZXJ0eSA9XG4gICAgXCJ3ZmVwVW5kZWZpbmVkIFwiICtcbiAgICBcIndmZXBUZXh0MyBcIiArXG4gICAgXCJ3ZmVwVGV4dDYgXCIgK1xuICAgIFwid2ZlcFRleHQ5IFwiICtcbiAgICBcIndmZXBTcGluRWRpdCBcIiArXG4gICAgXCJ3ZmVwRHJvcERvd24gXCIgK1xuICAgIFwid2ZlcFJhZGlvR3JvdXAgXCIgK1xuICAgIFwid2ZlcEZsYWcgXCIgK1xuICAgIFwid2ZlcFRleHQxMiBcIiArXG4gICAgXCJ3ZmVwVGV4dDE1IFwiICtcbiAgICBcIndmZXBUZXh0MTggXCIgK1xuICAgIFwid2ZlcFRleHQyMSBcIiArXG4gICAgXCJ3ZmVwVGV4dDI0IFwiICtcbiAgICBcIndmZXBUZXh0MjcgXCIgK1xuICAgIFwid2ZlcFRleHQzMCBcIiArXG4gICAgXCJ3ZmVwUmFkaW9Hcm91cENvbHVtbjEgXCIgK1xuICAgIFwid2ZlcFJhZGlvR3JvdXBDb2x1bW4yIFwiICtcbiAgICBcIndmZXBSYWRpb0dyb3VwQ29sdW1uMyBcIjtcblxuICAvLyBlbnVtIFRXaXphcmRGb3JtRWxlbWVudFR5cGVcbiAgdmFyIFRXaXphcmRGb3JtRWxlbWVudFR5cGUgPVxuICAgIFwid2ZldFF1ZXJ5UGFyYW1ldGVyIFwiICsgXCJ3ZmV0VGV4dCBcIiArIFwid2ZldERlbGltaXRlciBcIiArIFwid2ZldExhYmVsIFwiO1xuXG4gIC8vIGVudW0gVFdpemFyZFBhcmFtVHlwZVxuICB2YXIgVFdpemFyZFBhcmFtVHlwZSA9XG4gICAgXCJ3cHRTdHJpbmcgXCIgK1xuICAgIFwid3B0SW50ZWdlciBcIiArXG4gICAgXCJ3cHROdW1lcmljIFwiICtcbiAgICBcIndwdEJvb2xlYW4gXCIgK1xuICAgIFwid3B0RGF0ZVRpbWUgXCIgK1xuICAgIFwid3B0UGljayBcIiArXG4gICAgXCJ3cHRUZXh0IFwiICtcbiAgICBcIndwdFVzZXIgXCIgK1xuICAgIFwid3B0VXNlckxpc3QgXCIgK1xuICAgIFwid3B0RURvY3VtZW50SW5mbyBcIiArXG4gICAgXCJ3cHRFRG9jdW1lbnRJbmZvTGlzdCBcIiArXG4gICAgXCJ3cHRSZWZlcmVuY2VSZWNvcmRJbmZvIFwiICtcbiAgICBcIndwdFJlZmVyZW5jZVJlY29yZEluZm9MaXN0IFwiICtcbiAgICBcIndwdEZvbGRlckluZm8gXCIgK1xuICAgIFwid3B0VGFza0luZm8gXCIgK1xuICAgIFwid3B0Q29udGVudHMgXCIgK1xuICAgIFwid3B0RmlsZU5hbWUgXCIgK1xuICAgIFwid3B0RGF0ZSBcIjtcblxuICAvLyBlbnVtIFRXaXphcmRTdGVwUmVzdWx0XG4gIHZhciBUV2l6YXJkU3RlcFJlc3VsdCA9XG4gICAgXCJ3c3JDb21wbGV0ZSBcIiArXG4gICAgXCJ3c3JHb05leHQgXCIgK1xuICAgIFwid3NyR29QcmV2aW91cyBcIiArXG4gICAgXCJ3c3JDdXN0b20gXCIgK1xuICAgIFwid3NyQ2FuY2VsIFwiICtcbiAgICBcIndzckdvRmluYWwgXCI7XG5cbiAgLy8gZW51bSBUV2l6YXJkU3RlcFR5cGVcbiAgdmFyIFRXaXphcmRTdGVwVHlwZSA9XG4gICAgXCJ3c3RGb3JtIFwiICtcbiAgICBcIndzdEVEb2N1bWVudCBcIiArXG4gICAgXCJ3c3RUYXNrQ2FyZCBcIiArXG4gICAgXCJ3c3RSZWZlcmVuY2VSZWNvcmRDYXJkIFwiICtcbiAgICBcIndzdEZpbmFsIFwiO1xuXG4gIC8vIGVudW0gVFdvcmtBY2Nlc3NUeXBlXG4gIHZhciBUV29ya0FjY2Vzc1R5cGUgPSBcIndhQWxsIFwiICsgXCJ3YVBlcmZvcm1lcnMgXCIgKyBcIndhTWFudWFsIFwiO1xuXG4gIC8vIGVudW0gVFdvcmtmbG93QmxvY2tUeXBlXG4gIHZhciBUV29ya2Zsb3dCbG9ja1R5cGUgPVxuICAgIFwid3NiU3RhcnQgXCIgK1xuICAgIFwid3NiRmluaXNoIFwiICtcbiAgICBcIndzYk5vdGljZSBcIiArXG4gICAgXCJ3c2JTdGVwIFwiICtcbiAgICBcIndzYkRlY2lzaW9uIFwiICtcbiAgICBcIndzYldhaXQgXCIgK1xuICAgIFwid3NiTW9uaXRvciBcIiArXG4gICAgXCJ3c2JTY3JpcHQgXCIgK1xuICAgIFwid3NiQ29ubmVjdG9yIFwiICtcbiAgICBcIndzYlN1YlRhc2sgXCIgK1xuICAgIFwid3NiTGlmZUN5Y2xlU3RhZ2UgXCIgK1xuICAgIFwid3NiUGF1c2UgXCI7XG5cbiAgLy8gZW51bSBUV29ya2Zsb3dEYXRhVHlwZVxuICB2YXIgVFdvcmtmbG93RGF0YVR5cGUgPVxuICAgIFwid2R0SW50ZWdlciBcIiArXG4gICAgXCJ3ZHRGbG9hdCBcIiArXG4gICAgXCJ3ZHRTdHJpbmcgXCIgK1xuICAgIFwid2R0UGljayBcIiArXG4gICAgXCJ3ZHREYXRlVGltZSBcIiArXG4gICAgXCJ3ZHRCb29sZWFuIFwiICtcbiAgICBcIndkdFRhc2sgXCIgK1xuICAgIFwid2R0Sm9iIFwiICtcbiAgICBcIndkdEZvbGRlciBcIiArXG4gICAgXCJ3ZHRFRG9jdW1lbnQgXCIgK1xuICAgIFwid2R0UmVmZXJlbmNlUmVjb3JkIFwiICtcbiAgICBcIndkdFVzZXIgXCIgK1xuICAgIFwid2R0R3JvdXAgXCIgK1xuICAgIFwid2R0Um9sZSBcIiArXG4gICAgXCJ3ZHRJbnRlZ2VyQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRGbG9hdENvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0U3RyaW5nQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRQaWNrQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHREYXRlVGltZUNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Qm9vbGVhbkNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0VGFza0NvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Sm9iQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRGb2xkZXJDb2xsZWN0aW9uIFwiICtcbiAgICBcIndkdEVEb2N1bWVudENvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0UmVmZXJlbmNlUmVjb3JkQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRVc2VyQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRHcm91cENvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Um9sZUNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Q29udGVudHMgXCIgK1xuICAgIFwid2R0VXNlckxpc3QgXCIgK1xuICAgIFwid2R0U2VhcmNoRGVzY3JpcHRpb24gXCIgK1xuICAgIFwid2R0RGVhZExpbmUgXCIgK1xuICAgIFwid2R0UGlja1NldCBcIiArXG4gICAgXCJ3ZHRBY2NvdW50Q29sbGVjdGlvbiBcIjtcblxuICAvLyBlbnVtIFRXb3JrSW1wb3J0YW5jZVxuICB2YXIgVFdvcmtJbXBvcnRhbmNlID0gXCJ3aUxvdyBcIiArIFwid2lOb3JtYWwgXCIgKyBcIndpSGlnaCBcIjtcblxuICAvLyBlbnVtIFRXb3JrUm91dGVUeXBlXG4gIHZhciBUV29ya1JvdXRlVHlwZSA9IFwid3J0U29mdCBcIiArIFwid3J0SGFyZCBcIjtcblxuICAvLyBlbnVtIFRXb3JrU3RhdGVcbiAgdmFyIFRXb3JrU3RhdGUgPVxuICAgIFwid3NJbml0IFwiICtcbiAgICBcIndzUnVubmluZyBcIiArXG4gICAgXCJ3c0RvbmUgXCIgK1xuICAgIFwid3NDb250cm9sbGVkIFwiICtcbiAgICBcIndzQWJvcnRlZCBcIiArXG4gICAgXCJ3c0NvbnRpbnVlZCBcIjtcblxuICAvLyBlbnVtIFRXb3JrVGV4dEJ1aWxkaW5nTW9kZVxuICB2YXIgVFdvcmtUZXh0QnVpbGRpbmdNb2RlID1cbiAgICBcInd0bUZ1bGwgXCIgKyBcInd0bUZyb21DdXJyZW50IFwiICsgXCJ3dG1Pbmx5Q3VycmVudCBcIjtcblxuICAvLyDQn9C10YDQtdGH0LjRgdC70LXQvdC40Y9cbiAgdmFyIEVOVU1TID1cbiAgICBUQWNjb3VudFR5cGUgK1xuICAgIFRBY3Rpb25FbmFibGVkTW9kZSArXG4gICAgVEFkZFBvc2l0aW9uICtcbiAgICBUQWxpZ25tZW50ICtcbiAgICBUQXJlYVNob3dNb2RlICtcbiAgICBUQ2VydGlmaWNhdGVJbnZhbGlkYXRpb25SZWFzb24gK1xuICAgIFRDZXJ0aWZpY2F0ZVR5cGUgK1xuICAgIFRDaGVja0xpc3RCb3hJdGVtU3RhdGUgK1xuICAgIFRDbG9zZU9uRXNjICtcbiAgICBUQ29tcFR5cGUgK1xuICAgIFRDb25kaXRpb25Gb3JtYXQgK1xuICAgIFRDb25uZWN0aW9uSW50ZW50ICtcbiAgICBUQ29udGVudEtpbmQgK1xuICAgIFRDb250cm9sVHlwZSArXG4gICAgVENyaXRlcmlvbkNvbnRlbnRUeXBlICtcbiAgICBUQ3VsdHVyZVR5cGUgK1xuICAgIFREYXRhU2V0RXZlbnRUeXBlICtcbiAgICBURGF0YVNldFN0YXRlICtcbiAgICBURGF0ZUZvcm1hdFR5cGUgK1xuICAgIFREYXRlT2Zmc2V0VHlwZSArXG4gICAgVERhdGVUaW1lS2luZCArXG4gICAgVERlYUFjY2Vzc1JpZ2h0cyArXG4gICAgVERvY3VtZW50RGVmYXVsdEFjdGlvbiArXG4gICAgVEVkaXRNb2RlICtcbiAgICBURWRpdG9yQ2xvc2VPYnNlcnZUeXBlICtcbiAgICBURWRtc0FwcGxpY2F0aW9uQWN0aW9uICtcbiAgICBURURvY3VtZW50TG9ja1R5cGUgK1xuICAgIFRFRG9jdW1lbnRTdGVwU2hvd01vZGUgK1xuICAgIFRFRG9jdW1lbnRTdGVwVmVyc2lvblR5cGUgK1xuICAgIFRFRG9jdW1lbnRTdG9yYWdlRnVuY3Rpb24gK1xuICAgIFRFRG9jdW1lbnRTdG9yYWdlVHlwZSArXG4gICAgVEVEb2N1bWVudFZlcnNpb25Tb3VyY2VUeXBlICtcbiAgICBURURvY3VtZW50VmVyc2lvblN0YXRlICtcbiAgICBURW5jb2RlVHlwZSArXG4gICAgVEV4Y2VwdGlvbkNhdGVnb3J5ICtcbiAgICBURXhwb3J0ZWRTaWduYXR1cmVzVHlwZSArXG4gICAgVEV4cG9ydGVkVmVyc2lvblR5cGUgK1xuICAgIFRGaWVsZERhdGFUeXBlICtcbiAgICBURm9sZGVyVHlwZSArXG4gICAgVEdyaWRSb3dIZWlnaHQgK1xuICAgIFRIeXBlcmxpbmtUeXBlICtcbiAgICBUSW1hZ2VGaWxlRm9ybWF0ICtcbiAgICBUSW1hZ2VNb2RlICtcbiAgICBUSW1hZ2VUeXBlICtcbiAgICBUSW5wbGFjZUhpbnRLaW5kICtcbiAgICBUSVNCTENvbnRleHQgK1xuICAgIFRJdGVtU2hvdyArXG4gICAgVEpvYktpbmQgK1xuICAgIFRKb2luVHlwZSArXG4gICAgVExhYmVsUG9zICtcbiAgICBUTGljZW5zaW5nVHlwZSArXG4gICAgVExpZmVDeWNsZVN0YWdlRm9udENvbG9yICtcbiAgICBUTGlmZUN5Y2xlU3RhZ2VGb250U3R5bGUgK1xuICAgIFRMb2NrYWJsZURldmVsb3BtZW50Q29tcG9uZW50VHlwZSArXG4gICAgVE1heFJlY29yZENvdW50UmVzdHJpY3Rpb25UeXBlICtcbiAgICBUUmFuZ2VWYWx1ZVR5cGUgK1xuICAgIFRSZWxhdGl2ZURhdGUgK1xuICAgIFRSZXBvcnREZXN0aW5hdGlvbiArXG4gICAgVFJlcURhdGFUeXBlICtcbiAgICBUUmVxdWlzaXRlRXZlbnRUeXBlICtcbiAgICBUU0JUaW1lVHlwZSArXG4gICAgVFNlYXJjaFNob3dNb2RlICtcbiAgICBUU2VsZWN0TW9kZSArXG4gICAgVFNpZ25hdHVyZVR5cGUgK1xuICAgIFRTaWduZXJDb250ZW50VHlwZSArXG4gICAgVFN0cmluZ3NTb3J0VHlwZSArXG4gICAgVFN0cmluZ1ZhbHVlVHlwZSArXG4gICAgVFN0cnVjdHVyZWRPYmplY3RBdHRyaWJ1dGVUeXBlICtcbiAgICBUVGFza0Fib3J0UmVhc29uICtcbiAgICBUVGV4dFZhbHVlVHlwZSArXG4gICAgVFVzZXJPYmplY3RTdGF0dXMgK1xuICAgIFRVc2VyVHlwZSArXG4gICAgVFZhbHVlc0J1aWxkVHlwZSArXG4gICAgVFZpZXdNb2RlICtcbiAgICBUVmlld1NlbGVjdGlvbk1vZGUgK1xuICAgIFRXaXphcmRBY3Rpb25UeXBlICtcbiAgICBUV2l6YXJkRm9ybUVsZW1lbnRQcm9wZXJ0eSArXG4gICAgVFdpemFyZEZvcm1FbGVtZW50VHlwZSArXG4gICAgVFdpemFyZFBhcmFtVHlwZSArXG4gICAgVFdpemFyZFN0ZXBSZXN1bHQgK1xuICAgIFRXaXphcmRTdGVwVHlwZSArXG4gICAgVFdvcmtBY2Nlc3NUeXBlICtcbiAgICBUV29ya2Zsb3dCbG9ja1R5cGUgK1xuICAgIFRXb3JrZmxvd0RhdGFUeXBlICtcbiAgICBUV29ya0ltcG9ydGFuY2UgK1xuICAgIFRXb3JrUm91dGVUeXBlICtcbiAgICBUV29ya1N0YXRlICtcbiAgICBUV29ya1RleHRCdWlsZGluZ01vZGU7XG5cbiAgLy8g0KHQuNGB0YLQtdC80L3Ri9C1INGE0YPQvdC60YbQuNC4ID09PiBTWVNGVU5DVElPTlNcbiAgdmFyIHN5c3RlbV9mdW5jdGlvbnMgPVxuICAgIFwiQWRkU3ViU3RyaW5nIFwiICtcbiAgICBcIkFkanVzdExpbmVCcmVha3MgXCIgK1xuICAgIFwiQW1vdW50SW5Xb3JkcyBcIiArXG4gICAgXCJBbmFseXNpcyBcIiArXG4gICAgXCJBcnJheURpbUNvdW50IFwiICtcbiAgICBcIkFycmF5SGlnaEJvdW5kIFwiICtcbiAgICBcIkFycmF5TG93Qm91bmQgXCIgK1xuICAgIFwiQXJyYXlPZiBcIiArXG4gICAgXCJBcnJheVJlRGltIFwiICtcbiAgICBcIkFzc2VydCBcIiArXG4gICAgXCJBc3NpZ25lZCBcIiArXG4gICAgXCJCZWdpbk9mTW9udGggXCIgK1xuICAgIFwiQmVnaW5PZlBlcmlvZCBcIiArXG4gICAgXCJCdWlsZFByb2ZpbGluZ09wZXJhdGlvbkFuYWx5c2lzIFwiICtcbiAgICBcIkNhbGxQcm9jZWR1cmUgXCIgK1xuICAgIFwiQ2FuUmVhZEZpbGUgXCIgK1xuICAgIFwiQ0FycmF5RWxlbWVudCBcIiArXG4gICAgXCJDRGF0YVNldFJlcXVpc2l0ZSBcIiArXG4gICAgXCJDaGFuZ2VEYXRlIFwiICtcbiAgICBcIkNoYW5nZVJlZmVyZW5jZURhdGFzZXQgXCIgK1xuICAgIFwiQ2hhciBcIiArXG4gICAgXCJDaGFyUG9zIFwiICtcbiAgICBcIkNoZWNrUGFyYW0gXCIgK1xuICAgIFwiQ2hlY2tQYXJhbVZhbHVlIFwiICtcbiAgICBcIkNvbXBhcmVTdHJpbmdzIFwiICtcbiAgICBcIkNvbnN0YW50RXhpc3RzIFwiICtcbiAgICBcIkNvbnRyb2xTdGF0ZSBcIiArXG4gICAgXCJDb252ZXJ0RGF0ZVN0ciBcIiArXG4gICAgXCJDb3B5IFwiICtcbiAgICBcIkNvcHlGaWxlIFwiICtcbiAgICBcIkNyZWF0ZUFycmF5IFwiICtcbiAgICBcIkNyZWF0ZUNhY2hlZFJlZmVyZW5jZSBcIiArXG4gICAgXCJDcmVhdGVDb25uZWN0aW9uIFwiICtcbiAgICBcIkNyZWF0ZURpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVEdWFsTGlzdERpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVFZGl0b3IgXCIgK1xuICAgIFwiQ3JlYXRlRXhjZXB0aW9uIFwiICtcbiAgICBcIkNyZWF0ZUZpbGUgXCIgK1xuICAgIFwiQ3JlYXRlRm9sZGVyRGlhbG9nIFwiICtcbiAgICBcIkNyZWF0ZUlucHV0RGlhbG9nIFwiICtcbiAgICBcIkNyZWF0ZUxpbmtGaWxlIFwiICtcbiAgICBcIkNyZWF0ZUxpc3QgXCIgK1xuICAgIFwiQ3JlYXRlTG9jayBcIiArXG4gICAgXCJDcmVhdGVNZW1vcnlEYXRhU2V0IFwiICtcbiAgICBcIkNyZWF0ZU9iamVjdCBcIiArXG4gICAgXCJDcmVhdGVPcGVuRGlhbG9nIFwiICtcbiAgICBcIkNyZWF0ZVByb2dyZXNzIFwiICtcbiAgICBcIkNyZWF0ZVF1ZXJ5IFwiICtcbiAgICBcIkNyZWF0ZVJlZmVyZW5jZSBcIiArXG4gICAgXCJDcmVhdGVSZXBvcnQgXCIgK1xuICAgIFwiQ3JlYXRlU2F2ZURpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVTY3JpcHQgXCIgK1xuICAgIFwiQ3JlYXRlU1FMUGl2b3RGdW5jdGlvbiBcIiArXG4gICAgXCJDcmVhdGVTdHJpbmdMaXN0IFwiICtcbiAgICBcIkNyZWF0ZVRyZWVMaXN0U2VsZWN0RGlhbG9nIFwiICtcbiAgICBcIkNTZWxlY3RTUUwgXCIgK1xuICAgIFwiQ1NRTCBcIiArXG4gICAgXCJDU3ViU3RyaW5nIFwiICtcbiAgICBcIkN1cnJlbnRVc2VySUQgXCIgK1xuICAgIFwiQ3VycmVudFVzZXJOYW1lIFwiICtcbiAgICBcIkN1cnJlbnRWZXJzaW9uIFwiICtcbiAgICBcIkRhdGFTZXRMb2NhdGVFeCBcIiArXG4gICAgXCJEYXRlRGlmZiBcIiArXG4gICAgXCJEYXRlVGltZURpZmYgXCIgK1xuICAgIFwiRGF0ZVRvU3RyIFwiICtcbiAgICBcIkRheU9mV2VlayBcIiArXG4gICAgXCJEZWxldGVGaWxlIFwiICtcbiAgICBcIkRpcmVjdG9yeUV4aXN0cyBcIiArXG4gICAgXCJEaXNhYmxlQ2hlY2tBY2Nlc3NSaWdodHMgXCIgK1xuICAgIFwiRGlzYWJsZUNoZWNrRnVsbFNob3dpbmdSZXN0cmljdGlvbiBcIiArXG4gICAgXCJEaXNhYmxlTWFzc1Rhc2tTZW5kaW5nUmVzdHJpY3Rpb25zIFwiICtcbiAgICBcIkRyb3BUYWJsZSBcIiArXG4gICAgXCJEdXBlU3RyaW5nIFwiICtcbiAgICBcIkVkaXRUZXh0IFwiICtcbiAgICBcIkVuYWJsZUNoZWNrQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIkVuYWJsZUNoZWNrRnVsbFNob3dpbmdSZXN0cmljdGlvbiBcIiArXG4gICAgXCJFbmFibGVNYXNzVGFza1NlbmRpbmdSZXN0cmljdGlvbnMgXCIgK1xuICAgIFwiRW5kT2ZNb250aCBcIiArXG4gICAgXCJFbmRPZlBlcmlvZCBcIiArXG4gICAgXCJFeGNlcHRpb25FeGlzdHMgXCIgK1xuICAgIFwiRXhjZXB0aW9uc09mZiBcIiArXG4gICAgXCJFeGNlcHRpb25zT24gXCIgK1xuICAgIFwiRXhlY3V0ZSBcIiArXG4gICAgXCJFeGVjdXRlUHJvY2VzcyBcIiArXG4gICAgXCJFeGl0IFwiICtcbiAgICBcIkV4cGFuZEVudmlyb25tZW50VmFyaWFibGVzIFwiICtcbiAgICBcIkV4dHJhY3RGaWxlRHJpdmUgXCIgK1xuICAgIFwiRXh0cmFjdEZpbGVFeHQgXCIgK1xuICAgIFwiRXh0cmFjdEZpbGVOYW1lIFwiICtcbiAgICBcIkV4dHJhY3RGaWxlUGF0aCBcIiArXG4gICAgXCJFeHRyYWN0UGFyYW1zIFwiICtcbiAgICBcIkZpbGVFeGlzdHMgXCIgK1xuICAgIFwiRmlsZVNpemUgXCIgK1xuICAgIFwiRmluZEZpbGUgXCIgK1xuICAgIFwiRmluZFN1YlN0cmluZyBcIiArXG4gICAgXCJGaXJtQ29udGV4dCBcIiArXG4gICAgXCJGb3JjZURpcmVjdG9yaWVzIFwiICtcbiAgICBcIkZvcm1hdCBcIiArXG4gICAgXCJGb3JtYXREYXRlIFwiICtcbiAgICBcIkZvcm1hdE51bWVyaWMgXCIgK1xuICAgIFwiRm9ybWF0U1FMRGF0ZSBcIiArXG4gICAgXCJGb3JtYXRTdHJpbmcgXCIgK1xuICAgIFwiRnJlZUV4Y2VwdGlvbiBcIiArXG4gICAgXCJHZXRDb21wb25lbnQgXCIgK1xuICAgIFwiR2V0Q29tcG9uZW50TGF1bmNoUGFyYW0gXCIgK1xuICAgIFwiR2V0Q29uc3RhbnQgXCIgK1xuICAgIFwiR2V0TGFzdEV4Y2VwdGlvbiBcIiArXG4gICAgXCJHZXRSZWZlcmVuY2VSZWNvcmQgXCIgK1xuICAgIFwiR2V0UmVmVHlwZUJ5UmVmSUQgXCIgK1xuICAgIFwiR2V0VGFibGVJRCBcIiArXG4gICAgXCJHZXRUZW1wRm9sZGVyIFwiICtcbiAgICBcIklmVGhlbiBcIiArXG4gICAgXCJJbiBcIiArXG4gICAgXCJJbmRleE9mIFwiICtcbiAgICBcIklucHV0RGlhbG9nIFwiICtcbiAgICBcIklucHV0RGlhbG9nRXggXCIgK1xuICAgIFwiSW50ZXJhY3RpdmVNb2RlIFwiICtcbiAgICBcIklzRmlsZUxvY2tlZCBcIiArXG4gICAgXCJJc0dyYXBoaWNGaWxlIFwiICtcbiAgICBcIklzTnVtZXJpYyBcIiArXG4gICAgXCJMZW5ndGggXCIgK1xuICAgIFwiTG9hZFN0cmluZyBcIiArXG4gICAgXCJMb2FkU3RyaW5nRm10IFwiICtcbiAgICBcIkxvY2FsVGltZVRvVVRDIFwiICtcbiAgICBcIkxvd2VyQ2FzZSBcIiArXG4gICAgXCJNYXggXCIgK1xuICAgIFwiTWVzc2FnZUJveCBcIiArXG4gICAgXCJNZXNzYWdlQm94RXggXCIgK1xuICAgIFwiTWltZURlY29kZUJpbmFyeSBcIiArXG4gICAgXCJNaW1lRGVjb2RlU3RyaW5nIFwiICtcbiAgICBcIk1pbWVFbmNvZGVCaW5hcnkgXCIgK1xuICAgIFwiTWltZUVuY29kZVN0cmluZyBcIiArXG4gICAgXCJNaW4gXCIgK1xuICAgIFwiTW9uZXlJbldvcmRzIFwiICtcbiAgICBcIk1vdmVGaWxlIFwiICtcbiAgICBcIk5ld0lEIFwiICtcbiAgICBcIk5vdyBcIiArXG4gICAgXCJPcGVuRmlsZSBcIiArXG4gICAgXCJPcmQgXCIgK1xuICAgIFwiUHJlY2lzaW9uIFwiICtcbiAgICBcIlJhaXNlIFwiICtcbiAgICBcIlJlYWRDZXJ0aWZpY2F0ZUZyb21GaWxlIFwiICtcbiAgICBcIlJlYWRGaWxlIFwiICtcbiAgICBcIlJlZmVyZW5jZUNvZGVCeUlEIFwiICtcbiAgICBcIlJlZmVyZW5jZU51bWJlciBcIiArXG4gICAgXCJSZWZlcmVuY2VSZXF1aXNpdGVNb2RlIFwiICtcbiAgICBcIlJlZmVyZW5jZVJlcXVpc2l0ZVZhbHVlIFwiICtcbiAgICBcIlJlZ2lvbkRhdGVTZXR0aW5ncyBcIiArXG4gICAgXCJSZWdpb25OdW1iZXJTZXR0aW5ncyBcIiArXG4gICAgXCJSZWdpb25UaW1lU2V0dGluZ3MgXCIgK1xuICAgIFwiUmVnUmVhZCBcIiArXG4gICAgXCJSZWdXcml0ZSBcIiArXG4gICAgXCJSZW5hbWVGaWxlIFwiICtcbiAgICBcIlJlcGxhY2UgXCIgK1xuICAgIFwiUm91bmQgXCIgK1xuICAgIFwiU2VsZWN0U2VydmVyQ29kZSBcIiArXG4gICAgXCJTZWxlY3RTUUwgXCIgK1xuICAgIFwiU2VydmVyRGF0ZVRpbWUgXCIgK1xuICAgIFwiU2V0Q29uc3RhbnQgXCIgK1xuICAgIFwiU2V0TWFuYWdlZEZvbGRlckZpZWxkc1N0YXRlIFwiICtcbiAgICBcIlNob3dDb25zdGFudHNJbnB1dERpYWxvZyBcIiArXG4gICAgXCJTaG93TWVzc2FnZSBcIiArXG4gICAgXCJTbGVlcCBcIiArXG4gICAgXCJTcGxpdCBcIiArXG4gICAgXCJTUUwgXCIgK1xuICAgIFwiU1FMMlhMU1RBQiBcIiArXG4gICAgXCJTUUxQcm9maWxpbmdTZW5kUmVwb3J0IFwiICtcbiAgICBcIlN0clRvRGF0ZSBcIiArXG4gICAgXCJTdWJTdHJpbmcgXCIgK1xuICAgIFwiU3ViU3RyaW5nQ291bnQgXCIgK1xuICAgIFwiU3lzdGVtU2V0dGluZyBcIiArXG4gICAgXCJUaW1lIFwiICtcbiAgICBcIlRpbWVEaWZmIFwiICtcbiAgICBcIlRvZGF5IFwiICtcbiAgICBcIlRyYW5zbGl0ZXJhdGUgXCIgK1xuICAgIFwiVHJpbSBcIiArXG4gICAgXCJVcHBlckNhc2UgXCIgK1xuICAgIFwiVXNlclN0YXR1cyBcIiArXG4gICAgXCJVVENUb0xvY2FsVGltZSBcIiArXG4gICAgXCJWYWxpZGF0ZVhNTCBcIiArXG4gICAgXCJWYXJJc0NsZWFyIFwiICtcbiAgICBcIlZhcklzRW1wdHkgXCIgK1xuICAgIFwiVmFySXNOdWxsIFwiICtcbiAgICBcIldvcmtUaW1lRGlmZiBcIiArXG4gICAgXCJXcml0ZUZpbGUgXCIgK1xuICAgIFwiV3JpdGVGaWxlRXggXCIgK1xuICAgIFwiV3JpdGVPYmplY3RIaXN0b3J5IFwiICtcbiAgICBcItCQ0L3QsNC70LjQtyBcIiArXG4gICAgXCLQkdCw0LfQsNCU0LDQvdC90YvRhSBcIiArXG4gICAgXCLQkdC70L7QutCV0YHRgtGMIFwiICtcbiAgICBcItCR0LvQvtC60JXRgdGC0YzQoNCw0YHRiCBcIiArXG4gICAgXCLQkdC70L7QutCY0L3RhNC+IFwiICtcbiAgICBcItCR0LvQvtC60KHQvdGP0YLRjCBcIiArXG4gICAgXCLQkdC70L7QutCh0L3Rj9GC0YzQoNCw0YHRiCBcIiArXG4gICAgXCLQkdC70L7QutCj0YHRgtCw0L3QvtCy0LjRgtGMIFwiICtcbiAgICBcItCS0LLQvtC0IFwiICtcbiAgICBcItCS0LLQvtC00JzQtdC90Y4gXCIgK1xuICAgIFwi0JLQtdC00KEgXCIgK1xuICAgIFwi0JLQtdC00KHQv9GAIFwiICtcbiAgICBcItCS0LXRgNGF0L3Rj9GP0JPRgNCw0L3QuNGG0LDQnNCw0YHRgdC40LLQsCBcIiArXG4gICAgXCLQktC90LXRiNCf0YDQvtCz0YAgXCIgK1xuICAgIFwi0JLQvtGB0YHRgiBcIiArXG4gICAgXCLQktGA0LXQvNC10L3QvdCw0Y/Qn9Cw0L/QutCwIFwiICtcbiAgICBcItCS0YDQtdC80Y8gXCIgK1xuICAgIFwi0JLRi9Cx0L7RgFNRTCBcIiArXG4gICAgXCLQktGL0LHRgNCw0YLRjNCX0LDQv9C40YHRjCBcIiArXG4gICAgXCLQktGL0LTQtdC70LjRgtGM0KHRgtGAIFwiICtcbiAgICBcItCS0YvQt9Cy0LDRgtGMIFwiICtcbiAgICBcItCS0YvQv9C+0LvQvdC40YLRjCBcIiArXG4gICAgXCLQktGL0L/Qn9GA0L7Qs9GAIFwiICtcbiAgICBcItCT0YDQsNGE0LjRh9C10YHQutC40LnQpNCw0LnQuyBcIiArXG4gICAgXCLQk9GA0YPQv9C/0LDQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3QviBcIiArXG4gICAgXCLQlNCw0YLQsNCS0YDQtdC80Y/QodC10YDQsiBcIiArXG4gICAgXCLQlNC10L3RjNCd0LXQtNC10LvQuCBcIiArXG4gICAgXCLQlNC40LDQu9C+0LPQlNCw0J3QtdGCIFwiICtcbiAgICBcItCU0LvQuNC90LDQodGC0YAgXCIgK1xuICAgIFwi0JTQvtCx0J/QvtC00YHRgtGAIFwiICtcbiAgICBcItCV0J/Rg9GB0YLQviBcIiArXG4gICAgXCLQldGB0LvQuNCi0L4gXCIgK1xuICAgIFwi0JXQp9C40YHQu9C+IFwiICtcbiAgICBcItCX0LDQvNCf0L7QtNGB0YLRgCBcIiArXG4gICAgXCLQl9Cw0L/QuNGB0YzQodC/0YDQsNCy0L7Rh9C90LjQutCwIFwiICtcbiAgICBcItCX0L3QsNGH0J/QvtC70Y/QodC/0YAgXCIgK1xuICAgIFwi0JjQlNCi0LjQv9Ch0L/RgCBcIiArXG4gICAgXCLQmNC30LLQu9C10YfRjNCU0LjRgdC6IFwiICtcbiAgICBcItCY0LfQstC70LXRh9GM0JjQvNGP0KTQsNC50LvQsCBcIiArXG4gICAgXCLQmNC30LLQu9C10YfRjNCf0YPRgtGMIFwiICtcbiAgICBcItCY0LfQstC70LXRh9GM0KDQsNGB0YjQuNGA0LXQvdC40LUgXCIgK1xuICAgIFwi0JjQt9C80JTQsNGCIFwiICtcbiAgICBcItCY0LfQvNC10L3QuNGC0YzQoNCw0LfQvNC10YDQnNCw0YHRgdC40LLQsCBcIiArXG4gICAgXCLQmNC30LzQtdGA0LXQvdC40LnQnNCw0YHRgdC40LLQsCBcIiArXG4gICAgXCLQmNC80Y/QntGA0LMgXCIgK1xuICAgIFwi0JjQvNGP0J/QvtC70Y/QodC/0YAgXCIgK1xuICAgIFwi0JjQvdC00LXQutGBIFwiICtcbiAgICBcItCY0L3QtNC40LrQsNGC0L7RgNCX0LDQutGA0YvRgtGMIFwiICtcbiAgICBcItCY0L3QtNC40LrQsNGC0L7RgNCe0YLQutGA0YvRgtGMIFwiICtcbiAgICBcItCY0L3QtNC40LrQsNGC0L7RgNCo0LDQsyBcIiArXG4gICAgXCLQmNC90YLQtdGA0LDQutGC0LjQstC90YvQudCg0LXQttC40LwgXCIgK1xuICAgIFwi0JjRgtC+0LPQotCx0LvQodC/0YAgXCIgK1xuICAgIFwi0JrQvtC00JLQuNC00JLQtdC00KHQv9GAIFwiICtcbiAgICBcItCa0L7QtNCS0LjQtNCh0L/RgNCf0L7QmNCUIFwiICtcbiAgICBcItCa0L7QtNCf0L5BbmFsaXQgXCIgK1xuICAgIFwi0JrQvtC00KHQuNC80LLQvtC70LAgXCIgK1xuICAgIFwi0JrQvtC00KHQv9GAIFwiICtcbiAgICBcItCa0L7Qu9Cf0L7QtNGB0YLRgCBcIiArXG4gICAgXCLQmtC+0LvQn9GA0L7QvyBcIiArXG4gICAgXCLQmtC+0L3QnNC10YEgXCIgK1xuICAgIFwi0JrQvtC90YHRgiBcIiArXG4gICAgXCLQmtC+0L3RgdGC0JXRgdGC0YwgXCIgK1xuICAgIFwi0JrQvtC90YHRgtCX0L3QsNGHIFwiICtcbiAgICBcItCa0L7QvdCi0YDQsNC9IFwiICtcbiAgICBcItCa0L7Qv9C40YDQvtCy0LDRgtGM0KTQsNC50LsgXCIgK1xuICAgIFwi0JrQvtC/0LjRj9Ch0YLRgCBcIiArXG4gICAgXCLQmtCf0LXRgNC40L7QtCBcIiArXG4gICAgXCLQmtCh0YLRgNCi0LHQu9Ch0L/RgCBcIiArXG4gICAgXCLQnNCw0LrRgSBcIiArXG4gICAgXCLQnNCw0LrRgdCh0YLRgNCi0LHQu9Ch0L/RgCBcIiArXG4gICAgXCLQnNCw0YHRgdC40LIgXCIgK1xuICAgIFwi0JzQtdC90Y4gXCIgK1xuICAgIFwi0JzQtdC90Y7QoNCw0YHRiCBcIiArXG4gICAgXCLQnNC40L0gXCIgK1xuICAgIFwi0J3QsNCx0L7RgNCU0LDQvdC90YvRhdCd0LDQudGC0LjQoNCw0YHRiCBcIiArXG4gICAgXCLQndCw0LjQvNCS0LjQtNCh0L/RgCBcIiArXG4gICAgXCLQndCw0LjQvNCf0L5BbmFsaXQgXCIgK1xuICAgIFwi0J3QsNC40LzQodC/0YAgXCIgK1xuICAgIFwi0J3QsNGB0YLRgNC+0LjRgtGM0J/QtdGA0LXQstC+0LTRi9Ch0YLRgNC+0LogXCIgK1xuICAgIFwi0J3QsNGH0JzQtdGBIFwiICtcbiAgICBcItCd0LDRh9Ci0YDQsNC9IFwiICtcbiAgICBcItCd0LjQttC90Y/Rj9CT0YDQsNC90LjRhtCw0JzQsNGB0YHQuNCy0LAgXCIgK1xuICAgIFwi0J3QvtC80LXRgNCh0L/RgCBcIiArXG4gICAgXCLQndCf0LXRgNC40L7QtCBcIiArXG4gICAgXCLQntC60L3QviBcIiArXG4gICAgXCLQntC60YAgXCIgK1xuICAgIFwi0J7QutGA0YPQttC10L3QuNC1IFwiICtcbiAgICBcItCe0YLQu9CY0L3RhNCU0L7QsdCw0LLQuNGC0YwgXCIgK1xuICAgIFwi0J7RgtC70JjQvdGE0KPQtNCw0LvQuNGC0YwgXCIgK1xuICAgIFwi0J7RgtGH0LXRgiBcIiArXG4gICAgXCLQntGC0YfQtdGC0JDQvdCw0LsgXCIgK1xuICAgIFwi0J7RgtGH0LXRgtCY0L3RgiBcIiArXG4gICAgXCLQn9Cw0L/QutCw0KHRg9GJ0LXRgdGC0LLRg9C10YIgXCIgK1xuICAgIFwi0J/QsNGD0LfQsCBcIiArXG4gICAgXCLQn9CS0YvQsdC+0YBTUUwgXCIgK1xuICAgIFwi0J/QtdGA0LXQuNC80LXQvdC+0LLQsNGC0YzQpNCw0LnQuyBcIiArXG4gICAgXCLQn9C10YDQtdC80LXQvdC90YvQtSBcIiArXG4gICAgXCLQn9C10YDQtdC80LXRgdGC0LjRgtGM0KTQsNC50LsgXCIgK1xuICAgIFwi0J/QvtC00YHRgtGAIFwiICtcbiAgICBcItCf0L7QuNGB0LrQn9C+0LTRgdGC0YAgXCIgK1xuICAgIFwi0J/QvtC40YHQutCh0YLRgCBcIiArXG4gICAgXCLQn9C+0LvRg9GH0LjRgtGM0JjQlNCi0LDQsdC70LjRhtGLIFwiICtcbiAgICBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNCU0L7Qv9C+0LvQvdC40YLQtdC70YzQvdC+IFwiICtcbiAgICBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNCY0JQgXCIgK1xuICAgIFwi0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0JjQvNGPIFwiICtcbiAgICBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNCh0YLQsNGC0YPRgSBcIiArXG4gICAgXCLQn9GA0LXRgNCy0LDRgtGMIFwiICtcbiAgICBcItCf0YDQvtCy0LXRgNC40YLRjNCf0LDRgNCw0LzQtdGC0YAgXCIgK1xuICAgIFwi0J/RgNC+0LLQtdGA0LjRgtGM0J/QsNGA0LDQvNC10YLRgNCX0L3QsNGHIFwiICtcbiAgICBcItCf0YDQvtCy0LXRgNC40YLRjNCj0YHQu9C+0LLQuNC1IFwiICtcbiAgICBcItCg0LDQt9Cx0KHRgtGAIFwiICtcbiAgICBcItCg0LDQt9C90JLRgNC10LzRjyBcIiArXG4gICAgXCLQoNCw0LfQvdCU0LDRgiBcIiArXG4gICAgXCLQoNCw0LfQvdCU0LDRgtCw0JLRgNC10LzRjyBcIiArXG4gICAgXCLQoNCw0LfQvdCg0LDQsdCS0YDQtdC80Y8gXCIgK1xuICAgIFwi0KDQtdCz0KPRgdGC0JLRgNC10LwgXCIgK1xuICAgIFwi0KDQtdCz0KPRgdGC0JTQsNGCIFwiICtcbiAgICBcItCg0LXQs9Cj0YHRgtCn0YHQuyBcIiArXG4gICAgXCLQoNC10LTQotC10LrRgdGCIFwiICtcbiAgICBcItCg0LXQtdGB0YLRgNCX0LDQv9C40YHRjCBcIiArXG4gICAgXCLQoNC10LXRgdGC0YDQodC/0LjRgdC+0LrQmNC80LXQvdCf0LDRgNCw0LwgXCIgK1xuICAgIFwi0KDQtdC10YHRgtGA0KfRgtC10L3QuNC1IFwiICtcbiAgICBcItCg0LXQutCy0KHQv9GAIFwiICtcbiAgICBcItCg0LXQutCy0KHQv9GA0J/RgCBcIiArXG4gICAgXCLQodC10LPQvtC00L3RjyBcIiArXG4gICAgXCLQodC10LnRh9Cw0YEgXCIgK1xuICAgIFwi0KHQtdGA0LLQtdGAIFwiICtcbiAgICBcItCh0LXRgNCy0LXRgNCf0YDQvtGG0LXRgdGB0JjQlCBcIiArXG4gICAgXCLQodC10YDRgtC40YTQuNC60LDRgtCk0LDQudC70KHRh9C40YLQsNGC0YwgXCIgK1xuICAgIFwi0KHQttCf0YDQvtCxIFwiICtcbiAgICBcItCh0LjQvNCy0L7QuyBcIiArXG4gICAgXCLQodC40YHRgtC10LzQsNCU0LjRgNC10LrRgtGD0LzQmtC+0LQgXCIgK1xuICAgIFwi0KHQuNGB0YLQtdC80LDQmNC90YTQvtGA0LzQsNGG0LjRjyBcIiArXG4gICAgXCLQodC40YHRgtC10LzQsNCa0L7QtCBcIiArXG4gICAgXCLQodC+0LTQtdGA0LbQuNGCIFwiICtcbiAgICBcItCh0L7QtdC00LjQvdC10L3QuNC10JfQsNC60YDRi9GC0YwgXCIgK1xuICAgIFwi0KHQvtC10LTQuNC90LXQvdC40LXQntGC0LrRgNGL0YLRjCBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7QsyBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7Qs9CS0YvQsdC+0YDQsNCY0LfQlNCy0YPRhdCh0L/QuNGB0LrQvtCyIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JTQuNCw0LvQvtCz0JLRi9Cx0L7RgNCw0J/QsNC/0LrQuCBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7Qs9Ce0YLQutGA0YvRgtC40Y/QpNCw0LnQu9CwIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JTQuNCw0LvQvtCz0KHQvtGF0YDQsNC90LXQvdC40Y/QpNCw0LnQu9CwIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JfQsNC/0YDQvtGBIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JjQvdC00LjQutCw0YLQvtGAIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JjRgdC60LvRjtGH0LXQvdC40LUgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQmtGN0YjQuNGA0L7QstCw0L3QvdGL0LnQodC/0YDQsNCy0L7Rh9C90LjQuiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCc0LDRgdGB0LjQsiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCd0LDQsdC+0YDQlNCw0L3QvdGL0YUgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQntCx0YrQtdC60YIgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQntGC0YfQtdGCIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0J/QsNC/0LrRgyBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCg0LXQtNCw0LrRgtC+0YAgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQodC+0LXQtNC40L3QtdC90LjQtSBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCh0L/QuNGB0L7QuiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCh0L/QuNGB0L7QutCh0YLRgNC+0LogXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQodC/0YDQsNCy0L7Rh9C90LjQuiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCh0YbQtdC90LDRgNC40LkgXCIgK1xuICAgIFwi0KHQvtC30LTQodC/0YAgXCIgK1xuICAgIFwi0KHQvtGB0YLQodC/0YAgXCIgK1xuICAgIFwi0KHQvtGF0YAgXCIgK1xuICAgIFwi0KHQvtGF0YDQodC/0YAgXCIgK1xuICAgIFwi0KHQv9C40YHQvtC60KHQuNGB0YLQtdC8IFwiICtcbiAgICBcItCh0L/RgCBcIiArXG4gICAgXCLQodC/0YDQsNCy0L7Rh9C90LjQuiBcIiArXG4gICAgXCLQodC/0YDQkdC70L7QutCV0YHRgtGMIFwiICtcbiAgICBcItCh0L/RgNCR0LvQvtC60KHQvdGP0YLRjCBcIiArXG4gICAgXCLQodC/0YDQkdC70L7QutCh0L3Rj9GC0YzQoNCw0YHRiCBcIiArXG4gICAgXCLQodC/0YDQkdC70L7QutCj0YHRgtCw0L3QvtCy0LjRgtGMIFwiICtcbiAgICBcItCh0L/RgNCY0LfQvNCd0LDQsdCU0LDQvSBcIiArXG4gICAgXCLQodC/0YDQmtC+0LQgXCIgK1xuICAgIFwi0KHQv9GA0J3QvtC80LXRgCBcIiArXG4gICAgXCLQodC/0YDQntCx0L3QvtCy0LjRgtGMIFwiICtcbiAgICBcItCh0L/RgNCe0YLQutGA0YvRgtGMIFwiICtcbiAgICBcItCh0L/RgNCe0YLQvNC10L3QuNGC0YwgXCIgK1xuICAgIFwi0KHQv9GA0J/QsNGA0LDQvCBcIiArXG4gICAgXCLQodC/0YDQn9C+0LvQtdCX0L3QsNGHIFwiICtcbiAgICBcItCh0L/RgNCf0L7Qu9C10JjQvNGPIFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCyIFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0JLQstC10LTQl9C9IFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0J3QvtCy0YvQtSBcIiArXG4gICAgXCLQodC/0YDQoNC10LrQstCf0YAgXCIgK1xuICAgIFwi0KHQv9GA0KDQtdC60LLQn9GA0LXQtNCX0L0gXCIgK1xuICAgIFwi0KHQv9GA0KDQtdC60LLQoNC10LbQuNC8IFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0KLQuNC/0KLQtdC60YHRgiBcIiArXG4gICAgXCLQodC/0YDQodC+0LfQtNCw0YLRjCBcIiArXG4gICAgXCLQodC/0YDQodC+0YHRgiBcIiArXG4gICAgXCLQodC/0YDQodC+0YXRgNCw0L3QuNGC0YwgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70JjRgtC+0LMgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGAIFwiICtcbiAgICBcItCh0L/RgNCi0LHQu9Ch0YLRgNCa0L7QuyBcIiArXG4gICAgXCLQodC/0YDQotCx0LvQodGC0YDQnNCw0LrRgSBcIiArXG4gICAgXCLQodC/0YDQotCx0LvQodGC0YDQnNC40L0gXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0J/RgNC10LQgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0KHQu9C10LQgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0KHQvtC30LQgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0KPQtCBcIiArXG4gICAgXCLQodC/0YDQotC10LrQn9GA0LXQtNGB0YIgXCIgK1xuICAgIFwi0KHQv9GA0KPQtNCw0LvQuNGC0YwgXCIgK1xuICAgIFwi0KHRgNCw0LLQvdC40YLRjNCh0YLRgCBcIiArXG4gICAgXCLQodGC0YDQktC10YDRhdCg0LXQs9C40YHRgtGAIFwiICtcbiAgICBcItCh0YLRgNCd0LjQttC90KDQtdCz0LjRgdGC0YAgXCIgK1xuICAgIFwi0KHRgtGA0KLQsdC70KHQv9GAIFwiICtcbiAgICBcItCh0YPQvNCf0YDQvtC/IFwiICtcbiAgICBcItCh0YbQtdC90LDRgNC40LkgXCIgK1xuICAgIFwi0KHRhtC10L3QsNGA0LjQudCf0LDRgNCw0LwgXCIgK1xuICAgIFwi0KLQtdC60JLQtdGA0YHQuNGPIFwiICtcbiAgICBcItCi0LXQutCe0YDQsyBcIiArXG4gICAgXCLQotC+0YfQvSBcIiArXG4gICAgXCLQotGA0LDQvSBcIiArXG4gICAgXCLQotGA0LDQvdGB0LvQuNGC0LXRgNCw0YbQuNGPIFwiICtcbiAgICBcItCj0LTQsNC70LjRgtGM0KLQsNCx0LvQuNGG0YMgXCIgK1xuICAgIFwi0KPQtNCw0LvQuNGC0YzQpNCw0LnQuyBcIiArXG4gICAgXCLQo9C00KHQv9GAIFwiICtcbiAgICBcItCj0LTQodGC0YDQotCx0LvQodC/0YAgXCIgK1xuICAgIFwi0KPRgdGCIFwiICtcbiAgICBcItCj0YHRgtCw0L3QvtCy0LrQuNCa0L7QvdGB0YLQsNC90YIgXCIgK1xuICAgIFwi0KTQsNC50LvQkNGC0YDQuNCx0YPRgtCh0YfQuNGC0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JDRgtGA0LjQsdGD0YLQo9GB0YLQsNC90L7QstC40YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9CS0YDQtdC80Y8gXCIgK1xuICAgIFwi0KTQsNC50LvQktGA0LXQvNGP0KPRgdGC0LDQvdC+0LLQuNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQktGL0LHRgNCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9CX0LDQvdGP0YIgXCIgK1xuICAgIFwi0KTQsNC50LvQl9Cw0L/QuNGB0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JjRgdC60LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JrQvtC/0LjRgNC+0LLQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQnNC+0LbQvdC+0KfQuNGC0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70J7RgtC60YDRi9GC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQn9C10YDQtdC40LzQtdC90L7QstCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Cf0LXRgNC10LrQvtC00LjRgNC+0LLQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQn9C10YDQtdC80LXRgdGC0LjRgtGMIFwiICtcbiAgICBcItCk0LDQudC70J/RgNC+0YHQvNC+0YLRgNC10YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Cg0LDQt9C80LXRgCBcIiArXG4gICAgXCLQpNCw0LnQu9Ch0L7Qt9C00LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70KHRgdGL0LvQutCw0KHQvtC30LTQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQodGD0YnQtdGB0YLQstGD0LXRgiBcIiArXG4gICAgXCLQpNCw0LnQu9Ch0YfQuNGC0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70KPQtNCw0LvQuNGC0YwgXCIgK1xuICAgIFwi0KTQvNGCU1FM0JTQsNGCIFwiICtcbiAgICBcItCk0LzRgtCU0LDRgiBcIiArXG4gICAgXCLQpNC80YLQodGC0YAgXCIgK1xuICAgIFwi0KTQvNGC0KfRgdC7IFwiICtcbiAgICBcItCk0L7RgNC80LDRgiBcIiArXG4gICAgXCLQptCc0LDRgdGB0LjQstCt0LvQtdC80LXQvdGCIFwiICtcbiAgICBcItCm0J3QsNCx0L7RgNCU0LDQvdC90YvRhdCg0LXQutCy0LjQt9C40YIgXCIgK1xuICAgIFwi0KbQn9C+0LTRgdGC0YAgXCI7XG5cbiAgLy8g0J/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdGL0LUg0L/QtdGA0LXQvNC10L3QvdGL0LUgPT0+IGJ1aWx0X2luXG4gIHZhciBwcmVkZWZpbmVkX3ZhcmlhYmxlcyA9XG4gICAgXCJBbHRTdGF0ZSBcIiArXG4gICAgXCJBcHBsaWNhdGlvbiBcIiArXG4gICAgXCJDYWxsVHlwZSBcIiArXG4gICAgXCJDb21wb25lbnRUb2tlbnMgXCIgK1xuICAgIFwiQ3JlYXRlZEpvYnMgXCIgK1xuICAgIFwiQ3JlYXRlZE5vdGljZXMgXCIgK1xuICAgIFwiQ29udHJvbFN0YXRlIFwiICtcbiAgICBcIkRpYWxvZ1Jlc3VsdCBcIiArXG4gICAgXCJEaWFsb2dzIFwiICtcbiAgICBcIkVEb2N1bWVudHMgXCIgK1xuICAgIFwiRURvY3VtZW50VmVyc2lvblNvdXJjZSBcIiArXG4gICAgXCJGb2xkZXJzIFwiICtcbiAgICBcIkdsb2JhbElEcyBcIiArXG4gICAgXCJKb2IgXCIgK1xuICAgIFwiSm9icyBcIiArXG4gICAgXCJJbnB1dFZhbHVlIFwiICtcbiAgICBcIkxvb2tVcFJlZmVyZW5jZSBcIiArXG4gICAgXCJMb29rVXBSZXF1aXNpdGVOYW1lcyBcIiArXG4gICAgXCJMb29rVXBTZWFyY2ggXCIgK1xuICAgIFwiT2JqZWN0IFwiICtcbiAgICBcIlBhcmVudENvbXBvbmVudCBcIiArXG4gICAgXCJQcm9jZXNzZXMgXCIgK1xuICAgIFwiUmVmZXJlbmNlcyBcIiArXG4gICAgXCJSZXF1aXNpdGUgXCIgK1xuICAgIFwiUmVwb3J0TmFtZSBcIiArXG4gICAgXCJSZXBvcnRzIFwiICtcbiAgICBcIlJlc3VsdCBcIiArXG4gICAgXCJTY3JpcHRzIFwiICtcbiAgICBcIlNlYXJjaGVzIFwiICtcbiAgICBcIlNlbGVjdGVkQXR0YWNobWVudHMgXCIgK1xuICAgIFwiU2VsZWN0ZWRJdGVtcyBcIiArXG4gICAgXCJTZWxlY3RNb2RlIFwiICtcbiAgICBcIlNlbmRlciBcIiArXG4gICAgXCJTZXJ2ZXJFdmVudHMgXCIgK1xuICAgIFwiU2VydmljZUZhY3RvcnkgXCIgK1xuICAgIFwiU2hpZnRTdGF0ZSBcIiArXG4gICAgXCJTdWJUYXNrIFwiICtcbiAgICBcIlN5c3RlbURpYWxvZ3MgXCIgK1xuICAgIFwiVGFza3MgXCIgK1xuICAgIFwiV2l6YXJkIFwiICtcbiAgICBcIldpemFyZHMgXCIgK1xuICAgIFwiV29yayBcIiArXG4gICAgXCLQktGL0LfQvtCy0KHQv9C+0YHQvtCxIFwiICtcbiAgICBcItCY0LzRj9Ce0YLRh9C10YLQsCBcIiArXG4gICAgXCLQoNC10LrQstCX0L3QsNGHIFwiO1xuXG4gIC8vINCY0L3RgtC10YDRhNC10LnRgdGLID09PiB0eXBlXG4gIHZhciBpbnRlcmZhY2VzID1cbiAgICBcIklBcHBsaWNhdGlvbiBcIiArXG4gICAgXCJJQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIklBY2NvdW50UmVwb3NpdG9yeSBcIiArXG4gICAgXCJJQWNjb3VudFNlbGVjdGlvblJlc3RyaWN0aW9ucyBcIiArXG4gICAgXCJJQWN0aW9uIFwiICtcbiAgICBcIklBY3Rpb25MaXN0IFwiICtcbiAgICBcIklBZG1pbmlzdHJhdGlvbkhpc3RvcnlEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJQW5jaG9ycyBcIiArXG4gICAgXCJJQXBwbGljYXRpb24gXCIgK1xuICAgIFwiSUFyY2hpdmVJbmZvIFwiICtcbiAgICBcIklBdHRhY2htZW50IFwiICtcbiAgICBcIklBdHRhY2htZW50TGlzdCBcIiArXG4gICAgXCJJQ2hlY2tMaXN0Qm94IFwiICtcbiAgICBcIklDaGVja1BvaW50ZWRMaXN0IFwiICtcbiAgICBcIklDb2x1bW4gXCIgK1xuICAgIFwiSUNvbXBvbmVudCBcIiArXG4gICAgXCJJQ29tcG9uZW50RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSUNvbXBvbmVudFRva2VuIFwiICtcbiAgICBcIklDb21wb25lbnRUb2tlbkZhY3RvcnkgXCIgK1xuICAgIFwiSUNvbXBvbmVudFRva2VuSW5mbyBcIiArXG4gICAgXCJJQ29tcFJlY29yZEluZm8gXCIgK1xuICAgIFwiSUNvbm5lY3Rpb24gXCIgK1xuICAgIFwiSUNvbnRlbnRzIFwiICtcbiAgICBcIklDb250cm9sIFwiICtcbiAgICBcIklDb250cm9sSm9iIFwiICtcbiAgICBcIklDb250cm9sSm9iSW5mbyBcIiArXG4gICAgXCJJQ29udHJvbExpc3QgXCIgK1xuICAgIFwiSUNyeXB0byBcIiArXG4gICAgXCJJQ3J5cHRvMiBcIiArXG4gICAgXCJJQ3VzdG9tSm9iIFwiICtcbiAgICBcIklDdXN0b21Kb2JJbmZvIFwiICtcbiAgICBcIklDdXN0b21MaXN0Qm94IFwiICtcbiAgICBcIklDdXN0b21PYmplY3RXaXphcmRTdGVwIFwiICtcbiAgICBcIklDdXN0b21Xb3JrIFwiICtcbiAgICBcIklDdXN0b21Xb3JrSW5mbyBcIiArXG4gICAgXCJJRGF0YVNldCBcIiArXG4gICAgXCJJRGF0YVNldEFjY2Vzc0luZm8gXCIgK1xuICAgIFwiSURhdGFTaWduZXIgXCIgK1xuICAgIFwiSURhdGVDcml0ZXJpb24gXCIgK1xuICAgIFwiSURhdGVSZXF1aXNpdGUgXCIgK1xuICAgIFwiSURhdGVSZXF1aXNpdGVEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJRGF0ZVZhbHVlIFwiICtcbiAgICBcIklEZWFBY2Nlc3NSaWdodHMgXCIgK1xuICAgIFwiSURlYU9iamVjdEluZm8gXCIgK1xuICAgIFwiSURldmVsb3BtZW50Q29tcG9uZW50TG9jayBcIiArXG4gICAgXCJJRGlhbG9nIFwiICtcbiAgICBcIklEaWFsb2dGYWN0b3J5IFwiICtcbiAgICBcIklEaWFsb2dQaWNrUmVxdWlzaXRlSXRlbXMgXCIgK1xuICAgIFwiSURpYWxvZ3NGYWN0b3J5IFwiICtcbiAgICBcIklESUNTRmFjdG9yeSBcIiArXG4gICAgXCJJRG9jUmVxdWlzaXRlIFwiICtcbiAgICBcIklEb2N1bWVudEluZm8gXCIgK1xuICAgIFwiSUR1YWxMaXN0RGlhbG9nIFwiICtcbiAgICBcIklFQ2VydGlmaWNhdGUgXCIgK1xuICAgIFwiSUVDZXJ0aWZpY2F0ZUluZm8gXCIgK1xuICAgIFwiSUVDZXJ0aWZpY2F0ZXMgXCIgK1xuICAgIFwiSUVkaXRDb250cm9sIFwiICtcbiAgICBcIklFZGl0b3JGb3JtIFwiICtcbiAgICBcIklFZG1zRXhwbG9yZXIgXCIgK1xuICAgIFwiSUVkbXNPYmplY3QgXCIgK1xuICAgIFwiSUVkbXNPYmplY3REZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJRWRtc09iamVjdEZhY3RvcnkgXCIgK1xuICAgIFwiSUVkbXNPYmplY3RJbmZvIFwiICtcbiAgICBcIklFRG9jdW1lbnQgXCIgK1xuICAgIFwiSUVEb2N1bWVudEFjY2Vzc1JpZ2h0cyBcIiArXG4gICAgXCJJRURvY3VtZW50RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSUVEb2N1bWVudEVkaXRvciBcIiArXG4gICAgXCJJRURvY3VtZW50RmFjdG9yeSBcIiArXG4gICAgXCJJRURvY3VtZW50SW5mbyBcIiArXG4gICAgXCJJRURvY3VtZW50U3RvcmFnZSBcIiArXG4gICAgXCJJRURvY3VtZW50VmVyc2lvbiBcIiArXG4gICAgXCJJRURvY3VtZW50VmVyc2lvbkxpc3REaWFsb2cgXCIgK1xuICAgIFwiSUVEb2N1bWVudFZlcnNpb25Tb3VyY2UgXCIgK1xuICAgIFwiSUVEb2N1bWVudFdpemFyZFN0ZXAgXCIgK1xuICAgIFwiSUVEb2NWZXJTaWduYXR1cmUgXCIgK1xuICAgIFwiSUVEb2NWZXJzaW9uU3RhdGUgXCIgK1xuICAgIFwiSUVuYWJsZWRNb2RlIFwiICtcbiAgICBcIklFbmNvZGVQcm92aWRlciBcIiArXG4gICAgXCJJRW5jcnlwdGVyIFwiICtcbiAgICBcIklFdmVudCBcIiArXG4gICAgXCJJRXZlbnRMaXN0IFwiICtcbiAgICBcIklFeGNlcHRpb24gXCIgK1xuICAgIFwiSUV4dGVybmFsRXZlbnRzIFwiICtcbiAgICBcIklFeHRlcm5hbEhhbmRsZXIgXCIgK1xuICAgIFwiSUZhY3RvcnkgXCIgK1xuICAgIFwiSUZpZWxkIFwiICtcbiAgICBcIklGaWxlRGlhbG9nIFwiICtcbiAgICBcIklGb2xkZXIgXCIgK1xuICAgIFwiSUZvbGRlckRlc2NyaXB0aW9uIFwiICtcbiAgICBcIklGb2xkZXJEaWFsb2cgXCIgK1xuICAgIFwiSUZvbGRlckZhY3RvcnkgXCIgK1xuICAgIFwiSUZvbGRlckluZm8gXCIgK1xuICAgIFwiSUZvckVhY2ggXCIgK1xuICAgIFwiSUZvcm0gXCIgK1xuICAgIFwiSUZvcm1UaXRsZSBcIiArXG4gICAgXCJJRm9ybVdpemFyZFN0ZXAgXCIgK1xuICAgIFwiSUdsb2JhbElERmFjdG9yeSBcIiArXG4gICAgXCJJR2xvYmFsSURJbmZvIFwiICtcbiAgICBcIklHcmlkIFwiICtcbiAgICBcIklIYXNoZXIgXCIgK1xuICAgIFwiSUhpc3RvcnlEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJSHlwZXJMaW5rQ29udHJvbCBcIiArXG4gICAgXCJJSW1hZ2VCdXR0b24gXCIgK1xuICAgIFwiSUltYWdlQ29udHJvbCBcIiArXG4gICAgXCJJSW5uZXJQYW5lbCBcIiArXG4gICAgXCJJSW5wbGFjZUhpbnQgXCIgK1xuICAgIFwiSUludGVnZXJDcml0ZXJpb24gXCIgK1xuICAgIFwiSUludGVnZXJMaXN0IFwiICtcbiAgICBcIklJbnRlZ2VyUmVxdWlzaXRlIFwiICtcbiAgICBcIklJbnRlZ2VyVmFsdWUgXCIgK1xuICAgIFwiSUlTQkxFZGl0b3JGb3JtIFwiICtcbiAgICBcIklKb2IgXCIgK1xuICAgIFwiSUpvYkRlc2NyaXB0aW9uIFwiICtcbiAgICBcIklKb2JGYWN0b3J5IFwiICtcbiAgICBcIklKb2JGb3JtIFwiICtcbiAgICBcIklKb2JJbmZvIFwiICtcbiAgICBcIklMYWJlbENvbnRyb2wgXCIgK1xuICAgIFwiSUxhcmdlSW50ZWdlckNyaXRlcmlvbiBcIiArXG4gICAgXCJJTGFyZ2VJbnRlZ2VyUmVxdWlzaXRlIFwiICtcbiAgICBcIklMYXJnZUludGVnZXJWYWx1ZSBcIiArXG4gICAgXCJJTGljZW5zZUluZm8gXCIgK1xuICAgIFwiSUxpZmVDeWNsZVN0YWdlIFwiICtcbiAgICBcIklMaXN0IFwiICtcbiAgICBcIklMaXN0Qm94IFwiICtcbiAgICBcIklMb2NhbElESW5mbyBcIiArXG4gICAgXCJJTG9jYWxpemF0aW9uIFwiICtcbiAgICBcIklMb2NrIFwiICtcbiAgICBcIklNZW1vcnlEYXRhU2V0IFwiICtcbiAgICBcIklNZXNzYWdpbmdGYWN0b3J5IFwiICtcbiAgICBcIklNZXRhZGF0YVJlcG9zaXRvcnkgXCIgK1xuICAgIFwiSU5vdGljZSBcIiArXG4gICAgXCJJTm90aWNlSW5mbyBcIiArXG4gICAgXCJJTnVtZXJpY0NyaXRlcmlvbiBcIiArXG4gICAgXCJJTnVtZXJpY1JlcXVpc2l0ZSBcIiArXG4gICAgXCJJTnVtZXJpY1ZhbHVlIFwiICtcbiAgICBcIklPYmplY3QgXCIgK1xuICAgIFwiSU9iamVjdERlc2NyaXB0aW9uIFwiICtcbiAgICBcIklPYmplY3RJbXBvcnRlciBcIiArXG4gICAgXCJJT2JqZWN0SW5mbyBcIiArXG4gICAgXCJJT2JzZXJ2ZXIgXCIgK1xuICAgIFwiSVBhbmVsR3JvdXAgXCIgK1xuICAgIFwiSVBpY2tDcml0ZXJpb24gXCIgK1xuICAgIFwiSVBpY2tQcm9wZXJ0eSBcIiArXG4gICAgXCJJUGlja1JlcXVpc2l0ZSBcIiArXG4gICAgXCJJUGlja1JlcXVpc2l0ZURlc2NyaXB0aW9uIFwiICtcbiAgICBcIklQaWNrUmVxdWlzaXRlSXRlbSBcIiArXG4gICAgXCJJUGlja1JlcXVpc2l0ZUl0ZW1zIFwiICtcbiAgICBcIklQaWNrVmFsdWUgXCIgK1xuICAgIFwiSVByaXZpbGVnZSBcIiArXG4gICAgXCJJUHJpdmlsZWdlTGlzdCBcIiArXG4gICAgXCJJUHJvY2VzcyBcIiArXG4gICAgXCJJUHJvY2Vzc0ZhY3RvcnkgXCIgK1xuICAgIFwiSVByb2Nlc3NNZXNzYWdlIFwiICtcbiAgICBcIklQcm9ncmVzcyBcIiArXG4gICAgXCJJUHJvcGVydHkgXCIgK1xuICAgIFwiSVByb3BlcnR5Q2hhbmdlRXZlbnQgXCIgK1xuICAgIFwiSVF1ZXJ5IFwiICtcbiAgICBcIklSZWZlcmVuY2UgXCIgK1xuICAgIFwiSVJlZmVyZW5jZUNyaXRlcmlvbiBcIiArXG4gICAgXCJJUmVmZXJlbmNlRW5hYmxlZE1vZGUgXCIgK1xuICAgIFwiSVJlZmVyZW5jZUZhY3RvcnkgXCIgK1xuICAgIFwiSVJlZmVyZW5jZUhpc3RvcnlEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJUmVmZXJlbmNlSW5mbyBcIiArXG4gICAgXCJJUmVmZXJlbmNlUmVjb3JkQ2FyZFdpemFyZFN0ZXAgXCIgK1xuICAgIFwiSVJlZmVyZW5jZVJlcXVpc2l0ZURlc2NyaXB0aW9uIFwiICtcbiAgICBcIklSZWZlcmVuY2VzRmFjdG9yeSBcIiArXG4gICAgXCJJUmVmZXJlbmNlVmFsdWUgXCIgK1xuICAgIFwiSVJlZlJlcXVpc2l0ZSBcIiArXG4gICAgXCJJUmVwb3J0IFwiICtcbiAgICBcIklSZXBvcnRGYWN0b3J5IFwiICtcbiAgICBcIklSZXF1aXNpdGUgXCIgK1xuICAgIFwiSVJlcXVpc2l0ZURlc2NyaXB0aW9uIFwiICtcbiAgICBcIklSZXF1aXNpdGVEZXNjcmlwdGlvbkxpc3QgXCIgK1xuICAgIFwiSVJlcXVpc2l0ZUZhY3RvcnkgXCIgK1xuICAgIFwiSVJpY2hFZGl0IFwiICtcbiAgICBcIklSb3V0ZVN0ZXAgXCIgK1xuICAgIFwiSVJ1bGUgXCIgK1xuICAgIFwiSVJ1bGVMaXN0IFwiICtcbiAgICBcIklTY2hlbWVCbG9jayBcIiArXG4gICAgXCJJU2NyaXB0IFwiICtcbiAgICBcIklTY3JpcHRGYWN0b3J5IFwiICtcbiAgICBcIklTZWFyY2hDcml0ZXJpYSBcIiArXG4gICAgXCJJU2VhcmNoQ3JpdGVyaW9uIFwiICtcbiAgICBcIklTZWFyY2hEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJU2VhcmNoRmFjdG9yeSBcIiArXG4gICAgXCJJU2VhcmNoRm9sZGVySW5mbyBcIiArXG4gICAgXCJJU2VhcmNoRm9yT2JqZWN0RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVNlYXJjaFJlc3VsdFJlc3RyaWN0aW9ucyBcIiArXG4gICAgXCJJU2VjdXJlZENvbnRleHQgXCIgK1xuICAgIFwiSVNlbGVjdERpYWxvZyBcIiArXG4gICAgXCJJU2VydmVyRXZlbnQgXCIgK1xuICAgIFwiSVNlcnZlckV2ZW50RmFjdG9yeSBcIiArXG4gICAgXCJJU2VydmljZURpYWxvZyBcIiArXG4gICAgXCJJU2VydmljZUZhY3RvcnkgXCIgK1xuICAgIFwiSVNpZ25hdHVyZSBcIiArXG4gICAgXCJJU2lnblByb3ZpZGVyIFwiICtcbiAgICBcIklTaWduUHJvdmlkZXIyIFwiICtcbiAgICBcIklTaWduUHJvdmlkZXIzIFwiICtcbiAgICBcIklTaW1wbGVDcml0ZXJpb24gXCIgK1xuICAgIFwiSVN0cmluZ0NyaXRlcmlvbiBcIiArXG4gICAgXCJJU3RyaW5nTGlzdCBcIiArXG4gICAgXCJJU3RyaW5nUmVxdWlzaXRlIFwiICtcbiAgICBcIklTdHJpbmdSZXF1aXNpdGVEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJU3RyaW5nVmFsdWUgXCIgK1xuICAgIFwiSVN5c3RlbURpYWxvZ3NGYWN0b3J5IFwiICtcbiAgICBcIklTeXN0ZW1JbmZvIFwiICtcbiAgICBcIklUYWJTaGVldCBcIiArXG4gICAgXCJJVGFzayBcIiArXG4gICAgXCJJVGFza0Fib3J0UmVhc29uSW5mbyBcIiArXG4gICAgXCJJVGFza0NhcmRXaXphcmRTdGVwIFwiICtcbiAgICBcIklUYXNrRGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVRhc2tGYWN0b3J5IFwiICtcbiAgICBcIklUYXNrSW5mbyBcIiArXG4gICAgXCJJVGFza1JvdXRlIFwiICtcbiAgICBcIklUZXh0Q3JpdGVyaW9uIFwiICtcbiAgICBcIklUZXh0UmVxdWlzaXRlIFwiICtcbiAgICBcIklUZXh0VmFsdWUgXCIgK1xuICAgIFwiSVRyZWVMaXN0U2VsZWN0RGlhbG9nIFwiICtcbiAgICBcIklVc2VyIFwiICtcbiAgICBcIklVc2VyTGlzdCBcIiArXG4gICAgXCJJVmFsdWUgXCIgK1xuICAgIFwiSVZpZXcgXCIgK1xuICAgIFwiSVdlYkJyb3dzZXJDb250cm9sIFwiICtcbiAgICBcIklXaXphcmQgXCIgK1xuICAgIFwiSVdpemFyZEFjdGlvbiBcIiArXG4gICAgXCJJV2l6YXJkRmFjdG9yeSBcIiArXG4gICAgXCJJV2l6YXJkRm9ybUVsZW1lbnQgXCIgK1xuICAgIFwiSVdpemFyZFBhcmFtIFwiICtcbiAgICBcIklXaXphcmRQaWNrUGFyYW0gXCIgK1xuICAgIFwiSVdpemFyZFJlZmVyZW5jZVBhcmFtIFwiICtcbiAgICBcIklXaXphcmRTdGVwIFwiICtcbiAgICBcIklXb3JrQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIklXb3JrRGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVdvcmtmbG93QXNrYWJsZVBhcmFtIFwiICtcbiAgICBcIklXb3JrZmxvd0Fza2FibGVQYXJhbXMgXCIgK1xuICAgIFwiSVdvcmtmbG93QmxvY2sgXCIgK1xuICAgIFwiSVdvcmtmbG93QmxvY2tSZXN1bHQgXCIgK1xuICAgIFwiSVdvcmtmbG93RW5hYmxlZE1vZGUgXCIgK1xuICAgIFwiSVdvcmtmbG93UGFyYW0gXCIgK1xuICAgIFwiSVdvcmtmbG93UGlja1BhcmFtIFwiICtcbiAgICBcIklXb3JrZmxvd1JlZmVyZW5jZVBhcmFtIFwiICtcbiAgICBcIklXb3JrU3RhdGUgXCIgK1xuICAgIFwiSVdvcmtUcmVlQ3VzdG9tTm9kZSBcIiArXG4gICAgXCJJV29ya1RyZWVKb2JOb2RlIFwiICtcbiAgICBcIklXb3JrVHJlZVRhc2tOb2RlIFwiICtcbiAgICBcIklYTUxFZGl0b3JGb3JtIFwiICtcbiAgICBcIlNCQ3J5cHRvIFwiO1xuXG4gIC8vIGJ1aWx0X2luIDog0LLRgdGC0YDQvtC10L3QvdGL0LUg0LjQu9C4INCx0LjQsdC70LjQvtGC0LXRh9C90YvQtSDQvtCx0YrQtdC60YLRiyAo0LrQvtC90YHRgtCw0L3RgtGLLCDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8pXG4gIHZhciBCVUlMVElOID0gQ09OU1RBTlRTICsgRU5VTVM7XG5cbiAgLy8gY2xhc3M6INCy0YHRgtGA0L7QtdC90L3Ri9C1INC90LDQsdC+0YDRiyDQt9C90LDRh9C10L3QuNC5LCDRgdC40YHRgtC10LzQvdGL0LUg0L7QsdGK0LXQutGC0YssINGE0LDQsdGA0LjQutC4XG4gIHZhciBDTEFTUyA9IHByZWRlZmluZWRfdmFyaWFibGVzO1xuXG4gIC8vIGxpdGVyYWwgOiDQv9GA0LjQvNC40YLQuNCy0L3Ri9C1INGC0LjQv9GLXG4gIHZhciBMSVRFUkFMID0gXCJudWxsIHRydWUgZmFsc2UgbmlsIFwiO1xuXG4gIC8vIG51bWJlciA6INGH0LjRgdC70LBcbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm51bWJlclwiLFxuICAgIGJlZ2luOiBobGpzLk5VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG5cbiAgLy8gc3RyaW5nIDog0YHRgtGA0L7QutC4XG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogXCJzdHJpbmdcIixcbiAgICB2YXJpYW50czogW3sgYmVnaW46ICdcIicsIGVuZDogJ1wiJyB9LCB7IGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIiB9XSxcbiAgfTtcblxuICAvLyDQotC+0LrQtdC90YtcbiAgdmFyIERPQ1RBR1MgPSB7XG4gICAgY2xhc3NOYW1lOiBcImRvY3RhZ1wiLFxuICAgIGJlZ2luOiBcIlxcXFxiKD86VE9ET3xET05FfEJFR0lOfEVORHxTVFVCfENIR3xGSVhNRXxOT1RFfEJVR3xYWFgpXFxcXGJcIixcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG5cbiAgLy8g0J7QtNC90L7RgdGC0YDQvtGH0L3Ri9C5INC60L7QvNC80LXQvdGC0LDRgNC40LlcbiAgdmFyIElTQkxfTElORV9DT01NRU5UX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiBcImNvbW1lbnRcIixcbiAgICBiZWdpbjogXCIvL1wiLFxuICAgIGVuZDogXCIkXCIsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5QSFJBU0FMX1dPUkRTX01PREUsIERPQ1RBR1NdLFxuICB9O1xuXG4gIC8vINCc0L3QvtCz0L7RgdGC0YDQvtGH0L3Ri9C5INC60L7QvNC80LXQvdGC0LDRgNC40LlcbiAgdmFyIElTQkxfQkxPQ0tfQ09NTUVOVF9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogXCJjb21tZW50XCIsXG4gICAgYmVnaW46IFwiL1xcXFwqXCIsXG4gICAgZW5kOiBcIlxcXFwqL1wiLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW2hsanMuUEhSQVNBTF9XT1JEU19NT0RFLCBET0NUQUdTXSxcbiAgfTtcblxuICAvLyBjb21tZW50IDog0LrQvtC80LzQtdC90YLQsNGA0LjQuFxuICB2YXIgQ09NTUVOVFMgPSB7XG4gICAgdmFyaWFudHM6IFtJU0JMX0xJTkVfQ09NTUVOVF9NT0RFLCBJU0JMX0JMT0NLX0NPTU1FTlRfTU9ERV0sXG4gIH07XG5cbiAgLy8ga2V5d29yZHMgOiDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LBcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6IEtFWVdPUkQsXG4gICAgYnVpbHRfaW46IEJVSUxUSU4sXG4gICAgY2xhc3M6IENMQVNTLFxuICAgIGxpdGVyYWw6IExJVEVSQUwsXG4gIH07XG5cbiAgLy8gbWV0aG9kcyA6INC80LXRgtC+0LTRi1xuICB2YXIgTUVUSE9EUyA9IHtcbiAgICBiZWdpbjogXCJcXFxcLlxcXFxzKlwiICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG5cbiAgLy8gdHlwZSA6INCy0YHRgtGA0L7QtdC90L3Ri9C1INGC0LjQv9GLXG4gIHZhciBUWVBFUyA9IHtcbiAgICBjbGFzc05hbWU6IFwidHlwZVwiLFxuICAgIGJlZ2luOiBcIjpbIFxcXFx0XSooXCIgKyBpbnRlcmZhY2VzLnRyaW0oKS5yZXBsYWNlKC9cXHMvZywgXCJ8XCIpICsgXCIpXCIsXG4gICAgZW5kOiBcIlsgXFxcXHRdKj1cIixcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICB9O1xuXG4gIC8vIHZhcmlhYmxlcyA6INC/0LXRgNC10LzQtdC90L3Ri9C1XG4gIHZhciBWQVJJQUJMRVMgPSB7XG4gICAgY2xhc3NOYW1lOiBcInZhcmlhYmxlXCIsXG4gICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgYmVnaW46IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbVFlQRVMsIE1FVEhPRFNdLFxuICB9O1xuXG4gIC8vINCY0LzQtdC90LAg0YTRg9C90LrRhtC40LlcbiAgdmFyIEZVTkNUSU9OX1RJVExFID0gRlVOQ1RJT05fTkFNRV9JREVOVF9SRSArIFwiXFxcXChcIjtcblxuICB2YXIgVElUTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6IFwidGl0bGVcIixcbiAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBidWlsdF9pbjogc3lzdGVtX2Z1bmN0aW9ucyxcbiAgICB9LFxuICAgIGJlZ2luOiBGVU5DVElPTl9USVRMRSxcbiAgICBlbmQ6IFwiXFxcXChcIixcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICB9O1xuXG4gIC8vIGZ1bmN0aW9uIDog0YTRg9C90LrRhtC40LhcbiAgdmFyIEZVTkNUSU9OUyA9IHtcbiAgICBjbGFzc05hbWU6IFwiZnVuY3Rpb25cIixcbiAgICBiZWdpbjogRlVOQ1RJT05fVElUTEUsXG4gICAgZW5kOiBcIlxcXFwpJFwiLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IFwiW1xcXFxbXFxcXF1cXFxcfFxcXFwkXFxcXD8lLH4jQF1cIixcbiAgICBjb250YWluczogW1RJVExFX01PREUsIE1FVEhPRFMsIFZBUklBQkxFUywgU1RSSU5HUywgTlVNQkVSUywgQ09NTUVOVFNdLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogW1wiaXNibFwiXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IFwiXFxcXCR8XFxcXD98JXwsfDskfH58I3xAfDwvXCIsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEZVTkNUSU9OUyxcbiAgICAgIFRZUEVTLFxuICAgICAgTUVUSE9EUyxcbiAgICAgIFZBUklBQkxFUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBOVU1CRVJTLFxuICAgICAgQ09NTUVOVFMsXG4gICAgXSxcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBKQVZBX0lERU5UX1JFID0gJ1tcXHUwMEMwLVxcdTAyQjhhLXpBLVpfJF1bXFx1MDBDMC1cXHUwMkI4YS16QS1aXyQwLTldKic7XG4gIHZhciBHRU5FUklDX0lERU5UX1JFID0gSkFWQV9JREVOVF9SRSArICcoPCcgKyBKQVZBX0lERU5UX1JFICsgJyhcXFxccyosXFxcXHMqJyArIEpBVkFfSURFTlRfUkUgKyAnKSo+KT8nO1xuICB2YXIgS0VZV09SRFMgPVxuICAgICdmYWxzZSBzeW5jaHJvbml6ZWQgaW50IGFic3RyYWN0IGZsb2F0IHByaXZhdGUgY2hhciBib29sZWFuIHZhciBzdGF0aWMgbnVsbCBpZiBjb25zdCAnICtcbiAgICAnZm9yIHRydWUgd2hpbGUgbG9uZyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHZvaWQgJyArXG4gICAgJ2VudW0gZWxzZSBicmVhayB0cmFuc2llbnQgY2F0Y2ggaW5zdGFuY2VvZiBieXRlIHN1cGVyIHZvbGF0aWxlIGNhc2UgYXNzZXJ0IHNob3J0ICcgK1xuICAgICdwYWNrYWdlIGRlZmF1bHQgZG91YmxlIHB1YmxpYyB0cnkgdGhpcyBzd2l0Y2ggY29udGludWUgdGhyb3dzIHByb3RlY3RlZCBwdWJsaWMgcHJpdmF0ZSAnICtcbiAgICAnbW9kdWxlIHJlcXVpcmVzIGV4cG9ydHMgZG8nO1xuXG4gIC8vIGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvdGVjaG5vdGVzL2d1aWRlcy9sYW5ndWFnZS91bmRlcnNjb3Jlcy1saXRlcmFscy5odG1sXG4gIHZhciBKQVZBX05VTUJFUl9SRSA9ICdcXFxcYicgK1xuICAgICcoJyArXG4gICAgICAnMFtiQl0oWzAxXStbMDFfXStbMDFdK3xbMDFdKyknICsgLy8gMGIuLi5cbiAgICAgICd8JyArXG4gICAgICAnMFt4WF0oW2EtZkEtRjAtOV0rW2EtZkEtRjAtOV9dK1thLWZBLUYwLTldK3xbYS1mQS1GMC05XSspJyArIC8vIDB4Li4uXG4gICAgICAnfCcgK1xuICAgICAgJygnICtcbiAgICAgICAgJyhbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKShcXFxcLihbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKSk/JyArXG4gICAgICAgICd8JyArXG4gICAgICAgICdcXFxcLihbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKScgK1xuICAgICAgJyknICtcbiAgICAgICcoW2VFXVstK10/XFxcXGQrKT8nICsgLy8gb2N0YWwsIGRlY2ltYWwsIGZsb2F0XG4gICAgJyknICtcbiAgICAnW2xMZkZdPyc7XG4gIHZhciBKQVZBX05VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IEpBVkFfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydqc3AnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLzxcXC98Iy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2UgOiAwLFxuICAgICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAvLyBlYXQgdXAgQCdzIGluIGVtYWlscyB0byBwcmV2ZW50IHRoZW0gdG8gYmUgcmVjb2duaXplZCBhcyBkb2N0YWdzXG4gICAgICAgICAgICAgIGJlZ2luOiAvXFx3K0AvLCByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbiA6ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6IC9bezs9XS8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgaWxsZWdhbDogL1s6XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIEV4cHJlc3Npb24ga2V5d29yZHMgcHJldmVudCAna2V5d29yZCBOYW1lKC4uLiknIGZyb20gYmVpbmdcbiAgICAgICAgLy8gcmVjb2duaXplZCBhcyBhIGZ1bmN0aW9uIGRlZmluaXRpb25cbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25ldyB0aHJvdyByZXR1cm4gZWxzZScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJygnICsgR0VORVJJQ19JREVOVF9SRSArICdcXFxccyspKycgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvW3s7PV0vLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIEpBVkFfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1tBLVphLXokX11bMC05QS1aYS16JF9dKic7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2luIG9mIGlmIGZvciB3aGlsZSBmaW5hbGx5IHZhciBuZXcgZnVuY3Rpb24gZG8gcmV0dXJuIHZvaWQgZWxzZSBicmVhayBjYXRjaCAnICtcbiAgICAgICdpbnN0YW5jZW9mIHdpdGggdGhyb3cgY2FzZSBkZWZhdWx0IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlICcgK1xuICAgICAgJ2xldCB5aWVsZCBjb25zdCBleHBvcnQgc3VwZXIgZGVidWdnZXIgYXMgYXN5bmMgYXdhaXQgc3RhdGljICcgK1xuICAgICAgLy8gRUNNQVNjcmlwdCA2IG1vZHVsZXMgaW1wb3J0XG4gICAgICAnaW1wb3J0IGZyb20gYXMnXG4gICAgLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBudWxsIHVuZGVmaW5lZCBOYU4gSW5maW5pdHknLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2V2YWwgaXNGaW5pdGUgaXNOYU4gcGFyc2VGbG9hdCBwYXJzZUludCBkZWNvZGVVUkkgZGVjb2RlVVJJQ29tcG9uZW50ICcgK1xuICAgICAgJ2VuY29kZVVSSSBlbmNvZGVVUklDb21wb25lbnQgZXNjYXBlIHVuZXNjYXBlIE9iamVjdCBGdW5jdGlvbiBCb29sZWFuIEVycm9yICcgK1xuICAgICAgJ0V2YWxFcnJvciBJbnRlcm5hbEVycm9yIFJhbmdlRXJyb3IgUmVmZXJlbmNlRXJyb3IgU3RvcEl0ZXJhdGlvbiBTeW50YXhFcnJvciAnICtcbiAgICAgICdUeXBlRXJyb3IgVVJJRXJyb3IgTnVtYmVyIE1hdGggRGF0ZSBTdHJpbmcgUmVnRXhwIEFycmF5IEZsb2F0MzJBcnJheSAnICtcbiAgICAgICdGbG9hdDY0QXJyYXkgSW50MTZBcnJheSBJbnQzMkFycmF5IEludDhBcnJheSBVaW50MTZBcnJheSBVaW50MzJBcnJheSAnICtcbiAgICAgICdVaW50OEFycmF5IFVpbnQ4Q2xhbXBlZEFycmF5IEFycmF5QnVmZmVyIERhdGFWaWV3IEpTT04gSW50bCBhcmd1bWVudHMgcmVxdWlyZSAnICtcbiAgICAgICdtb2R1bGUgY29uc29sZSB3aW5kb3cgZG9jdW1lbnQgU3ltYm9sIFNldCBNYXAgV2Vha1NldCBXZWFrTWFwIFByb3h5IFJlZmxlY3QgJyArXG4gICAgICAnUHJvbWlzZSdcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtiQl1bMDFdKyluPycgfSxcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwW29PXVswLTddKyluPycgfSxcbiAgICAgIHsgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgKyAnbj8nIH1cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ1xcXFx9JyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtdICAvLyBkZWZpbmVkIGxhdGVyXG4gIH07XG4gIHZhciBIVE1MX1RFTVBMQVRFID0ge1xuICAgIGJlZ2luOiAnaHRtbGAnLCBlbmQ6ICcnLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnYCcsIHJldHVybkVuZDogZmFsc2UsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgIFNVQlNUXG4gICAgICBdLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIH1cbiAgfTtcbiAgdmFyIENTU19URU1QTEFURSA9IHtcbiAgICBiZWdpbjogJ2Nzc2AnLCBlbmQ6ICcnLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnYCcsIHJldHVybkVuZDogZmFsc2UsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgIFNVQlNUXG4gICAgICBdLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICdjc3MnLFxuICAgIH1cbiAgfTtcbiAgdmFyIFRFTVBMQVRFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBTVUJTVFxuICAgIF1cbiAgfTtcbiAgU1VCU1QuY29udGFpbnMgPSBbXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgSFRNTF9URU1QTEFURSxcbiAgICBDU1NfVEVNUExBVEUsXG4gICAgVEVNUExBVEVfU1RSSU5HLFxuICAgIE5VTUJFUixcbiAgICBobGpzLlJFR0VYUF9NT0RFXG4gIF07XG4gIHZhciBQQVJBTVNfQ09OVEFJTlMgPSBTVUJTVC5jb250YWlucy5jb25jYXQoW1xuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFXG4gIF0pO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydqcycsICdqc3gnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSAoc3RyaWN0fGFzbSlbJ1wiXS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL14jIS8sIGVuZDogLyQvXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIEhUTUxfVEVNUExBVEUsXG4gICAgICBDU1NfVEVNUExBVEUsXG4gICAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTlVNQkVSLFxuICAgICAgeyAvLyBvYmplY3QgYXR0ciBjb250YWluZXJcbiAgICAgICAgYmVnaW46IC9beyxcXG5dXFxzKi8sIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogSURFTlRfUkUgKyAnXFxcXHMqOicsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFt7Y2xhc3NOYW1lOiAnYXR0cicsIGJlZ2luOiBJREVOVF9SRSwgcmVsZXZhbmNlOiAwfV1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IC8vIFwidmFsdWVcIiBjb250YWluZXJcbiAgICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfFxcXFxiKGNhc2V8cmV0dXJufHRocm93KVxcXFxiKVxcXFxzKicsXG4gICAgICAgIGtleXdvcmRzOiAncmV0dXJuIHRocm93IGNhc2UnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuUkVHRVhQX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgYmVnaW46ICcoXFxcXCguKj9cXFxcKXwnICsgSURFTlRfUkUgKyAnKVxcXFxzKj0+JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccyo9PicsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogSURFTlRfUkVcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoXFxzKlxcKS8sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogUEFSQU1TX0NPTlRBSU5TXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICcnLFxuICAgICAgICAgICAgYmVnaW46IC9cXHMvLFxuICAgICAgICAgICAgZW5kOiAvXFxzKi8sXG4gICAgICAgICAgICBza2lwOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyAvLyBFNFggLyBKU1hcbiAgICAgICAgICAgIGJlZ2luOiAvPC8sIGVuZDogLyhcXC9bQS1aYS16MC05XFxcXC5fOi1dK3xbQS1aYS16MC05XFxcXC5fOi1dK1xcLyk+LyxcbiAgICAgICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHsgYmVnaW46IC88W0EtWmEtejAtOVxcXFwuXzotXStcXHMqXFwvPi8sIHNraXA6IHRydWUgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAvPFtBLVphLXowLTlcXFxcLl86LV0rLywgZW5kOiAvKFxcL1tBLVphLXowLTlcXFxcLl86LV0rfFtBLVphLXowLTlcXFxcLl86LV0rXFwvKT4vLCBza2lwOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICB7IGJlZ2luOiAvPFtBLVphLXowLTlcXFxcLl86LV0rXFxzKlxcLz4vLCBza2lwOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAnc2VsZidcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9cXHsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogSURFTlRfUkV9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBQQVJBTVNfQ09OVEFJTlNcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC9cXFt8JS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwkWyguXS8gLy8gcmVsZXZhbmNlIGJvb3N0ZXIgZm9yIGEgcGF0dGVybiBjb21tb24gdG8gSlMgbGliczogYCQoc29tZXRoaW5nKWAgYW5kIGAkLnNvbWV0aGluZ2BcbiAgICAgIH0sXG4gICAgICBobGpzLk1FVEhPRF9HVUFSRCxcbiAgICAgIHsgLy8gRVM2IGNsYXNzXG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzJywgZW5kOiAvW3s7PV0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvWzpcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjb25zdHJ1Y3RvciBnZXQgc2V0JywgZW5kOiAvXFx7LywgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMoPyEhKS9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuICB2YXIgUEFSQU0gPSB7XG4gICAgYmVnaW46IC9bXFx3LV0rICo9LywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbe2NsYXNzTmFtZTogJ2F0dHInLCBiZWdpbjogL1tcXHctXSsvfV1cbiAgfTtcbiAgdmFyIFBBUkFNU0JMT0NLID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFtQQVJBTV0sXG4gICAgcmVsZXZhbmNlIDogMFxuICB9O1xuICB2YXIgT1BFUkFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbjogLzpbXFx3XFwtLl0rLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFBBVEggPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1xcQigoW1xcLy5dKVtcXHdcXC0uXFwvPV0rKSsvLFxuICB9O1xuICB2YXIgQ09NTUFORF9QQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogLy0tW1xcd1xcLT1cXC9dKy8sXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd3aWxkZmx5LWNsaSddLFxuICAgIGxleGVtZXM6ICdbYS16XFwtXSsnLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYWxpYXMgYmF0Y2ggY2QgY2xlYXIgY29tbWFuZCBjb25uZWN0IGNvbm5lY3Rpb24tZmFjdG9yeSBjb25uZWN0aW9uLWluZm8gZGF0YS1zb3VyY2UgZGVwbG95ICcgK1xuICAgICAgJ2RlcGxveW1lbnQtaW5mbyBkZXBsb3ltZW50LW92ZXJsYXkgZWNobyBlY2hvLWRtciBoZWxwIGhpc3RvcnkgaWYgamRiYy1kcml2ZXItaW5mbyBqbXMtcXVldWV8MjAgam1zLXRvcGljfDIwIGxzICcgK1xuICAgICAgJ3BhdGNoIHB3ZCBxdWl0IHJlYWQtYXR0cmlidXRlIHJlYWQtb3BlcmF0aW9uIHJlbG9hZCByb2xsb3V0LXBsYW4gcnVuLWJhdGNoIHNldCBzaHV0ZG93biB0cnkgdW5hbGlhcyAnICtcbiAgICAgICd1bmRlcGxveSB1bnNldCB2ZXJzaW9uIHhhLWRhdGEtc291cmNlJywgLy8gbW9kdWxlXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIENPTU1BTkRfUEFSQU1TLFxuICAgICAgT1BFUkFUSU9OLFxuICAgICAgUEFUSCxcbiAgICAgIFBBUkFNU0JMT0NLXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgTElURVJBTFMgPSB7bGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbCd9O1xuICB2YXIgQUxMT1dFRF9DT01NRU5UUyA9IFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICBdXG4gIHZhciBUWVBFUyA9IFtcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICBdO1xuICB2YXIgVkFMVUVfQ09OVEFJTkVSID0ge1xuICAgIGVuZDogJywnLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBjb250YWluczogVFlQRVMsXG4gICAga2V5d29yZHM6IExJVEVSQUxTXG4gIH07XG4gIHZhciBPQkpFQ1QgPSB7XG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoVkFMVUVfQ09OVEFJTkVSLCB7YmVnaW46IC86L30pXG4gICAgXS5jb25jYXQoQUxMT1dFRF9DT01NRU5UUyksXG4gICAgaWxsZWdhbDogJ1xcXFxTJ1xuICB9O1xuICB2YXIgQVJSQVkgPSB7XG4gICAgYmVnaW46ICdcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICBjb250YWluczogW2hsanMuaW5oZXJpdChWQUxVRV9DT05UQUlORVIpXSwgLy8gaW5oZXJpdCBpcyBhIHdvcmthcm91bmQgZm9yIGEgYnVnIHRoYXQgbWFrZXMgc2hhcmVkIG1vZGVzIHdpdGggZW5kc1dpdGhQYXJlbnQgY29tcGlsZSBvbmx5IHRoZSBlbmRpbmcgb2Ygb25lIG9mIHRoZSBwYXJlbnRzXG4gICAgaWxsZWdhbDogJ1xcXFxTJ1xuICB9O1xuICBUWVBFUy5wdXNoKE9CSkVDVCwgQVJSQVkpO1xuICBBTExPV0VEX0NPTU1FTlRTLmZvckVhY2goZnVuY3Rpb24ocnVsZSkge1xuICAgIFRZUEVTLnB1c2gocnVsZSlcbiAgfSlcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogVFlQRVMsXG4gICAga2V5d29yZHM6IExJVEVSQUxTLFxuICAgIGlsbGVnYWw6ICdcXFxcUydcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIFNpbmNlIHRoZXJlIGFyZSBudW1lcm91cyBzcGVjaWFsIG5hbWVzIGluIEp1bGlhLCBpdCBpcyB0b28gbXVjaCB0cm91YmxlXG4gIC8vIHRvIG1haW50YWluIHRoZW0gYnkgaGFuZC4gSGVuY2UgdGhlc2UgbmFtZXMgKGkuZS4ga2V5d29yZHMsIGxpdGVyYWxzIGFuZFxuICAvLyBidWlsdC1pbnMpIGFyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEp1bGlhIHYwLjYgaXRzZWxmIHRocm91Z2hcbiAgLy8gdGhlIGZvbGxvd2luZyBzY3JpcHRzIGZvciBlYWNoLlxuXG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICAvLyAjIGtleXdvcmQgZ2VuZXJhdG9yLCBtdWx0aS13b3JkIGtleXdvcmRzIGhhbmRsZWQgbWFudWFsbHkgYmVsb3dcbiAgICAvLyBmb3JlYWNoKHByaW50bG4sIFtcImluXCIsIFwiaXNhXCIsIFwid2hlcmVcIl0pXG4gICAgLy8gZm9yIGt3IGluIEJhc2UuUkVQTENvbXBsZXRpb25zLmNvbXBsZXRlX2tleXdvcmQoXCJcIilcbiAgICAvLyAgICAgaWYgIShjb250YWlucyhrdywgXCIgXCIpIHx8IGt3ID09IFwic3RydWN0XCIpXG4gICAgLy8gICAgICAgICBwcmludGxuKGt3KVxuICAgIC8vICAgICBlbmRcbiAgICAvLyBlbmRcbiAgICBrZXl3b3JkOlxuICAgICAgJ2luIGlzYSB3aGVyZSAnICtcbiAgICAgICdiYXJlbW9kdWxlIGJlZ2luIGJyZWFrIGNhdGNoIGNjYWxsIGNvbnN0IGNvbnRpbnVlIGRvIGVsc2UgZWxzZWlmIGVuZCBleHBvcnQgZmFsc2UgZmluYWxseSBmb3IgZnVuY3Rpb24gJyArXG4gICAgICAnZ2xvYmFsIGlmIGltcG9ydCBpbXBvcnRhbGwgbGV0IGxvY2FsIG1hY3JvIG1vZHVsZSBxdW90ZSByZXR1cm4gdHJ1ZSB0cnkgdXNpbmcgd2hpbGUgJyArXG4gICAgICAvLyBsZWdhY3ksIHRvIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIG5leHQgcmVsZWFzZVxuICAgICAgJ3R5cGUgaW1tdXRhYmxlIGFic3RyYWN0IGJpdHN0eXBlIHR5cGVhbGlhcyAnLFxuXG4gICAgLy8gIyBsaXRlcmFsIGdlbmVyYXRvclxuICAgIC8vIHByaW50bG4oXCJ0cnVlXCIpXG4gICAgLy8gcHJpbnRsbihcImZhbHNlXCIpXG4gICAgLy8gZm9yIG5hbWUgaW4gQmFzZS5SRVBMQ29tcGxldGlvbnMuY29tcGxldGlvbnMoXCJcIiwgMClbMV1cbiAgICAvLyAgICAgdHJ5XG4gICAgLy8gICAgICAgICB2ID0gZXZhbChTeW1ib2wobmFtZSkpXG4gICAgLy8gICAgICAgICBpZiAhKHYgaXNhIEZ1bmN0aW9uIHx8IHYgaXNhIFR5cGUgfHwgdiBpc2EgVHlwZVZhciB8fCB2IGlzYSBNb2R1bGUgfHwgdiBpc2EgQ29sb24pXG4gICAgLy8gICAgICAgICAgICAgcHJpbnRsbihuYW1lKVxuICAgIC8vICAgICAgICAgZW5kXG4gICAgLy8gICAgIGVuZFxuICAgIC8vIGVuZFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSAnICtcbiAgICAgICdBUkdTIENfTlVMTCBEZXZOdWxsIEVORElBTl9CT00gRU5WIEkgSW5mIEluZjE2IEluZjMyIEluZjY0IEluc2VydGlvblNvcnQgSlVMSUFfSE9NRSBMT0FEX1BBVEggTWVyZ2VTb3J0ICcgK1xuICAgICAgJ05hTiBOYU4xNiBOYU4zMiBOYU42NCBQUk9HUkFNX0ZJTEUgUXVpY2tTb3J0IFJvdW5kRG93biBSb3VuZEZyb21aZXJvIFJvdW5kTmVhcmVzdCBSb3VuZE5lYXJlc3RUaWVzQXdheSAnICtcbiAgICAgICdSb3VuZE5lYXJlc3RUaWVzVXAgUm91bmRUb1plcm8gUm91bmRVcCBTVERFUlIgU1RESU4gU1RET1VUIFZFUlNJT04gY2F0YWxhbiBlfDAgZXV8MCBldWxlcmdhbW1hIGdvbGRlbiBpbSAnICtcbiAgICAgICdub3RoaW5nIHBpIM6zIM+AIM+GICcsXG5cbiAgICAvLyAjIGJ1aWx0X2luIGdlbmVyYXRvcjpcbiAgICAvLyBmb3IgbmFtZSBpbiBCYXNlLlJFUExDb21wbGV0aW9ucy5jb21wbGV0aW9ucyhcIlwiLCAwKVsxXVxuICAgIC8vICAgICB0cnlcbiAgICAvLyAgICAgICAgIHYgPSBldmFsKFN5bWJvbChuYW1lKSlcbiAgICAvLyAgICAgICAgIGlmIHYgaXNhIFR5cGUgfHwgdiBpc2EgVHlwZVZhclxuICAgIC8vICAgICAgICAgICAgIHByaW50bG4obmFtZSlcbiAgICAvLyAgICAgICAgIGVuZFxuICAgIC8vICAgICBlbmRcbiAgICAvLyBlbmRcbiAgICBidWlsdF9pbjpcbiAgICAgICdBTlkgQWJzdHJhY3RBcnJheSBBYnN0cmFjdENoYW5uZWwgQWJzdHJhY3RGbG9hdCBBYnN0cmFjdE1hdHJpeCBBYnN0cmFjdFJORyBBYnN0cmFjdFNlcmlhbGl6ZXIgQWJzdHJhY3RTZXQgJyArXG4gICAgICAnQWJzdHJhY3RTcGFyc2VBcnJheSBBYnN0cmFjdFNwYXJzZU1hdHJpeCBBYnN0cmFjdFNwYXJzZVZlY3RvciBBYnN0cmFjdFN0cmluZyBBYnN0cmFjdFVuaXRSYW5nZSBBYnN0cmFjdFZlY09yTWF0ICcgK1xuICAgICAgJ0Fic3RyYWN0VmVjdG9yIEFueSBBcmd1bWVudEVycm9yIEFycmF5IEFzc2VydGlvbkVycm9yIEFzc29jaWF0aXZlIEJhc2U2NERlY29kZVBpcGUgQmFzZTY0RW5jb2RlUGlwZSBCaWRpYWdvbmFsICcrXG4gICAgICAnQmlnRmxvYXQgQmlnSW50IEJpdEFycmF5IEJpdE1hdHJpeCBCaXRWZWN0b3IgQm9vbCBCb3VuZHNFcnJvciBCdWZmZXJTdHJlYW0gQ2FjaGluZ1Bvb2wgQ2FwdHVyZWRFeGNlcHRpb24gJyArXG4gICAgICAnQ2FydGVzaWFuSW5kZXggQ2FydGVzaWFuUmFuZ2UgQ2NoYXIgQ2RvdWJsZSBDZmxvYXQgQ2hhbm5lbCBDaGFyIENpbnQgQ2ludG1heF90IENsb25nIENsb25nbG9uZyBDbHVzdGVyTWFuYWdlciAnICtcbiAgICAgICdDbWQgQ29kZUluZm8gQ29sb24gQ29tcGxleCBDb21wbGV4MTI4IENvbXBsZXgzMiBDb21wbGV4NjQgQ29tcG9zaXRlRXhjZXB0aW9uIENvbmRpdGlvbiBDb25qQXJyYXkgQ29uak1hdHJpeCAnICtcbiAgICAgICdDb25qVmVjdG9yIENwdHJkaWZmX3QgQ3Nob3J0IENzaXplX3QgQ3NzaXplX3QgQ3N0cmluZyBDdWNoYXIgQ3VpbnQgQ3VpbnRtYXhfdCBDdWxvbmcgQ3Vsb25nbG9uZyBDdXNob3J0IEN3Y2hhcl90ICcgK1xuICAgICAgJ0N3c3RyaW5nIERhdGFUeXBlIERhdGUgRGF0ZUZvcm1hdCBEYXRlVGltZSBEZW5zZUFycmF5IERlbnNlTWF0cml4IERlbnNlVmVjT3JNYXQgRGVuc2VWZWN0b3IgRGlhZ29uYWwgRGljdCAnICtcbiAgICAgICdEaW1lbnNpb25NaXNtYXRjaCBEaW1zIERpcmVjdEluZGV4U3RyaW5nIERpc3BsYXkgRGl2aWRlRXJyb3IgRG9tYWluRXJyb3IgRU9GRXJyb3IgRWFjaExpbmUgRW51bSBFbnVtZXJhdGUgJyArXG4gICAgICAnRXJyb3JFeGNlcHRpb24gRXhjZXB0aW9uIEV4cG9uZW50aWFsQmFja09mZiBFeHByIEZhY3Rvcml6YXRpb24gRmlsZU1vbml0b3IgRmxvYXQxNiBGbG9hdDMyIEZsb2F0NjQgRnVuY3Rpb24gJyArXG4gICAgICAnRnV0dXJlIEdsb2JhbFJlZiBHb3RvTm9kZSBIVE1MIEhlcm1pdGlhbiBJTyBJT0J1ZmZlciBJT0NvbnRleHQgSU9TdHJlYW0gSVBBZGRyIElQdjQgSVB2NiBJbmRleENhcnRlc2lhbiBJbmRleExpbmVhciAnICtcbiAgICAgICdJbmRleFN0eWxlIEluZXhhY3RFcnJvciBJbml0RXJyb3IgSW50IEludDEyOCBJbnQxNiBJbnQzMiBJbnQ2NCBJbnQ4IEludFNldCBJbnRlZ2VyIEludGVycnVwdEV4Y2VwdGlvbiAnICtcbiAgICAgICdJbnZhbGlkU3RhdGVFeGNlcHRpb24gSXJyYXRpb25hbCBLZXlFcnJvciBMYWJlbE5vZGUgTGluU3BhY2UgTGluZU51bWJlck5vZGUgTG9hZEVycm9yIExvd2VyVHJpYW5ndWxhciBNSU1FIE1hdHJpeCAnICtcbiAgICAgICdNZXJzZW5uZVR3aXN0ZXIgTWV0aG9kIE1ldGhvZEVycm9yIE1ldGhvZFRhYmxlIE1vZHVsZSBOVHVwbGUgTmV3dmFyTm9kZSBOdWxsRXhjZXB0aW9uIE51bGxhYmxlIE51bWJlciBPYmplY3RJZERpY3QgJyArXG4gICAgICAnT3JkaW5hbFJhbmdlIE91dE9mTWVtb3J5RXJyb3IgT3ZlcmZsb3dFcnJvciBQYWlyIFBhcnNlRXJyb3IgUGFydGlhbFF1aWNrU29ydCBQZXJtdXRlZERpbXNBcnJheSBQaXBlICcgK1xuICAgICAgJ1BvbGxpbmdGaWxlV2F0Y2hlciBQcm9jZXNzRXhpdGVkRXhjZXB0aW9uIFB0ciBRdW90ZU5vZGUgUmFuZG9tRGV2aWNlIFJhbmdlIFJhbmdlSW5kZXggUmF0aW9uYWwgUmF3RkQgJyArXG4gICAgICAnUmVhZE9ubHlNZW1vcnlFcnJvciBSZWFsIFJlZW50cmFudExvY2sgUmVmIFJlZ2V4IFJlZ2V4TWF0Y2ggUmVtb3RlQ2hhbm5lbCBSZW1vdGVFeGNlcHRpb24gUmV2U3RyaW5nIFJvdW5kaW5nTW9kZSAnICtcbiAgICAgICdSb3dWZWN0b3IgU1NBVmFsdWUgU2VnbWVudGF0aW9uRmF1bHQgU2VyaWFsaXphdGlvblN0YXRlIFNldCBTaGFyZWRBcnJheSBTaGFyZWRNYXRyaXggU2hhcmVkVmVjdG9yIFNpZ25lZCAnICtcbiAgICAgICdTaW1wbGVWZWN0b3IgU2xvdCBTbG90TnVtYmVyIFNwYXJzZU1hdHJpeENTQyBTcGFyc2VWZWN0b3IgU3RhY2tGcmFtZSBTdGFja092ZXJmbG93RXJyb3IgU3RhY2tUcmFjZSBTdGVwUmFuZ2UgJyArXG4gICAgICAnU3RlcFJhbmdlTGVuIFN0cmlkZWRBcnJheSBTdHJpZGVkTWF0cml4IFN0cmlkZWRWZWNPck1hdCBTdHJpZGVkVmVjdG9yIFN0cmluZyBTdWJBcnJheSBTdWJTdHJpbmcgU3ltVHJpZGlhZ29uYWwgJyArXG4gICAgICAnU3ltYm9sIFN5bW1ldHJpYyBTeXN0ZW1FcnJvciBUQ1BTb2NrZXQgVGFzayBUZXh0IFRleHREaXNwbGF5IFRpbWVyIFRyaWRpYWdvbmFsIFR1cGxlIFR5cGUgVHlwZUVycm9yIFR5cGVNYXBFbnRyeSAnICtcbiAgICAgICdUeXBlTWFwTGV2ZWwgVHlwZU5hbWUgVHlwZVZhciBUeXBlZFNsb3QgVURQU29ja2V0IFVJbnQgVUludDEyOCBVSW50MTYgVUludDMyIFVJbnQ2NCBVSW50OCBVbmRlZlJlZkVycm9yIFVuZGVmVmFyRXJyb3IgJyArXG4gICAgICAnVW5pY29kZUVycm9yIFVuaWZvcm1TY2FsaW5nIFVuaW9uIFVuaW9uQWxsIFVuaXRSYW5nZSBVbnNpZ25lZCBVcHBlclRyaWFuZ3VsYXIgVmFsIFZhcmFyZyBWZWNFbGVtZW50IFZlY09yTWF0IFZlY3RvciAnICtcbiAgICAgICdWZXJzaW9uTnVtYmVyIFZvaWQgV2Vha0tleURpY3QgV2Vha1JlZiBXb3JrZXJDb25maWcgV29ya2VyUG9vbCAnXG4gIH07XG5cbiAgLy8gcmVmOiBodHRwOi8vanVsaWEucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC9tYW51YWwvdmFyaWFibGVzLyNhbGxvd2VkLXZhcmlhYmxlLW5hbWVzXG4gIHZhciBWQVJJQUJMRV9OQU1FX1JFID0gJ1tBLVphLXpfXFxcXHUwMEExLVxcXFx1RkZGRl1bQS1aYS16XzAtOVxcXFx1MDBBMS1cXFxcdUZGRkZdKic7XG5cbiAgLy8gcGxhY2Vob2xkZXIgZm9yIHJlY3Vyc2l2ZSBzZWxmLXJlZmVyZW5jZVxuICB2YXIgREVGQVVMVCA9IHtcbiAgICBsZXhlbWVzOiBWQVJJQUJMRV9OQU1FX1JFLCBrZXl3b3JkczogS0VZV09SRFMsIGlsbGVnYWw6IC88XFwvL1xuICB9O1xuXG4gIC8vIHJlZjogaHR0cDovL2p1bGlhLnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvbWFudWFsL2ludGVnZXJzLWFuZC1mbG9hdGluZy1wb2ludC1udW1iZXJzL1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgLy8gc3VwcG9ydGVkIG51bWVyaWMgbGl0ZXJhbHM6XG4gICAgLy8gICogYmluYXJ5IGxpdGVyYWwgKGUuZy4gMHgxMClcbiAgICAvLyAgKiBvY3RhbCBsaXRlcmFsIChlLmcuIDBvNzY1NDMyMTApXG4gICAgLy8gICogaGV4YWRlY2ltYWwgbGl0ZXJhbCAoZS5nLiAweGZlZGNiYTg3NjU0MzIxMClcbiAgICAvLyAgKiBoZXhhZGVjaW1hbCBmbG9hdGluZyBwb2ludCBsaXRlcmFsIChlLmcuIDB4MXAwLCAweDEuMnAyKVxuICAgIC8vICAqIGRlY2ltYWwgbGl0ZXJhbCAoZS5nLiA5ODc2NTQzMjEwLCAxMDBfMDAwXzAwMClcbiAgICAvLyAgKiBmbG9hdGluZyBwb2ludGUgbGl0ZXJhbCAoZS5nLiAxLjIsIDEuMmYsIC4yLCAxLiwgMS4yZTEwLCAxLjJlLTEwKVxuICAgIGJlZ2luOiAvKFxcYjB4W1xcZF9dKihcXC5bXFxkX10qKT98MHhcXC5cXGRbXFxkX10qKXBbLStdP1xcZCt8XFxiMFtib3hdW2EtZkEtRjAtOV1bYS1mQS1GMC05X10qfChcXGJcXGRbXFxkX10qKFxcLltcXGRfXSopP3xcXC5cXGRbXFxkX10qKShbZUVmRl1bLStdP1xcZCspPy8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIENIQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycoLnxcXFxcW3hYdVVdW2EtekEtWjAtOV0rKScvXG4gIH07XG5cbiAgdmFyIElOVEVSUE9MQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvXFwkXFwoLywgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcblxuICB2YXIgSU5URVJQT0xBVEVEX1ZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogJ1xcXFwkJyArIFZBUklBQkxFX05BTUVfUkVcbiAgfTtcblxuICAvLyBUT0RPOiBuZWF0bHkgZXNjYXBlIG5vcm1hbCBjb2RlIGluIHN0cmluZyBsaXRlcmFsXG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgSU5URVJQT0xBVElPTiwgSU5URVJQT0xBVEVEX1ZBUklBQkxFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogL1xcdypcIlwiXCIvLCBlbmQ6IC9cIlwiXCJcXHcqLywgcmVsZXZhbmNlOiAxMCB9LFxuICAgICAgeyBiZWdpbjogL1xcdypcIi8sIGVuZDogL1wiXFx3Ki8gfVxuICAgIF1cbiAgfTtcblxuICB2YXIgQ09NTUFORCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBJTlRFUlBPTEFUSU9OLCBJTlRFUlBPTEFURURfVkFSSUFCTEVdLFxuICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnXG4gIH07XG5cbiAgdmFyIE1BQ1JPQ0FMTCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ0AnICsgVkFSSUFCTEVfTkFNRV9SRVxuICB9O1xuXG4gIHZhciBDT01NRU5UID0ge1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnIz0nLCBlbmQ6ICc9IycsIHJlbGV2YW5jZTogMTAgfSxcbiAgICAgIHsgYmVnaW46ICcjJywgZW5kOiAnJCcgfVxuICAgIF1cbiAgfTtcblxuICBERUZBVUxULmNvbnRhaW5zID0gW1xuICAgIE5VTUJFUixcbiAgICBDSEFSLFxuICAgIFNUUklORyxcbiAgICBDT01NQU5ELFxuICAgIE1BQ1JPQ0FMTCxcbiAgICBDT01NRU5ULFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICBiZWdpbjpcbiAgICAgICAgJ1xcXFxiKCgoYWJzdHJhY3R8cHJpbWl0aXZlKVxcXFxzKyl0eXBlfChtdXRhYmxlXFxcXHMrKT9zdHJ1Y3QpXFxcXGInXG4gICAgfSxcbiAgICB7YmVnaW46IC88Oi99ICAvLyByZWxldmFuY2UgYm9vc3RlclxuICBdO1xuICBJTlRFUlBPTEFUSU9OLmNvbnRhaW5zID0gREVGQVVMVC5jb250YWlucztcblxuICByZXR1cm4gREVGQVVMVDtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXmp1bGlhPi8sXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIC8vIGVuZCB0aGUgaGlnaGxpZ2h0aW5nIGlmIHdlIGFyZSBvbiBhIG5ldyBsaW5lIGFuZCB0aGUgbGluZSBkb2VzIG5vdCBoYXZlIGF0XG4gICAgICAgICAgLy8gbGVhc3Qgc2l4IHNwYWNlcyBpbiB0aGUgYmVnaW5uaW5nXG4gICAgICAgICAgZW5kOiAvXig/IVsgXXs2fSkvLFxuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnanVsaWEnXG4gICAgICB9LFxuICAgICAgLy8gamxkb2N0ZXN0IE1hcmtkb3duIGJsb2NrcyBhcmUgdXNlZCBpbiB0aGUgSnVsaWEgbWFudWFsIGFuZCBwYWNrYWdlIGRvY3MgaW5kaWNhdGVcbiAgICAgIC8vIGNvZGUgc25pcHBldHMgdGhhdCBzaG91bGQgYmUgdmVyaWZpZWQgd2hlbiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBidWlsdC4gVGhleSBjYW4gYmVcbiAgICAgIC8vIGVpdGhlciBSRVBMLWxpa2Ugb3Igc2NyaXB0LWxpa2UsIGJ1dCBhcmUgdXN1YWxseSBSRVBMLWxpa2UgYW5kIHRoZXJlZm9yZSB3ZSBhcHBseVxuICAgICAgLy8ganVsaWEtcmVwbCBoaWdobGlnaHRpbmcgdG8gdGhlbS4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gRG9jdW1lbnRlcidzXG4gICAgICAvLyBtYW51YWw6IGh0dHBzOi8vanVsaWFkb2NzLmdpdGh1Yi5pby9Eb2N1bWVudGVyLmpsL2xhdGVzdC9tYW4vZG9jdGVzdHMuaHRtbFxuICAgICAgYWxpYXNlczogWydqbGRvY3Rlc3QnXVxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWJzdHJhY3QgYXMgdmFsIHZhciB2YXJhcmcgZ2V0IHNldCBjbGFzcyBvYmplY3Qgb3BlbiBwcml2YXRlIHByb3RlY3RlZCBwdWJsaWMgbm9pbmxpbmUgJyArXG4gICAgICAnY3Jvc3NpbmxpbmUgZHluYW1pYyBmaW5hbCBlbnVtIGlmIGVsc2UgZG8gd2hpbGUgZm9yIHdoZW4gdGhyb3cgdHJ5IGNhdGNoIGZpbmFsbHkgJyArXG4gICAgICAnaW1wb3J0IHBhY2thZ2UgaXMgaW4gZnVuIG92ZXJyaWRlIGNvbXBhbmlvbiByZWlmaWVkIGlubGluZSBsYXRlaW5pdCBpbml0ICcgK1xuICAgICAgJ2ludGVyZmFjZSBhbm5vdGF0aW9uIGRhdGEgc2VhbGVkIGludGVybmFsIGluZml4IG9wZXJhdG9yIG91dCBieSBjb25zdHJ1Y3RvciBzdXBlciAnICtcbiAgICAgICd0YWlscmVjIHdoZXJlIGNvbnN0IGlubmVyIHN1c3BlbmQgdHlwZWFsaWFzIGV4dGVybmFsIGV4cGVjdCBhY3R1YWwgJyArXG4gICAgICAvLyB0byBiZSBkZWxldGVkIHNvb25cbiAgICAgICd0cmFpdCB2b2xhdGlsZSB0cmFuc2llbnQgbmF0aXZlIGRlZmF1bHQnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0J5dGUgU2hvcnQgQ2hhciBJbnQgTG9uZyBCb29sZWFuIEZsb2F0IERvdWJsZSBWb2lkIFVuaXQgTm90aGluZycsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlIG51bGwnXG4gIH07XG4gIHZhciBLRVlXT1JEU19XSVRIX0xBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIGJlZ2luOiAvXFxiKGJyZWFrfGNvbnRpbnVlfHJldHVybnx0aGlzKVxcYi8sXG4gICAgc3RhcnRzOiB7XG4gICAgICBjb250YWluczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICBiZWdpbjogL0BcXHcrL1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9O1xuICB2YXIgTEFCRUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJywgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdAJ1xuICB9O1xuXG4gIC8vIGZvciBzdHJpbmcgdGVtcGxhdGVzXG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdcXFxcJHsnLCBlbmQ6ICd9JywgY29udGFpbnM6IFtobGpzLkNfTlVNQkVSX01PREVdXG4gIH07XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsIGJlZ2luOiAnXFxcXCQnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbVkFSSUFCTEUsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIC8vIENhbid0IHVzZSBidWlsdC1pbiBtb2RlcyBlYXNpbHksIGFzIHdlIHdhbnQgdG8gdXNlIFNUUklORyBpbiB0aGUgbWV0YVxuICAgICAgLy8gY29udGV4dCBhcyAnbWV0YS1zdHJpbmcnIGFuZCB0aGVyZSdzIG5vIHN5bnRheCB0byByZW1vdmUgZXhwbGljaXRseSBzZXRcbiAgICAgIC8vIGNsYXNzTmFtZXMgaW4gYnVpbHQtaW4gbW9kZXMuXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJJQUJMRSwgU1VCU1RdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucy5wdXNoKFNUUklORylcblxuICB2YXIgQU5OT1RBVElPTl9VU0VfU0lURSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAKD86ZmlsZXxwcm9wZXJ0eXxmaWVsZHxnZXR8c2V0fHJlY2VpdmVyfHBhcmFtfHNldHBhcmFtfGRlbGVnYXRlKVxcXFxzKjooPzpcXFxccyonICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJyk/J1xuICB9O1xuICB2YXIgQU5OT1RBVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KFNUUklORywge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJ30pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgLy8gaHR0cHM6Ly9rb3RsaW5sYW5nLm9yZy9kb2NzL3JlZmVyZW5jZS93aGF0c25ldzExLmh0bWwjdW5kZXJzY29yZXMtaW4tbnVtZXJpYy1saXRlcmFsc1xuICAvLyBBY2NvcmRpbmcgdG8gdGhlIGRvYyBhYm92ZSwgdGhlIG51bWJlciBtb2RlIG9mIGtvdGxpbiBpcyB0aGUgc2FtZSBhcyBqYXZhIDgsXG4gIC8vIHNvIHRoZSBjb2RlIGJlbG93IGlzIGNvcGllZCBmcm9tIGphdmEuanNcbiAgdmFyIEtPVExJTl9OVU1CRVJfUkUgPSAnXFxcXGInICtcbiAgICAnKCcgK1xuICAgICAgJzBbYkJdKFswMV0rWzAxX10rWzAxXSt8WzAxXSspJyArIC8vIDBiLi4uXG4gICAgICAnfCcgK1xuICAgICAgJzBbeFhdKFthLWZBLUYwLTldK1thLWZBLUYwLTlfXStbYS1mQS1GMC05XSt8W2EtZkEtRjAtOV0rKScgKyAvLyAweC4uLlxuICAgICAgJ3wnICtcbiAgICAgICcoJyArXG4gICAgICAgICcoW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKykoXFxcXC4oW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKykpPycgK1xuICAgICAgICAnfCcgK1xuICAgICAgICAnXFxcXC4oW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKyknICtcbiAgICAgICcpJyArXG4gICAgICAnKFtlRV1bLStdP1xcXFxkKyk/JyArIC8vIG9jdGFsLCBkZWNpbWFsLCBmbG9hdFxuICAgICcpJyArXG4gICAgJ1tsTGZGXT8nO1xuICB2YXIgS09UTElOX05VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IEtPVExJTl9OVU1CRVJfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBLT1RMSU5fTkVTVEVEX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJy9cXFxcKicsICdcXFxcKi8nLFxuICAgIHsgY29udGFpbnM6IFsgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSBdIH1cbiAgKTtcbiAgdmFyIEtPVExJTl9QQVJFTl9UWVBFID0ge1xuICAgIHZhcmlhbnRzOiBbXG5cdCAgeyBjbGFzc05hbWU6ICd0eXBlJyxcblx0ICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcblx0ICB9LFxuXHQgIHsgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuXHQgICAgY29udGFpbnM6IFtdIC8vZGVmaW5lZCBsYXRlclxuXHQgIH1cblx0XVxuICB9O1xuICB2YXIgS09UTElOX1BBUkVOX1RZUEUyID0gS09UTElOX1BBUkVOX1RZUEU7XG4gIEtPVExJTl9QQVJFTl9UWVBFMi52YXJpYW50c1sxXS5jb250YWlucyA9IFsgS09UTElOX1BBUkVOX1RZUEUgXTtcbiAgS09UTElOX1BBUkVOX1RZUEUudmFyaWFudHNbMV0uY29udGFpbnMgPSBbIEtPVExJTl9QQVJFTl9UWVBFMiBdO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydrdCddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWlucyA6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2UgOiAwLFxuICAgICAgICAgIGNvbnRhaW5zIDogW3tcbiAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgYmVnaW4gOiAnQFtBLVphLXpdKydcbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgS09UTElOX05FU1RFRF9DT01NRU5ULFxuICAgICAgS0VZV09SRFNfV0lUSF9MQUJFTCxcbiAgICAgIExBQkVMLFxuICAgICAgQU5OT1RBVElPTl9VU0VfU0lURSxcbiAgICAgIEFOTk9UQVRJT04sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bicsIGVuZDogJ1soXXwkJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgaWxsZWdhbDogL2Z1blxccysoPC4qPik/W15cXHNcXChdKyhcXHMrW15cXHNcXChdKylcXHMqPS8sXG4gICAgICAgIHJlbGV2YW5jZTogNSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKlxcXFwoJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+Lywga2V5d29yZHM6ICdyZWlmaWVkJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC86LywgZW5kOiAvWz0sXFwvXS8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICBLT1RMSU5fUEFSRU5fVFlQRSxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgICAgIEtPVExJTl9ORVNURURfQ09NTUVOVFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgS09UTElOX05FU1RFRF9DT01NRU5ULFxuICAgICAgICAgICAgICBBTk5PVEFUSU9OX1VTRV9TSVRFLFxuICAgICAgICAgICAgICBBTk5PVEFUSU9OLFxuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgS09UTElOX05FU1RFRF9DT01NRU5UXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSB0cmFpdCcsIGVuZDogL1s6XFx7KF18JC8sIC8vIHJlbW92ZSAndHJhaXQnIHdoZW4gcmVtb3ZlZCBmcm9tIEtFWVdPUkRTXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdleHRlbmRzIGltcGxlbWVudHMnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAncHVibGljIHByb3RlY3RlZCBpbnRlcm5hbCBwcml2YXRlIGNvbnN0cnVjdG9yJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+LywgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAvWyw6XVxccyovLCBlbmQ6IC9bPFxcKCxdfCQvLCBleGNsdWRlQmVnaW46IHRydWUsIHJldHVybkVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgQU5OT1RBVElPTl9VU0VfU0lURSxcbiAgICAgICAgICBBTk5PVEFUSU9OXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogXCJeIyEvdXNyL2Jpbi9lbnZcIiwgZW5kOiAnJCcsXG4gICAgICAgIGlsbGVnYWw6ICdcXG4nXG4gICAgICB9LFxuICAgICAgS09UTElOX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIExBU1NPX0lERU5UX1JFID0gJ1thLXpBLVpfXVtcXFxcdy5dKic7XG4gIHZhciBMQVNTT19BTkdMRV9SRSA9ICc8XFxcXD8obGFzc28oc2NyaXB0KT98PSknO1xuICB2YXIgTEFTU09fQ0xPU0VfUkUgPSAnXFxcXF18XFxcXD8+JztcbiAgdmFyIExBU1NPX0tFWVdPUkRTID0ge1xuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBub25lIG1pbmltYWwgZnVsbCBhbGwgdm9pZCBhbmQgb3Igbm90ICcgK1xuICAgICAgJ2J3IG5idyBldyBuZXcgY24gbmNuIGx0IGx0ZSBndCBndGUgZXEgbmVxIHJ4IG5yeCBmdCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnYXJyYXkgZGF0ZSBkZWNpbWFsIGR1cmF0aW9uIGludGVnZXIgbWFwIHBhaXIgc3RyaW5nIHRhZyB4bWwgbnVsbCAnICtcbiAgICAgICdib29sZWFuIGJ5dGVzIGtleXdvcmQgbGlzdCBsb2NhbGUgcXVldWUgc2V0IHN0YWNrIHN0YXRpY2FycmF5ICcgK1xuICAgICAgJ2xvY2FsIHZhciB2YXJpYWJsZSBnbG9iYWwgZGF0YSBzZWxmIGluaGVyaXRlZCBjdXJyZW50Y2FwdHVyZSBnaXZlbmJsb2NrJyxcbiAgICBrZXl3b3JkOlxuICAgICAgJ2NhY2hlIGRhdGFiYXNlX25hbWVzIGRhdGFiYXNlX3NjaGVtYW5hbWVzIGRhdGFiYXNlX3RhYmxlbmFtZXMgJyArXG4gICAgICAnZGVmaW5lX3RhZyBkZWZpbmVfdHlwZSBlbWFpbF9iYXRjaCBlbmNvZGVfc2V0IGh0bWxfY29tbWVudCBoYW5kbGUgJyArXG4gICAgICAnaGFuZGxlX2Vycm9yIGhlYWRlciBpZiBpbmxpbmUgaXRlcmF0ZSBsamF4X3RhcmdldCBsaW5rICcgK1xuICAgICAgJ2xpbmtfY3VycmVudGFjdGlvbiBsaW5rX2N1cnJlbnRncm91cCBsaW5rX2N1cnJlbnRyZWNvcmQgbGlua19kZXRhaWwgJyArXG4gICAgICAnbGlua19maXJzdGdyb3VwIGxpbmtfZmlyc3RyZWNvcmQgbGlua19sYXN0Z3JvdXAgbGlua19sYXN0cmVjb3JkICcgK1xuICAgICAgJ2xpbmtfbmV4dGdyb3VwIGxpbmtfbmV4dHJlY29yZCBsaW5rX3ByZXZncm91cCBsaW5rX3ByZXZyZWNvcmQgbG9nICcgK1xuICAgICAgJ2xvb3AgbmFtZXNwYWNlX3VzaW5nIG91dHB1dF9ub25lIHBvcnRhbCBwcml2YXRlIHByb3RlY3QgcmVjb3JkcyAnICtcbiAgICAgICdyZWZlcmVyIHJlZmVycmVyIHJlcGVhdGluZyByZXN1bHRzZXQgcm93cyBzZWFyY2hfYXJncyAnICtcbiAgICAgICdzZWFyY2hfYXJndW1lbnRzIHNlbGVjdCBzb3J0X2FyZ3Mgc29ydF9hcmd1bWVudHMgdGhyZWFkX2F0b21pYyAnICtcbiAgICAgICd2YWx1ZV9saXN0IHdoaWxlIGFib3J0IGNhc2UgZWxzZSBmYWlsX2lmIGZhaWxfaWZub3QgZmFpbCBpZl9lbXB0eSAnICtcbiAgICAgICdpZl9mYWxzZSBpZl9udWxsIGlmX3RydWUgbG9vcF9hYm9ydCBsb29wX2NvbnRpbnVlIGxvb3BfY291bnQgcGFyYW1zICcgK1xuICAgICAgJ3BhcmFtc191cCByZXR1cm4gcmV0dXJuX3ZhbHVlIHJ1bl9jaGlsZHJlbiBzb2FwX2RlZmluZXRhZyAnICtcbiAgICAgICdzb2FwX2xhc3RyZXF1ZXN0IHNvYXBfbGFzdHJlc3BvbnNlIHRhZ19uYW1lIGFzY2VuZGluZyBhdmVyYWdlIGJ5ICcgK1xuICAgICAgJ2RlZmluZSBkZXNjZW5kaW5nIGRvIGVxdWFscyBmcm96ZW4gZ3JvdXAgaGFuZGxlX2ZhaWx1cmUgaW1wb3J0IGluICcgK1xuICAgICAgJ2ludG8gam9pbiBsZXQgbWF0Y2ggbWF4IG1pbiBvbiBvcmRlciBwYXJlbnQgcHJvdGVjdGVkIHByb3ZpZGUgcHVibGljICcgK1xuICAgICAgJ3JlcXVpcmUgcmV0dXJuaG9tZSBza2lwIHNwbGl0X3RocmVhZCBzdW0gdGFrZSB0aHJlYWQgdG8gdHJhaXQgdHlwZSAnICtcbiAgICAgICd3aGVyZSB3aXRoIHlpZWxkIHlpZWxkaG9tZSdcbiAgfTtcbiAgdmFyIEhUTUxfQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnPCEtLScsXG4gICAgJy0tPicsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgTEFTU09fTk9QUk9DRVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXFxcXFtub3Byb2Nlc3NcXFxcXScsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdcXFxcWy9ub3Byb2Nlc3NcXFxcXScsXG4gICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICBjb250YWluczogW0hUTUxfQ09NTUVOVF1cbiAgICB9XG4gIH07XG4gIHZhciBMQVNTT19TVEFSVCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ1xcXFxbL25vcHJvY2Vzc3wnICsgTEFTU09fQU5HTEVfUkVcbiAgfTtcbiAgdmFyIExBU1NPX0RBVEFNRU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1xcJycgKyBMQVNTT19JREVOVF9SRSArICdcXCcnXG4gIH07XG4gIHZhciBMQVNTT19DT0RFID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfTlVNQkVSX01PREUsIHtiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICd8KC0/aW5maW5pdHl8TmFOKVxcXFxiJ30pLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnXG4gICAgfSxcbiAgICB7IC8vIHZhcmlhYmxlc1xuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnWyMkXScgKyBMQVNTT19JREVOVF9SRVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICBpbGxlZ2FsOiAnXFxcXFcnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgYmVnaW46ICc6OlxcXFxzKicsIGVuZDogTEFTU09fSURFTlRfUkUsXG4gICAgICBpbGxlZ2FsOiAnXFxcXFcnXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnLSg/IWluZmluaXR5KScgKyBMQVNTT19JREVOVF9SRSxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnKFxcXFwuXFxcXC5cXFxcLiknXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAvKC0+fFxcLilcXHMqLyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbTEFTU09fREFUQU1FTUJFUl1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWZpbmUnLFxuICAgICAgcmV0dXJuRW5kOiB0cnVlLCBlbmQ6ICdcXFxcKHw9PicsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IExBU1NPX0lERU5UX1JFICsgJyg9KD8hPikpP3xbLSsqLyVdKD8hPiknfSlcbiAgICAgIF1cbiAgICB9XG4gIF07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydscycsICdsYXNzb3NjcmlwdCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogTEFTU09fSURFTlRfUkUgKyAnfCZbbGdddDsnLFxuICAgIGtleXdvcmRzOiBMQVNTT19LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IExBU1NPX0NMT1NFX1JFLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHN0YXJ0czogeyAvLyBtYXJrdXBcbiAgICAgICAgICBlbmQ6ICdcXFxcW3wnICsgTEFTU09fQU5HTEVfUkUsXG4gICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBjb250YWluczogW0hUTUxfQ09NTUVOVF1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIExBU1NPX05PUFJPQ0VTUyxcbiAgICAgIExBU1NPX1NUQVJULFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdcXFxcW25vX3NxdWFyZV9icmFja2V0cycsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcXFxbL25vX3NxdWFyZV9icmFja2V0c1xcXFxdJywgLy8gbm90IGltcGxlbWVudGVkIGluIHRoZSBsYW5ndWFnZVxuICAgICAgICAgIGxleGVtZXM6IExBU1NPX0lERU5UX1JFICsgJ3wmW2xnXXQ7JyxcbiAgICAgICAgICBrZXl3b3JkczogTEFTU09fS0VZV09SRFMsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICAgIGJlZ2luOiBMQVNTT19DTE9TRV9SRSxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgICAgICBlbmQ6ICdcXFxcW25vcHJvY2Vzc1xcXFxdfCcgKyBMQVNTT19BTkdMRV9SRSxcbiAgICAgICAgICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtIVE1MX0NPTU1FTlRdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBMQVNTT19OT1BST0NFU1MsXG4gICAgICAgICAgICBMQVNTT19TVEFSVFxuICAgICAgICAgIF0uY29uY2F0KExBU1NPX0NPREUpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ1xcXFxbJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeIyEnLCBlbmQ6J2xhc3NvOSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXS5jb25jYXQoTEFTU09fQ09ERSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdeZG4nLCBlbmQ6ICc6ICcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN0YXJ0czoge2VuZDogJyQnLCByZWxldmFuY2U6IDB9LFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ15cXFxcdycsIGVuZDogJzogJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3RhcnRzOiB7ZW5kOiAnJCcsIHJlbGV2YW5jZTogMH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICBiZWdpbjogJ14tJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJyMrJyArICdbQS1aYS16XzAtOV0qJyArICdcXFxcKCcsXG4gICAgICAgIGVuZDonIHsnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJyMrJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgYmVnaW46ICdbQS1aYS16X11bQS1aYS16XzAtOV0qJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgICAgICAgICAgZW5kOiAnXCInXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdbQS1aYS16X11bQS1aYS16XzAtOV0qJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFICAgICAgICA9ICdbXFxcXHctXSsnOyAvLyB5ZXMsIExlc3MgaWRlbnRpZmllcnMgbWF5IGJlZ2luIHdpdGggYSBkaWdpdFxuICB2YXIgSU5URVJQX0lERU5UX1JFID0gJygnICsgSURFTlRfUkUgKyAnfEB7JyArIElERU5UX1JFICsgJ30pJztcblxuICAvKiBHZW5lcmljIE1vZGVzICovXG5cbiAgdmFyIFJVTEVTID0gW10sIFZBTFVFID0gW107IC8vIGZvcndhcmQgZGVmLiBmb3IgcmVjdXJzaXZlIG1vZGVzXG5cbiAgdmFyIFNUUklOR19NT0RFID0gZnVuY3Rpb24oYykgeyByZXR1cm4ge1xuICAgIC8vIExlc3Mgc3RyaW5ncyBhcmUgbm90IG11bHRpbGluZSAoYWxzbyBpbmNsdWRlICd+JyBmb3IgbW9yZSBjb25zaXN0ZW50IGNvbG9yaW5nIG9mIFwiZXNjYXBlZFwiIHN0cmluZ3MpXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46ICd+PycgKyBjICsgJy4qPycgKyBjXG4gIH07fTtcblxuICB2YXIgSURFTlRfTU9ERSA9IGZ1bmN0aW9uKG5hbWUsIGJlZ2luLCByZWxldmFuY2UpIHsgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IG5hbWUsIGJlZ2luOiBiZWdpbiwgcmVsZXZhbmNlOiByZWxldmFuY2VcbiAgfTt9O1xuXG4gIHZhciBQQVJFTlNfTU9ERSA9IHtcbiAgICAvLyB1c2VkIG9ubHkgdG8gcHJvcGVybHkgYmFsYW5jZSBuZXN0ZWQgcGFyZW5zIGluc2lkZSBtaXhpbiBjYWxsLCBkZWYuIGFyZyBsaXN0XG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IFZBTFVFLCByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvLyBnZW5lcmljIExlc3MgaGlnaGxpZ2h0ZXIgKHVzZWQgYWxtb3N0IGV2ZXJ5d2hlcmUgZXhjZXB0IHNlbGVjdG9ycyk6XG4gIFZBTFVFLnB1c2goXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgU1RSSU5HX01PREUoXCInXCIpLFxuICAgIFNUUklOR19NT0RFKCdcIicpLFxuICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLCAvLyBmaXhtZTogaXQgZG9lcyBub3QgaW5jbHVkZSBkb3QgZm9yIG51bWJlcnMgbGlrZSAuNWVtIDooXG4gICAge1xuICAgICAgYmVnaW46ICcodXJsfGRhdGEtdXJpKVxcXFwoJyxcbiAgICAgIHN0YXJ0czoge2NsYXNzTmFtZTogJ3N0cmluZycsIGVuZDogJ1tcXFxcKVxcXFxuXScsIGV4Y2x1ZGVFbmQ6IHRydWV9XG4gICAgfSxcbiAgICBJREVOVF9NT0RFKCdudW1iZXInLCAnI1swLTlBLUZhLWZdK1xcXFxiJyksXG4gICAgUEFSRU5TX01PREUsXG4gICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQEA/JyArIElERU5UX1JFLCAxMCksXG4gICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQHsnICArIElERU5UX1JFICsgJ30nKSxcbiAgICBJREVOVF9NT0RFKCdidWlsdF9pbicsICd+P2BbXmBdKj9gJyksIC8vIGlubGluZSBqYXZhc2NyaXB0IChvciB3aGF0ZXZlciBob3N0IGxhbmd1YWdlKSAqbXVsdGlsaW5lKiBzdHJpbmdcbiAgICB7IC8vIEBtZWRpYSBmZWF0dXJlcyAoaXTigJlzIGhlcmUgdG8gbm90IGR1cGxpY2F0ZSB0aGluZ3MgaW4gQVRfUlVMRV9NT0RFIHdpdGggZXh0cmEgUEFSRU5TX01PREUgb3ZlcnJpZGluZyk6XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLCBiZWdpbjogSURFTlRfUkUgKyAnXFxcXHMqOicsIGVuZDogJzonLCByZXR1cm5CZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICBiZWdpbjogJyFpbXBvcnRhbnQnXG4gICAgfVxuICApO1xuXG4gIHZhciBWQUxVRV9XSVRIX1JVTEVTRVRTID0gVkFMVUUuY29uY2F0KHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JywgY29udGFpbnM6IFJVTEVTXG4gIH0pO1xuXG4gIHZhciBNSVhJTl9HVUFSRF9NT0RFID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICd3aGVuJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgY29udGFpbnM6IFt7YmVnaW5LZXl3b3JkczogJ2FuZCBub3QnfV0uY29uY2F0KFZBTFVFKSAvLyB1c2luZyB0aGlzIGZvcm0gdG8gb3ZlcnJpZGUgVkFMVUXigJlzICdmdW5jdGlvbicgbWF0Y2hcbiAgfTtcblxuICAvKiBSdWxlLUxldmVsIE1vZGVzICovXG5cbiAgdmFyIFJVTEVfTU9ERSA9IHtcbiAgICBiZWdpbjogSU5URVJQX0lERU5UX1JFICsgJ1xcXFxzKjonLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAnWzt9XScsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiBJTlRFUlBfSURFTlRfUkUsIGVuZDogJzonLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgaWxsZWdhbDogJ1s8PSRdJyxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFZBTFVFXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIEFUX1JVTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ0AoaW1wb3J0fG1lZGlhfGNoYXJzZXR8Zm9udC1mYWNlfCgtW2Etel0rLSk/a2V5ZnJhbWVzfHN1cHBvcnRzfGRvY3VtZW50fG5hbWVzcGFjZXxwYWdlfHZpZXdwb3J0fGhvc3QpXFxcXGInLFxuICAgIHN0YXJ0czoge2VuZDogJ1s7e31dJywgcmV0dXJuRW5kOiB0cnVlLCBjb250YWluczogVkFMVUUsIHJlbGV2YW5jZTogMH1cbiAgfTtcblxuICAvLyB2YXJpYWJsZSBkZWZpbml0aW9ucyBhbmQgY2FsbHNcbiAgdmFyIFZBUl9SVUxFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyB1c2luZyBtb3JlIHN0cmljdCBwYXR0ZXJuIGZvciBoaWdoZXIgcmVsZXZhbmNlIHRvIGluY3JlYXNlIGNoYW5jZXMgb2YgTGVzcyBkZXRlY3Rpb24uXG4gICAgICAvLyB0aGlzIGlzICp0aGUgb25seSogTGVzcyBzcGVjaWZpYyBzdGF0ZW1lbnQgdXNlZCBpbiBtb3N0IG9mIHRoZSBzb3VyY2VzLCBzby4uLlxuICAgICAgLy8gKHdl4oCZbGwgc3RpbGwgb2Z0ZW4gbG9vc2UgdG8gdGhlIGNzcy1wYXJzZXIgdW5sZXNzIHRoZXJlJ3MgJy8vJyBjb21tZW50LFxuICAgICAgLy8gc2ltcGx5IGJlY2F1c2UgMSB2YXJpYWJsZSBqdXN0IGNhbid0IGJlYXQgOTkgcHJvcGVydGllcyA6KVxuICAgICAge2JlZ2luOiAnQCcgKyBJREVOVF9SRSArICdcXFxccyo6JywgcmVsZXZhbmNlOiAxNX0sXG4gICAgICB7YmVnaW46ICdAJyArIElERU5UX1JFfVxuICAgIF0sXG4gICAgc3RhcnRzOiB7ZW5kOiAnWzt9XScsIHJldHVybkVuZDogdHJ1ZSwgY29udGFpbnM6IFZBTFVFX1dJVEhfUlVMRVNFVFN9XG4gIH07XG5cbiAgdmFyIFNFTEVDVE9SX01PREUgPSB7XG4gICAgLy8gZmlyc3QgcGFyc2UgdW5hbWJpZ3VvdXMgc2VsZWN0b3JzIChpLmUuIHRob3NlIG5vdCBzdGFydGluZyB3aXRoIHRhZylcbiAgICAvLyB0aGVuIGZhbGwgaW50byB0aGUgc2NhcnkgbG9va2FoZWFkLWRpc2NyaW1pbmF0b3IgdmFyaWFudC5cbiAgICAvLyB0aGlzIG1vZGUgYWxzbyBoYW5kbGVzIG1peGluIGRlZmluaXRpb25zIGFuZCBjYWxsc1xuICAgIHZhcmlhbnRzOiBbe1xuICAgICAgYmVnaW46ICdbXFxcXC4jOiZcXFxcWz5dJywgZW5kOiAnWzt7fV0nICAvLyBtaXhpbiBjYWxscyBlbmQgd2l0aCAnOydcbiAgICAgIH0sIHtcbiAgICAgIGJlZ2luOiBJTlRFUlBfSURFTlRfUkUsIGVuZDogJ3snXG4gICAgfV0sXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmV0dXJuRW5kOiAgIHRydWUsXG4gICAgaWxsZWdhbDogJ1s8PVxcJyRcIl0nLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE1JWElOX0dVQVJEX01PREUsXG4gICAgICBJREVOVF9NT0RFKCdrZXl3b3JkJywgICdhbGxcXFxcYicpLFxuICAgICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQHsnICArIElERU5UX1JFICsgJ30nKSwgICAgIC8vIG90aGVyd2lzZSBpdOKAmXMgaWRlbnRpZmllZCBhcyB0YWdcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLXRhZycsICBJTlRFUlBfSURFTlRfUkUgKyAnJT8nLCAwKSwgLy8gJyUnIGZvciBtb3JlIGNvbnNpc3RlbnQgY29sb3Jpbmcgb2YgQGtleWZyYW1lcyBcInRhZ3NcIlxuICAgICAgSURFTlRfTU9ERSgnc2VsZWN0b3ItaWQnLCAnIycgKyBJTlRFUlBfSURFTlRfUkUpLFxuICAgICAgSURFTlRfTU9ERSgnc2VsZWN0b3ItY2xhc3MnLCAnXFxcXC4nICsgSU5URVJQX0lERU5UX1JFLCAwKSxcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLXRhZycsICAnJicsIDApLFxuICAgICAge2NsYXNzTmFtZTogJ3NlbGVjdG9yLWF0dHInLCBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nfSxcbiAgICAgIHtjbGFzc05hbWU6ICdzZWxlY3Rvci1wc2V1ZG8nLCBiZWdpbjogLzooOik/W2EtekEtWjAtOVxcX1xcLVxcK1xcKFxcKVwiJy5dKy99LFxuICAgICAge2JlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsIGNvbnRhaW5zOiBWQUxVRV9XSVRIX1JVTEVTRVRTfSwgLy8gYXJndW1lbnQgbGlzdCBvZiBwYXJhbWV0cmljIG1peGluc1xuICAgICAge2JlZ2luOiAnIWltcG9ydGFudCd9IC8vIGVhdCAhaW1wb3J0YW50IGFmdGVyIG1peGluIGNhbGwgb3IgaXQgd2lsbCBiZSBjb2xvcmVkIGFzIHRhZ1xuICAgIF1cbiAgfTtcblxuICBSVUxFUy5wdXNoKFxuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIEFUX1JVTEVfTU9ERSxcbiAgICBWQVJfUlVMRV9NT0RFLFxuICAgIFJVTEVfTU9ERSxcbiAgICBTRUxFQ1RPUl9NT0RFXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbPT5cXCcvPCgkXCJdJyxcbiAgICBjb250YWluczogUlVMRVNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBMSVNQX0lERU5UX1JFID0gJ1thLXpBLVpfXFxcXC1cXFxcK1xcXFwqXFxcXC9cXFxcPFxcXFw9XFxcXD5cXFxcJlxcXFwjXVthLXpBLVowLTlfXFxcXC1cXFxcK1xcXFwqXFxcXC9cXFxcPFxcXFw9XFxcXD5cXFxcJlxcXFwjIV0qJztcbiAgdmFyIE1FQ19SRSA9ICdcXFxcfFteXSo/XFxcXHwnO1xuICB2YXIgTElTUF9TSU1QTEVfTlVNQkVSX1JFID0gJyhcXFxcLXxcXFxcKyk/XFxcXGQrKFxcXFwuXFxcXGQrfFxcXFwvXFxcXGQrKT8oKGR8ZXxmfGx8c3xEfEV8RnxMfFMpKFxcXFwrfFxcXFwtKT9cXFxcZCspPyc7XG4gIHZhciBTSEVCQU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMhJywgZW5kOiAnJCdcbiAgfTtcbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46ICdcXFxcYih0ezF9fG5pbClcXFxcYidcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IExJU1BfU0lNUExFX05VTUJFUl9SRSwgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJyMoYnxCKVswLTFdKygvWzAtMV0rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMob3xPKVswLTddKygvWzAtN10rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMoeHxYKVswLTlhLWZBLUZdKygvWzAtOWEtZkEtRl0rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMoY3xDKVxcXFwoJyArIExJU1BfU0lNUExFX05VTUJFUl9SRSArICcgKycgKyBMSVNQX1NJTVBMRV9OVU1CRVJfUkUsIGVuZDogJ1xcXFwpJ31cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkcgPSBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KTtcbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJzsnLCAnJCcsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgYmVnaW46ICdcXFxcKicsIGVuZDogJ1xcXFwqJ1xuICB9O1xuICB2YXIgS0VZV09SRCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzomXScgKyBMSVNQX0lERU5UX1JFXG4gIH07XG4gIHZhciBJREVOVCA9IHtcbiAgICBiZWdpbjogTElTUF9JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE1FQyA9IHtcbiAgICBiZWdpbjogTUVDX1JFXG4gIH07XG4gIHZhciBRVU9URURfTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBMSVRFUkFMLCBTVFJJTkcsIE5VTUJFUiwgSURFTlRdXG4gIH07XG4gIHZhciBRVU9URUQgPSB7XG4gICAgY29udGFpbnM6IFtOVU1CRVIsIFNUUklORywgVkFSSUFCTEUsIEtFWVdPUkQsIFFVT1RFRF9MSVNULCBJREVOVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbXFwnYF1cXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKHF1b3RlICcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAncXVvdGUnfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCcnICsgTUVDX1JFXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgUVVPVEVEX0FUT00gPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcJycgKyBMSVNQX0lERU5UX1JFfSxcbiAgICAgIHtiZWdpbjogJyNcXCcnICsgTElTUF9JREVOVF9SRSArICcoOjonICsgTElTUF9JREVOVF9SRSArICcpKid9XG4gICAgXVxuICB9O1xuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoXFxcXHMqJywgZW5kOiAnXFxcXCknXG4gIH07XG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBMSVNULmNvbnRhaW5zID0gW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge2JlZ2luOiBMSVNQX0lERU5UX1JFfSxcbiAgICAgICAge2JlZ2luOiBNRUNfUkV9XG4gICAgICBdXG4gICAgfSxcbiAgICBCT0RZXG4gIF07XG4gIEJPRFkuY29udGFpbnMgPSBbUVVPVEVELCBRVU9URURfQVRPTSwgTElTVCwgTElURVJBTCwgTlVNQkVSLCBTVFJJTkcsIENPTU1FTlQsIFZBUklBQkxFLCBLRVlXT1JELCBNRUMsIElERU5UXTtcblxuICByZXR1cm4ge1xuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOVU1CRVIsXG4gICAgICBTSEVCQU5HLFxuICAgICAgTElURVJBTCxcbiAgICAgIFNUUklORyxcbiAgICAgIENPTU1FTlQsXG4gICAgICBRVU9URUQsXG4gICAgICBRVU9URURfQVRPTSxcbiAgICAgIExJU1QsXG4gICAgICBJREVOVFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcXFxiKFtndHBzXVtBLVpdezF9W2EtekEtWjAtOV0qKShcXFxcWy4rXFxcXF0pPyg/OlxcXFxzKj8pJ30sXG4gICAgICB7YmVnaW46ICdcXFxcJF9bQS1aXSsnfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoJy0tJywgJyQnKSxcbiAgICBobGpzLkNPTU1FTlQoJ1teOl0vLycsICckJylcbiAgXTtcbiAgdmFyIFRJVExFMSA9IGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFxcXGJfKnJpZ1tBLVpdK1tBLVphLXowLTlfXFxcXC1dKid9LFxuICAgICAge2JlZ2luOiAnXFxcXGJfW2EtejAtOVxcXFwtXSsnfVxuICAgIF1cbiAgfSk7XG4gIHZhciBUSVRMRTIgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdcXFxcYihbQS1aYS16MC05X1xcXFwtXSspXFxcXGInfSk7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICckX0NPT0tJRSAkX0ZJTEVTICRfR0VUICRfR0VUX0JJTkFSWSAkX0dFVF9SQVcgJF9QT1NUICRfUE9TVF9CSU5BUlkgJF9QT1NUX1JBVyAkX1NFU1NJT04gJF9TRVJWRVIgJyArXG4gICAgICAgICdjb2RlcG9pbnQgY29kZXBvaW50cyBzZWdtZW50IHNlZ21lbnRzIGNvZGV1bml0IGNvZGV1bml0cyBzZW50ZW5jZSBzZW50ZW5jZXMgdHJ1ZVdvcmQgdHJ1ZVdvcmRzIHBhcmFncmFwaCAnICtcbiAgICAgICAgJ2FmdGVyIGJ5dGUgYnl0ZXMgZW5nbGlzaCB0aGUgdW50aWwgaHR0cCBmb3JldmVyIGRlc2NlbmRpbmcgdXNpbmcgbGluZSByZWFsOCB3aXRoIHNldmVudGggJyArXG4gICAgICAgICdmb3Igc3Rkb3V0IGZpbmFsbHkgZWxlbWVudCB3b3JkIHdvcmRzIGZvdXJ0aCBiZWZvcmUgYmxhY2sgbmludGggc2l4dGggY2hhcmFjdGVycyBjaGFycyBzdGRlcnIgJyArXG4gICAgICAgICd1SW50MSB1SW50MXMgdUludDIgdUludDJzIHN0ZGluIHN0cmluZyBsaW5lcyByZWxhdGl2ZSByZWwgYW55IGZpZnRoIGl0ZW1zIGZyb20gbWlkZGxlIG1pZCAnICtcbiAgICAgICAgJ2F0IGVsc2Ugb2YgY2F0Y2ggdGhlbiB0aGlyZCBpdCBmaWxlIG1pbGxpc2Vjb25kcyBzZWNvbmRzIHNlY29uZCBzZWNzIHNlYyBpbnQxIGludDFzIGludDQgJyArXG4gICAgICAgICdpbnQ0cyBpbnRlcm5ldCBpbnQyIGludDJzIG5vcm1hbCB0ZXh0IGl0ZW0gbGFzdCBsb25nIGRldGFpbGVkIGVmZmVjdGl2ZSB1SW50NCB1SW50NHMgcmVwZWF0ICcgK1xuICAgICAgICAnZW5kIHJlcGVhdCBVUkwgaW4gdHJ5IGludG8gc3dpdGNoIHRvIHdvcmRzIGh0dHBzIHRva2VuIGJpbmZpbGUgZWFjaCB0ZW50aCBhcyB0aWNrcyB0aWNrICcgK1xuICAgICAgICAnc3lzdGVtIHJlYWw0IGJ5IGRhdGVJdGVtcyB3aXRob3V0IGNoYXIgY2hhcmFjdGVyIGFzY2VuZGluZyBlaWdodGggd2hvbGUgZGF0ZVRpbWUgbnVtZXJpYyBzaG9ydCAnICtcbiAgICAgICAgJ2ZpcnN0IGZ0cCBpbnRlZ2VyIGFiYnJldmlhdGVkIGFiYnIgYWJicmV2IHByaXZhdGUgY2FzZSB3aGlsZSBpZiAnICtcbiAgICAgICAgJ2RpdiBtb2Qgd3JhcCBhbmQgb3IgYml0QW5kIGJpdE5vdCBiaXRPciBiaXRYb3IgYW1vbmcgbm90IGluIGEgYW4gd2l0aGluICcgK1xuICAgICAgICAnY29udGFpbnMgZW5kcyB3aXRoIGJlZ2lucyB0aGUga2V5cyBvZiBrZXlzJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdTSVggVEVOIEZPUk1GRUVEIE5JTkUgWkVSTyBOT05FIFNQQUNFIEZPVVIgRkFMU0UgQ09MT04gQ1JMRiBQSSBDT01NQSBFTkRPRkZJTEUgRU9GIEVJR0hUIEZJVkUgJyArXG4gICAgICAgICdRVU9URSBFTVBUWSBPTkUgVFJVRSBSRVRVUk4gQ1IgTElORUZFRUQgUklHSFQgQkFDS1NMQVNIIE5VTEwgU0VWRU4gVEFCIFRIUkVFIFRXTyAnICtcbiAgICAgICAgJ3NpeCB0ZW4gZm9ybWZlZWQgbmluZSB6ZXJvIG5vbmUgc3BhY2UgZm91ciBmYWxzZSBjb2xvbiBjcmxmIHBpIGNvbW1hIGVuZG9mZmlsZSBlb2YgZWlnaHQgZml2ZSAnICtcbiAgICAgICAgJ3F1b3RlIGVtcHR5IG9uZSB0cnVlIHJldHVybiBjciBsaW5lZmVlZCByaWdodCBiYWNrc2xhc2ggbnVsbCBzZXZlbiB0YWIgdGhyZWUgdHdvICcgK1xuICAgICAgICAnUklWRVJTSU9OIFJJU1RBVEUgRklMRV9SRUFEX01PREUgRklMRV9XUklURV9NT0RFIEZJTEVfV1JJVEVfTU9ERSBESVJfV1JJVEVfTU9ERSBGSUxFX1JFQURfVU1BU0sgJyArXG4gICAgICAgICdGSUxFX1dSSVRFX1VNQVNLIERJUl9SRUFEX1VNQVNLIERJUl9XUklURV9VTUFTSycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3B1dCBhYnMgYWNvcyBhbGlhc1JlZmVyZW5jZSBhbm51aXR5IGFycmF5RGVjb2RlIGFycmF5RW5jb2RlIGFzaW4gYXRhbiBhdGFuMiBhdmVyYWdlIGF2ZyBhdmdEZXYgYmFzZTY0RGVjb2RlICcgK1xuICAgICAgICAnYmFzZTY0RW5jb2RlIGJhc2VDb252ZXJ0IGJpbmFyeURlY29kZSBiaW5hcnlFbmNvZGUgYnl0ZU9mZnNldCBieXRlVG9OdW0gY2FjaGVkVVJMIGNhY2hlZFVSTHMgY2hhclRvTnVtICcgK1xuICAgICAgICAnY2lwaGVyTmFtZXMgY29kZXBvaW50T2Zmc2V0IGNvZGVwb2ludFByb3BlcnR5IGNvZGVwb2ludFRvTnVtIGNvZGV1bml0T2Zmc2V0IGNvbW1hbmROYW1lcyBjb21wb3VuZCBjb21wcmVzcyAnICtcbiAgICAgICAgJ2NvbnN0YW50TmFtZXMgY29zIGRhdGUgZGF0ZUZvcm1hdCBkZWNvbXByZXNzIGRpZmZlcmVuY2UgZGlyZWN0b3JpZXMgJyArXG4gICAgICAgICdkaXNrU3BhY2UgRE5TU2VydmVycyBleHAgZXhwMSBleHAyIGV4cDEwIGV4dGVudHMgZmlsZXMgZmx1c2hFdmVudHMgZm9sZGVycyBmb3JtYXQgZnVuY3Rpb25OYW1lcyBnZW9tZXRyaWNNZWFuIGdsb2JhbCAnICtcbiAgICAgICAgJ2dsb2JhbHMgaGFzTWVtb3J5IGhhcm1vbmljTWVhbiBob3N0QWRkcmVzcyBob3N0QWRkcmVzc1RvTmFtZSBob3N0TmFtZSBob3N0TmFtZVRvQWRkcmVzcyBpc051bWJlciBJU09Ub01hYyBpdGVtT2Zmc2V0ICcgK1xuICAgICAgICAna2V5cyBsZW4gbGVuZ3RoIGxpYlVSTEVycm9yRGF0YSBsaWJVcmxGb3JtRGF0YSBsaWJVUkxmdHBDb21tYW5kIGxpYlVSTExhc3RIVFRQSGVhZGVycyBsaWJVUkxMYXN0UkhIZWFkZXJzICcgK1xuICAgICAgICAnbGliVXJsTXVsdGlwYXJ0Rm9ybUFkZFBhcnQgbGliVXJsTXVsdGlwYXJ0Rm9ybURhdGEgbGliVVJMVmVyc2lvbiBsaW5lT2Zmc2V0IGxuIGxuMSBsb2NhbE5hbWVzIGxvZyBsb2cyIGxvZzEwICcgK1xuICAgICAgICAnbG9uZ0ZpbGVQYXRoIGxvd2VyIG1hY1RvSVNPIG1hdGNoQ2h1bmsgbWF0Y2hUZXh0IG1hdHJpeE11bHRpcGx5IG1heCBtZDVEaWdlc3QgbWVkaWFuIG1lcmdlIG1lc3NhZ2VBdXRoZW50aWNhdGlvbkNvZGUgbWVzc2FnZURpZ2VzdCBtaWxsaXNlYyAnICtcbiAgICAgICAgJ21pbGxpc2VjcyBtaWxsaXNlY29uZCBtaWxsaXNlY29uZHMgbWluIG1vbnRoTmFtZXMgbmF0aXZlQ2hhclRvTnVtIG5vcm1hbGl6ZVRleHQgbnVtIG51bWJlciBudW1Ub0J5dGUgbnVtVG9DaGFyICcgK1xuICAgICAgICAnbnVtVG9Db2RlcG9pbnQgbnVtVG9OYXRpdmVDaGFyIG9mZnNldCBvcGVuIG9wZW5maWxlcyBvcGVuUHJvY2Vzc2VzIG9wZW5Qcm9jZXNzSURzIG9wZW5Tb2NrZXRzICcgK1xuICAgICAgICAncGFyYWdyYXBoT2Zmc2V0IHBhcmFtQ291bnQgcGFyYW0gcGFyYW1zIHBlZXJBZGRyZXNzIHBlbmRpbmdNZXNzYWdlcyBwbGF0Zm9ybSBwb3BTdGREZXYgcG9wdWxhdGlvblN0YW5kYXJkRGV2aWF0aW9uICcgK1xuICAgICAgICAncG9wdWxhdGlvblZhcmlhbmNlIHBvcFZhcmlhbmNlIHByb2Nlc3NJRCByYW5kb20gcmFuZG9tQnl0ZXMgcmVwbGFjZVRleHQgcmVzdWx0IHJldkNyZWF0ZVhNTFRyZWUgcmV2Q3JlYXRlWE1MVHJlZUZyb21GaWxlICcgK1xuICAgICAgICAncmV2Q3VycmVudFJlY29yZCByZXZDdXJyZW50UmVjb3JkSXNGaXJzdCByZXZDdXJyZW50UmVjb3JkSXNMYXN0IHJldkRhdGFiYXNlQ29sdW1uQ291bnQgcmV2RGF0YWJhc2VDb2x1bW5Jc051bGwgJyArXG4gICAgICAgICdyZXZEYXRhYmFzZUNvbHVtbkxlbmd0aHMgcmV2RGF0YWJhc2VDb2x1bW5OYW1lcyByZXZEYXRhYmFzZUNvbHVtbk5hbWVkIHJldkRhdGFiYXNlQ29sdW1uTnVtYmVyZWQgJyArXG4gICAgICAgICdyZXZEYXRhYmFzZUNvbHVtblR5cGVzIHJldkRhdGFiYXNlQ29ubmVjdFJlc3VsdCByZXZEYXRhYmFzZUN1cnNvcnMgcmV2RGF0YWJhc2VJRCByZXZEYXRhYmFzZVRhYmxlTmFtZXMgJyArXG4gICAgICAgICdyZXZEYXRhYmFzZVR5cGUgcmV2RGF0YUZyb21RdWVyeSByZXZkYl9jbG9zZUN1cnNvciByZXZkYl9jb2x1bW5ieW51bWJlciByZXZkYl9jb2x1bW5jb3VudCByZXZkYl9jb2x1bW5pc251bGwgJyArXG4gICAgICAgICdyZXZkYl9jb2x1bW5sZW5ndGhzIHJldmRiX2NvbHVtbm5hbWVzIHJldmRiX2NvbHVtbnR5cGVzIHJldmRiX2NvbW1pdCByZXZkYl9jb25uZWN0IHJldmRiX2Nvbm5lY3Rpb25zICcgK1xuICAgICAgICAncmV2ZGJfY29ubmVjdGlvbmVyciByZXZkYl9jdXJyZW50cmVjb3JkIHJldmRiX2N1cnNvcmNvbm5lY3Rpb24gcmV2ZGJfY3Vyc29yZXJyIHJldmRiX2N1cnNvcnMgcmV2ZGJfZGJ0eXBlICcgK1xuICAgICAgICAncmV2ZGJfZGlzY29ubmVjdCByZXZkYl9leGVjdXRlIHJldmRiX2lzZW9mIHJldmRiX2lzYm9mIHJldmRiX21vdmVmaXJzdCByZXZkYl9tb3ZlbGFzdCByZXZkYl9tb3ZlbmV4dCAnICtcbiAgICAgICAgJ3JldmRiX21vdmVwcmV2IHJldmRiX3F1ZXJ5IHJldmRiX3F1ZXJ5bGlzdCByZXZkYl9yZWNvcmRjb3VudCByZXZkYl9yb2xsYmFjayByZXZkYl90YWJsZW5hbWVzICcgK1xuICAgICAgICAncmV2R2V0RGF0YWJhc2VEcml2ZXJQYXRoIHJldk51bWJlck9mUmVjb3JkcyByZXZPcGVuRGF0YWJhc2UgcmV2T3BlbkRhdGFiYXNlcyByZXZRdWVyeURhdGFiYXNlICcgK1xuICAgICAgICAncmV2UXVlcnlEYXRhYmFzZUJsb2IgcmV2UXVlcnlSZXN1bHQgcmV2UXVlcnlJc0F0U3RhcnQgcmV2UXVlcnlJc0F0RW5kIHJldlVuaXhGcm9tTWFjUGF0aCByZXZYTUxBdHRyaWJ1dGUgJyArXG4gICAgICAgICdyZXZYTUxBdHRyaWJ1dGVzIHJldlhNTEF0dHJpYnV0ZVZhbHVlcyByZXZYTUxDaGlsZENvbnRlbnRzIHJldlhNTENoaWxkTmFtZXMgcmV2WE1MQ3JlYXRlVHJlZUZyb21GaWxlV2l0aE5hbWVzcGFjZXMgJyArXG4gICAgICAgICdyZXZYTUxDcmVhdGVUcmVlV2l0aE5hbWVzcGFjZXMgcmV2WE1MRGF0YUZyb21YUGF0aFF1ZXJ5IHJldlhNTEV2YWx1YXRlWFBhdGggcmV2WE1MRmlyc3RDaGlsZCByZXZYTUxNYXRjaGluZ05vZGUgJyArXG4gICAgICAgICdyZXZYTUxOZXh0U2libGluZyByZXZYTUxOb2RlQ29udGVudHMgcmV2WE1MTnVtYmVyT2ZDaGlsZHJlbiByZXZYTUxQYXJlbnQgcmV2WE1MUHJldmlvdXNTaWJsaW5nICcgK1xuICAgICAgICAncmV2WE1MUm9vdE5vZGUgcmV2WE1MUlBDX0NyZWF0ZVJlcXVlc3QgcmV2WE1MUlBDX0RvY3VtZW50cyByZXZYTUxSUENfRXJyb3IgJyArXG4gICAgICAgICdyZXZYTUxSUENfR2V0SG9zdCByZXZYTUxSUENfR2V0TWV0aG9kIHJldlhNTFJQQ19HZXRQYXJhbSByZXZYTUxUZXh0IHJldlhNTFJQQ19FeGVjdXRlICcgK1xuICAgICAgICAncmV2WE1MUlBDX0dldFBhcmFtQ291bnQgcmV2WE1MUlBDX0dldFBhcmFtTm9kZSByZXZYTUxSUENfR2V0UGFyYW1UeXBlIHJldlhNTFJQQ19HZXRQYXRoIHJldlhNTFJQQ19HZXRQb3J0ICcgK1xuICAgICAgICAncmV2WE1MUlBDX0dldFByb3RvY29sIHJldlhNTFJQQ19HZXRSZXF1ZXN0IHJldlhNTFJQQ19HZXRSZXNwb25zZSByZXZYTUxSUENfR2V0U29ja2V0IHJldlhNTFRyZWUgJyArXG4gICAgICAgICdyZXZYTUxUcmVlcyByZXZYTUxWYWxpZGF0ZURURCByZXZaaXBEZXNjcmliZUl0ZW0gcmV2WmlwRW51bWVyYXRlSXRlbXMgcmV2WmlwT3BlbkFyY2hpdmVzIHJvdW5kIHNhbXBWYXJpYW5jZSAnICtcbiAgICAgICAgJ3NlYyBzZWNzIHNlY29uZHMgc2VudGVuY2VPZmZzZXQgc2hhMURpZ2VzdCBzaGVsbCBzaG9ydEZpbGVQYXRoIHNpbiBzcGVjaWFsRm9sZGVyUGF0aCBzcXJ0IHN0YW5kYXJkRGV2aWF0aW9uIHN0YXRSb3VuZCAnICtcbiAgICAgICAgJ3N0ZERldiBzdW0gc3lzRXJyb3Igc3lzdGVtVmVyc2lvbiB0YW4gdGVtcE5hbWUgdGV4dERlY29kZSB0ZXh0RW5jb2RlIHRpY2sgdGlja3MgdGltZSB0byB0b2tlbk9mZnNldCB0b0xvd2VyIHRvVXBwZXIgJyArXG4gICAgICAgICd0cmFuc3Bvc2UgdHJ1ZXdvcmRPZmZzZXQgdHJ1bmMgdW5pRGVjb2RlIHVuaUVuY29kZSB1cHBlciBVUkxEZWNvZGUgVVJMRW5jb2RlIFVSTFN0YXR1cyB1dWlkIHZhbHVlIHZhcmlhYmxlTmFtZXMgJyArXG4gICAgICAgICd2YXJpYW5jZSB2ZXJzaW9uIHdhaXREZXB0aCB3ZWVrZGF5TmFtZXMgd29yZE9mZnNldCB4c2x0QXBwbHlTdHlsZXNoZWV0IHhzbHRBcHBseVN0eWxlc2hlZXRGcm9tRmlsZSB4c2x0TG9hZFN0eWxlc2hlZXQgJyArXG4gICAgICAgICd4c2x0TG9hZFN0eWxlc2hlZXRGcm9tRmlsZSBhZGQgYnJlYWtwb2ludCBjYW5jZWwgY2xlYXIgbG9jYWwgdmFyaWFibGUgZmlsZSB3b3JkIGxpbmUgZm9sZGVyIGRpcmVjdG9yeSBVUkwgY2xvc2Ugc29ja2V0IHByb2Nlc3MgJyArXG4gICAgICAgICdjb21iaW5lIGNvbnN0YW50IGNvbnZlcnQgY3JlYXRlIG5ldyBhbGlhcyBmb2xkZXIgZGlyZWN0b3J5IGRlY3J5cHQgZGVsZXRlIHZhcmlhYmxlIHdvcmQgbGluZSBmb2xkZXIgJyArXG4gICAgICAgICdkaXJlY3RvcnkgVVJMIGRpc3BhdGNoIGRpdmlkZSBkbyBlbmNyeXB0IGZpbHRlciBnZXQgaW5jbHVkZSBpbnRlcnNlY3Qga2lsbCBsaWJVUkxEb3dubG9hZFRvRmlsZSAnICtcbiAgICAgICAgJ2xpYlVSTEZvbGxvd0h0dHBSZWRpcmVjdHMgbGliVVJMZnRwVXBsb2FkIGxpYlVSTGZ0cFVwbG9hZEZpbGUgbGliVVJMcmVzZXRBbGwgbGliVXJsU2V0QXV0aENhbGxiYWNrIGxpYlVSTFNldERyaXZlciAnICtcbiAgICAgICAgJ2xpYlVSTFNldEN1c3RvbUhUVFBIZWFkZXJzIGxpYlVybFNldEV4cGVjdDEwMCBsaWJVUkxTZXRGVFBMaXN0Q29tbWFuZCBsaWJVUkxTZXRGVFBNb2RlIGxpYlVSTFNldEZUUFN0b3BUaW1lICcgK1xuICAgICAgICAnbGliVVJMU2V0U3RhdHVzQ2FsbGJhY2sgbG9hZCBleHRlbnNpb24gbG9hZGVkRXh0ZW5zaW9ucyBtdWx0aXBseSBzb2NrZXQgcHJlcGFyZSBwcm9jZXNzIHBvc3Qgc2VlayByZWwgcmVsYXRpdmUgcmVhZCBmcm9tIHByb2Nlc3MgcmVuYW1lICcgK1xuICAgICAgICAncmVwbGFjZSByZXF1aXJlIHJlc2V0QWxsIHJlc29sdmUgcmV2QWRkWE1MTm9kZSByZXZBcHBlbmRYTUwgcmV2Q2xvc2VDdXJzb3IgcmV2Q2xvc2VEYXRhYmFzZSByZXZDb21taXREYXRhYmFzZSAnICtcbiAgICAgICAgJ3JldkNvcHlGaWxlIHJldkNvcHlGb2xkZXIgcmV2Q29weVhNTE5vZGUgcmV2RGVsZXRlRm9sZGVyIHJldkRlbGV0ZVhNTE5vZGUgcmV2RGVsZXRlQWxsWE1MVHJlZXMgJyArXG4gICAgICAgICdyZXZEZWxldGVYTUxUcmVlIHJldkV4ZWN1dGVTUUwgcmV2R29VUkwgcmV2SW5zZXJ0WE1MTm9kZSByZXZNb3ZlRm9sZGVyIHJldk1vdmVUb0ZpcnN0UmVjb3JkIHJldk1vdmVUb0xhc3RSZWNvcmQgJyArXG4gICAgICAgICdyZXZNb3ZlVG9OZXh0UmVjb3JkIHJldk1vdmVUb1ByZXZpb3VzUmVjb3JkIHJldk1vdmVUb1JlY29yZCByZXZNb3ZlWE1MTm9kZSByZXZQdXRJbnRvWE1MTm9kZSByZXZSb2xsQmFja0RhdGFiYXNlICcgK1xuICAgICAgICAncmV2U2V0RGF0YWJhc2VEcml2ZXJQYXRoIHJldlNldFhNTEF0dHJpYnV0ZSByZXZYTUxSUENfQWRkUGFyYW0gcmV2WE1MUlBDX0RlbGV0ZUFsbERvY3VtZW50cyByZXZYTUxBZGREVEQgJyArXG4gICAgICAgICdyZXZYTUxSUENfRnJlZSByZXZYTUxSUENfRnJlZUFsbCByZXZYTUxSUENfRGVsZXRlRG9jdW1lbnQgcmV2WE1MUlBDX0RlbGV0ZVBhcmFtIHJldlhNTFJQQ19TZXRIb3N0ICcgK1xuICAgICAgICAncmV2WE1MUlBDX1NldE1ldGhvZCByZXZYTUxSUENfU2V0UG9ydCByZXZYTUxSUENfU2V0UHJvdG9jb2wgcmV2WE1MUlBDX1NldFNvY2tldCByZXZaaXBBZGRJdGVtV2l0aERhdGEgJyArXG4gICAgICAgICdyZXZaaXBBZGRJdGVtV2l0aEZpbGUgcmV2WmlwQWRkVW5jb21wcmVzc2VkSXRlbVdpdGhEYXRhIHJldlppcEFkZFVuY29tcHJlc3NlZEl0ZW1XaXRoRmlsZSByZXZaaXBDYW5jZWwgJyArXG4gICAgICAgICdyZXZaaXBDbG9zZUFyY2hpdmUgcmV2WmlwRGVsZXRlSXRlbSByZXZaaXBFeHRyYWN0SXRlbVRvRmlsZSByZXZaaXBFeHRyYWN0SXRlbVRvVmFyaWFibGUgcmV2WmlwU2V0UHJvZ3Jlc3NDYWxsYmFjayAnICtcbiAgICAgICAgJ3JldlppcFJlbmFtZUl0ZW0gcmV2WmlwUmVwbGFjZUl0ZW1XaXRoRGF0YSByZXZaaXBSZXBsYWNlSXRlbVdpdGhGaWxlIHJldlppcE9wZW5BcmNoaXZlIHNlbmQgc2V0IHNvcnQgc3BsaXQgc3RhcnQgc3RvcCAnICtcbiAgICAgICAgJ3N1YnRyYWN0IHN5bW1ldHJpYyB1bmlvbiB1bmxvYWQgdmVjdG9yRG90UHJvZHVjdCB3YWl0IHdyaXRlJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFZBUklBQkxFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYmVuZFxcXFxzaWZcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgVElUTEUyLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBUSVRMRTFcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiZW5kXFxcXHMrJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAnZW5kJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBUSVRMRTIsXG4gICAgICAgICAgVElUTEUxXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NvbW1hbmQgb24nLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBUSVRMRTIsXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIFRJVExFMVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJzxcXFxcPyhyZXZ8bGN8bGl2ZWNvZGUpJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgYmVnaW46ICc8XFxcXD8nIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFw/PicgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgVElUTEUxXG4gICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUyksXG4gICAgaWxsZWdhbDogJzskfF5cXFxcW3xePXwmfHsnXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgIC8vIEpTIGtleXdvcmRzXG4gICAgICAnaW4gaWYgZm9yIHdoaWxlIGZpbmFsbHkgbmV3IGRvIHJldHVybiBlbHNlIGJyZWFrIGNhdGNoIGluc3RhbmNlb2YgdGhyb3cgdHJ5IHRoaXMgJyArXG4gICAgICAnc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgZGVidWdnZXIgY2FzZSBkZWZhdWx0IGZ1bmN0aW9uIHZhciB3aXRoICcgK1xuICAgICAgLy8gTGl2ZVNjcmlwdCBrZXl3b3Jkc1xuICAgICAgJ3RoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QgaXQgdGhhdCBvdGhlcndpc2UgZnJvbSB0byB0aWwgZmFsbHRocm91Z2ggc3VwZXIgJyArXG4gICAgICAnY2FzZSBkZWZhdWx0IGZ1bmN0aW9uIHZhciB2b2lkIGNvbnN0IGxldCBlbnVtIGV4cG9ydCBpbXBvcnQgbmF0aXZlIGxpc3QgbWFwICcgK1xuICAgICAgJ19faGFzUHJvcCBfX2V4dGVuZHMgX19zbGljZSBfX2JpbmQgX19pbmRleE9mJyxcbiAgICBsaXRlcmFsOlxuICAgICAgLy8gSlMgbGl0ZXJhbHNcbiAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkICcgK1xuICAgICAgLy8gTGl2ZVNjcmlwdCBsaXRlcmFsc1xuICAgICAgJ3llcyBubyBvbiBvZmYgaXQgdGhhdCB2b2lkJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICducG0gcmVxdWlyZSBjb25zb2xlIHByaW50IG1vZHVsZSBnbG9iYWwgd2luZG93IGRvY3VtZW50J1xuICB9O1xuICB2YXIgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXSg/OlxcLVswLTlBLVphLXokX118WzAtOUEtWmEteiRfXSkqJztcbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBKU19JREVOVF9SRX0pO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvI1xcey8sIGVuZDogL30vLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICB9O1xuICB2YXIgU1VCU1RfU0lNUExFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogLyNbQS1aYS16JF9dLywgZW5kOiAvKD86XFwtWzAtOUEtWmEteiRfXXxbMC05QS1aYS16JF9dKSovLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICB9O1xuICB2YXIgRVhQUkVTU0lPTlMgPSBbXG4gICAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMFt4WF1bYS1mQS1GMC05X10rKXwoXFxcXGJcXFxcZChcXFxcZHxfXFxcXGQpKihcXFxcLihcXFxcZChcXFxcZHxfXFxcXGQpKik/KT8oXypbZUVdKFstK11cXFxcZChfXFxcXGR8XFxcXGQpKik/KT9bX2Etel0qKScsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBzdGFydHM6IHtlbmQ6ICcoXFxcXHMqLyk/JywgcmVsZXZhbmNlOiAwfSAvLyBhIG51bWJlciB0cmllcyB0byBlYXQgdGhlIGZvbGxvd2luZyBzbGFzaCB0byBwcmV2ZW50IHRyZWF0aW5nIGl0IGFzIGEgcmVnZXhwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJy8sIGVuZDogLycvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIlwiXCIvLCBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVCwgU1VCU1RfU0lNUExFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIFNVQlNUX1NJTVBMRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXFxcXC8sIGVuZDogLyhcXHN8JCkvLFxuICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJy8vJywgZW5kOiAnLy9bZ2ltXSonLFxuICAgICAgICAgIGNvbnRhaW5zOiBbU1VCU1QsIGhsanMuSEFTSF9DT01NRU5UX01PREVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyByZWdleCBjYW4ndCBzdGFydCB3aXRoIHNwYWNlIHRvIHBhcnNlIHggLyAyIC8gMyBhcyB0d28gZGl2aXNpb25zXG4gICAgICAgICAgLy8gcmVnZXggY2FuJ3Qgc3RhcnQgd2l0aCAqLCBhbmQgaXQgc3VwcG9ydHMgYW4gXCJpbGxlZ2FsXCIgaW4gdGhlIG1haW4gbW9kZVxuICAgICAgICAgIGJlZ2luOiAvXFwvKD8hWyAqXSkoXFxcXFxcL3wuKSo/XFwvW2dpbV0qKD89XFxXKS9cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICdAJyArIEpTX0lERU5UX1JFXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJ2BgJywgZW5kOiAnYGAnLFxuICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICdqYXZhc2NyaXB0J1xuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFWFBSRVNTSU9OUztcblxuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIC8qIFdlIG5lZWQgYW5vdGhlciBjb250YWluZWQgbmFtZWxlc3MgbW9kZSB0byBub3QgaGF2ZSBldmVyeSBuZXN0ZWRcbiAgICBwYWlyIG9mIHBhcmVucyB0byBiZSBjYWxsZWQgXCJwYXJhbXNcIiAqL1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogWydzZWxmJ10uY29uY2F0KEVYUFJFU1NJT05TKVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgU1lNQk9MUyA9IHtcbiAgICBiZWdpbjogJygjPT58PT58XFxcXHw+PnwtPy0+fFxcXFwhLT4pJ1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydscyddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlMuY29uY2F0KFtcbiAgICAgIGhsanMuQ09NTUVOVCgnXFxcXC9cXFxcKicsICdcXFxcKlxcXFwvJyksXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgU1lNQk9MUywgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBjb250YWluczogW1RJVExFLCBQQVJBTVNdLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJygnICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqKD86PXw6PSlcXFxccyopPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCXFxcXC0+XFxcXCo/JywgZW5kOiAnXFxcXC0+XFxcXCo/J1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcoJyArIEpTX0lERU5UX1JFICsgJ1xcXFxzKig/Oj18Oj0pXFxcXHMqKT8hPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCWy1+XXsxLDJ9PlxcXFwqPycsIGVuZDogJ1stfl17MSwyfT5cXFxcKj8nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJygnICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqKD86PXw6PSlcXFxccyopPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCIT9bLX5dezEsMn0+XFxcXCo/JywgZW5kOiAnIT9bLX5dezEsMn0+XFxcXCo/J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMnLFxuICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbVElUTEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBUSVRMRVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGlkZW50aWZpZXIgPSAnKFstYS16QS1aJC5fXVtcXFxcd1xcXFwtJC5dKiknO1xuICByZXR1cm4ge1xuICAgIC8vbGV4ZW1lczogJ1suJV0/JyArIGhsanMuSURFTlRfUkUsXG4gICAga2V5d29yZHM6XG4gICAgICAnYmVnaW4gZW5kIHRydWUgZmFsc2UgZGVjbGFyZSBkZWZpbmUgZ2xvYmFsICcgK1xuICAgICAgJ2NvbnN0YW50IHByaXZhdGUgbGlua2VyX3ByaXZhdGUgaW50ZXJuYWwgJyArXG4gICAgICAnYXZhaWxhYmxlX2V4dGVybmFsbHkgbGlua29uY2UgbGlua29uY2Vfb2RyIHdlYWsgJyArXG4gICAgICAnd2Vha19vZHIgYXBwZW5kaW5nIGRsbGltcG9ydCBkbGxleHBvcnQgY29tbW9uICcgK1xuICAgICAgJ2RlZmF1bHQgaGlkZGVuIHByb3RlY3RlZCBleHRlcm5fd2VhayBleHRlcm5hbCAnICtcbiAgICAgICd0aHJlYWRfbG9jYWwgemVyb2luaXRpYWxpemVyIHVuZGVmIG51bGwgdG8gdGFpbCAnICtcbiAgICAgICd0YXJnZXQgdHJpcGxlIGRhdGFsYXlvdXQgdm9sYXRpbGUgbnV3IG5zdyBubmFuICcgK1xuICAgICAgJ25pbmYgbnN6IGFyY3AgZmFzdCBleGFjdCBpbmJvdW5kcyBhbGlnbiAnICtcbiAgICAgICdhZGRyc3BhY2Ugc2VjdGlvbiBhbGlhcyBtb2R1bGUgYXNtIHNpZGVlZmZlY3QgJyArXG4gICAgICAnZ2MgZGJnIGxpbmtlcl9wcml2YXRlX3dlYWsgYXR0cmlidXRlcyBibG9ja2FkZHJlc3MgJyArXG4gICAgICAnaW5pdGlhbGV4ZWMgbG9jYWxkeW5hbWljIGxvY2FsZXhlYyBwcmVmaXggdW5uYW1lZF9hZGRyICcgK1xuICAgICAgJ2NjYyBmYXN0Y2MgY29sZGNjIHg4Nl9zdGRjYWxsY2MgeDg2X2Zhc3RjYWxsY2MgJyArXG4gICAgICAnYXJtX2FwY3NjYyBhcm1fYWFwY3NjYyBhcm1fYWFwY3NfdmZwY2MgcHR4X2RldmljZSAnICtcbiAgICAgICdwdHhfa2VybmVsIGludGVsX29jbF9iaWNjIG1zcDQzMF9pbnRyY2Mgc3Bpcl9mdW5jICcgK1xuICAgICAgJ3NwaXJfa2VybmVsIHg4Nl82NF9zeXN2Y2MgeDg2XzY0X3dpbjY0Y2MgeDg2X3RoaXNjYWxsY2MgJyArXG4gICAgICAnY2MgYyBzaWduZXh0IHplcm9leHQgaW5yZWcgc3JldCBub3Vud2luZCAnICtcbiAgICAgICdub3JldHVybiBub2FsaWFzIG5vY2FwdHVyZSBieXZhbCBuZXN0IHJlYWRub25lICcgK1xuICAgICAgJ3JlYWRvbmx5IGlubGluZWhpbnQgbm9pbmxpbmUgYWx3YXlzaW5saW5lIG9wdHNpemUgc3NwICcgK1xuICAgICAgJ3NzcHJlcSBub3JlZHpvbmUgbm9pbXBsaWNpdGZsb2F0IG5ha2VkIGJ1aWx0aW4gY29sZCAnICtcbiAgICAgICdub2J1aWx0aW4gbm9kdXBsaWNhdGUgbm9ubGF6eWJpbmQgb3B0bm9uZSByZXR1cm5zX3R3aWNlICcgK1xuICAgICAgJ3Nhbml0aXplX2FkZHJlc3Mgc2FuaXRpemVfbWVtb3J5IHNhbml0aXplX3RocmVhZCBzc3BzdHJvbmcgJyArXG4gICAgICAndXd0YWJsZSByZXR1cm5lZCB0eXBlIG9wYXF1ZSBlcSBuZSBzbHQgc2d0ICcgK1xuICAgICAgJ3NsZSBzZ2UgdWx0IHVndCB1bGUgdWdlIG9lcSBvbmUgb2x0IG9ndCAnICtcbiAgICAgICdvbGUgb2dlIG9yZCB1bm8gdWVxIHVuZSB4IGFjcV9yZWwgYWNxdWlyZSAnICtcbiAgICAgICdhbGlnbnN0YWNrIGF0b21pYyBjYXRjaCBjbGVhbnVwIGZpbHRlciBpbnRlbGRpYWxlY3QgJyArXG4gICAgICAnbWF4IG1pbiBtb25vdG9uaWMgbmFuZCBwZXJzb25hbGl0eSByZWxlYXNlIHNlcV9jc3QgJyArXG4gICAgICAnc2luZ2xldGhyZWFkIHVtYXggdW1pbiB1bm9yZGVyZWQgeGNoZyBhZGQgZmFkZCAnICtcbiAgICAgICdzdWIgZnN1YiBtdWwgZm11bCB1ZGl2IHNkaXYgZmRpdiB1cmVtIHNyZW0gJyArXG4gICAgICAnZnJlbSBzaGwgbHNociBhc2hyIGFuZCBvciB4b3IgaWNtcCBmY21wICcgK1xuICAgICAgJ3BoaSBjYWxsIHRydW5jIHpleHQgc2V4dCBmcHRydW5jIGZwZXh0IHVpdG9mcCAnICtcbiAgICAgICdzaXRvZnAgZnB0b3VpIGZwdG9zaSBpbnR0b3B0ciBwdHJ0b2ludCBiaXRjYXN0ICcgK1xuICAgICAgJ2FkZHJzcGFjZWNhc3Qgc2VsZWN0IHZhX2FyZyByZXQgYnIgc3dpdGNoIGludm9rZSAnICtcbiAgICAgICd1bndpbmQgdW5yZWFjaGFibGUgaW5kaXJlY3RiciBsYW5kaW5ncGFkIHJlc3VtZSAnICtcbiAgICAgICdtYWxsb2MgYWxsb2NhIGZyZWUgbG9hZCBzdG9yZSBnZXRlbGVtZW50cHRyICcgK1xuICAgICAgJ2V4dHJhY3RlbGVtZW50IGluc2VydGVsZW1lbnQgc2h1ZmZsZXZlY3RvciBnZXRyZXN1bHQgJyArXG4gICAgICAnZXh0cmFjdHZhbHVlIGluc2VydHZhbHVlIGF0b21pY3JtdyBjbXB4Y2hnIGZlbmNlICcgK1xuICAgICAgJ2FyZ21lbW9ubHkgZG91YmxlJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdpXFxcXGQrJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLCAnXFxcXG4nLCB7cmVsZXZhbmNlOiAwfVxuICAgICAgKSxcbiAgICAgIC8vIERvdWJsZSBxdW90ZSBzdHJpbmdcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgLy8gRG91YmxlLXF1b3RlZCBzdHJpbmdcbiAgICAgICAgICB7IGJlZ2luOiAnXCInLCBlbmQ6ICdbXlxcXFxcXFxcXVwiJyB9LFxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnQCcgKyBpZGVudGlmaWVyIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ0BcXFxcZCsnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJyEnICsgaWRlbnRpZmllciB9LFxuICAgICAgICAgIHsgYmVnaW46ICchXFxcXGQrJyArIGlkZW50aWZpZXIgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICclJyArIGlkZW50aWZpZXIgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnJVxcXFxkKycgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnI1xcXFxkKycgfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHsgYmVnaW46ICcwW3hYXVthLWZBLUYwLTldKycgfSxcbiAgICAgICAgICAgIHsgYmVnaW46ICctP1xcXFxkKyg/OlsuXVxcXFxkKyk/KD86W2VFXVstK10/XFxcXGQrKD86Wy5dXFxcXGQrKT8pPycgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICAgIHZhciBMU0xfU1RSSU5HX0VTQ0FQRV9DSEFSUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICBiZWdpbjogL1xcXFxbdG5cIlxcXFxdL1xuICAgIH07XG5cbiAgICB2YXIgTFNMX1NUUklOR1MgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBMU0xfU1RSSU5HX0VTQ0FQRV9DSEFSU1xuICAgICAgICBdXG4gICAgfTtcblxuICAgIHZhciBMU0xfTlVNQkVSUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuQ19OVU1CRVJfUkVcbiAgICB9O1xuXG4gICAgdmFyIExTTF9DT05TVEFOVFMgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpQSXxUV09fUEl8UElfQllfVFdPfERFR19UT19SQUR8UkFEX1RPX0RFR3xTUVJUMilcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OlhQX0VSUk9SXyg/OkVYUEVSSUVOQ0VTX0RJU0FCTEVEfEVYUEVSSUVOQ0VfKD86RElTQUJMRUR8U1VTUEVOREVEKXxJTlZBTElEXyg/OkVYUEVSSUVOQ0V8UEFSQU1FVEVSUyl8S0VZX05PVF9GT1VORHxNQVRVUklUWV9FWENFRURFRHxOT05FfE5PVF8oPzpGT1VORHxQRVJNSVRURUQoPzpfTEFORCk/KXxOT19FWFBFUklFTkNFfFFVT1RBX0VYQ0VFREVEfFJFVFJZX1VQREFURXxTVE9SQUdFX0VYQ0VQVElPTnxTVE9SRV9ESVNBQkxFRHxUSFJPVFRMRUR8VU5LTk9XTl9FUlJPUil8SlNPTl9BUFBFTkR8U1RBVFVTXyg/OlBIWVNJQ1N8Uk9UQVRFX1tYWVpdfFBIQU5UT018U0FOREJPWHxCTE9DS19HUkFCKD86X09CSkVDVCk/fCg/OkRJRXxSRVRVUk4pX0FUX0VER0V8Q0FTVF9TSEFET1dTfE9LfE1BTEZPUk1FRF9QQVJBTVN8VFlQRV9NSVNNQVRDSHxCT1VORFNfRVJST1J8Tk9UXyg/OkZPVU5EfFNVUFBPUlRFRCl8SU5URVJOQUxfRVJST1J8V0hJVEVMSVNUX0ZBSUxFRCl8QUdFTlQoPzpfKD86QllfKD86TEVHQUNZX3xVU0VSKU5BTUV8RkxZSU5HfEFUVEFDSE1FTlRTfFNDUklQVEVEfE1PVVNFTE9PS3xTSVRUSU5HfE9OX09CSkVDVHxBV0FZfFdBTEtJTkd8SU5fQUlSfFRZUElOR3xDUk9VQ0hJTkd8QlVTWXxBTFdBWVNfUlVOfEFVVE9QSUxPVHxMSVNUXyg/OlBBUkNFTCg/Ol9PV05FUik/fFJFR0lPTikpKT98Q0FNRVJBXyg/OlBJVENIfERJU1RBTkNFfEJFSElORE5FU1NfKD86QU5HTEV8TEFHKXwoPzpGT0NVU3xQT1NJVElPTikoPzpfKD86VEhSRVNIT0xEfExPQ0tFRHxMQUcpKT98Rk9DVVNfT0ZGU0VUfEFDVElWRSl8QU5JTV9PTnxMT09QfFJFVkVSU0V8UElOR19QT05HfFNNT09USHxST1RBVEV8U0NBTEV8QUxMX1NJREVTfExJTktfKD86Uk9PVHxTRVR8QUxMXyg/Ok9USEVSU3xDSElMRFJFTil8VEhJUyl8QUNUSVZFfFBBU1MoPzpJVkV8Xyg/OkFMV0FZU3xJRl9OT1RfSEFORExFRHxORVZFUikpfFNDUklQVEVEfENPTlRST0xfKD86RldEfEJBQ0t8KD86Uk9UXyk/KD86TEVGVHxSSUdIVCl8VVB8RE9XTnwoPzpNTF8pP0xCVVRUT04pfFBFUk1JU1NJT05fKD86UkVUVVJOX09CSkVDVFN8REVCSVR8T1ZFUlJJREVfQU5JTUFUSU9OU3xTSUxFTlRfRVNUQVRFX01BTkFHRU1FTlR8VEFLRV9DT05UUk9MU3xUUklHR0VSX0FOSU1BVElPTnxBVFRBQ0h8Q0hBTkdFX0xJTktTfCg/OkNPTlRST0x8VFJBQ0spX0NBTUVSQXxURUxFUE9SVCl8SU5WRU5UT1JZXyg/OlRFWFRVUkV8U09VTkR8T0JKRUNUfFNDUklQVHxMQU5ETUFSS3xDTE9USElOR3xOT1RFQ0FSRHxCT0RZUEFSVHxBTklNQVRJT058R0VTVFVSRXxBTEx8Tk9ORSl8Q0hBTkdFRF8oPzpJTlZFTlRPUll8Q09MT1J8U0hBUEV8U0NBTEV8VEVYVFVSRXxMSU5LfEFMTE9XRURfRFJPUHxPV05FUnxSRUdJT04oPzpfU1RBUlQpP3xURUxFUE9SVHxNRURJQSl8T0JKRUNUXyg/OkNMSUNLX0FDVElPTnxIT1ZFUl9IRUlHSFR8TEFTVF9PV05FUl9JRHwoPzpQSFlTSUNTfFNFUlZFUnxTVFJFQU1JTkcpX0NPU1R8VU5LTk9XTl9ERVRBSUx8Q0hBUkFDVEVSX1RJTUV8UEhBTlRPTXxQSFlTSUNTfFRFTVBfKD86QVRUQUNIRUR8T05fUkVaKXxOQU1FfERFU0N8UE9TfFBSSU1fKD86Q09VTlR8RVFVSVZBTEVOQ0UpfFJFVFVSTl8oPzpQQVJDRUwoPzpfT1dORVIpP3xSRUdJT04pfFJFWlpFUl9LRVl8Uk9PP1R8VkVMT0NJVFl8T01FR0F8T1dORVJ8R1JPVVAoPzpfVEFHKT98Q1JFQVRPUnxBVFRBQ0hFRF8oPzpQT0lOVHxTTE9UU19BVkFJTEFCTEUpfFJFTkRFUl9XRUlHSFR8KD86Qk9EWV9TSEFQRXxQQVRIRklORElORylfVFlQRXwoPzpSVU5OSU5HfFRPVEFMKV9TQ1JJUFRfQ09VTlR8VE9UQUxfSU5WRU5UT1JZX0NPVU5UfFNDUklQVF8oPzpNRU1PUll8VElNRSkpfFRZUEVfKD86SU5URUdFUnxGTE9BVHxTVFJJTkd8S0VZfFZFQ1RPUnxST1RBVElPTnxJTlZBTElEKXwoPzpERUJVR3xQVUJMSUMpX0NIQU5ORUx8QVRUQUNIXyg/OkFWQVRBUl9DRU5URVJ8Q0hFU1R8SEVBRHxCQUNLfFBFTFZJU3xNT1VUSHxDSElOfE5FQ0t8Tk9TRXxCRUxMWXxbTFJdKD86U0hPVUxERVJ8SEFORHxGT09UfEVBUnxFWUV8W1VMXSg/OkFSTXxMRUcpfEhJUCl8KD86TEVGVHxSSUdIVClfUEVDfEhVRF8oPzpDRU5URVJfWzEyXXxUT1BfKD86UklHSFR8Q0VOVEVSfExFRlQpfEJPVFRPTSg/Ol8oPzpSSUdIVHxMRUZUKSk/KXxbTFJdSEFORF9SSU5HMXxUQUlMXyg/OkJBU0V8VElQKXxbTFJdV0lOR3xGQUNFXyg/OkpBV3xbTFJdRUFSfFtMUl1FWUV8VE9VTkdFKXxHUk9JTnxISU5EX1tMUl1GT09UKXxMQU5EXyg/OkxFVkVMfFJBSVNFfExPV0VSfFNNT09USHxOT0lTRXxSRVZFUlQpfERBVEFfKD86T05MSU5FfE5BTUV8Qk9STnxTSU1fKD86UE9TfFNUQVRVU3xSQVRJTkcpfFBBWUlORk8pfFBBWU1FTlRfSU5GT18oPzpPTl9GSUxFfFVTRUQpfFJFTU9URV9EQVRBXyg/OkNIQU5ORUx8UkVRVUVTVHxSRVBMWSl8UFNZU18oPzpQQVJUXyg/OkJGXyg/OlpFUk98T05FKD86X01JTlVTXyg/OkRFU1RfQ09MT1J8U09VUkNFXyhBTFBIQXxDT0xPUikpKT98REVTVF9DT0xPUnxTT1VSQ0VfKEFMUEhBfENPTE9SKSl8QkxFTkRfRlVOQ18oREVTVHxTT1VSQ0UpfEZMQUdTfCg/OlNUQVJUfEVORClfKD86Q09MT1J8QUxQSEF8U0NBTEV8R0xPVyl8TUFYX0FHRXwoPzpSSUJCT058V0lORHxJTlRFUlBfKD86Q09MT1J8U0NBTEUpfEJPVU5DRXxGT0xMT1dfKD86U1JDfFZFTE9DSVRZKXxUQVJHRVRfKD86UE9TfExJTkVBUil8RU1JU1NJVkUpX01BU0spfFNSQ18oPzpNQVhfQUdFfFBBVFRFUk58QU5HTEVfKD86QkVHSU58RU5EKXxCVVJTVF8oPzpSQVRFfFBBUlRfQ09VTlR8UkFESVVTfFNQRUVEXyg/Ok1JTnxNQVgpKXxBQ0NFTHxURVhUVVJFfFRBUkdFVF9LRVl8T01FR0F8UEFUVEVSTl8oPzpEUk9QfEVYUExPREV8QU5HTEUoPzpfQ09ORSg/Ol9FTVBUWSk/KT8pKSl8VkVISUNMRV8oPzpSRUZFUkVOQ0VfRlJBTUV8VFlQRV8oPzpOT05FfFNMRUR8Q0FSfEJPQVR8QUlSUExBTkV8QkFMTE9PTil8KD86TElORUFSfEFOR1VMQVIpXyg/OkZSSUNUSU9OX1RJTUVTQ0FMRXxNT1RPUl9ESVJFQ1RJT04pfExJTkVBUl9NT1RPUl9PRkZTRVR8SE9WRVJfKD86SEVJR0hUfEVGRklDSUVOQ1l8VElNRVNDQUxFKXxCVU9ZQU5DWXwoPzpMSU5FQVJ8QU5HVUxBUilfKD86REVGTEVDVElPTl8oPzpFRkZJQ0lFTkNZfFRJTUVTQ0FMRSl8TU9UT1JfKD86REVDQVlfKT9USU1FU0NBTEUpfFZFUlRJQ0FMX0FUVFJBQ1RJT05fKD86RUZGSUNJRU5DWXxUSU1FU0NBTEUpfEJBTktJTkdfKD86RUZGSUNJRU5DWXxNSVh8VElNRVNDQUxFKXxGTEFHXyg/Ok5PX0RFRkxFQ1RJT05fVVB8TElNSVRfKD86Uk9MTF9PTkxZfE1PVE9SX1VQKXxIT1ZFUl8oPzooPzpXQVRFUnxURVJSQUlOfFVQKV9PTkxZfEdMT0JBTF9IRUlHSFQpfE1PVVNFTE9PS18oPzpTVEVFUnxCQU5LKXxDQU1FUkFfREVDT1VQTEVEKSl8UFJJTV8oPzpBTExPV19VTlNJVHxBTFBIQV9NT0RFKD86Xyg/OkJMRU5EfEVNSVNTSVZFfE1BU0t8Tk9ORSkpP3xOT1JNQUx8U1BFQ1VMQVJ8VFlQRSg/Ol8oPzpCT1h8Q1lMSU5ERVJ8UFJJU018U1BIRVJFfFRPUlVTfFRVQkV8UklOR3xTQ1VMUFQpKT98SE9MRV8oPzpERUZBVUxUfENJUkNMRXxTUVVBUkV8VFJJQU5HTEUpfE1BVEVSSUFMKD86Xyg/OlNUT05FfE1FVEFMfEdMQVNTfFdPT0R8RkxFU0h8UExBU1RJQ3xSVUJCRVIpKT98U0hJTllfKD86Tk9ORXxMT1d8TUVESVVNfEhJR0gpfEJVTVBfKD86Tk9ORXxCUklHSFR8REFSS3xXT09EfEJBUkt8QlJJQ0tTfENIRUNLRVJ8Q09OQ1JFVEV8VElMRXxTVE9ORXxESVNLU3xHUkFWRUx8QkxPQlN8U0lESU5HfExBUkdFVElMRXxTVFVDQ098U1VDVElPTnxXRUFWRSl8VEVYR0VOXyg/OkRFRkFVTFR8UExBTkFSKXxTQ1JJUFRFRF9TSVRfT05MWXxTQ1VMUFRfKD86VFlQRV8oPzpTUEhFUkV8VE9SVVN8UExBTkV8Q1lMSU5ERVJ8TUFTSyl8RkxBR18oPzpNSVJST1J8SU5WRVJUKSl8UEhZU0lDUyg/Ol8oPzpTSEFQRV8oPzpDT05WRVh8Tk9ORXxQUklNfFRZUEUpKSk/fCg/OlBPU3xST1QpX0xPQ0FMfFNMSUNFfFRFWFR8RkxFWElCTEV8UE9JTlRfTElHSFR8VEVNUF9PTl9SRVp8UEhBTlRPTXxQT1NJVElPTnxTSVRfVEFSR0VUfFNJWkV8Uk9UQVRJT058VEVYVFVSRXxOQU1FfE9NRUdBfERFU0N8TElOS19UQVJHRVR8Q09MT1J8QlVNUF9TSElOWXxGVUxMQlJJR0hUfFRFWEdFTnxHTE9XfE1FRElBXyg/OkFMVF9JTUFHRV9FTkFCTEV8Q09OVFJPTFN8KD86Q1VSUkVOVHxIT01FKV9VUkx8QVVUT18oPzpMT09QfFBMQVl8U0NBTEV8Wk9PTSl8RklSU1RfQ0xJQ0tfSU5URVJBQ1R8KD86V0lEVEh8SEVJR0hUKV9QSVhFTFN8V0hJVEVMSVNUKD86X0VOQUJMRSk/fFBFUk1TXyg/OklOVEVSQUNUfENPTlRST0wpfFBBUkFNX01BWHxDT05UUk9MU18oPzpTVEFOREFSRHxNSU5JKXxQRVJNXyg/Ok5PTkV8T1dORVJ8R1JPVVB8QU5ZT05FKXxNQVhfKD86VVJMX0xFTkdUSHxXSElURUxJU1RfKD86U0laRXxDT1VOVCl8KD86V0lEVEh8SEVJR0hUKV9QSVhFTFMpKSl8TUFTS18oPzpCQVNFfE9XTkVSfEdST1VQfEVWRVJZT05FfE5FWFQpfFBFUk1fKD86VFJBTlNGRVJ8TU9ESUZZfENPUFl8TU9WRXxBTEwpfFBBUkNFTF8oPzpNRURJQV9DT01NQU5EXyg/OlNUT1B8UEFVU0V8UExBWXxMT09QfFRFWFRVUkV8VVJMfFRJTUV8QUdFTlR8VU5MT0FEfEFVVE9fQUxJR058VFlQRXxTSVpFfERFU0N8TE9PUF9TRVQpfEZMQUdfKD86QUxMT1dfKD86RkxZfCg/OkdST1VQXyk/U0NSSVBUU3xMQU5ETUFSS3xURVJSQUZPUk18REFNQUdFfENSRUFURV8oPzpHUk9VUF8pP09CSkVDVFMpfFVTRV8oPzpBQ0NFU1NfKD86R1JPVVB8TElTVCl8QkFOX0xJU1R8TEFORF9QQVNTX0xJU1QpfExPQ0FMX1NPVU5EX09OTFl8UkVTVFJJQ1RfUFVTSE9CSkVDVHxBTExPV18oPzpHUk9VUHxBTEwpX09CSkVDVF9FTlRSWSl8Q09VTlRfKD86VE9UQUx8T1dORVJ8R1JPVVB8T1RIRVJ8U0VMRUNURUR8VEVNUCl8REVUQUlMU18oPzpOQU1FfERFU0N8T1dORVJ8R1JPVVB8QVJFQXxJRHxTRUVfQVZBVEFSUykpfExJU1RfU1RBVF8oPzpNQVh8TUlOfE1FQU58TUVESUFOfFNURF9ERVZ8U1VNKD86X1NRVUFSRVMpP3xOVU1fQ09VTlR8R0VPTUVUUklDX01FQU58UkFOR0UpfFBBWV8oPzpISURFfERFRkFVTFQpfFJFR0lPTl9GTEFHXyg/OkFMTE9XX0RBTUFHRXxGSVhFRF9TVU58QkxPQ0tfVEVSUkFGT1JNfFNBTkRCT1h8RElTQUJMRV8oPzpDT0xMSVNJT05TfFBIWVNJQ1MpfEJMT0NLX0ZMWXxBTExPV19ESVJFQ1RfVEVMRVBPUlR8UkVTVFJJQ1RfUFVTSE9CSkVDVCl8SFRUUF8oPzpNRVRIT0R8TUlNRVRZUEV8Qk9EWV8oPzpNQVhMRU5HVEh8VFJVTkNBVEVEKXxDVVNUT01fSEVBREVSfFBSQUdNQV9OT19DQUNIRXxWRVJCT1NFX1RIUk9UVExFfFZFUklGWV9DRVJUKXxTSVRfKD86SU5WQUxJRF8oPzpBR0VOVHxMSU5LX09CSkVDVCl8Tk8oPzpUX0VYUEVSSUVOQ0V8Xyg/OkFDQ0VTU3xFWFBFUklFTkNFX1BFUk1JU1NJT058U0lUX1RBUkdFVCkpKXxTVFJJTkdfKD86VFJJTSg/Ol8oPzpIRUFEfFRBSUwpKT8pfENMSUNLX0FDVElPTl8oPzpOT05FfFRPVUNIfFNJVHxCVVl8UEFZfE9QRU4oPzpfTUVESUEpP3xQTEFZfFpPT00pfFRPVUNIX0lOVkFMSURfRkFDRXxQUk9GSUxFXyg/Ok5PTkV8U0NSSVBUX01FTU9SWSl8UkNfKD86REFUQV9GTEFHU3xERVRFQ1RfUEhBTlRPTXxHRVRfKD86TElOS19OVU18Tk9STUFMfFJPT1RfS0VZKXxNQVhfSElUU3xSRUpFQ1RfKD86VFlQRVN8QUdFTlRTfCg/Ok5PTik/UEhZU0lDQUx8TEFORCkpfFJDRVJSXyg/OkNBU1RfVElNRV9FWENFRURFRHxTSU1fUEVSRl9MT1d8VU5LTk9XTil8RVNUQVRFX0FDQ0VTU18oPzpBTExPV0VEXyg/OkFHRU5UfEdST1VQKV8oPzpBRER8UkVNT1ZFKXxCQU5ORURfQUdFTlRfKD86QUREfFJFTU9WRSkpfERFTlNJVFl8RlJJQ1RJT058UkVTVElUVVRJT058R1JBVklUWV9NVUxUSVBMSUVSfEtGTV8oPzpDT01NQU5EfENNRF8oPzpQTEFZfFNUT1B8UEFVU0UpfE1PREV8Rk9SV0FSRHxMT09QfFBJTkdfUE9OR3xSRVZFUlNFfERBVEF8Uk9UQVRJT058VFJBTlNMQVRJT04pfEVSUl8oPzpHRU5FUklDfFBBUkNFTF9QRVJNSVNTSU9OU3xNQUxGT1JNRURfUEFSQU1TfFJVTlRJTUVfUEVSTUlTU0lPTlN8VEhST1RUTEVEKXxDSEFSQUNURVJfKD86Q01EXyg/Oig/OlNNT09USF8pP1NUT1B8SlVNUCl8REVTSVJFRF8oPzpUVVJOXyk/U1BFRUR8UkFESVVTfFNUQVlfV0lUSElOX1BBUkNFTHxMRU5HVEh8T1JJRU5UQVRJT058QUNDT1VOVF9GT1JfU0tJUFBFRF9GUkFNRVN8QVZPSURBTkNFX01PREV8VFlQRSg/Ol8oPzpbQUJDRF18Tk9ORSkpP3xNQVhfKD86REVDRUx8VFVSTl9SQURJVVN8KD86QUNDRUx8U1BFRUQpKSl8UFVSU1VJVF8oPzpPRkZTRVR8RlVaWl9GQUNUT1J8R09BTF9UT0xFUkFOQ0V8SU5URVJDRVBUKXxSRVFVSVJFX0xJTkVfT0ZfU0lHSFR8Rk9SQ0VfRElSRUNUX1BBVEh8VkVSVElDQUx8SE9SSVpPTlRBTHxBVk9JRF8oPzpDSEFSQUNURVJTfERZTkFNSUNfT0JTVEFDTEVTfE5PTkUpfFBVXyg/OkVWQURFXyg/OkhJRERFTnxTUE9UVEVEKXxGQUlMVVJFXyg/OkRZTkFNSUNfUEFUSEZJTkRJTkdfRElTQUJMRUR8SU5WQUxJRF8oPzpHT0FMfFNUQVJUKXxOT18oPzpOQVZNRVNIfFZBTElEX0RFU1RJTkFUSU9OKXxPVEhFUnxUQVJHRVRfR09ORXwoPzpQQVJDRUxfKT9VTlJFQUNIQUJMRSl8KD86R09BTHxTTE9XRE9XTl9ESVNUQU5DRSlfUkVBQ0hFRCl8VFJBVkVSU0FMX1RZUEUoPzpfKD86RkFTVHxOT05FfFNMT1cpKT98Q09OVEVOVF9UWVBFXyg/OkFUT018Rk9STXxIVE1MfEpTT058TExTRHxSU1N8VEVYVHxYSFRNTHxYTUwpfEdDTlBfKD86UkFESVVTfFNUQVRJQyl8KD86UEFUUk9MfFdBTkRFUilfUEFVU0VfQVRfV0FZUE9JTlRTfE9QVF8oPzpBVkFUQVJ8Q0hBUkFDVEVSfEVYQ0xVU0lPTl9WT0xVTUV8TEVHQUNZX0xJTktTRVR8TUFURVJJQUxfVk9MVU1FfE9USEVSfFNUQVRJQ19PQlNUQUNMRXxXQUxLQUJMRSl8U0lNX1NUQVRfUENUX0NIQVJTX1NURVBQRUQpXFxcXGInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpGQUxTRXxUUlVFKVxcXFxiJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86WkVST19ST1RBVElPTilcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OkVPRnxKU09OXyg/OkFSUkFZfERFTEVURXxGQUxTRXxJTlZBTElEfE5VTEx8TlVNQkVSfE9CSkVDVHxTVFJJTkd8VFJVRSl8TlVMTF9LRVl8VEVYVFVSRV8oPzpCTEFOS3xERUZBVUxUfE1FRElBfFBMWVdPT0R8VFJBTlNQQVJFTlQpfFVSTF9SRVFVRVNUXyg/OkdSQU5URUR8REVOSUVEKSlcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OlpFUk9fVkVDVE9SfFRPVUNIX0lOVkFMSURfKD86VEVYQ09PUkR8VkVDVE9SKSlcXFxcYidcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH07XG5cbiAgICB2YXIgTFNMX0ZVTkNUSU9OUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKD86bGwoPzpBZ2VudEluRXhwZXJpZW5jZXwoPzpDcmVhdGV8RGF0YVNpemV8RGVsZXRlfEtleUNvdW50fEtleXN8UmVhZHxVcGRhdGUpS2V5VmFsdWV8R2V0RXhwZXJpZW5jZSg/OkRldGFpbHN8RXJyb3JNZXNzYWdlKXxSZXR1cm5PYmplY3RzQnkoPzpJRHxPd25lcil8SnNvbig/OjJMaXN0fFtHU11ldFZhbHVlfFZhbHVlVHlwZSl8U2lufENvc3xUYW58QXRhbjJ8U3FydHxQb3d8QWJzfEZhYnN8RnJhbmR8Rmxvb3J8Q2VpbHxSb3VuZHxWZWMoPzpNYWd8Tm9ybXxEaXN0KXxSb3QoPzpCZXR3ZWVufDIoPzpFdWxlcnxGd2R8TGVmdHxVcCkpfCg/OkV1bGVyfEF4ZXMpMlJvdHxXaGlzcGVyfCg/OlJlZ2lvbnxPd25lcik/U2F5fFNob3V0fExpc3Rlbig/OkNvbnRyb2x8UmVtb3ZlKT98U2Vuc29yKD86UmVwZWF0fFJlbW92ZSk/fERldGVjdGVkKD86TmFtZXxLZXl8T3duZXJ8VHlwZXxQb3N8VmVsfEdyYWJ8Um90fEdyb3VwfExpbmtOdW1iZXIpfERpZXxHcm91bmR8V2luZHwoPzpbR1NdZXQpKD86QW5pbWF0aW9uT3ZlcnJpZGV8TWVtb3J5TGltaXR8UHJpbU1lZGlhUGFyYW1zfFBhcmNlbE11c2ljVVJMfE9iamVjdCg/OkRlc2N8TmFtZSl8UGh5c2ljc01hdGVyaWFsfFN0YXR1c3xTY2FsZXxDb2xvcnxBbHBoYXxUZXh0dXJlfFBvc3xSb3R8Rm9yY2V8VG9ycXVlKXxSZXNldEFuaW1hdGlvbk92ZXJyaWRlfCg/OlNjYWxlfE9mZnNldHxSb3RhdGUpVGV4dHVyZXwoPzpSb3QpP1RhcmdldCg/OlJlbW92ZSk/fCg/OlN0b3ApP01vdmVUb1RhcmdldHxBcHBseSg/OlJvdGF0aW9uYWwpP0ltcHVsc2V8U2V0KD86S2V5ZnJhbWVkTW90aW9ufENvbnRlbnRUeXBlfFJlZ2lvblBvc3woPzpBbmd1bGFyKT9WZWxvY2l0eXxCdW95YW5jeXxIb3ZlckhlaWdodHxGb3JjZUFuZFRvcnF1ZXxUaW1lckV2ZW50fFNjcmlwdFN0YXRlfERhbWFnZXxUZXh0dXJlQW5pbXxTb3VuZCg/OlF1ZXVlaW5nfFJhZGl1cyl8VmVoaWNsZSg/OlR5cGV8KD86RmxvYXR8VmVjdG9yfFJvdGF0aW9uKVBhcmFtKXwoPzpUb3VjaHxTaXQpP1RleHR8Q2FtZXJhKD86RXllfEF0KU9mZnNldHxQcmltaXRpdmVQYXJhbXN8Q2xpY2tBY3Rpb258TGluayg/OkFscGhhfENvbG9yfFByaW1pdGl2ZVBhcmFtcyg/OkZhc3QpP3xUZXh0dXJlKD86QW5pbSk/fENhbWVyYXxNZWRpYSl8UmVtb3RlU2NyaXB0QWNjZXNzUGlufFBheVByaWNlfExvY2FsUm90KXxTY2FsZUJ5RmFjdG9yfEdldCg/Oig/Ok1heHxNaW4pU2NhbGVGYWN0b3J8Q2xvc2VzdE5hdlBvaW50fFN0YXRpY1BhdGh8U2ltU3RhdHN8RW52fFByaW1pdGl2ZVBhcmFtc3xMaW5rKD86UHJpbWl0aXZlUGFyYW1zfE51bWJlcig/Ok9mU2lkZXMpP3xLZXl8TmFtZXxNZWRpYSl8SFRUUEhlYWRlcnxGcmVlVVJMc3xPYmplY3QoPzpEZXRhaWxzfFBlcm1NYXNrfFByaW1Db3VudCl8UGFyY2VsKD86TWF4UHJpbXN8RGV0YWlsc3xQcmltKD86Q291bnR8T3duZXJzKSl8QXR0YWNoZWQoPzpMaXN0KT98KD86U1BNYXh8RnJlZXxVc2VkKU1lbW9yeXxSZWdpb24oPzpOYW1lfFRpbWVEaWxhdGlvbnxGUFN8Q29ybmVyfEFnZW50Q291bnQpfFJvb3QoPzpQb3NpdGlvbnxSb3RhdGlvbil8VW5peFRpbWV8KD86UGFyY2VsfFJlZ2lvbilGbGFnc3woPzpXYWxsfEdNVCljbG9ja3xTaW11bGF0b3JIb3N0bmFtZXxCb3VuZGluZ0JveHxHZW9tZXRyaWNDZW50ZXJ8Q3JlYXRvcnxOdW1iZXJPZig/OlByaW1zfE5vdGVjYXJkTGluZXN8U2lkZXMpfEFuaW1hdGlvbig/Okxpc3QpP3woPzpDYW1lcmF8TG9jYWwpKD86UG9zfFJvdCl8VmVsfEFjY2VsfE9tZWdhfFRpbWUoPzpzdGFtcHxPZkRheSl8KD86T2JqZWN0fENlbnRlck9mKT9NYXNzfE1hc3NNS1N8RW5lcmd5fE93bmVyfCg/Ok93bmVyKT9LZXl8U3VuRGlyZWN0aW9ufFRleHR1cmUoPzpPZmZzZXR8U2NhbGV8Um90KXxJbnZlbnRvcnkoPzpOdW1iZXJ8TmFtZXxLZXl8VHlwZXxDcmVhdG9yfFBlcm1NYXNrKXxQZXJtaXNzaW9ucyg/OktleSk/fFN0YXJ0UGFyYW1ldGVyfExpc3QoPzpMZW5ndGh8RW50cnlUeXBlKXxEYXRlfEFnZW50KD86U2l6ZXxJbmZvfExhbmd1YWdlfExpc3QpfExhbmRPd25lckF0fE5vdGVjYXJkTGluZXxTY3JpcHQoPzpOYW1lfFN0YXRlKSl8KD86R2V0fFJlc2V0fEdldEFuZFJlc2V0KVRpbWV8UGxheVNvdW5kKD86U2xhdmUpP3xMb29wU291bmQoPzpNYXN0ZXJ8U2xhdmUpP3woPzpUcmlnZ2VyfFN0b3B8UHJlbG9hZClTb3VuZHwoPzooPzpHZXR8RGVsZXRlKVN1YnxJbnNlcnQpU3RyaW5nfFRvKD86VXBwZXJ8TG93ZXIpfEdpdmUoPzpJbnZlbnRvcnlMaXN0fE1vbmV5KXxSZXpPYmplY3R8KD86U3RvcCk/TG9va0F0fFNsZWVwfENvbGxpc2lvbkZpbHRlcnwoPzpUYWtlfFJlbGVhc2UpQ29udHJvbHN8RGV0YWNoRnJvbUF2YXRhcnxBdHRhY2hUb0F2YXRhcig/OlRlbXApP3xJbnN0YW50TWVzc2FnZXwoPzpHZXROZXh0KT9FbWFpbHxTdG9wSG92ZXJ8TWluRXZlbnREZWxheXxSb3RMb29rQXR8U3RyaW5nKD86TGVuZ3RofFRyaW0pfCg/OlN0YXJ0fFN0b3ApQW5pbWF0aW9ufFRhcmdldE9tZWdhfFJlcXVlc3QoPzpFeHBlcmllbmNlKT9QZXJtaXNzaW9uc3woPzpDcmVhdGV8QnJlYWspTGlua3xCcmVha0FsbExpbmtzfCg/OkdpdmV8UmVtb3ZlKUludmVudG9yeXxXYXRlcnxQYXNzVG91Y2hlc3xSZXF1ZXN0KD86QWdlbnR8SW52ZW50b3J5KURhdGF8VGVsZXBvcnRBZ2VudCg/OkhvbWV8R2xvYmFsQ29vcmRzKT98TW9kaWZ5TGFuZHxDb2xsaXNpb25Tb3VuZHxSZXNldFNjcmlwdHxNZXNzYWdlTGlua2VkfFB1c2hPYmplY3R8UGFzc0NvbGxpc2lvbnN8QXhpc0FuZ2xlMlJvdHxSb3QyKD86QXhpc3xBbmdsZSl8QSg/OmNvc3xzaW4pfEFuZ2xlQmV0d2VlbnxBbGxvd0ludmVudG9yeURyb3B8U3ViU3RyaW5nSW5kZXh8TGlzdDIoPzpDU1Z8SW50ZWdlcnxKc29ufEZsb2F0fFN0cmluZ3xLZXl8VmVjdG9yfFJvdHxMaXN0KD86U3RyaWRlZCk/KXxEZWxldGVTdWJMaXN0fExpc3QoPzpTdGF0aXN0aWNzfFNvcnR8UmFuZG9taXplfCg/Okluc2VydHxGaW5kfFJlcGxhY2UpTGlzdCl8RWRnZU9mV29ybGR8QWRqdXN0U291bmRWb2x1bWV8S2V5Mk5hbWV8VHJpZ2dlclNvdW5kTGltaXRlZHxFamVjdEZyb21MYW5kfCg/OkNTVnxQYXJzZVN0cmluZykyTGlzdHxPdmVyTXlMYW5kfFNhbWVHcm91cHxVblNpdHxHcm91bmQoPzpTbG9wZXxOb3JtYWx8Q29udG91cil8R3JvdW5kUmVwZWx8KD86U2V0fFJlbW92ZSlWZWhpY2xlRmxhZ3N8U2l0T25MaW5rfCg/OkF2YXRhck9uKT8oPzpMaW5rKT9TaXRUYXJnZXR8U2NyaXB0KD86RGFuZ2VyfFByb2ZpbGVyKXxEaWFsb2d8Vm9sdW1lRGV0ZWN0fFJlc2V0T3RoZXJTY3JpcHR8UmVtb3RlTG9hZFNjcmlwdFBpbnwoPzpPcGVufENsb3NlKVJlbW90ZURhdGFDaGFubmVsfFNlbmRSZW1vdGVEYXRhfFJlbW90ZURhdGFSZXBseXwoPzpJbnRlZ2VyfFN0cmluZylUb0Jhc2U2NHxYb3JCYXNlNjR8TG9nKD86MTApP3xCYXNlNjRUbyg/OlN0cmluZ3xJbnRlZ2VyKXxQYXJzZVN0cmluZ0tlZXBOdWxsc3xSZXpBdFJvb3R8UmVxdWVzdFNpbXVsYXRvckRhdGF8Rm9yY2VNb3VzZWxvb2t8KD86TG9hZHxSZWxlYXNlfCg/OkV8VW5lKXNjYXBlKVVSTHxQYXJjZWxNZWRpYSg/OkNvbW1hbmRMaXN0fFF1ZXJ5KXxNb2RQb3d8TWFwRGVzdGluYXRpb258KD86UmVtb3ZlRnJvbXxBZGRUb3xSZXNldClMYW5kKD86UGFzc3xCYW4pTGlzdHwoPzpTZXR8Q2xlYXIpQ2FtZXJhUGFyYW1zfEhUVFAoPzpSZXF1ZXN0fFJlc3BvbnNlKXxUZXh0Qm94fERldGVjdGVkVG91Y2goPzpVVnxGYWNlfFBvc3woPzpOfEJpbilvcm1hbHxTVCl8KD86TUQ1fFNIQTF8RHVtcExpc3QyKVN0cmluZ3xSZXF1ZXN0KD86U2VjdXJlKT9VUkx8Q2xlYXIoPzpQcmltfExpbmspTWVkaWF8KD86TGluayk/UGFydGljbGVTeXN0ZW18KD86R2V0fFJlcXVlc3QpKD86VXNlcm5hbWV8RGlzcGxheU5hbWUpfFJlZ2lvblNheVRvfENhc3RSYXl8R2VuZXJhdGVLZXl8VHJhbnNmZXJMaW5kZW5Eb2xsYXJzfE1hbmFnZUVzdGF0ZUFjY2Vzc3woPzpDcmVhdGV8RGVsZXRlKUNoYXJhY3RlcnxFeGVjQ2hhcmFjdGVyQ21kfEV2YWRlfEZsZWVGcm9tfE5hdmlnYXRlVG98UGF0cm9sUG9pbnRzfFB1cnN1ZXxVcGRhdGVDaGFyYWN0ZXJ8V2FuZGVyV2l0aGluKSlcXFxcYidcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWxsZWdhbDogJzonLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgTFNMX1NUUklOR1MsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCcvLycsICckJyksXG4gICAgICAgICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBMU0xfTlVNQkVSUyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86c3RhdGV8ZGVmYXVsdClcXFxcYidcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OnN0YXRlXyg/OmVudHJ5fGV4aXQpfHRvdWNoKD86Xyg/OnN0YXJ0fGVuZCkpP3woPzpsYW5kXyk/Y29sbGlzaW9uKD86Xyg/OnN0YXJ0fGVuZCkpP3x0aW1lcnxsaXN0ZW58KD86bm9fKT9zZW5zb3J8Y29udHJvbHwoPzpub3RfKT9hdF8oPzpyb3RfKT90YXJnZXR8bW9uZXl8ZW1haWx8ZXhwZXJpZW5jZV9wZXJtaXNzaW9ucyg/Ol9kZW5pZWQpP3xydW5fdGltZV9wZXJtaXNzaW9uc3xjaGFuZ2VkfGF0dGFjaHxkYXRhc2VydmVyfG1vdmluZ18oPzpzdGFydHxlbmQpfGxpbmtfbWVzc2FnZXwoPzpvbnxvYmplY3QpX3JlenxyZW1vdGVfZGF0YXxodHRwX3JlKD86c3BvbnNlfHF1ZXN0KXxwYXRoX3VwZGF0ZXx0cmFuc2FjdGlvbl9yZXN1bHQpXFxcXGInXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTFNMX0ZVTkNUSU9OUyxcbiAgICAgICAgICAgIExTTF9DT05TVEFOVFMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OmludGVnZXJ8ZmxvYXR8c3RyaW5nfGtleXx2ZWN0b3J8cXVhdGVybmlvbnxyb3RhdGlvbnxsaXN0KVxcXFxiJ1xuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBPUEVOSU5HX0xPTkdfQlJBQ0tFVCA9ICdcXFxcWz0qXFxcXFsnO1xuICB2YXIgQ0xPU0lOR19MT05HX0JSQUNLRVQgPSAnXFxcXF09KlxcXFxdJztcbiAgdmFyIExPTkdfQlJBQ0tFVFMgPSB7XG4gICAgYmVnaW46IE9QRU5JTkdfTE9OR19CUkFDS0VULCBlbmQ6IENMT1NJTkdfTE9OR19CUkFDS0VULFxuICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICB9O1xuICB2YXIgQ09NTUVOVFMgPSBbXG4gICAgaGxqcy5DT01NRU5UKCctLSg/IScgKyBPUEVOSU5HX0xPTkdfQlJBQ0tFVCArICcpJywgJyQnKSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAnLS0nICsgT1BFTklOR19MT05HX0JSQUNLRVQsXG4gICAgICBDTE9TSU5HX0xPTkdfQlJBQ0tFVCxcbiAgICAgIHtcbiAgICAgICAgY29udGFpbnM6IFtMT05HX0JSQUNLRVRTXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfVxuICAgIClcbiAgXTtcbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGxpdGVyYWw6IFwidHJ1ZSBmYWxzZSBuaWxcIixcbiAgICAgIGtleXdvcmQ6IFwiYW5kIGJyZWFrIGRvIGVsc2UgZWxzZWlmIGVuZCBmb3IgZ290byBpZiBpbiBsb2NhbCBub3Qgb3IgcmVwZWF0IHJldHVybiB0aGVuIHVudGlsIHdoaWxlXCIsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLy9NZXRhdGFncyBhbmQgZ2xvYmFsczpcbiAgICAgICAgJ19HIF9FTlYgX1ZFUlNJT04gX19pbmRleCBfX25ld2luZGV4IF9fbW9kZSBfX2NhbGwgX19tZXRhdGFibGUgX190b3N0cmluZyBfX2xlbiAnICtcbiAgICAgICAgJ19fZ2MgX19hZGQgX19zdWIgX19tdWwgX19kaXYgX19tb2QgX19wb3cgX19jb25jYXQgX191bm0gX19lcSBfX2x0IF9fbGUgYXNzZXJ0ICcgK1xuICAgICAgICAvL1N0YW5kYXJkIG1ldGhvZHMgYW5kIHByb3BlcnRpZXM6XG4gICAgICAgICdjb2xsZWN0Z2FyYmFnZSBkb2ZpbGUgZXJyb3IgZ2V0ZmVudiBnZXRtZXRhdGFibGUgaXBhaXJzIGxvYWQgbG9hZGZpbGUgbG9hZHN0cmluZycgK1xuICAgICAgICAnbW9kdWxlIG5leHQgcGFpcnMgcGNhbGwgcHJpbnQgcmF3ZXF1YWwgcmF3Z2V0IHJhd3NldCByZXF1aXJlIHNlbGVjdCBzZXRmZW52JyArXG4gICAgICAgICdzZXRtZXRhdGFibGUgdG9udW1iZXIgdG9zdHJpbmcgdHlwZSB1bnBhY2sgeHBjYWxsIGFyZyBzZWxmJyArXG4gICAgICAgIC8vTGlicmFyeSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIChvbmUgbGluZSBwZXIgbGlicmFyeSk6XG4gICAgICAgICdjb3JvdXRpbmUgcmVzdW1lIHlpZWxkIHN0YXR1cyB3cmFwIGNyZWF0ZSBydW5uaW5nIGRlYnVnIGdldHVwdmFsdWUgJyArXG4gICAgICAgICdkZWJ1ZyBzZXRob29rIGdldG1ldGF0YWJsZSBnZXRob29rIHNldG1ldGF0YWJsZSBzZXRsb2NhbCB0cmFjZWJhY2sgc2V0ZmVudiBnZXRpbmZvIHNldHVwdmFsdWUgZ2V0bG9jYWwgZ2V0cmVnaXN0cnkgZ2V0ZmVudiAnICtcbiAgICAgICAgJ2lvIGxpbmVzIHdyaXRlIGNsb3NlIGZsdXNoIG9wZW4gb3V0cHV0IHR5cGUgcmVhZCBzdGRlcnIgc3RkaW4gaW5wdXQgc3Rkb3V0IHBvcGVuIHRtcGZpbGUgJyArXG4gICAgICAgICdtYXRoIGxvZyBtYXggYWNvcyBodWdlIGxkZXhwIHBpIGNvcyB0YW5oIHBvdyBkZWcgdGFuIGNvc2ggc2luaCByYW5kb20gcmFuZG9tc2VlZCBmcmV4cCBjZWlsIGZsb29yIHJhZCBhYnMgc3FydCBtb2RmIGFzaW4gbWluIG1vZCBmbW9kIGxvZzEwIGF0YW4yIGV4cCBzaW4gYXRhbiAnICtcbiAgICAgICAgJ29zIGV4aXQgc2V0bG9jYWxlIGRhdGUgZ2V0ZW52IGRpZmZ0aW1lIHJlbW92ZSB0aW1lIGNsb2NrIHRtcG5hbWUgcmVuYW1lIGV4ZWN1dGUgcGFja2FnZSBwcmVsb2FkIGxvYWRsaWIgbG9hZGVkIGxvYWRlcnMgY3BhdGggY29uZmlnIHBhdGggc2VlYWxsICcgK1xuICAgICAgICAnc3RyaW5nIHN1YiB1cHBlciBsZW4gZ2ZpbmQgcmVwIGZpbmQgbWF0Y2ggY2hhciBkdW1wIGdtYXRjaCByZXZlcnNlIGJ5dGUgZm9ybWF0IGdzdWIgbG93ZXIgJyArXG4gICAgICAgICd0YWJsZSBzZXRuIGluc2VydCBnZXRuIGZvcmVhY2hpIG1heG4gZm9yZWFjaCBjb25jYXQgc29ydCByZW1vdmUnXG4gICAgfSxcbiAgICBjb250YWluczogQ09NTUVOVFMuY29uY2F0KFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAnKFtfYS16QS1aXVxcXFx3KlxcXFwuKSooW19hLXpBLVpdXFxcXHcqOik/W19hLXpBLVpdXFxcXHcqJ30pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogQ09NTUVOVFNcbiAgICAgICAgICB9XG4gICAgICAgIF0uY29uY2F0KENPTU1FTlRTKVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiBPUEVOSU5HX0xPTkdfQlJBQ0tFVCwgZW5kOiBDTE9TSU5HX0xPTkdfQlJBQ0tFVCxcbiAgICAgICAgY29udGFpbnM6IFtMT05HX0JSQUNLRVRTXSxcbiAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICB9XG4gICAgXSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8qIFZhcmlhYmxlczogc2ltcGxlIChlZyAkKHZhcikpIGFuZCBzcGVjaWFsIChlZyAkQCkgKi9cbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwkXFxcXCgnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFwpJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbQCU8P1xcXlxcK1xcKl0vXG4gICAgICB9LFxuICAgIF1cbiAgfTtcbiAgLyogUXVvdGVkIHN0cmluZyB3aXRoIHZhcmlhYmxlcyBpbnNpZGUgKi9cbiAgdmFyIFFVT1RFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFZBUklBQkxFLFxuICAgIF1cbiAgfTtcbiAgLyogRnVuY3Rpb246ICQoZnVuYyBhcmcsLi4uKSAqL1xuICB2YXIgRlVOQyA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXCRcXChbXFx3LV0rXFxzLywgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdzdWJzdCBwYXRzdWJzdCBzdHJpcCBmaW5kc3RyaW5nIGZpbHRlciBmaWx0ZXItb3V0IHNvcnQgJyArXG4gICAgICAgICd3b3JkIHdvcmRsaXN0IGZpcnN0d29yZCBsYXN0d29yZCBkaXIgbm90ZGlyIHN1ZmZpeCBiYXNlbmFtZSAnICtcbiAgICAgICAgJ2FkZHN1ZmZpeCBhZGRwcmVmaXggam9pbiB3aWxkY2FyZCByZWFscGF0aCBhYnNwYXRoIGVycm9yIHdhcm5pbmcgJyArXG4gICAgICAgICdzaGVsbCBvcmlnaW4gZmxhdm9yIGZvcmVhY2ggaWYgb3IgYW5kIGNhbGwgZXZhbCBmaWxlIHZhbHVlJyxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBWQVJJQUJMRSxcbiAgICBdXG4gIH07XG4gIC8qIFZhcmlhYmxlIGFzc2lnbm1lbnQgKi9cbiAgdmFyIFZBUl9BU1NJRyA9IHtcbiAgICBiZWdpbjogJ14nICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKls6Kz9dPz0nLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSwgZW5kOiAnWzorP10/PScsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICB9XG4gICAgXVxuICB9O1xuICAvKiBNZXRhIHRhcmdldHMgKC5QSE9OWSkgKi9cbiAgdmFyIE1FVEEgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46IC9eXFwuUEhPTlk6LywgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJy5QSE9OWSd9LFxuICAgIGxleGVtZXM6IC9bXFwuXFx3XSsvXG4gIH07XG4gIC8qIFRhcmdldHMgKi9cbiAgdmFyIFRBUkdFVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICBiZWdpbjogL15bXlxcc10rOi8sIGVuZDogLyQvLFxuICAgIGNvbnRhaW5zOiBbVkFSSUFCTEUsXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbWsnLCAnbWFrJ10sXG4gICAga2V5d29yZHM6XG4gICAgICAnZGVmaW5lIGVuZGVmIHVuZGVmaW5lIGlmZGVmIGlmbmRlZiBpZmVxIGlmbmVxIGVsc2UgZW5kaWYgJyArXG4gICAgICAnaW5jbHVkZSAtaW5jbHVkZSBzaW5jbHVkZSBvdmVycmlkZSBleHBvcnQgdW5leHBvcnQgcHJpdmF0ZSB2cGF0aCcsXG4gICAgbGV4ZW1lczogL1tcXHctXSsvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBRVU9URV9TVFJJTkcsXG4gICAgICBGVU5DLFxuICAgICAgVkFSX0FTU0lHLFxuICAgICAgTUVUQSxcbiAgICAgIFRBUkdFVCxcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbW1hJywgJ3dsJ10sXG4gICAgbGV4ZW1lczogJyhcXFxcJHxcXFxcYiknICsgaGxqcy5JREVOVF9SRSArICdcXFxcYicsXG4gICAgLy9cbiAgICAvLyBUaGUgbGlzdCBvZiBcImtleXdvcmRzXCIgKFN5c3RlbWAgc3ltYm9scykgd2FzIGRldGVybWluZWQgYnkgZXZhbHVhdGluZyB0aGUgZm9sbG93aW5nIFdvbGZyYW0gTGFuZ3VhZ2UgY29kZSBpbiBNYXRoZW1hdGljYSAxMi4wOlxuICAgIC8vXG4gICAgLy8gU3RyaW5nUmlmZmxlW1xuICAgIC8vICAgXCInXCIgPD4gU3RyaW5nUmlmZmxlWyMsIFwiIFwiXSA8PiBcIidcIiAmIC9AXG4gICAgLy8gICAgIFZhbHVlc1tHcm91cEJ5W1xuICAgIC8vICAgICAgIFNlbGVjdFtOYW1lc1tcIlN5c3RlbWAqXCJdLFxuICAgIC8vICAgICAgIFN0cmluZ1N0YXJ0c1FbIywgQ2hhcmFjdGVyUmFuZ2VbXCJBXCIsIFwiWlwiXSB8IFwiJFwiXSAmXSxcbiAgICAvLyAgICAgICBGaXJzdFtDaGFyYWN0ZXJzWyNdXSAmXV0sIFwiICtcXG5cIl1cbiAgICAvL1xuICAgIGtleXdvcmRzOiAnQUFTVHJpYW5nbGUgQWJlbGlhbkdyb3VwIEFib3J0IEFib3J0S2VybmVscyBBYm9ydFByb3RlY3QgQWJvcnRTY2hlZHVsZWRUYXNrIEFib3ZlIEFicyBBYnNBcmcgQWJzQXJnUGxvdCBBYnNvbHV0ZSBBYnNvbHV0ZUNvcnJlbGF0aW9uIEFic29sdXRlQ29ycmVsYXRpb25GdW5jdGlvbiBBYnNvbHV0ZUN1cnJlbnRWYWx1ZSBBYnNvbHV0ZURhc2hpbmcgQWJzb2x1dGVGaWxlTmFtZSBBYnNvbHV0ZU9wdGlvbnMgQWJzb2x1dGVQb2ludFNpemUgQWJzb2x1dGVUaGlja25lc3MgQWJzb2x1dGVUaW1lIEFic29sdXRlVGltaW5nIEFjY2VwdGFuY2VUaHJlc2hvbGQgQWNjb3VudGluZ0Zvcm0gQWNjdW11bGF0ZSBBY2N1cmFjeSBBY2N1cmFjeUdvYWwgQWN0aW9uRGVsYXkgQWN0aW9uTWVudSBBY3Rpb25NZW51Qm94IEFjdGlvbk1lbnVCb3hPcHRpb25zIEFjdGl2YXRlIEFjdGl2ZSBBY3RpdmVDbGFzc2lmaWNhdGlvbiBBY3RpdmVDbGFzc2lmaWNhdGlvbk9iamVjdCBBY3RpdmVJdGVtIEFjdGl2ZVByZWRpY3Rpb24gQWN0aXZlUHJlZGljdGlvbk9iamVjdCBBY3RpdmVTdHlsZSBBY3ljbGljR3JhcGhRIEFkZE9uSGVscFBhdGggQWRkU2lkZXMgQWRkVG8gQWRkVG9TZWFyY2hJbmRleCBBZGRVc2VycyBBZGphY2VuY3lHcmFwaCBBZGphY2VuY3lMaXN0IEFkamFjZW5jeU1hdHJpeCBBZGp1c3RtZW50Qm94IEFkanVzdG1lbnRCb3hPcHRpb25zIEFkanVzdFRpbWVTZXJpZXNGb3JlY2FzdCBBZG1pbmlzdHJhdGl2ZURpdmlzaW9uRGF0YSBBZmZpbmVIYWxmU3BhY2UgQWZmaW5lU3BhY2UgQWZmaW5lU3RhdGVTcGFjZU1vZGVsIEFmZmluZVRyYW5zZm9ybSBBZnRlciBBZ2dyZWdhdGVkRW50aXR5Q2xhc3MgQWdncmVnYXRpb25MYXllciBBaXJjcmFmdERhdGEgQWlycG9ydERhdGEgQWlyUHJlc3N1cmVEYXRhIEFpclRlbXBlcmF0dXJlRGF0YSBBaXJ5QWkgQWlyeUFpUHJpbWUgQWlyeUFpWmVybyBBaXJ5QmkgQWlyeUJpUHJpbWUgQWlyeUJpWmVybyBBbGdlYnJhaWNJbnRlZ2VyUSBBbGdlYnJhaWNOdW1iZXIgQWxnZWJyYWljTnVtYmVyRGVub21pbmF0b3IgQWxnZWJyYWljTnVtYmVyTm9ybSBBbGdlYnJhaWNOdW1iZXJQb2x5bm9taWFsIEFsZ2VicmFpY051bWJlclRyYWNlIEFsZ2VicmFpY1J1bGVzIEFsZ2VicmFpY1J1bGVzRGF0YSBBbGdlYnJhaWNzIEFsZ2VicmFpY1VuaXRRIEFsaWdubWVudCBBbGlnbm1lbnRNYXJrZXIgQWxpZ25tZW50UG9pbnQgQWxsIEFsbG93QWR1bHRDb250ZW50IEFsbG93ZWRDbG91ZEV4dHJhUGFyYW1ldGVycyBBbGxvd2VkQ2xvdWRQYXJhbWV0ZXJFeHRlbnNpb25zIEFsbG93ZWREaW1lbnNpb25zIEFsbG93ZWRGcmVxdWVuY3lSYW5nZSBBbGxvd2VkSGVhZHMgQWxsb3dHcm91cENsb3NlIEFsbG93SW5jb21wbGV0ZSBBbGxvd0lubGluZUNlbGxzIEFsbG93S2VybmVsSW5pdGlhbGl6YXRpb24gQWxsb3dMb29zZUdyYW1tYXIgQWxsb3dSZXZlcnNlR3JvdXBDbG9zZSBBbGxvd1NjcmlwdExldmVsQ2hhbmdlIEFsbFRydWUgQWxwaGFiZXQgQWxwaGFiZXRpY09yZGVyIEFscGhhYmV0aWNTb3J0IEFscGhhQ2hhbm5lbCBBbHRlcm5hdGVJbWFnZSBBbHRlcm5hdGluZ0ZhY3RvcmlhbCBBbHRlcm5hdGluZ0dyb3VwIEFsdGVybmF0aXZlSHlwb3RoZXNpcyBBbHRlcm5hdGl2ZXMgQWx0aXR1ZGVNZXRob2QgQW1iaWVudExpZ2h0IEFtYmlndWl0eUZ1bmN0aW9uIEFtYmlndWl0eUxpc3QgQW5hbHl0aWMgQW5hdG9teURhdGEgQW5hdG9teUZvcm0gQW5hdG9teVBsb3QzRCBBbmF0b215U2tpblN0eWxlIEFuYXRvbXlTdHlsaW5nIEFuY2hvcmVkU2VhcmNoIEFuZCBBbmRlcnNvbkRhcmxpbmdUZXN0IEFuZ2VySiBBbmdsZUJpc2VjdG9yIEFuZ2xlQnJhY2tldCBBbmdsZVBhdGggQW5nbGVQYXRoM0QgQW5nbGVWZWN0b3IgQW5ndWxhckdhdWdlIEFuaW1hdGUgQW5pbWF0aW9uQ3ljbGVPZmZzZXQgQW5pbWF0aW9uQ3ljbGVSZXBldGl0aW9ucyBBbmltYXRpb25EaXJlY3Rpb24gQW5pbWF0aW9uRGlzcGxheVRpbWUgQW5pbWF0aW9uUmF0ZSBBbmltYXRpb25SZXBldGl0aW9ucyBBbmltYXRpb25SdW5uaW5nIEFuaW1hdGlvblJ1blRpbWUgQW5pbWF0aW9uVGltZUluZGV4IEFuaW1hdG9yIEFuaW1hdG9yQm94IEFuaW1hdG9yQm94T3B0aW9ucyBBbmltYXRvckVsZW1lbnRzIEFubm90YXRlIEFubm90YXRpb24gQW5ub3RhdGlvbkRlbGV0ZSBBbm5vdGF0aW9uTmFtZXMgQW5ub3RhdGlvblJ1bGVzIEFubm90YXRpb25WYWx1ZSBBbm51aXR5IEFubnVpdHlEdWUgQW5udWx1cyBBbm9tYWx5RGV0ZWN0aW9uIEFub21hbHlEZXRlY3RvckZ1bmN0aW9uIEFub255bW91cyBBbnRpYWxpYXNpbmcgQW50aWhlcm1pdGlhbk1hdHJpeFEgQW50aXN5bW1ldHJpYyBBbnRpc3ltbWV0cmljTWF0cml4USBBbnRvbnltcyBBbnlPcmRlciBBbnlTdWJzZXQgQW55VHJ1ZSBBcGFydCBBcGFydFNxdWFyZUZyZWUgQVBJRnVuY3Rpb24gQXBwZWFyYW5jZSBBcHBlYXJhbmNlRWxlbWVudHMgQXBwZWFyYW5jZVJ1bGVzIEFwcGVsbEYxIEFwcGVuZCBBcHBlbmRDaGVjayBBcHBlbmRMYXllciBBcHBlbmRUbyBBcHBsaWNhdGlvbklkZW50aWZpY2F0aW9uS2V5IEFwcGx5IEFwcGx5U2lkZXMgQXJjQ29zIEFyY0Nvc2ggQXJjQ290IEFyY0NvdGggQXJjQ3NjIEFyY0NzY2ggQXJjQ3VydmF0dXJlIEFSQ0hQcm9jZXNzIEFyY0xlbmd0aCBBcmNTZWMgQXJjU2VjaCBBcmNTaW4gQXJjU2luRGlzdHJpYnV0aW9uIEFyY1NpbmggQXJjVGFuIEFyY1RhbmggQXJlYSBBcmcgQXJnTWF4IEFyZ01pbiBBcmd1bWVudENvdW50USBBUklNQVByb2Nlc3MgQXJpdGhtZXRpY0dlb21ldHJpY01lYW4gQVJNQVByb2Nlc3MgQXJvdW5kIEFyb3VuZFJlcGxhY2UgQVJQcm9jZXNzIEFycmF5IEFycmF5Q29tcG9uZW50cyBBcnJheURlcHRoIEFycmF5RmlsdGVyIEFycmF5RmxhdHRlbiBBcnJheU1lc2ggQXJyYXlQYWQgQXJyYXlQbG90IEFycmF5USBBcnJheVJlc2FtcGxlIEFycmF5UmVzaGFwZSBBcnJheVJ1bGVzIEFycmF5cyBBcnJvdyBBcnJvdzNEQm94IEFycm93Qm94IEFycm93aGVhZHMgQVNBVHJpYW5nbGUgQXNrIEFza0FwcGVuZCBBc2tDb25maXJtIEFza0Rpc3BsYXkgQXNrZWRRIEFza2VkVmFsdWUgQXNrRnVuY3Rpb24gQXNrU3RhdGUgQXNrVGVtcGxhdGVEaXNwbGF5IEFzcGVjdFJhdGlvIEFzcGVjdFJhdGlvRml4ZWQgQXNzZXJ0IEFzc29jaWF0ZVRvIEFzc29jaWF0aW9uIEFzc29jaWF0aW9uRm9ybWF0IEFzc29jaWF0aW9uTWFwIEFzc29jaWF0aW9uUSBBc3NvY2lhdGlvblRocmVhZCBBc3N1bWVEZXRlcm1pbmlzdGljIEFzc3VtaW5nIEFzc3VtcHRpb25zIEFzdHJvbm9taWNhbERhdGEgQXN5bXB0b3RpY0RTb2x2ZVZhbHVlIEFzeW1wdG90aWNFcXVhbCBBc3ltcHRvdGljRXF1aXZhbGVudCBBc3ltcHRvdGljR3JlYXRlciBBc3ltcHRvdGljR3JlYXRlckVxdWFsIEFzeW1wdG90aWNJbnRlZ3JhdGUgQXN5bXB0b3RpY0xlc3MgQXN5bXB0b3RpY0xlc3NFcXVhbCBBc3ltcHRvdGljT3V0cHV0VHJhY2tlciBBc3ltcHRvdGljUlNvbHZlVmFsdWUgQXN5bXB0b3RpY1NvbHZlIEFzeW1wdG90aWNTdW0gQXN5bmNocm9ub3VzIEFzeW5jaHJvbm91c1Rhc2tPYmplY3QgQXN5bmNocm9ub3VzVGFza3MgQXRvbSBBdG9tQ29vcmRpbmF0ZXMgQXRvbUNvdW50IEF0b21EaWFncmFtQ29vcmRpbmF0ZXMgQXRvbUxpc3QgQXRvbVEgQXR0ZW50aW9uTGF5ZXIgQXR0cmlidXRlcyBBdWRpbyBBdWRpb0FtcGxpZnkgQXVkaW9Bbm5vdGF0ZSBBdWRpb0Fubm90YXRpb25Mb29rdXAgQXVkaW9CbG9ja01hcCBBdWRpb0NhcHR1cmUgQXVkaW9DaGFubmVsQXNzaWdubWVudCBBdWRpb0NoYW5uZWxDb21iaW5lIEF1ZGlvQ2hhbm5lbE1peCBBdWRpb0NoYW5uZWxzIEF1ZGlvQ2hhbm5lbFNlcGFyYXRlIEF1ZGlvRGF0YSBBdWRpb0RlbGF5IEF1ZGlvRGVsZXRlIEF1ZGlvRGV2aWNlIEF1ZGlvRGlzdGFuY2UgQXVkaW9GYWRlIEF1ZGlvRnJlcXVlbmN5U2hpZnQgQXVkaW9HZW5lcmF0b3IgQXVkaW9JZGVudGlmeSBBdWRpb0lucHV0RGV2aWNlIEF1ZGlvSW5zZXJ0IEF1ZGlvSW50ZXJ2YWxzIEF1ZGlvSm9pbiBBdWRpb0xhYmVsIEF1ZGlvTGVuZ3RoIEF1ZGlvTG9jYWxNZWFzdXJlbWVudHMgQXVkaW9Mb29waW5nIEF1ZGlvTG91ZG5lc3MgQXVkaW9NZWFzdXJlbWVudHMgQXVkaW9Ob3JtYWxpemUgQXVkaW9PdXRwdXREZXZpY2UgQXVkaW9PdmVybGF5IEF1ZGlvUGFkIEF1ZGlvUGFuIEF1ZGlvUGFydGl0aW9uIEF1ZGlvUGF1c2UgQXVkaW9QaXRjaFNoaWZ0IEF1ZGlvUGxheSBBdWRpb1Bsb3QgQXVkaW9RIEF1ZGlvUmVjb3JkIEF1ZGlvUmVwbGFjZSBBdWRpb1Jlc2FtcGxlIEF1ZGlvUmV2ZXJiIEF1ZGlvU2FtcGxlUmF0ZSBBdWRpb1NwZWN0cmFsTWFwIEF1ZGlvU3BlY3RyYWxUcmFuc2Zvcm1hdGlvbiBBdWRpb1NwbGl0IEF1ZGlvU3RvcCBBdWRpb1N0cmVhbSBBdWRpb1N0cmVhbXMgQXVkaW9UaW1lU3RyZXRjaCBBdWRpb1RyaW0gQXVkaW9UeXBlIEF1Z21lbnRlZFBvbHloZWRyb24gQXVnbWVudGVkU3ltbWV0cmljUG9seW5vbWlhbCBBdXRoZW50aWNhdGUgQXV0aGVudGljYXRpb24gQXV0aGVudGljYXRpb25EaWFsb2cgQXV0b0FjdGlvbiBBdXRvY29tcGxldGUgQXV0b2NvbXBsZXRpb25GdW5jdGlvbiBBdXRvQ29weSBBdXRvY29ycmVsYXRpb25UZXN0IEF1dG9EZWxldGUgQXV0b0V2YWx1YXRlRXZlbnRzIEF1dG9HZW5lcmF0ZWRQYWNrYWdlIEF1dG9JbmRlbnQgQXV0b0luZGVudFNwYWNpbmdzIEF1dG9JdGFsaWNXb3JkcyBBdXRvbG9hZFBhdGggQXV0b01hdGNoIEF1dG9tYXRpYyBBdXRvbWF0aWNJbWFnZVNpemUgQXV0b011bHRpcGxpY2F0aW9uU3ltYm9sIEF1dG9OdW1iZXJGb3JtYXR0aW5nIEF1dG9PcGVuTm90ZWJvb2tzIEF1dG9PcGVuUGFsZXR0ZXMgQXV0b1F1b3RlQ2hhcmFjdGVycyBBdXRvUmVmcmVzaGVkIEF1dG9SZW1vdmUgQXV0b3J1blNlcXVlbmNpbmcgQXV0b1NjYWxpbmcgQXV0b1Njcm9sbCBBdXRvU3BhY2luZyBBdXRvU3R5bGVPcHRpb25zIEF1dG9TdHlsZVdvcmRzIEF1dG9TdWJtaXR0aW5nIEF4ZXMgQXhlc0VkZ2UgQXhlc0xhYmVsIEF4ZXNPcmlnaW4gQXhlc1N0eWxlIEF4aW9tYXRpY1RoZW9yeSBBeGlzJyArXG4gICAgICAnQmFieU1vbnN0ZXJHcm91cEIgQmFjayBCYWNrZ3JvdW5kIEJhY2tncm91bmRBcHBlYXJhbmNlIEJhY2tncm91bmRUYXNrc1NldHRpbmdzIEJhY2tzbGFzaCBCYWNrc3Vic3RpdHV0aW9uIEJhY2t3YXJkIEJhbGwgQmFuZCBCYW5kcGFzc0ZpbHRlciBCYW5kc3RvcEZpbHRlciBCYXJhYmFzaUFsYmVydEdyYXBoRGlzdHJpYnV0aW9uIEJhckNoYXJ0IEJhckNoYXJ0M0QgQmFyY29kZUltYWdlIEJhcmNvZGVSZWNvZ25pemUgQmFyaW5naGF1c0hlbnplVGVzdCBCYXJMZWdlbmQgQmFybG93UHJvc2NoYW5JbXBvcnRhbmNlIEJhcm5lc0cgQmFyT3JpZ2luIEJhclNwYWNpbmcgQmFydGxldHRIYW5uV2luZG93IEJhcnRsZXR0V2luZG93IEJhc2VEZWNvZGUgQmFzZUVuY29kZSBCYXNlRm9ybSBCYXNlbGluZSBCYXNlbGluZVBvc2l0aW9uIEJhc2VTdHlsZSBCYXNpY1JlY3VycmVudExheWVyIEJhdGNoTm9ybWFsaXphdGlvbkxheWVyIEJhdGNoU2l6ZSBCYXRlc0Rpc3RyaWJ1dGlvbiBCYXR0bGVMZW1hcmllV2F2ZWxldCBCYXllc2lhbk1heGltaXphdGlvbiBCYXllc2lhbk1heGltaXphdGlvbk9iamVjdCBCYXllc2lhbk1pbmltaXphdGlvbiBCYXllc2lhbk1pbmltaXphdGlvbk9iamVjdCBCZWNhdXNlIEJlY2ttYW5uRGlzdHJpYnV0aW9uIEJlZXAgQmVmb3JlIEJlZ2luIEJlZ2luRGlhbG9nUGFja2V0IEJlZ2luRnJvbnRFbmRJbnRlcmFjdGlvblBhY2tldCBCZWdpblBhY2thZ2UgQmVsbEIgQmVsbFkgQmVsb3cgQmVuZm9yZERpc3RyaWJ1dGlvbiBCZW5pbmlEaXN0cmlidXRpb24gQmVua3RhbmRlckdpYnJhdERpc3RyaWJ1dGlvbiBCZW5rdGFuZGVyV2VpYnVsbERpc3RyaWJ1dGlvbiBCZXJub3VsbGlCIEJlcm5vdWxsaURpc3RyaWJ1dGlvbiBCZXJub3VsbGlHcmFwaERpc3RyaWJ1dGlvbiBCZXJub3VsbGlQcm9jZXNzIEJlcm5zdGVpbkJhc2lzIEJlc3NlbEZpbHRlck1vZGVsIEJlc3NlbEkgQmVzc2VsSiBCZXNzZWxKWmVybyBCZXNzZWxLIEJlc3NlbFkgQmVzc2VsWVplcm8gQmV0YSBCZXRhQmlub21pYWxEaXN0cmlidXRpb24gQmV0YURpc3RyaWJ1dGlvbiBCZXRhTmVnYXRpdmVCaW5vbWlhbERpc3RyaWJ1dGlvbiBCZXRhUHJpbWVEaXN0cmlidXRpb24gQmV0YVJlZ3VsYXJpemVkIEJldHdlZW4gQmV0d2Vlbm5lc3NDZW50cmFsaXR5IEJldmVsZWRQb2x5aGVkcm9uIEJlemllckN1cnZlIEJlemllckN1cnZlM0RCb3ggQmV6aWVyQ3VydmUzREJveE9wdGlvbnMgQmV6aWVyQ3VydmVCb3ggQmV6aWVyQ3VydmVCb3hPcHRpb25zIEJlemllckZ1bmN0aW9uIEJpbGF0ZXJhbEZpbHRlciBCaW5hcml6ZSBCaW5hcnlEZXNlcmlhbGl6ZSBCaW5hcnlEaXN0YW5jZSBCaW5hcnlGb3JtYXQgQmluYXJ5SW1hZ2VRIEJpbmFyeVJlYWQgQmluYXJ5UmVhZExpc3QgQmluYXJ5U2VyaWFsaXplIEJpbmFyeVdyaXRlIEJpbkNvdW50cyBCaW5MaXN0cyBCaW5vbWlhbCBCaW5vbWlhbERpc3RyaWJ1dGlvbiBCaW5vbWlhbFByb2Nlc3MgQmlub3JtYWxEaXN0cmlidXRpb24gQmlvcnRob2dvbmFsU3BsaW5lV2F2ZWxldCBCaXBhcnRpdGVHcmFwaFEgQmlxdWFkcmF0aWNGaWx0ZXJNb2RlbCBCaXJuYmF1bUltcG9ydGFuY2UgQmlybmJhdW1TYXVuZGVyc0Rpc3RyaWJ1dGlvbiBCaXRBbmQgQml0Q2xlYXIgQml0R2V0IEJpdExlbmd0aCBCaXROb3QgQml0T3IgQml0U2V0IEJpdFNoaWZ0TGVmdCBCaXRTaGlmdFJpZ2h0IEJpdFhvciBCaXdlaWdodExvY2F0aW9uIEJpd2VpZ2h0TWlkdmFyaWFuY2UgQmxhY2sgQmxhY2ttYW5IYXJyaXNXaW5kb3cgQmxhY2ttYW5OdXR0YWxsV2luZG93IEJsYWNrbWFuV2luZG93IEJsYW5rIEJsYW5rRm9ybSBCbGFua051bGxTZXF1ZW5jZSBCbGFua1NlcXVlbmNlIEJsZW5kIEJsb2NrIEJsb2NrY2hhaW5BZGRyZXNzRGF0YSBCbG9ja2NoYWluQmFzZSBCbG9ja2NoYWluQmxvY2tEYXRhIEJsb2NrY2hhaW5Db250cmFjdFZhbHVlIEJsb2NrY2hhaW5EYXRhIEJsb2NrY2hhaW5HZXQgQmxvY2tjaGFpbktleUVuY29kZSBCbG9ja2NoYWluUHV0IEJsb2NrY2hhaW5Ub2tlbkRhdGEgQmxvY2tjaGFpblRyYW5zYWN0aW9uIEJsb2NrY2hhaW5UcmFuc2FjdGlvbkRhdGEgQmxvY2tjaGFpblRyYW5zYWN0aW9uU2lnbiBCbG9ja2NoYWluVHJhbnNhY3Rpb25TdWJtaXQgQmxvY2tNYXAgQmxvY2tSYW5kb20gQmxvbXF2aXN0QmV0YSBCbG9tcXZpc3RCZXRhVGVzdCBCbHVlIEJsdXIgQm9kZVBsb3QgQm9obWFuV2luZG93IEJvbGQgQm9uZCBCb25kQ291bnQgQm9uZExpc3QgQm9uZFEgQm9va21hcmtzIEJvb2xlIEJvb2xlYW5Db25zZWN1dGl2ZUZ1bmN0aW9uIEJvb2xlYW5Db252ZXJ0IEJvb2xlYW5Db3VudGluZ0Z1bmN0aW9uIEJvb2xlYW5GdW5jdGlvbiBCb29sZWFuR3JhcGggQm9vbGVhbk1heHRlcm1zIEJvb2xlYW5NaW5pbWl6ZSBCb29sZWFuTWludGVybXMgQm9vbGVhblEgQm9vbGVhblJlZ2lvbiBCb29sZWFucyBCb29sZWFuU3RyaW5ncyBCb29sZWFuVGFibGUgQm9vbGVhblZhcmlhYmxlcyBCb3JkZXJEaW1lbnNpb25zIEJvcmVsVGFubmVyRGlzdHJpYnV0aW9uIEJvdHRvbSBCb3R0b21IYXRUcmFuc2Zvcm0gQm91bmRhcnlEaXNjcmV0aXplR3JhcGhpY3MgQm91bmRhcnlEaXNjcmV0aXplUmVnaW9uIEJvdW5kYXJ5TWVzaCBCb3VuZGFyeU1lc2hSZWdpb24gQm91bmRhcnlNZXNoUmVnaW9uUSBCb3VuZGFyeVN0eWxlIEJvdW5kZWRSZWdpb25RIEJvdW5kaW5nUmVnaW9uIEJvdW5kcyBCb3ggQm94QmFzZWxpbmVTaGlmdCBCb3hEYXRhIEJveERpbWVuc2lvbnMgQm94ZWQgQm94ZXMgQm94Rm9ybSBCb3hGb3JtRm9ybWF0VHlwZXMgQm94RnJhbWUgQm94SUQgQm94TWFyZ2lucyBCb3hNYXRyaXggQm94T2JqZWN0IEJveFJhdGlvcyBCb3hSb3RhdGlvbiBCb3hSb3RhdGlvblBvaW50IEJveFN0eWxlIEJveFdoaXNrZXJDaGFydCBCcmEgQnJhY2tldGluZ0JhciBCcmFLZXQgQnJheUN1cnRpc0Rpc3RhbmNlIEJyZWFkdGhGaXJzdFNjYW4gQnJlYWsgQnJpZGdlRGF0YSBCcmlnaHRuZXNzRXF1YWxpemUgQnJvYWRjYXN0U3RhdGlvbkRhdGEgQnJvd24gQnJvd25Gb3JzeXRoZVRlc3QgQnJvd25pYW5CcmlkZ2VQcm9jZXNzIEJyb3dzZXJDYXRlZ29yeSBCU3BsaW5lQmFzaXMgQlNwbGluZUN1cnZlIEJTcGxpbmVDdXJ2ZTNEQm94IEJTcGxpbmVDdXJ2ZTNEQm94T3B0aW9ucyBCU3BsaW5lQ3VydmVCb3ggQlNwbGluZUN1cnZlQm94T3B0aW9ucyBCU3BsaW5lRnVuY3Rpb24gQlNwbGluZVN1cmZhY2UgQlNwbGluZVN1cmZhY2UzREJveCBCU3BsaW5lU3VyZmFjZTNEQm94T3B0aW9ucyBCdWJibGVDaGFydCBCdWJibGVDaGFydDNEIEJ1YmJsZVNjYWxlIEJ1YmJsZVNpemVzIEJ1aWxkaW5nRGF0YSBCdWxsZXRHYXVnZSBCdXNpbmVzc0RheVEgQnV0dGVyZmx5R3JhcGggQnV0dGVyd29ydGhGaWx0ZXJNb2RlbCBCdXR0b24gQnV0dG9uQmFyIEJ1dHRvbkJveCBCdXR0b25Cb3hPcHRpb25zIEJ1dHRvbkNlbGwgQnV0dG9uQ29udGVudHMgQnV0dG9uRGF0YSBCdXR0b25FdmFsdWF0b3IgQnV0dG9uRXhwYW5kYWJsZSBCdXR0b25GcmFtZSBCdXR0b25GdW5jdGlvbiBCdXR0b25NYXJnaW5zIEJ1dHRvbk1pbkhlaWdodCBCdXR0b25Ob3RlIEJ1dHRvbk5vdGVib29rIEJ1dHRvblNvdXJjZSBCdXR0b25TdHlsZSBCdXR0b25TdHlsZU1lbnVMaXN0aW5nIEJ5dGUgQnl0ZUFycmF5IEJ5dGVBcnJheUZvcm1hdCBCeXRlQXJyYXlRIEJ5dGVBcnJheVRvU3RyaW5nIEJ5dGVDb3VudCBCeXRlT3JkZXJpbmcnICtcbiAgICAgICdDIENhY2hlZFZhbHVlIENhY2hlR3JhcGhpY3MgQ2FjaGVQZXJzaXN0ZW5jZSBDYWxlbmRhckNvbnZlcnQgQ2FsZW5kYXJEYXRhIENhbGVuZGFyVHlwZSBDYWxsb3V0IENhbGxvdXRNYXJrZXIgQ2FsbG91dFN0eWxlIENhbGxQYWNrZXQgQ2FuYmVycmFEaXN0YW5jZSBDYW5jZWwgQ2FuY2VsQnV0dG9uIENhbmRsZXN0aWNrQ2hhcnQgQ2Fub25pY2FsR3JhcGggQ2Fub25pY2FsaXplUG9seWdvbiBDYW5vbmljYWxpemVQb2x5aGVkcm9uIENhbm9uaWNhbE5hbWUgQ2Fub25pY2FsV2FycGluZ0NvcnJlc3BvbmRlbmNlIENhbm9uaWNhbFdhcnBpbmdEaXN0YW5jZSBDYW50b3JNZXNoIENhbnRvclN0YWlyY2FzZSBDYXAgQ2FwRm9ybSBDYXBpdGFsRGlmZmVyZW50aWFsRCBDYXBpdGFsaXplIENhcHN1bGVTaGFwZSBDYXB0dXJlUnVubmluZyBDYXJkaW5hbEJTcGxpbmVCYXNpcyBDYXJsZW1hbkxpbmVhcml6ZSBDYXJtaWNoYWVsTGFtYmRhIENhc2VPcmRlcmluZyBDYXNlcyBDYXNlU2Vuc2l0aXZlIENhc2hmbG93IENhc29yYXRpYW4gQ2F0YWxhbiBDYXRhbGFuTnVtYmVyIENhdGNoIENhdGVuYXRlIENhdGVuYXRlTGF5ZXIgQ2F1Y2h5RGlzdHJpYnV0aW9uIENhdWNoeVdpbmRvdyBDYXlsZXlHcmFwaCBDREYgQ0RGRGVwbG95IENERkluZm9ybWF0aW9uIENERldhdmVsZXQgQ2VpbGluZyBDZWxlc3RpYWxTeXN0ZW0gQ2VsbCBDZWxsQXV0b092ZXJ3cml0ZSBDZWxsQmFzZWxpbmUgQ2VsbEJvdW5kaW5nQm94IENlbGxCcmFja2V0T3B0aW9ucyBDZWxsQ2hhbmdlVGltZXMgQ2VsbENvbnRlbnRzIENlbGxDb250ZXh0IENlbGxEaW5nYmF0IENlbGxEeW5hbWljRXhwcmVzc2lvbiBDZWxsRWRpdER1cGxpY2F0ZSBDZWxsRWxlbWVudHNCb3VuZGluZ0JveCBDZWxsRWxlbWVudFNwYWNpbmdzIENlbGxFcGlsb2cgQ2VsbEV2YWx1YXRpb25EdXBsaWNhdGUgQ2VsbEV2YWx1YXRpb25GdW5jdGlvbiBDZWxsRXZhbHVhdGlvbkxhbmd1YWdlIENlbGxFdmVudEFjdGlvbnMgQ2VsbEZyYW1lIENlbGxGcmFtZUNvbG9yIENlbGxGcmFtZUxhYmVsTWFyZ2lucyBDZWxsRnJhbWVMYWJlbHMgQ2VsbEZyYW1lTWFyZ2lucyBDZWxsR3JvdXAgQ2VsbEdyb3VwRGF0YSBDZWxsR3JvdXBpbmcgQ2VsbEdyb3VwaW5nUnVsZXMgQ2VsbEhvcml6b250YWxTY3JvbGxpbmcgQ2VsbElEIENlbGxMYWJlbCBDZWxsTGFiZWxBdXRvRGVsZXRlIENlbGxMYWJlbE1hcmdpbnMgQ2VsbExhYmVsUG9zaXRpb25pbmcgQ2VsbExhYmVsU3R5bGUgQ2VsbExhYmVsVGVtcGxhdGUgQ2VsbE1hcmdpbnMgQ2VsbE9iamVjdCBDZWxsT3BlbiBDZWxsUHJpbnQgQ2VsbFByb2xvZyBDZWxscyBDZWxsU2l6ZSBDZWxsU3R5bGUgQ2VsbFRhZ3MgQ2VsbHVsYXJBdXRvbWF0b24gQ2Vuc29yZWREaXN0cmlidXRpb24gQ2Vuc29yaW5nIENlbnRlciBDZW50ZXJBcnJheSBDZW50ZXJEb3QgQ2VudHJhbEZlYXR1cmUgQ2VudHJhbE1vbWVudCBDZW50cmFsTW9tZW50R2VuZXJhdGluZ0Z1bmN0aW9uIENlcHN0cm9ncmFtIENlcHN0cm9ncmFtQXJyYXkgQ2Vwc3RydW1BcnJheSBDRm9ybSBDaGFtcGVybm93bmVOdW1iZXIgQ2hhbmdlT3B0aW9ucyBDaGFubmVsQmFzZSBDaGFubmVsQnJva2VyQWN0aW9uIENoYW5uZWxEYXRhYmluIENoYW5uZWxIaXN0b3J5TGVuZ3RoIENoYW5uZWxMaXN0ZW4gQ2hhbm5lbExpc3RlbmVyIENoYW5uZWxMaXN0ZW5lcnMgQ2hhbm5lbExpc3RlbmVyV2FpdCBDaGFubmVsT2JqZWN0IENoYW5uZWxQcmVTZW5kRnVuY3Rpb24gQ2hhbm5lbFJlY2VpdmVyRnVuY3Rpb24gQ2hhbm5lbFNlbmQgQ2hhbm5lbFN1YnNjcmliZXJzIENoYW5WZXNlQmluYXJpemUgQ2hhcmFjdGVyIENoYXJhY3RlckNvdW50cyBDaGFyYWN0ZXJFbmNvZGluZyBDaGFyYWN0ZXJFbmNvZGluZ3NQYXRoIENoYXJhY3RlcmlzdGljRnVuY3Rpb24gQ2hhcmFjdGVyaXN0aWNQb2x5bm9taWFsIENoYXJhY3Rlck5hbWUgQ2hhcmFjdGVyUmFuZ2UgQ2hhcmFjdGVycyBDaGFydEJhc2VTdHlsZSBDaGFydEVsZW1lbnREYXRhIENoYXJ0RWxlbWVudERhdGFGdW5jdGlvbiBDaGFydEVsZW1lbnRGdW5jdGlvbiBDaGFydEVsZW1lbnRzIENoYXJ0TGFiZWxzIENoYXJ0TGF5b3V0IENoYXJ0TGVnZW5kcyBDaGFydFN0eWxlIENoZWJ5c2hldjFGaWx0ZXJNb2RlbCBDaGVieXNoZXYyRmlsdGVyTW9kZWwgQ2hlYnlzaGV2RGlzdGFuY2UgQ2hlYnlzaGV2VCBDaGVieXNoZXZVIENoZWNrIENoZWNrQWJvcnQgQ2hlY2tBbGwgQ2hlY2tib3ggQ2hlY2tib3hCYXIgQ2hlY2tib3hCb3ggQ2hlY2tib3hCb3hPcHRpb25zIENoZW1pY2FsRGF0YSBDaGVzc2JvYXJkRGlzdGFuY2UgQ2hpRGlzdHJpYnV0aW9uIENoaW5lc2VSZW1haW5kZXIgQ2hpU3F1YXJlRGlzdHJpYnV0aW9uIENob2ljZUJ1dHRvbnMgQ2hvaWNlRGlhbG9nIENob2xlc2t5RGVjb21wb3NpdGlvbiBDaG9wIENocm9tYXRpY2l0eVBsb3QgQ2hyb21hdGljaXR5UGxvdDNEIENocm9tYXRpY1BvbHlub21pYWwgQ2lyY2xlIENpcmNsZUJveCBDaXJjbGVEb3QgQ2lyY2xlTWludXMgQ2lyY2xlUGx1cyBDaXJjbGVQb2ludHMgQ2lyY2xlVGhyb3VnaCBDaXJjbGVUaW1lcyBDaXJjdWxhbnRHcmFwaCBDaXJjdWxhck9ydGhvZ29uYWxNYXRyaXhEaXN0cmlidXRpb24gQ2lyY3VsYXJRdWF0ZXJuaW9uTWF0cml4RGlzdHJpYnV0aW9uIENpcmN1bGFyUmVhbE1hdHJpeERpc3RyaWJ1dGlvbiBDaXJjdWxhclN5bXBsZWN0aWNNYXRyaXhEaXN0cmlidXRpb24gQ2lyY3VsYXJVbml0YXJ5TWF0cml4RGlzdHJpYnV0aW9uIENpcmN1bXNwaGVyZSBDaXR5RGF0YSBDbGFzc2lmaWVyRnVuY3Rpb24gQ2xhc3NpZmllckluZm9ybWF0aW9uIENsYXNzaWZpZXJNZWFzdXJlbWVudHMgQ2xhc3NpZmllck1lYXN1cmVtZW50c09iamVjdCBDbGFzc2lmeSBDbGFzc1ByaW9ycyBDbGVhciBDbGVhckFsbCBDbGVhckF0dHJpYnV0ZXMgQ2xlYXJDb29raWVzIENsZWFyUGVybWlzc2lvbnMgQ2xlYXJTeXN0ZW1DYWNoZSBDbGVic2NoR29yZGFuIENsaWNrUGFuZSBDbGlwIENsaXBib2FyZE5vdGVib29rIENsaXBGaWxsIENsaXBwaW5nU3R5bGUgQ2xpcFBsYW5lcyBDbGlwUGxhbmVzU3R5bGUgQ2xpcFJhbmdlIENsb2NrIENsb2NrR2F1Z2UgQ2xvY2t3aXNlQ29udG91ckludGVncmFsIENsb3NlIENsb3NlZCBDbG9zZUtlcm5lbHMgQ2xvc2VuZXNzQ2VudHJhbGl0eSBDbG9zaW5nIENsb3NpbmdBdXRvU2F2ZSBDbG9zaW5nRXZlbnQgQ2xvdWRBY2NvdW50RGF0YSBDbG91ZEJhc2UgQ2xvdWRDb25uZWN0IENsb3VkRGVwbG95IENsb3VkRGlyZWN0b3J5IENsb3VkRGlzY29ubmVjdCBDbG91ZEV2YWx1YXRlIENsb3VkRXhwb3J0IENsb3VkRXhwcmVzc2lvbiBDbG91ZEV4cHJlc3Npb25zIENsb3VkRnVuY3Rpb24gQ2xvdWRHZXQgQ2xvdWRJbXBvcnQgQ2xvdWRMb2dnaW5nRGF0YSBDbG91ZE9iamVjdCBDbG91ZE9iamVjdEluZm9ybWF0aW9uIENsb3VkT2JqZWN0SW5mb3JtYXRpb25EYXRhIENsb3VkT2JqZWN0TmFtZUZvcm1hdCBDbG91ZE9iamVjdHMgQ2xvdWRPYmplY3RVUkxUeXBlIENsb3VkUHVibGlzaCBDbG91ZFB1dCBDbG91ZFJlbmRlcmluZ01ldGhvZCBDbG91ZFNhdmUgQ2xvdWRTaGFyZSBDbG91ZFN1Ym1pdCBDbG91ZFN5bWJvbCBDbG91ZFVuc2hhcmUgQ2x1c3RlckNsYXNzaWZ5IENsdXN0ZXJEaXNzaW1pbGFyaXR5RnVuY3Rpb24gQ2x1c3RlcmluZ0NvbXBvbmVudHMgQ2x1c3RlcmluZ1RyZWUgQ01ZS0NvbG9yIENvYXJzZSBDb2RlQXNzaXN0T3B0aW9ucyBDb2VmZmljaWVudCBDb2VmZmljaWVudEFycmF5cyBDb2VmZmljaWVudERvbWFpbiBDb2VmZmljaWVudExpc3QgQ29lZmZpY2llbnRSdWxlcyBDb2lmbGV0V2F2ZWxldCBDb2xsZWN0IENvbG9uIENvbG9uRm9ybSBDb2xvckJhbGFuY2UgQ29sb3JDb21iaW5lIENvbG9yQ29udmVydCBDb2xvckNvdmVyYWdlIENvbG9yRGF0YSBDb2xvckRhdGFGdW5jdGlvbiBDb2xvckRldGVjdCBDb2xvckRpc3RhbmNlIENvbG9yRnVuY3Rpb24gQ29sb3JGdW5jdGlvblNjYWxpbmcgQ29sb3JpemUgQ29sb3JOZWdhdGUgQ29sb3JPdXRwdXQgQ29sb3JQcm9maWxlRGF0YSBDb2xvclEgQ29sb3JRdWFudGl6ZSBDb2xvclJlcGxhY2UgQ29sb3JSdWxlcyBDb2xvclNlbGVjdG9yU2V0dGluZ3MgQ29sb3JTZXBhcmF0ZSBDb2xvclNldHRlciBDb2xvclNldHRlckJveCBDb2xvclNldHRlckJveE9wdGlvbnMgQ29sb3JTbGlkZXIgQ29sb3JzTmVhciBDb2xvclNwYWNlIENvbG9yVG9uZU1hcHBpbmcgQ29sdW1uIENvbHVtbkFsaWdubWVudHMgQ29sdW1uQmFja2dyb3VuZHMgQ29sdW1uRm9ybSBDb2x1bW5MaW5lcyBDb2x1bW5zRXF1YWwgQ29sdW1uU3BhY2luZ3MgQ29sdW1uV2lkdGhzIENvbWJpbmVkRW50aXR5Q2xhc3MgQ29tYmluZXJGdW5jdGlvbiBDb21ldERhdGEgQ29tbW9uRGVmYXVsdEZvcm1hdFR5cGVzIENvbW1vbmVzdCBDb21tb25lc3RGaWx0ZXIgQ29tbW9uTmFtZSBDb21tb25Vbml0cyBDb21tdW5pdHlCb3VuZGFyeVN0eWxlIENvbW11bml0eUdyYXBoUGxvdCBDb21tdW5pdHlMYWJlbHMgQ29tbXVuaXR5UmVnaW9uU3R5bGUgQ29tcGFueURhdGEgQ29tcGF0aWJsZVVuaXRRIENvbXBpbGF0aW9uT3B0aW9ucyBDb21waWxhdGlvblRhcmdldCBDb21waWxlIENvbXBpbGVkIENvbXBpbGVkQ29kZUZ1bmN0aW9uIENvbXBpbGVkRnVuY3Rpb24gQ29tcGlsZXJPcHRpb25zIENvbXBsZW1lbnQgQ29tcGxldGVHcmFwaCBDb21wbGV0ZUdyYXBoUSBDb21wbGV0ZUthcnlUcmVlIENvbXBsZXRpb25zTGlzdFBhY2tldCBDb21wbGV4IENvbXBsZXhlcyBDb21wbGV4RXhwYW5kIENvbXBsZXhJbmZpbml0eSBDb21wbGV4aXR5RnVuY3Rpb24gQ29tcGxleExpc3RQbG90IENvbXBsZXhQbG90IENvbXBsZXhQbG90M0QgQ29tcG9uZW50TWVhc3VyZW1lbnRzIENvbXBvbmVudHdpc2VDb250ZXh0TWVudSBDb21wb3NlIENvbXBvc2VMaXN0IENvbXBvc2VTZXJpZXMgQ29tcG9zaXRlUSBDb21wb3NpdGlvbiBDb21wb3VuZEVsZW1lbnQgQ29tcG91bmRFeHByZXNzaW9uIENvbXBvdW5kUG9pc3NvbkRpc3RyaWJ1dGlvbiBDb21wb3VuZFBvaXNzb25Qcm9jZXNzIENvbXBvdW5kUmVuZXdhbFByb2Nlc3MgQ29tcHJlc3MgQ29tcHJlc3NlZERhdGEgQ29tcHV0ZVVuY2VydGFpbnR5IENvbmRpdGlvbiBDb25kaXRpb25hbEV4cHJlc3Npb24gQ29uZGl0aW9uZWQgQ29uZSBDb25lQm94IENvbmZpZGVuY2VMZXZlbCBDb25maWRlbmNlUmFuZ2UgQ29uZmlkZW5jZVRyYW5zZm9ybSBDb25maWd1cmF0aW9uUGF0aCBDb25mb3JtQXVkaW8gQ29uZm9ybUltYWdlcyBDb25ncnVlbnQgQ29uaWNIdWxsUmVnaW9uIENvbmljSHVsbFJlZ2lvbjNEQm94IENvbmljSHVsbFJlZ2lvbkJveCBDb25pY09wdGltaXphdGlvbiBDb25qdWdhdGUgQ29uanVnYXRlVHJhbnNwb3NlIENvbmp1bmN0aW9uIENvbm5lY3QgQ29ubmVjdGVkQ29tcG9uZW50cyBDb25uZWN0ZWRHcmFwaENvbXBvbmVudHMgQ29ubmVjdGVkR3JhcGhRIENvbm5lY3RlZE1lc2hDb21wb25lbnRzIENvbm5lY3RlZE1vbGVjdWxlQ29tcG9uZW50cyBDb25uZWN0ZWRNb2xlY3VsZVEgQ29ubmVjdGlvblNldHRpbmdzIENvbm5lY3RMaWJyYXJ5Q2FsbGJhY2tGdW5jdGlvbiBDb25uZWN0U3lzdGVtTW9kZWxDb21wb25lbnRzIENvbm5lc1dpbmRvdyBDb25vdmVyVGVzdCBDb25zb2xlTWVzc2FnZSBDb25zb2xlTWVzc2FnZVBhY2tldCBDb25zb2xlUHJpbnQgQ29uc3RhbnQgQ29uc3RhbnRBcnJheSBDb25zdGFudEFycmF5TGF5ZXIgQ29uc3RhbnRJbWFnZSBDb25zdGFudFBsdXNMYXllciBDb25zdGFudFJlZ2lvblEgQ29uc3RhbnRzIENvbnN0YW50VGltZXNMYXllciBDb25zdGVsbGF0aW9uRGF0YSBDb25zdHJhaW5lZE1heCBDb25zdHJhaW5lZE1pbiBDb25zdHJ1Y3QgQ29udGFpbmluZyBDb250YWluc0FsbCBDb250YWluc0FueSBDb250YWluc0V4YWN0bHkgQ29udGFpbnNOb25lIENvbnRhaW5zT25seSBDb250ZW50RmllbGRPcHRpb25zIENvbnRlbnRMb2NhdGlvbkZ1bmN0aW9uIENvbnRlbnRPYmplY3QgQ29udGVudFBhZGRpbmcgQ29udGVudHNCb3VuZGluZ0JveCBDb250ZW50U2VsZWN0YWJsZSBDb250ZW50U2l6ZSBDb250ZXh0IENvbnRleHRNZW51IENvbnRleHRzIENvbnRleHRUb0ZpbGVOYW1lIENvbnRpbnVhdGlvbiBDb250aW51ZSBDb250aW51ZWRGcmFjdGlvbiBDb250aW51ZWRGcmFjdGlvbksgQ29udGludW91c0FjdGlvbiBDb250aW51b3VzTWFya292UHJvY2VzcyBDb250aW51b3VzVGFzayBDb250aW51b3VzVGltZU1vZGVsUSBDb250aW51b3VzV2F2ZWxldERhdGEgQ29udGludW91c1dhdmVsZXRUcmFuc2Zvcm0gQ29udG91ckRldGVjdCBDb250b3VyR3JhcGhpY3MgQ29udG91ckludGVncmFsIENvbnRvdXJMYWJlbHMgQ29udG91ckxpbmVzIENvbnRvdXJQbG90IENvbnRvdXJQbG90M0QgQ29udG91cnMgQ29udG91clNoYWRpbmcgQ29udG91clNtb290aGluZyBDb250b3VyU3R5bGUgQ29udHJhaGFybW9uaWNNZWFuIENvbnRyYXN0aXZlTG9zc0xheWVyIENvbnRyb2wgQ29udHJvbEFjdGl2ZSBDb250cm9sQWxpZ25tZW50IENvbnRyb2xHcm91cENvbnRlbnRzQm94IENvbnRyb2xsYWJpbGl0eUdyYW1pYW4gQ29udHJvbGxhYmlsaXR5TWF0cml4IENvbnRyb2xsYWJsZURlY29tcG9zaXRpb24gQ29udHJvbGxhYmxlTW9kZWxRIENvbnRyb2xsZXJEdXJhdGlvbiBDb250cm9sbGVySW5mb3JtYXRpb24gQ29udHJvbGxlckluZm9ybWF0aW9uRGF0YSBDb250cm9sbGVyTGlua2luZyBDb250cm9sbGVyTWFuaXB1bGF0ZSBDb250cm9sbGVyTWV0aG9kIENvbnRyb2xsZXJQYXRoIENvbnRyb2xsZXJTdGF0ZSBDb250cm9sUGxhY2VtZW50IENvbnRyb2xzUmVuZGVyaW5nIENvbnRyb2xUeXBlIENvbnZlcmdlbnRzIENvbnZlcnNpb25PcHRpb25zIENvbnZlcnNpb25SdWxlcyBDb252ZXJ0VG9CaXRtYXBQYWNrZXQgQ29udmVydFRvUG9zdFNjcmlwdCBDb252ZXJ0VG9Qb3N0U2NyaXB0UGFja2V0IENvbnZleEh1bGxNZXNoIENvbnZleFBvbHlnb25RIENvbnZleFBvbHloZWRyb25RIENvbnZvbHV0aW9uTGF5ZXIgQ29udm9sdmUgQ29ud2F5R3JvdXBDbzEgQ29ud2F5R3JvdXBDbzIgQ29ud2F5R3JvdXBDbzMgQ29va2llRnVuY3Rpb24gQ29va2llcyBDb29yZGluYXRlQm91bmRpbmdCb3ggQ29vcmRpbmF0ZUJvdW5kaW5nQm94QXJyYXkgQ29vcmRpbmF0ZUJvdW5kcyBDb29yZGluYXRlQm91bmRzQXJyYXkgQ29vcmRpbmF0ZUNoYXJ0RGF0YSBDb29yZGluYXRlc1Rvb2xPcHRpb25zIENvb3JkaW5hdGVUcmFuc2Zvcm0gQ29vcmRpbmF0ZVRyYW5zZm9ybURhdGEgQ29wcmltZVEgQ29wcm9kdWN0IENvcHVsYURpc3RyaWJ1dGlvbiBDb3B5YWJsZSBDb3B5RGF0YWJpbiBDb3B5RGlyZWN0b3J5IENvcHlGaWxlIENvcHlUYWcgQ29weVRvQ2xpcGJvYXJkIENvcm5lckZpbHRlciBDb3JuZXJOZWlnaGJvcnMgQ29ycmVsYXRpb24gQ29ycmVsYXRpb25EaXN0YW5jZSBDb3JyZWxhdGlvbkZ1bmN0aW9uIENvcnJlbGF0aW9uVGVzdCBDb3MgQ29zaCBDb3NoSW50ZWdyYWwgQ29zaW5lRGlzdGFuY2UgQ29zaW5lV2luZG93IENvc0ludGVncmFsIENvdCBDb3RoIENvdW50IENvdW50RGlzdGluY3QgQ291bnREaXN0aW5jdEJ5IENvdW50ZXJBc3NpZ25tZW50cyBDb3VudGVyQm94IENvdW50ZXJCb3hPcHRpb25zIENvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWwgQ291bnRlckV2YWx1YXRvciBDb3VudGVyRnVuY3Rpb24gQ291bnRlckluY3JlbWVudHMgQ291bnRlclN0eWxlIENvdW50ZXJTdHlsZU1lbnVMaXN0aW5nIENvdW50Um9vdHMgQ291bnRyeURhdGEgQ291bnRzIENvdW50c0J5IENvdmFyaWFuY2UgQ292YXJpYW5jZUVzdGltYXRvckZ1bmN0aW9uIENvdmFyaWFuY2VGdW5jdGlvbiBDb3hpYW5EaXN0cmlidXRpb24gQ294SW5nZXJzb2xsUm9zc1Byb2Nlc3MgQ294TW9kZWwgQ294TW9kZWxGaXQgQ3JhbWVyVm9uTWlzZXNUZXN0IENyZWF0ZUFyY2hpdmUgQ3JlYXRlQ2VsbElEIENyZWF0ZUNoYW5uZWwgQ3JlYXRlQ2xvdWRFeHByZXNzaW9uIENyZWF0ZURhdGFiaW4gQ3JlYXRlRGF0YVN5c3RlbU1vZGVsIENyZWF0ZURpYWxvZyBDcmVhdGVEaXJlY3RvcnkgQ3JlYXRlRG9jdW1lbnQgQ3JlYXRlRmlsZSBDcmVhdGVJbnRlcm1lZGlhdGVEaXJlY3RvcmllcyBDcmVhdGVNYW5hZ2VkTGlicmFyeUV4cHJlc3Npb24gQ3JlYXRlTm90ZWJvb2sgQ3JlYXRlUGFsZXR0ZSBDcmVhdGVQYWxldHRlUGFja2V0IENyZWF0ZVBlcm1pc3Npb25zR3JvdXAgQ3JlYXRlU2NoZWR1bGVkVGFzayBDcmVhdGVTZWFyY2hJbmRleCBDcmVhdGVTeXN0ZW1Nb2RlbCBDcmVhdGVUZW1wb3JhcnkgQ3JlYXRlVVVJRCBDcmVhdGVXaW5kb3cgQ3JpdGVyaW9uRnVuY3Rpb24gQ3JpdGljYWxpdHlGYWlsdXJlSW1wb3J0YW5jZSBDcml0aWNhbGl0eVN1Y2Nlc3NJbXBvcnRhbmNlIENyaXRpY2FsU2VjdGlvbiBDcm9zcyBDcm9zc0VudHJvcHlMb3NzTGF5ZXIgQ3Jvc3NpbmdDb3VudCBDcm9zc2luZ0RldGVjdCBDcm9zc2luZ1BvbHlnb24gQ3Jvc3NNYXRyaXggQ3NjIENzY2ggQ1RDTG9zc0xheWVyIEN1YmUgQ3ViZVJvb3QgQ3ViaWNzIEN1Ym9pZCBDdWJvaWRCb3ggQ3VtdWxhbnQgQ3VtdWxhbnRHZW5lcmF0aW5nRnVuY3Rpb24gQ3VwIEN1cENhcCBDdXJsIEN1cmx5RG91YmxlUXVvdGUgQ3VybHlRdW90ZSBDdXJyZW5jeUNvbnZlcnQgQ3VycmVudERhdGUgQ3VycmVudEltYWdlIEN1cnJlbnRseVNwZWFraW5nUGFja2V0IEN1cnJlbnROb3RlYm9va0ltYWdlIEN1cnJlbnRTY3JlZW5JbWFnZSBDdXJyZW50VmFsdWUgQ3VycnkgQ3VydmF0dXJlRmxvd0ZpbHRlciBDdXJ2ZUNsb3NlZCBDeWFuIEN5Y2xlR3JhcGggQ3ljbGVJbmRleFBvbHlub21pYWwgQ3ljbGVzIEN5Y2xpY0dyb3VwIEN5Y2xvdG9taWMgQ3lsaW5kZXIgQ3lsaW5kZXJCb3ggQ3lsaW5kcmljYWxEZWNvbXBvc2l0aW9uJyArXG4gICAgICAnRCBEYWd1bURpc3RyaWJ1dGlvbiBEYW1EYXRhIERhbWVyYXVMZXZlbnNodGVpbkRpc3RhbmNlIERhbXBpbmdGYWN0b3IgRGFya2VyIERhc2hlZCBEYXNoaW5nIERhdGFiYXNlQ29ubmVjdCBEYXRhYmFzZURpc2Nvbm5lY3QgRGF0YWJhc2VSZWZlcmVuY2UgRGF0YWJpbiBEYXRhYmluQWRkIERhdGFiaW5SZW1vdmUgRGF0YWJpbnMgRGF0YWJpblVwbG9hZCBEYXRhQ29tcHJlc3Npb24gRGF0YURpc3RyaWJ1dGlvbiBEYXRhUmFuZ2UgRGF0YVJldmVyc2VkIERhdGFzZXQgRGF0ZSBEYXRlQm91bmRzIERhdGVkIERhdGVEZWxpbWl0ZXJzIERhdGVEaWZmZXJlbmNlIERhdGVkVW5pdCBEYXRlRm9ybWF0IERhdGVGdW5jdGlvbiBEYXRlSGlzdG9ncmFtIERhdGVMaXN0IERhdGVMaXN0TG9nUGxvdCBEYXRlTGlzdFBsb3QgRGF0ZUxpc3RTdGVwUGxvdCBEYXRlT2JqZWN0IERhdGVPYmplY3RRIERhdGVPdmVybGFwc1EgRGF0ZVBhdHRlcm4gRGF0ZVBsdXMgRGF0ZVJhbmdlIERhdGVSZWR1Y3Rpb24gRGF0ZVN0cmluZyBEYXRlVGlja3NGb3JtYXQgRGF0ZVZhbHVlIERhdGVXaXRoaW5RIERhdWJlY2hpZXNXYXZlbGV0IERhdmlzRGlzdHJpYnV0aW9uIERhd3NvbkYgRGF5Q291bnQgRGF5Q291bnRDb252ZW50aW9uIERheUhlbWlzcGhlcmUgRGF5bGlnaHRRIERheU1hdGNoUSBEYXlOYW1lIERheU5pZ2h0VGVybWluYXRvciBEYXlQbHVzIERheVJhbmdlIERheVJvdW5kIERlQnJ1aWpuR3JhcGggRGVCcnVpam5TZXF1ZW5jZSBEZWJ1ZyBEZWJ1Z1RhZyBEZWNhcGl0YWxpemUgRGVjaW1hbCBEZWNpbWFsRm9ybSBEZWNsYXJlS25vd25TeW1ib2xzIERlY2xhcmVQYWNrYWdlIERlY29tcG9zZSBEZWNvbnZvbHV0aW9uTGF5ZXIgRGVjcmVtZW50IERlY3J5cHQgRGVjcnlwdEZpbGUgRGVkZWtpbmRFdGEgRGVlcFNwYWNlUHJvYmVEYXRhIERlZmF1bHQgRGVmYXVsdEF4ZXNTdHlsZSBEZWZhdWx0QmFzZVN0eWxlIERlZmF1bHRCb3hTdHlsZSBEZWZhdWx0QnV0dG9uIERlZmF1bHRDb2xvciBEZWZhdWx0Q29udHJvbFBsYWNlbWVudCBEZWZhdWx0RHVwbGljYXRlQ2VsbFN0eWxlIERlZmF1bHREdXJhdGlvbiBEZWZhdWx0RWxlbWVudCBEZWZhdWx0RmFjZUdyaWRzU3R5bGUgRGVmYXVsdEZpZWxkSGludFN0eWxlIERlZmF1bHRGb250IERlZmF1bHRGb250UHJvcGVydGllcyBEZWZhdWx0Rm9ybWF0VHlwZSBEZWZhdWx0Rm9ybWF0VHlwZUZvclN0eWxlIERlZmF1bHRGcmFtZVN0eWxlIERlZmF1bHRGcmFtZVRpY2tzU3R5bGUgRGVmYXVsdEdyaWRMaW5lc1N0eWxlIERlZmF1bHRJbmxpbmVGb3JtYXRUeXBlIERlZmF1bHRJbnB1dEZvcm1hdFR5cGUgRGVmYXVsdExhYmVsU3R5bGUgRGVmYXVsdE1lbnVTdHlsZSBEZWZhdWx0TmF0dXJhbExhbmd1YWdlIERlZmF1bHROZXdDZWxsU3R5bGUgRGVmYXVsdE5ld0lubGluZUNlbGxTdHlsZSBEZWZhdWx0Tm90ZWJvb2sgRGVmYXVsdE9wdGlvbnMgRGVmYXVsdE91dHB1dEZvcm1hdFR5cGUgRGVmYXVsdFByaW50UHJlY2lzaW9uIERlZmF1bHRTdHlsZSBEZWZhdWx0U3R5bGVEZWZpbml0aW9ucyBEZWZhdWx0VGV4dEZvcm1hdFR5cGUgRGVmYXVsdFRleHRJbmxpbmVGb3JtYXRUeXBlIERlZmF1bHRUaWNrc1N0eWxlIERlZmF1bHRUb29sdGlwU3R5bGUgRGVmYXVsdFZhbHVlIERlZmF1bHRWYWx1ZXMgRGVmZXIgRGVmaW5lRXh0ZXJuYWwgRGVmaW5lSW5wdXRTdHJlYW1NZXRob2QgRGVmaW5lT3V0cHV0U3RyZWFtTWV0aG9kIERlZmluZVJlc291cmNlRnVuY3Rpb24gRGVmaW5pdGlvbiBEZWdyZWUgRGVncmVlQ2VudHJhbGl0eSBEZWdyZWVHcmFwaERpc3RyaWJ1dGlvbiBEZWdyZWVMZXhpY29ncmFwaGljIERlZ3JlZVJldmVyc2VMZXhpY29ncmFwaGljIERFaWdlbnN5c3RlbSBERWlnZW52YWx1ZXMgRGVpbml0aWFsaXphdGlvbiBEZWwgRGVsYXVuYXlNZXNoIERlbGF5ZWQgRGVsZXRhYmxlIERlbGV0ZSBEZWxldGVBbm9tYWxpZXMgRGVsZXRlQm9yZGVyQ29tcG9uZW50cyBEZWxldGVDYXNlcyBEZWxldGVDaGFubmVsIERlbGV0ZUNsb3VkRXhwcmVzc2lvbiBEZWxldGVDb250ZW50cyBEZWxldGVEaXJlY3RvcnkgRGVsZXRlRHVwbGljYXRlcyBEZWxldGVEdXBsaWNhdGVzQnkgRGVsZXRlRmlsZSBEZWxldGVNaXNzaW5nIERlbGV0ZU9iamVjdCBEZWxldGVQZXJtaXNzaW9uc0tleSBEZWxldGVTZWFyY2hJbmRleCBEZWxldGVTbWFsbENvbXBvbmVudHMgRGVsZXRlU3RvcHdvcmRzIERlbGV0ZVdpdGhDb250ZW50cyBEZWxldGlvbldhcm5pbmcgRGVsaW1pdGVkQXJyYXkgRGVsaW1pdGVkU2VxdWVuY2UgRGVsaW1pdGVyIERlbGltaXRlckZsYXNoVGltZSBEZWxpbWl0ZXJNYXRjaGluZyBEZWxpbWl0ZXJzIERlbGl2ZXJ5RnVuY3Rpb24gRGVuZHJvZ3JhbSBEZW5vbWluYXRvciBEZW5zaXR5R3JhcGhpY3MgRGVuc2l0eUhpc3RvZ3JhbSBEZW5zaXR5UGxvdCBEZW5zaXR5UGxvdDNEIERlcGVuZGVudFZhcmlhYmxlcyBEZXBsb3kgRGVwbG95ZWQgRGVwdGggRGVwdGhGaXJzdFNjYW4gRGVyaXZhdGl2ZSBEZXJpdmF0aXZlRmlsdGVyIERlcml2ZWRLZXkgRGVzY3JpcHRvclN0YXRlU3BhY2UgRGVzaWduTWF0cml4IERlc3Ryb3lBZnRlckV2YWx1YXRpb24gRGV0IERldmljZUNsb3NlIERldmljZUNvbmZpZ3VyZSBEZXZpY2VFeGVjdXRlIERldmljZUV4ZWN1dGVBc3luY2hyb25vdXMgRGV2aWNlT2JqZWN0IERldmljZU9wZW4gRGV2aWNlT3BlblEgRGV2aWNlUmVhZCBEZXZpY2VSZWFkQnVmZmVyIERldmljZVJlYWRMYXRlc3QgRGV2aWNlUmVhZExpc3QgRGV2aWNlUmVhZFRpbWVTZXJpZXMgRGV2aWNlcyBEZXZpY2VTdHJlYW1zIERldmljZVdyaXRlIERldmljZVdyaXRlQnVmZmVyIERHYXVzc2lhbldhdmVsZXQgRGlhY3JpdGljYWxQb3NpdGlvbmluZyBEaWFnb25hbCBEaWFnb25hbGl6YWJsZU1hdHJpeFEgRGlhZ29uYWxNYXRyaXggRGlhZ29uYWxNYXRyaXhRIERpYWxvZyBEaWFsb2dJbmRlbnQgRGlhbG9nSW5wdXQgRGlhbG9nTGV2ZWwgRGlhbG9nTm90ZWJvb2sgRGlhbG9nUHJvbG9nIERpYWxvZ1JldHVybiBEaWFsb2dTeW1ib2xzIERpYW1vbmQgRGlhbW9uZE1hdHJpeCBEaWNlRGlzc2ltaWxhcml0eSBEaWN0aW9uYXJ5TG9va3VwIERpY3Rpb25hcnlXb3JkUSBEaWZmZXJlbmNlRGVsdGEgRGlmZmVyZW5jZU9yZGVyIERpZmZlcmVuY2VRdW90aWVudCBEaWZmZXJlbmNlUm9vdCBEaWZmZXJlbmNlUm9vdFJlZHVjZSBEaWZmZXJlbmNlcyBEaWZmZXJlbnRpYWxEIERpZmZlcmVudGlhbFJvb3QgRGlmZmVyZW50aWFsUm9vdFJlZHVjZSBEaWZmZXJlbnRpYXRvckZpbHRlciBEaWdpdGFsU2lnbmF0dXJlIERpZ2l0QmxvY2sgRGlnaXRCbG9ja01pbmltdW0gRGlnaXRDaGFyYWN0ZXIgRGlnaXRDb3VudCBEaWdpdFEgRGloZWRyYWxBbmdsZSBEaWhlZHJhbEdyb3VwIERpbGF0aW9uIERpbWVuc2lvbmFsQ29tYmluYXRpb25zIERpbWVuc2lvbmFsTWVzaENvbXBvbmVudHMgRGltZW5zaW9uUmVkdWNlIERpbWVuc2lvblJlZHVjZXJGdW5jdGlvbiBEaW1lbnNpb25SZWR1Y3Rpb24gRGltZW5zaW9ucyBEaXJhY0NvbWIgRGlyYWNEZWx0YSBEaXJlY3RlZEVkZ2UgRGlyZWN0ZWRFZGdlcyBEaXJlY3RlZEdyYXBoIERpcmVjdGVkR3JhcGhRIERpcmVjdGVkSW5maW5pdHkgRGlyZWN0aW9uIERpcmVjdGl2ZSBEaXJlY3RvcnkgRGlyZWN0b3J5TmFtZSBEaXJlY3RvcnlRIERpcmVjdG9yeVN0YWNrIERpcmljaGxldEJldGEgRGlyaWNobGV0Q2hhcmFjdGVyIERpcmljaGxldENvbmRpdGlvbiBEaXJpY2hsZXRDb252b2x2ZSBEaXJpY2hsZXREaXN0cmlidXRpb24gRGlyaWNobGV0RXRhIERpcmljaGxldEwgRGlyaWNobGV0TGFtYmRhIERpcmljaGxldFRyYW5zZm9ybSBEaXJpY2hsZXRXaW5kb3cgRGlzYWJsZUNvbnNvbGVQcmludFBhY2tldCBEaXNhYmxlRm9ybWF0dGluZyBEaXNjcmV0ZUNoaXJwWlRyYW5zZm9ybSBEaXNjcmV0ZUNvbnZvbHZlIERpc2NyZXRlRGVsdGEgRGlzY3JldGVIYWRhbWFyZFRyYW5zZm9ybSBEaXNjcmV0ZUluZGljYXRvciBEaXNjcmV0ZUxpbWl0IERpc2NyZXRlTFFFc3RpbWF0b3JHYWlucyBEaXNjcmV0ZUxRUmVndWxhdG9yR2FpbnMgRGlzY3JldGVMeWFwdW5vdlNvbHZlIERpc2NyZXRlTWFya292UHJvY2VzcyBEaXNjcmV0ZU1heExpbWl0IERpc2NyZXRlTWluTGltaXQgRGlzY3JldGVQbG90IERpc2NyZXRlUGxvdDNEIERpc2NyZXRlUmF0aW8gRGlzY3JldGVSaWNjYXRpU29sdmUgRGlzY3JldGVTaGlmdCBEaXNjcmV0ZVRpbWVNb2RlbFEgRGlzY3JldGVVbmlmb3JtRGlzdHJpYnV0aW9uIERpc2NyZXRlVmFyaWFibGVzIERpc2NyZXRlV2F2ZWxldERhdGEgRGlzY3JldGVXYXZlbGV0UGFja2V0VHJhbnNmb3JtIERpc2NyZXRlV2F2ZWxldFRyYW5zZm9ybSBEaXNjcmV0aXplR3JhcGhpY3MgRGlzY3JldGl6ZVJlZ2lvbiBEaXNjcmltaW5hbnQgRGlzam9pbnRRIERpc2p1bmN0aW9uIERpc2sgRGlza0JveCBEaXNrTWF0cml4IERpc2tTZWdtZW50IERpc3BhdGNoIERpc3BhdGNoUSBEaXNwZXJzaW9uRXN0aW1hdG9yRnVuY3Rpb24gRGlzcGxheSBEaXNwbGF5QWxsU3RlcHMgRGlzcGxheUVuZFBhY2tldCBEaXNwbGF5Rmx1c2hJbWFnZVBhY2tldCBEaXNwbGF5Rm9ybSBEaXNwbGF5RnVuY3Rpb24gRGlzcGxheVBhY2tldCBEaXNwbGF5UnVsZXMgRGlzcGxheVNldFNpemVQYWNrZXQgRGlzcGxheVN0cmluZyBEaXNwbGF5VGVtcG9yYXJ5IERpc3BsYXlXaXRoIERpc3BsYXlXaXRoUmVmIERpc3BsYXlXaXRoVmFyaWFibGUgRGlzdGFuY2VGdW5jdGlvbiBEaXN0YW5jZU1hdHJpeCBEaXN0YW5jZVRyYW5zZm9ybSBEaXN0cmlidXRlIERpc3RyaWJ1dGVkIERpc3RyaWJ1dGVkQ29udGV4dHMgRGlzdHJpYnV0ZURlZmluaXRpb25zIERpc3RyaWJ1dGlvbkNoYXJ0IERpc3RyaWJ1dGlvbkRvbWFpbiBEaXN0cmlidXRpb25GaXRUZXN0IERpc3RyaWJ1dGlvblBhcmFtZXRlckFzc3VtcHRpb25zIERpc3RyaWJ1dGlvblBhcmFtZXRlclEgRGl0aGVyaW5nIERpdiBEaXZlcmdlbmNlIERpdmlkZSBEaXZpZGVCeSBEaXZpZGVycyBEaXZpZGVTaWRlcyBEaXZpc2libGUgRGl2aXNvcnMgRGl2aXNvclNpZ21hIERpdmlzb3JTdW0gRE1TTGlzdCBETVNTdHJpbmcgRG8gRG9ja2VkQ2VsbHMgRG9jdW1lbnRHZW5lcmF0b3IgRG9jdW1lbnRHZW5lcmF0b3JJbmZvcm1hdGlvbiBEb2N1bWVudEdlbmVyYXRvckluZm9ybWF0aW9uRGF0YSBEb2N1bWVudEdlbmVyYXRvcnMgRG9jdW1lbnROb3RlYm9vayBEb2N1bWVudFdlaWdodGluZ1J1bGVzIERvZGVjYWhlZHJvbiBEb21haW5SZWdpc3RyYXRpb25JbmZvcm1hdGlvbiBEb21pbmFudENvbG9ycyBET1NUZXh0Rm9ybWF0IERvdCBEb3REYXNoZWQgRG90RXF1YWwgRG90TGF5ZXIgRG90UGx1c0xheWVyIERvdHRlZCBEb3VibGVCcmFja2V0aW5nQmFyIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCBEb3VibGVEb3duQXJyb3cgRG91YmxlTGVmdEFycm93IERvdWJsZUxlZnRSaWdodEFycm93IERvdWJsZUxlZnRUZWUgRG91YmxlTG9uZ0xlZnRBcnJvdyBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgRG91YmxlTG9uZ1JpZ2h0QXJyb3cgRG91YmxlUmlnaHRBcnJvdyBEb3VibGVSaWdodFRlZSBEb3VibGVVcEFycm93IERvdWJsZVVwRG93bkFycm93IERvdWJsZVZlcnRpY2FsQmFyIERvdWJseUluZmluaXRlIERvd24gRG93bkFycm93IERvd25BcnJvd0JhciBEb3duQXJyb3dVcEFycm93IERvd25MZWZ0UmlnaHRWZWN0b3IgRG93bkxlZnRUZWVWZWN0b3IgRG93bkxlZnRWZWN0b3IgRG93bkxlZnRWZWN0b3JCYXIgRG93blJpZ2h0VGVlVmVjdG9yIERvd25SaWdodFZlY3RvciBEb3duUmlnaHRWZWN0b3JCYXIgRG93bnNhbXBsZSBEb3duVGVlIERvd25UZWVBcnJvdyBEb3duVmFsdWVzIERyYWdBbmREcm9wIERyYXdFZGdlcyBEcmF3RnJvbnRGYWNlcyBEcmF3SGlnaGxpZ2h0ZWQgRHJvcCBEcm9wb3V0TGF5ZXIgRFNvbHZlIERTb2x2ZVZhbHVlIER0IER1YWxMaW5lYXJQcm9ncmFtbWluZyBEdWFsUG9seWhlZHJvbiBEdWFsU3lzdGVtc01vZGVsIER1bXBHZXQgRHVtcFNhdmUgRHVwbGljYXRlRnJlZVEgRHVyYXRpb24gRHluYW1pYyBEeW5hbWljQm94IER5bmFtaWNCb3hPcHRpb25zIER5bmFtaWNFdmFsdWF0aW9uVGltZW91dCBEeW5hbWljR2VvR3JhcGhpY3MgRHluYW1pY0ltYWdlIER5bmFtaWNMb2NhdGlvbiBEeW5hbWljTW9kdWxlIER5bmFtaWNNb2R1bGVCb3ggRHluYW1pY01vZHVsZUJveE9wdGlvbnMgRHluYW1pY01vZHVsZVBhcmVudCBEeW5hbWljTW9kdWxlVmFsdWVzIER5bmFtaWNOYW1lIER5bmFtaWNOYW1lc3BhY2UgRHluYW1pY1JlZmVyZW5jZSBEeW5hbWljU2V0dGluZyBEeW5hbWljVXBkYXRpbmcgRHluYW1pY1dyYXBwZXIgRHluYW1pY1dyYXBwZXJCb3ggRHluYW1pY1dyYXBwZXJCb3hPcHRpb25zJyArXG4gICAgICAnRSBFYXJ0aEltcGFjdERhdGEgRWFydGhxdWFrZURhdGEgRWNjZW50cmljaXR5Q2VudHJhbGl0eSBFY2hvIEVjaG9GdW5jdGlvbiBFY2xpcHNlVHlwZSBFZGdlQWRkIEVkZ2VCZXR3ZWVubmVzc0NlbnRyYWxpdHkgRWRnZUNhcGFjaXR5IEVkZ2VDYXBGb3JtIEVkZ2VDb2xvciBFZGdlQ29ubmVjdGl2aXR5IEVkZ2VDb250cmFjdCBFZGdlQ29zdCBFZGdlQ291bnQgRWRnZUNvdmVyUSBFZGdlQ3ljbGVNYXRyaXggRWRnZURhc2hpbmcgRWRnZURlbGV0ZSBFZGdlRGV0ZWN0IEVkZ2VGb3JtIEVkZ2VJbmRleCBFZGdlSm9pbkZvcm0gRWRnZUxhYmVsaW5nIEVkZ2VMYWJlbHMgRWRnZUxhYmVsU3R5bGUgRWRnZUxpc3QgRWRnZU9wYWNpdHkgRWRnZVEgRWRnZVJlbmRlcmluZ0Z1bmN0aW9uIEVkZ2VSdWxlcyBFZGdlU2hhcGVGdW5jdGlvbiBFZGdlU3R5bGUgRWRnZVRoaWNrbmVzcyBFZGdlV2VpZ2h0IEVkZ2VXZWlnaHRlZEdyYXBoUSBFZGl0YWJsZSBFZGl0QnV0dG9uU2V0dGluZ3MgRWRpdENlbGxUYWdzU2V0dGluZ3MgRWRpdERpc3RhbmNlIEVmZmVjdGl2ZUludGVyZXN0IEVpZ2Vuc3lzdGVtIEVpZ2VudmFsdWVzIEVpZ2VudmVjdG9yQ2VudHJhbGl0eSBFaWdlbnZlY3RvcnMgRWxlbWVudCBFbGVtZW50RGF0YSBFbGVtZW50d2lzZUxheWVyIEVsaWRlZEZvcm1zIEVsaW1pbmF0ZSBFbGltaW5hdGlvbk9yZGVyIEVsbGlwc29pZCBFbGxpcHRpY0UgRWxsaXB0aWNFeHAgRWxsaXB0aWNFeHBQcmltZSBFbGxpcHRpY0YgRWxsaXB0aWNGaWx0ZXJNb2RlbCBFbGxpcHRpY0sgRWxsaXB0aWNMb2cgRWxsaXB0aWNOb21lUSBFbGxpcHRpY1BpIEVsbGlwdGljUmVkdWNlZEhhbGZQZXJpb2RzIEVsbGlwdGljVGhldGEgRWxsaXB0aWNUaGV0YVByaW1lIEVtYmVkQ29kZSBFbWJlZGRlZEhUTUwgRW1iZWRkZWRTZXJ2aWNlIEVtYmVkZGluZ0xheWVyIEVtYmVkZGluZ09iamVjdCBFbWl0U291bmQgRW1waGFzaXplU3ludGF4RXJyb3JzIEVtcGlyaWNhbERpc3RyaWJ1dGlvbiBFbXB0eSBFbXB0eUdyYXBoUSBFbXB0eVJlZ2lvbiBFbmFibGVDb25zb2xlUHJpbnRQYWNrZXQgRW5hYmxlZCBFbmNvZGUgRW5jcnlwdCBFbmNyeXB0ZWRPYmplY3QgRW5jcnlwdEZpbGUgRW5kIEVuZEFkZCBFbmREaWFsb2dQYWNrZXQgRW5kRnJvbnRFbmRJbnRlcmFjdGlvblBhY2tldCBFbmRPZkJ1ZmZlciBFbmRPZkZpbGUgRW5kT2ZMaW5lIEVuZE9mU3RyaW5nIEVuZFBhY2thZ2UgRW5naW5lRW52aXJvbm1lbnQgRW5naW5lZXJpbmdGb3JtIEVudGVyIEVudGVyRXhwcmVzc2lvblBhY2tldCBFbnRlclRleHRQYWNrZXQgRW50aXR5IEVudGl0eUNsYXNzIEVudGl0eUNsYXNzTGlzdCBFbnRpdHlDb3BpZXMgRW50aXR5RnVuY3Rpb24gRW50aXR5R3JvdXAgRW50aXR5SW5zdGFuY2UgRW50aXR5TGlzdCBFbnRpdHlQcmVmZXRjaCBFbnRpdHlQcm9wZXJ0aWVzIEVudGl0eVByb3BlcnR5IEVudGl0eVByb3BlcnR5Q2xhc3MgRW50aXR5UmVnaXN0ZXIgRW50aXR5U3RvcmUgRW50aXR5U3RvcmVzIEVudGl0eVR5cGVOYW1lIEVudGl0eVVucmVnaXN0ZXIgRW50aXR5VmFsdWUgRW50cm9weSBFbnRyb3B5RmlsdGVyIEVudmlyb25tZW50IEVwaWxvZyBFcGlsb2dGdW5jdGlvbiBFcXVhbCBFcXVhbENvbHVtbnMgRXF1YWxSb3dzIEVxdWFsVGlsZGUgRXF1YWxUbyBFcXVhdGVkVG8gRXF1aWxpYnJpdW0gRXF1aXJpcHBsZUZpbHRlcktlcm5lbCBFcXVpdmFsZW50IEVyZiBFcmZjIEVyZmkgRXJsYW5nQiBFcmxhbmdDIEVybGFuZ0Rpc3RyaWJ1dGlvbiBFcm9zaW9uIEVycm9yQm94IEVycm9yQm94T3B0aW9ucyBFcnJvck5vcm0gRXJyb3JQYWNrZXQgRXJyb3JzRGlhbG9nU2V0dGluZ3MgRXNjYXBlUmFkaXVzIEVzdGltYXRlZEJhY2tncm91bmQgRXN0aW1hdGVkRGlzdHJpYnV0aW9uIEVzdGltYXRlZFByb2Nlc3MgRXN0aW1hdG9yR2FpbnMgRXN0aW1hdG9yUmVndWxhdG9yIEV1Y2xpZGVhbkRpc3RhbmNlIEV1bGVyQW5nbGVzIEV1bGVyQ2hhcmFjdGVyaXN0aWMgRXVsZXJFIEV1bGVyR2FtbWEgRXVsZXJpYW5HcmFwaFEgRXVsZXJNYXRyaXggRXVsZXJQaGkgRXZhbHVhdGFibGUgRXZhbHVhdGUgRXZhbHVhdGVkIEV2YWx1YXRlUGFja2V0IEV2YWx1YXRlU2NoZWR1bGVkVGFzayBFdmFsdWF0aW9uQm94IEV2YWx1YXRpb25DZWxsIEV2YWx1YXRpb25Db21wbGV0aW9uQWN0aW9uIEV2YWx1YXRpb25EYXRhIEV2YWx1YXRpb25FbGVtZW50cyBFdmFsdWF0aW9uRW52aXJvbm1lbnQgRXZhbHVhdGlvbk1vZGUgRXZhbHVhdGlvbk1vbml0b3IgRXZhbHVhdGlvbk5vdGVib29rIEV2YWx1YXRpb25PYmplY3QgRXZhbHVhdGlvbk9yZGVyIEV2YWx1YXRvciBFdmFsdWF0b3JOYW1lcyBFdmVuUSBFdmVudERhdGEgRXZlbnRFdmFsdWF0b3IgRXZlbnRIYW5kbGVyIEV2ZW50SGFuZGxlclRhZyBFdmVudExhYmVscyBFdmVudFNlcmllcyBFeGFjdEJsYWNrbWFuV2luZG93IEV4YWN0TnVtYmVyUSBFeGFjdFJvb3RJc29sYXRpb24gRXhhbXBsZURhdGEgRXhjZXB0IEV4Y2x1ZGVkRm9ybXMgRXhjbHVkZWRMaW5lcyBFeGNsdWRlZFBoeXNpY2FsUXVhbnRpdGllcyBFeGNsdWRlUG9kcyBFeGNsdXNpb25zIEV4Y2x1c2lvbnNTdHlsZSBFeGlzdHMgRXhpdCBFeGl0RGlhbG9nIEV4b3BsYW5ldERhdGEgRXhwIEV4cGFuZCBFeHBhbmRBbGwgRXhwYW5kRGVub21pbmF0b3IgRXhwYW5kRmlsZU5hbWUgRXhwYW5kTnVtZXJhdG9yIEV4cGVjdGF0aW9uIEV4cGVjdGF0aW9uRSBFeHBlY3RlZFZhbHVlIEV4cEdhbW1hRGlzdHJpYnV0aW9uIEV4cEludGVncmFsRSBFeHBJbnRlZ3JhbEVpIEV4cGlyYXRpb25EYXRlIEV4cG9uZW50IEV4cG9uZW50RnVuY3Rpb24gRXhwb25lbnRpYWxEaXN0cmlidXRpb24gRXhwb25lbnRpYWxGYW1pbHkgRXhwb25lbnRpYWxHZW5lcmF0aW5nRnVuY3Rpb24gRXhwb25lbnRpYWxNb3ZpbmdBdmVyYWdlIEV4cG9uZW50aWFsUG93ZXJEaXN0cmlidXRpb24gRXhwb25lbnRQb3NpdGlvbiBFeHBvbmVudFN0ZXAgRXhwb3J0IEV4cG9ydEF1dG9SZXBsYWNlbWVudHMgRXhwb3J0Qnl0ZUFycmF5IEV4cG9ydEZvcm0gRXhwb3J0UGFja2V0IEV4cG9ydFN0cmluZyBFeHByZXNzaW9uIEV4cHJlc3Npb25DZWxsIEV4cHJlc3Npb25QYWNrZXQgRXhwcmVzc2lvblVVSUQgRXhwVG9UcmlnIEV4dGVuZGVkRW50aXR5Q2xhc3MgRXh0ZW5kZWRHQ0QgRXh0ZW5zaW9uIEV4dGVudEVsZW1lbnRGdW5jdGlvbiBFeHRlbnRNYXJrZXJzIEV4dGVudFNpemUgRXh0ZXJuYWxCdW5kbGUgRXh0ZXJuYWxDYWxsIEV4dGVybmFsRGF0YUNoYXJhY3RlckVuY29kaW5nIEV4dGVybmFsRXZhbHVhdGUgRXh0ZXJuYWxGdW5jdGlvbiBFeHRlcm5hbEZ1bmN0aW9uTmFtZSBFeHRlcm5hbE9iamVjdCBFeHRlcm5hbE9wdGlvbnMgRXh0ZXJuYWxTZXNzaW9uT2JqZWN0IEV4dGVybmFsU2Vzc2lvbnMgRXh0ZXJuYWxUeXBlU2lnbmF0dXJlIEV4dGVybmFsVmFsdWUgRXh0cmFjdCBFeHRyYWN0QXJjaGl2ZSBFeHRyYWN0TGF5ZXIgRXh0cmVtZVZhbHVlRGlzdHJpYnV0aW9uJyArXG4gICAgICAnRmFjZUZvcm0gRmFjZUdyaWRzIEZhY2VHcmlkc1N0eWxlIEZhY2lhbEZlYXR1cmVzIEZhY3RvciBGYWN0b3JDb21wbGV0ZSBGYWN0b3JpYWwgRmFjdG9yaWFsMiBGYWN0b3JpYWxNb21lbnQgRmFjdG9yaWFsTW9tZW50R2VuZXJhdGluZ0Z1bmN0aW9uIEZhY3RvcmlhbFBvd2VyIEZhY3RvckludGVnZXIgRmFjdG9yTGlzdCBGYWN0b3JTcXVhcmVGcmVlIEZhY3RvclNxdWFyZUZyZWVMaXN0IEZhY3RvclRlcm1zIEZhY3RvclRlcm1zTGlzdCBGYWlsIEZhaWx1cmUgRmFpbHVyZUFjdGlvbiBGYWlsdXJlRGlzdHJpYnV0aW9uIEZhaWx1cmVRIEZhbHNlIEZhcmV5U2VxdWVuY2UgRkFSSU1BUHJvY2VzcyBGZWF0dXJlRGlzdGFuY2UgRmVhdHVyZUV4dHJhY3QgRmVhdHVyZUV4dHJhY3Rpb24gRmVhdHVyZUV4dHJhY3RvciBGZWF0dXJlRXh0cmFjdG9yRnVuY3Rpb24gRmVhdHVyZU5hbWVzIEZlYXR1cmVOZWFyZXN0IEZlYXR1cmVTcGFjZVBsb3QgRmVhdHVyZVNwYWNlUGxvdDNEIEZlYXR1cmVUeXBlcyBGRURpc2FibGVDb25zb2xlUHJpbnRQYWNrZXQgRmVlZGJhY2tMaW5lYXJpemUgRmVlZGJhY2tTZWN0b3IgRmVlZGJhY2tTZWN0b3JTdHlsZSBGZWVkYmFja1R5cGUgRkVFbmFibGVDb25zb2xlUHJpbnRQYWNrZXQgRmV0YWxHcm93dGhEYXRhIEZpYm9uYWNjaSBGaWJvbm9yaWFsIEZpZWxkQ29tcGxldGlvbkZ1bmN0aW9uIEZpZWxkSGludCBGaWVsZEhpbnRTdHlsZSBGaWVsZE1hc2tlZCBGaWVsZFNpemUgRmlsZSBGaWxlQmFzZU5hbWUgRmlsZUJ5dGVDb3VudCBGaWxlQ29udmVydCBGaWxlRGF0ZSBGaWxlRXhpc3RzUSBGaWxlRXh0ZW5zaW9uIEZpbGVGb3JtYXQgRmlsZUhhbmRsZXIgRmlsZUhhc2ggRmlsZUluZm9ybWF0aW9uIEZpbGVOYW1lIEZpbGVOYW1lRGVwdGggRmlsZU5hbWVEaWFsb2dTZXR0aW5ncyBGaWxlTmFtZURyb3AgRmlsZU5hbWVGb3JtcyBGaWxlTmFtZUpvaW4gRmlsZU5hbWVzIEZpbGVOYW1lU2V0dGVyIEZpbGVOYW1lU3BsaXQgRmlsZU5hbWVUYWtlIEZpbGVQcmludCBGaWxlU2l6ZSBGaWxlU3lzdGVtTWFwIEZpbGVTeXN0ZW1TY2FuIEZpbGVUZW1wbGF0ZSBGaWxlVGVtcGxhdGVBcHBseSBGaWxlVHlwZSBGaWxsZWRDdXJ2ZSBGaWxsZWRDdXJ2ZUJveCBGaWxsZWRDdXJ2ZUJveE9wdGlvbnMgRmlsbGluZyBGaWxsaW5nU3R5bGUgRmlsbGluZ1RyYW5zZm9ybSBGaWx0ZXJlZEVudGl0eUNsYXNzIEZpbHRlclJ1bGVzIEZpbmFuY2lhbEJvbmQgRmluYW5jaWFsRGF0YSBGaW5hbmNpYWxEZXJpdmF0aXZlIEZpbmFuY2lhbEluZGljYXRvciBGaW5kIEZpbmRBbm9tYWxpZXMgRmluZEFyZ01heCBGaW5kQXJnTWluIEZpbmRDaGFubmVscyBGaW5kQ2xpcXVlIEZpbmRDbHVzdGVycyBGaW5kQ29va2llcyBGaW5kQ3VydmVQYXRoIEZpbmRDeWNsZSBGaW5kRGV2aWNlcyBGaW5kRGlzdHJpYnV0aW9uIEZpbmREaXN0cmlidXRpb25QYXJhbWV0ZXJzIEZpbmREaXZpc2lvbnMgRmluZEVkZ2VDb3ZlciBGaW5kRWRnZUN1dCBGaW5kRWRnZUluZGVwZW5kZW50UGF0aHMgRmluZEVxdWF0aW9uYWxQcm9vZiBGaW5kRXVsZXJpYW5DeWNsZSBGaW5kRXh0ZXJuYWxFdmFsdWF0b3JzIEZpbmRGYWNlcyBGaW5kRmlsZSBGaW5kRml0IEZpbmRGb3JtdWxhIEZpbmRGdW5kYW1lbnRhbEN5Y2xlcyBGaW5kR2VuZXJhdGluZ0Z1bmN0aW9uIEZpbmRHZW9Mb2NhdGlvbiBGaW5kR2VvbWV0cmljQ29uamVjdHVyZXMgRmluZEdlb21ldHJpY1RyYW5zZm9ybSBGaW5kR3JhcGhDb21tdW5pdGllcyBGaW5kR3JhcGhJc29tb3JwaGlzbSBGaW5kR3JhcGhQYXJ0aXRpb24gRmluZEhhbWlsdG9uaWFuQ3ljbGUgRmluZEhhbWlsdG9uaWFuUGF0aCBGaW5kSGlkZGVuTWFya292U3RhdGVzIEZpbmRJbmRlcGVuZGVudEVkZ2VTZXQgRmluZEluZGVwZW5kZW50VmVydGV4U2V0IEZpbmRJbnN0YW5jZSBGaW5kSW50ZWdlck51bGxWZWN0b3IgRmluZEtDbGFuIEZpbmRLQ2xpcXVlIEZpbmRLQ2x1YiBGaW5kS1BsZXggRmluZExpYnJhcnkgRmluZExpbmVhclJlY3VycmVuY2UgRmluZExpc3QgRmluZE1hdGNoaW5nQ29sb3IgRmluZE1heGltdW0gRmluZE1heGltdW1GbG93IEZpbmRNYXhWYWx1ZSBGaW5kTWVzaERlZmVjdHMgRmluZE1pbmltdW0gRmluZE1pbmltdW1Db3N0RmxvdyBGaW5kTWluaW11bUN1dCBGaW5kTWluVmFsdWUgRmluZE1vbGVjdWxlU3Vic3RydWN0dXJlIEZpbmRQYXRoIEZpbmRQZWFrcyBGaW5kUGVybXV0YXRpb24gRmluZFBvc3RtYW5Ub3VyIEZpbmRQcm9jZXNzUGFyYW1ldGVycyBGaW5kUmVwZWF0IEZpbmRSb290IEZpbmRTZXF1ZW5jZUZ1bmN0aW9uIEZpbmRTZXR0aW5ncyBGaW5kU2hvcnRlc3RQYXRoIEZpbmRTaG9ydGVzdFRvdXIgRmluZFNwYW5uaW5nVHJlZSBGaW5kU3lzdGVtTW9kZWxFcXVpbGlicml1bSBGaW5kVGV4dHVhbEFuc3dlciBGaW5kVGhyZXNob2xkIEZpbmRUcmFuc2llbnRSZXBlYXQgRmluZFZlcnRleENvdmVyIEZpbmRWZXJ0ZXhDdXQgRmluZFZlcnRleEluZGVwZW5kZW50UGF0aHMgRmluZSBGaW5pc2hEeW5hbWljIEZpbml0ZUFiZWxpYW5Hcm91cENvdW50IEZpbml0ZUdyb3VwQ291bnQgRmluaXRlR3JvdXBEYXRhIEZpcnN0IEZpcnN0Q2FzZSBGaXJzdFBhc3NhZ2VUaW1lRGlzdHJpYnV0aW9uIEZpcnN0UG9zaXRpb24gRmlzY2hlckdyb3VwRmkyMiBGaXNjaGVyR3JvdXBGaTIzIEZpc2NoZXJHcm91cEZpMjRQcmltZSBGaXNoZXJIeXBlcmdlb21ldHJpY0Rpc3RyaWJ1dGlvbiBGaXNoZXJSYXRpb1Rlc3QgRmlzaGVyWkRpc3RyaWJ1dGlvbiBGaXQgRml0QWxsIEZpdFJlZ3VsYXJpemF0aW9uIEZpdHRlZE1vZGVsIEZpeGVkT3JkZXIgRml4ZWRQb2ludCBGaXhlZFBvaW50TGlzdCBGbGFzaFNlbGVjdGlvbiBGbGF0IEZsYXR0ZW4gRmxhdHRlbkF0IEZsYXR0ZW5MYXllciBGbGF0VG9wV2luZG93IEZsaXBWaWV3IEZsb29yIEZsb3dQb2x5bm9taWFsIEZsdXNoUHJpbnRPdXRwdXRQYWNrZXQgRm9sZCBGb2xkTGlzdCBGb2xkUGFpciBGb2xkUGFpckxpc3QgRm9sbG93UmVkaXJlY3RzIEZvbnQgRm9udENvbG9yIEZvbnRGYW1pbHkgRm9udEZvcm0gRm9udE5hbWUgRm9udE9wYWNpdHkgRm9udFBvc3RTY3JpcHROYW1lIEZvbnRQcm9wZXJ0aWVzIEZvbnRSZWVuY29kaW5nIEZvbnRTaXplIEZvbnRTbGFudCBGb250U3Vic3RpdHV0aW9ucyBGb250VHJhY2tpbmcgRm9udFZhcmlhdGlvbnMgRm9udFdlaWdodCBGb3IgRm9yQWxsIEZvcm1hdCBGb3JtYXRSdWxlcyBGb3JtYXRUeXBlIEZvcm1hdFR5cGVBdXRvQ29udmVydCBGb3JtYXRWYWx1ZXMgRm9ybUJveCBGb3JtQm94T3B0aW9ucyBGb3JtQ29udHJvbCBGb3JtRnVuY3Rpb24gRm9ybUxheW91dEZ1bmN0aW9uIEZvcm1PYmplY3QgRm9ybVBhZ2UgRm9ybVRoZW1lIEZvcm11bGFEYXRhIEZvcm11bGFMb29rdXAgRm9ydHJhbkZvcm0gRm9yd2FyZCBGb3J3YXJkQmFja3dhcmQgRm91cmllciBGb3VyaWVyQ29lZmZpY2llbnQgRm91cmllckNvc0NvZWZmaWNpZW50IEZvdXJpZXJDb3NTZXJpZXMgRm91cmllckNvc1RyYW5zZm9ybSBGb3VyaWVyRENUIEZvdXJpZXJEQ1RGaWx0ZXIgRm91cmllckRDVE1hdHJpeCBGb3VyaWVyRFNUIEZvdXJpZXJEU1RNYXRyaXggRm91cmllck1hdHJpeCBGb3VyaWVyUGFyYW1ldGVycyBGb3VyaWVyU2VxdWVuY2VUcmFuc2Zvcm0gRm91cmllclNlcmllcyBGb3VyaWVyU2luQ29lZmZpY2llbnQgRm91cmllclNpblNlcmllcyBGb3VyaWVyU2luVHJhbnNmb3JtIEZvdXJpZXJUcmFuc2Zvcm0gRm91cmllclRyaWdTZXJpZXMgRnJhY3Rpb25hbEJyb3duaWFuTW90aW9uUHJvY2VzcyBGcmFjdGlvbmFsR2F1c3NpYW5Ob2lzZVByb2Nlc3MgRnJhY3Rpb25hbFBhcnQgRnJhY3Rpb25Cb3ggRnJhY3Rpb25Cb3hPcHRpb25zIEZyYWN0aW9uTGluZSBGcmFtZSBGcmFtZUJveCBGcmFtZUJveE9wdGlvbnMgRnJhbWVkIEZyYW1lSW5zZXQgRnJhbWVMYWJlbCBGcmFtZWxlc3MgRnJhbWVNYXJnaW5zIEZyYW1lUmF0ZSBGcmFtZVN0eWxlIEZyYW1lVGlja3MgRnJhbWVUaWNrc1N0eWxlIEZSYXRpb0Rpc3RyaWJ1dGlvbiBGcmVjaGV0RGlzdHJpYnV0aW9uIEZyZWVRIEZyZW5ldFNlcnJldFN5c3RlbSBGcmVxdWVuY3lTYW1wbGluZ0ZpbHRlcktlcm5lbCBGcmVzbmVsQyBGcmVzbmVsRiBGcmVzbmVsRyBGcmVzbmVsUyBGcmlkYXkgRnJvYmVuaXVzTnVtYmVyIEZyb2Jlbml1c1NvbHZlIEZyb21BYnNvbHV0ZVRpbWUgRnJvbUNoYXJhY3RlckNvZGUgRnJvbUNvZWZmaWNpZW50UnVsZXMgRnJvbUNvbnRpbnVlZEZyYWN0aW9uIEZyb21EYXRlIEZyb21EaWdpdHMgRnJvbURNUyBGcm9tRW50aXR5IEZyb21KdWxpYW5EYXRlIEZyb21MZXR0ZXJOdW1iZXIgRnJvbVBvbGFyQ29vcmRpbmF0ZXMgRnJvbVJvbWFuTnVtZXJhbCBGcm9tU3BoZXJpY2FsQ29vcmRpbmF0ZXMgRnJvbVVuaXhUaW1lIEZyb250IEZyb250RW5kRHluYW1pY0V4cHJlc3Npb24gRnJvbnRFbmRFdmVudEFjdGlvbnMgRnJvbnRFbmRFeGVjdXRlIEZyb250RW5kT2JqZWN0IEZyb250RW5kUmVzb3VyY2UgRnJvbnRFbmRSZXNvdXJjZVN0cmluZyBGcm9udEVuZFN0YWNrU2l6ZSBGcm9udEVuZFRva2VuIEZyb250RW5kVG9rZW5FeGVjdXRlIEZyb250RW5kVmFsdWVDYWNoZSBGcm9udEVuZFZlcnNpb24gRnJvbnRGYWNlQ29sb3IgRnJvbnRGYWNlT3BhY2l0eSBGdWxsIEZ1bGxBeGVzIEZ1bGxEZWZpbml0aW9uIEZ1bGxGb3JtIEZ1bGxHcmFwaGljcyBGdWxsSW5mb3JtYXRpb25PdXRwdXRSZWd1bGF0b3IgRnVsbE9wdGlvbnMgRnVsbFJlZ2lvbiBGdWxsU2ltcGxpZnkgRnVuY3Rpb24gRnVuY3Rpb25Db21waWxlIEZ1bmN0aW9uQ29tcGlsZUV4cG9ydCBGdW5jdGlvbkNvbXBpbGVFeHBvcnRCeXRlQXJyYXkgRnVuY3Rpb25Db21waWxlRXhwb3J0TGlicmFyeSBGdW5jdGlvbkNvbXBpbGVFeHBvcnRTdHJpbmcgRnVuY3Rpb25Eb21haW4gRnVuY3Rpb25FeHBhbmQgRnVuY3Rpb25JbnRlcnBvbGF0aW9uIEZ1bmN0aW9uUGVyaW9kIEZ1bmN0aW9uUmFuZ2UgRnVuY3Rpb25TcGFjZSBGdXNzZWxsVmVzZWx5SW1wb3J0YW5jZScgK1xuICAgICAgJ0dhYm9yRmlsdGVyIEdhYm9yTWF0cml4IEdhYm9yV2F2ZWxldCBHYWluTWFyZ2lucyBHYWluUGhhc2VNYXJnaW5zIEdhbGF4eURhdGEgR2FsbGVyeVZpZXcgR2FtbWEgR2FtbWFEaXN0cmlidXRpb24gR2FtbWFSZWd1bGFyaXplZCBHYXBQZW5hbHR5IEdBUkNIUHJvY2VzcyBHYXRlZFJlY3VycmVudExheWVyIEdhdGhlciBHYXRoZXJCeSBHYXVnZUZhY2VFbGVtZW50RnVuY3Rpb24gR2F1Z2VGYWNlU3R5bGUgR2F1Z2VGcmFtZUVsZW1lbnRGdW5jdGlvbiBHYXVnZUZyYW1lU2l6ZSBHYXVnZUZyYW1lU3R5bGUgR2F1Z2VMYWJlbHMgR2F1Z2VNYXJrZXJzIEdhdWdlU3R5bGUgR2F1c3NpYW5GaWx0ZXIgR2F1c3NpYW5JbnRlZ2VycyBHYXVzc2lhbk1hdHJpeCBHYXVzc2lhbk9ydGhvZ29uYWxNYXRyaXhEaXN0cmlidXRpb24gR2F1c3NpYW5TeW1wbGVjdGljTWF0cml4RGlzdHJpYnV0aW9uIEdhdXNzaWFuVW5pdGFyeU1hdHJpeERpc3RyaWJ1dGlvbiBHYXVzc2lhbldpbmRvdyBHQ0QgR2VnZW5iYXVlckMgR2VuZXJhbCBHZW5lcmFsaXplZExpbmVhck1vZGVsRml0IEdlbmVyYXRlQXN5bW1ldHJpY0tleVBhaXIgR2VuZXJhdGVDb25kaXRpb25zIEdlbmVyYXRlZENlbGwgR2VuZXJhdGVkRG9jdW1lbnRCaW5kaW5nIEdlbmVyYXRlRGVyaXZlZEtleSBHZW5lcmF0ZURpZ2l0YWxTaWduYXR1cmUgR2VuZXJhdGVEb2N1bWVudCBHZW5lcmF0ZWRQYXJhbWV0ZXJzIEdlbmVyYXRlZFF1YW50aXR5TWFnbml0dWRlcyBHZW5lcmF0ZUhUVFBSZXNwb25zZSBHZW5lcmF0ZVNlY3VyZWRBdXRoZW50aWNhdGlvbktleSBHZW5lcmF0ZVN5bW1ldHJpY0tleSBHZW5lcmF0aW5nRnVuY3Rpb24gR2VuZXJhdG9yRGVzY3JpcHRpb24gR2VuZXJhdG9ySGlzdG9yeUxlbmd0aCBHZW5lcmF0b3JPdXRwdXRUeXBlIEdlbmVyaWMgR2VuZXJpY0N5bGluZHJpY2FsRGVjb21wb3NpdGlvbiBHZW5vbWVEYXRhIEdlbm9tZUxvb2t1cCBHZW9BbnRpcG9kZSBHZW9BcmVhIEdlb0FycmF5U2l6ZSBHZW9CYWNrZ3JvdW5kIEdlb0JvdW5kaW5nQm94IEdlb0JvdW5kcyBHZW9Cb3VuZHNSZWdpb24gR2VvQnViYmxlQ2hhcnQgR2VvQ2VudGVyIEdlb0NpcmNsZSBHZW9kZXNpY0Nsb3NpbmcgR2VvZGVzaWNEaWxhdGlvbiBHZW9kZXNpY0Vyb3Npb24gR2VvZGVzaWNPcGVuaW5nIEdlb0Rlc3RpbmF0aW9uIEdlb2Rlc3lEYXRhIEdlb0RpcmVjdGlvbiBHZW9EaXNrIEdlb0Rpc3BsYWNlbWVudCBHZW9EaXN0YW5jZSBHZW9EaXN0YW5jZUxpc3QgR2VvRWxldmF0aW9uRGF0YSBHZW9FbnRpdGllcyBHZW9HcmFwaGljcyBHZW9ncmF2aXR5TW9kZWxEYXRhIEdlb0dyaWREaXJlY3Rpb25EaWZmZXJlbmNlIEdlb0dyaWRMaW5lcyBHZW9HcmlkTGluZXNTdHlsZSBHZW9HcmlkUG9zaXRpb24gR2VvR3JpZFJhbmdlIEdlb0dyaWRSYW5nZVBhZGRpbmcgR2VvR3JpZFVuaXRBcmVhIEdlb0dyaWRVbml0RGlzdGFuY2UgR2VvR3JpZFZlY3RvciBHZW9Hcm91cCBHZW9IZW1pc3BoZXJlIEdlb0hlbWlzcGhlcmVCb3VuZGFyeSBHZW9IaXN0b2dyYW0gR2VvSWRlbnRpZnkgR2VvSW1hZ2UgR2VvTGFiZWxzIEdlb0xlbmd0aCBHZW9MaXN0UGxvdCBHZW9Mb2NhdGlvbiBHZW9sb2dpY2FsUGVyaW9kRGF0YSBHZW9tYWduZXRpY01vZGVsRGF0YSBHZW9NYXJrZXIgR2VvbWV0cmljQXNzZXJ0aW9uIEdlb21ldHJpY0Jyb3duaWFuTW90aW9uUHJvY2VzcyBHZW9tZXRyaWNEaXN0cmlidXRpb24gR2VvbWV0cmljTWVhbiBHZW9tZXRyaWNNZWFuRmlsdGVyIEdlb21ldHJpY1NjZW5lIEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uIEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uM0RCb3ggR2VvbWV0cmljVHJhbnNmb3JtYXRpb24zREJveE9wdGlvbnMgR2VvbWV0cmljVHJhbnNmb3JtYXRpb25Cb3ggR2VvbWV0cmljVHJhbnNmb3JtYXRpb25Cb3hPcHRpb25zIEdlb01vZGVsIEdlb05lYXJlc3QgR2VvUGF0aCBHZW9Qb3NpdGlvbiBHZW9Qb3NpdGlvbkVOVSBHZW9Qb3NpdGlvblhZWiBHZW9Qcm9qZWN0aW9uIEdlb1Byb2plY3Rpb25EYXRhIEdlb1JhbmdlIEdlb1JhbmdlUGFkZGluZyBHZW9SZWdpb25WYWx1ZVBsb3QgR2VvUmVzb2x1dGlvbiBHZW9TY2FsZUJhciBHZW9TZXJ2ZXIgR2VvU21vb3RoSGlzdG9ncmFtIEdlb1N0cmVhbVBsb3QgR2VvU3R5bGluZyBHZW9TdHlsaW5nSW1hZ2VGdW5jdGlvbiBHZW9WYXJpYW50IEdlb1ZlY3RvciBHZW9WZWN0b3JFTlUgR2VvVmVjdG9yUGxvdCBHZW9WZWN0b3JYWVogR2VvVmlzaWJsZVJlZ2lvbiBHZW9WaXNpYmxlUmVnaW9uQm91bmRhcnkgR2VvV2l0aGluUSBHZW9ab29tTGV2ZWwgR2VzdHVyZUhhbmRsZXIgR2VzdHVyZUhhbmRsZXJUYWcgR2V0IEdldEJvdW5kaW5nQm94U2l6ZVBhY2tldCBHZXRDb250ZXh0IEdldEVudmlyb25tZW50IEdldEZpbGVOYW1lIEdldEZyb250RW5kT3B0aW9uc0RhdGFQYWNrZXQgR2V0TGluZWJyZWFrSW5mb3JtYXRpb25QYWNrZXQgR2V0TWVudXNQYWNrZXQgR2V0UGFnZUJyZWFrSW5mb3JtYXRpb25QYWNrZXQgR2xhaXNoZXIgR2xvYmFsQ2x1c3RlcmluZ0NvZWZmaWNpZW50IEdsb2JhbFByZWZlcmVuY2VzIEdsb2JhbFNlc3Npb24gR2xvdyBHb2xkZW5BbmdsZSBHb2xkZW5SYXRpbyBHb21wZXJ0ek1ha2VoYW1EaXN0cmlidXRpb24gR29vZG1hbktydXNrYWxHYW1tYSBHb29kbWFuS3J1c2thbEdhbW1hVGVzdCBHb3RvIEdyYWQgR3JhZGllbnQgR3JhZGllbnRGaWx0ZXIgR3JhZGllbnRPcmllbnRhdGlvbkZpbHRlciBHcmFtbWFyQXBwbHkgR3JhbW1hclJ1bGVzIEdyYW1tYXJUb2tlbiBHcmFwaCBHcmFwaDNEIEdyYXBoQXNzb3J0YXRpdml0eSBHcmFwaEF1dG9tb3JwaGlzbUdyb3VwIEdyYXBoQ2VudGVyIEdyYXBoQ29tcGxlbWVudCBHcmFwaERhdGEgR3JhcGhEZW5zaXR5IEdyYXBoRGlhbWV0ZXIgR3JhcGhEaWZmZXJlbmNlIEdyYXBoRGlzam9pbnRVbmlvbiBHcmFwaERpc3RhbmNlIEdyYXBoRGlzdGFuY2VNYXRyaXggR3JhcGhFbGVtZW50RGF0YSBHcmFwaEVtYmVkZGluZyBHcmFwaEhpZ2hsaWdodCBHcmFwaEhpZ2hsaWdodFN0eWxlIEdyYXBoSHViIEdyYXBoaWNzIEdyYXBoaWNzM0QgR3JhcGhpY3MzREJveCBHcmFwaGljczNEQm94T3B0aW9ucyBHcmFwaGljc0FycmF5IEdyYXBoaWNzQmFzZWxpbmUgR3JhcGhpY3NCb3ggR3JhcGhpY3NCb3hPcHRpb25zIEdyYXBoaWNzQ29sb3IgR3JhcGhpY3NDb2x1bW4gR3JhcGhpY3NDb21wbGV4IEdyYXBoaWNzQ29tcGxleDNEQm94IEdyYXBoaWNzQ29tcGxleDNEQm94T3B0aW9ucyBHcmFwaGljc0NvbXBsZXhCb3ggR3JhcGhpY3NDb21wbGV4Qm94T3B0aW9ucyBHcmFwaGljc0NvbnRlbnRzIEdyYXBoaWNzRGF0YSBHcmFwaGljc0dyaWQgR3JhcGhpY3NHcmlkQm94IEdyYXBoaWNzR3JvdXAgR3JhcGhpY3NHcm91cDNEQm94IEdyYXBoaWNzR3JvdXAzREJveE9wdGlvbnMgR3JhcGhpY3NHcm91cEJveCBHcmFwaGljc0dyb3VwQm94T3B0aW9ucyBHcmFwaGljc0dyb3VwaW5nIEdyYXBoaWNzSGlnaGxpZ2h0Q29sb3IgR3JhcGhpY3NSb3cgR3JhcGhpY3NTcGFjaW5nIEdyYXBoaWNzU3R5bGUgR3JhcGhJbnRlcnNlY3Rpb24gR3JhcGhMYXlvdXQgR3JhcGhMaW5rRWZmaWNpZW5jeSBHcmFwaFBlcmlwaGVyeSBHcmFwaFBsb3QgR3JhcGhQbG90M0QgR3JhcGhQb3dlciBHcmFwaFByb3BlcnR5RGlzdHJpYnV0aW9uIEdyYXBoUSBHcmFwaFJhZGl1cyBHcmFwaFJlY2lwcm9jaXR5IEdyYXBoUm9vdCBHcmFwaFN0eWxlIEdyYXBoVW5pb24gR3JheSBHcmF5TGV2ZWwgR3JlYXRlciBHcmVhdGVyRXF1YWwgR3JlYXRlckVxdWFsTGVzcyBHcmVhdGVyRXF1YWxUaGFuIEdyZWF0ZXJGdWxsRXF1YWwgR3JlYXRlckdyZWF0ZXIgR3JlYXRlckxlc3MgR3JlYXRlclNsYW50RXF1YWwgR3JlYXRlclRoYW4gR3JlYXRlclRpbGRlIEdyZWVuIEdyZWVuRnVuY3Rpb24gR3JpZCBHcmlkQmFzZWxpbmUgR3JpZEJveCBHcmlkQm94QWxpZ25tZW50IEdyaWRCb3hCYWNrZ3JvdW5kIEdyaWRCb3hEaXZpZGVycyBHcmlkQm94RnJhbWUgR3JpZEJveEl0ZW1TaXplIEdyaWRCb3hJdGVtU3R5bGUgR3JpZEJveE9wdGlvbnMgR3JpZEJveFNwYWNpbmdzIEdyaWRDcmVhdGlvblNldHRpbmdzIEdyaWREZWZhdWx0RWxlbWVudCBHcmlkRWxlbWVudFN0eWxlT3B0aW9ucyBHcmlkRnJhbWUgR3JpZEZyYW1lTWFyZ2lucyBHcmlkR3JhcGggR3JpZExpbmVzIEdyaWRMaW5lc1N0eWxlIEdyb2VibmVyQmFzaXMgR3JvdXBBY3Rpb25CYXNlIEdyb3VwQnkgR3JvdXBDZW50cmFsaXplciBHcm91cEVsZW1lbnRGcm9tV29yZCBHcm91cEVsZW1lbnRQb3NpdGlvbiBHcm91cEVsZW1lbnRRIEdyb3VwRWxlbWVudHMgR3JvdXBFbGVtZW50VG9Xb3JkIEdyb3VwR2VuZXJhdG9ycyBHcm91cGluZ3MgR3JvdXBNdWx0aXBsaWNhdGlvblRhYmxlIEdyb3VwT3JiaXRzIEdyb3VwT3JkZXIgR3JvdXBQYWdlQnJlYWtXaXRoaW4gR3JvdXBTZXR3aXNlU3RhYmlsaXplciBHcm91cFN0YWJpbGl6ZXIgR3JvdXBTdGFiaWxpemVyQ2hhaW4gR3JvdXBUb2dldGhlckdyb3VwaW5nIEdyb3VwVG9nZXRoZXJOZXN0ZWRHcm91cGluZyBHcm93Q3V0Q29tcG9uZW50cyBHdWRlcm1hbm5pYW4gR3VpZGVkRmlsdGVyIEd1bWJlbERpc3RyaWJ1dGlvbicgK1xuICAgICAgJ0hhYXJXYXZlbGV0IEhhZGFtYXJkTWF0cml4IEhhbGZMaW5lIEhhbGZOb3JtYWxEaXN0cmlidXRpb24gSGFsZlBsYW5lIEhhbGZTcGFjZSBIYW1pbHRvbmlhbkdyYXBoUSBIYW1taW5nRGlzdGFuY2UgSGFtbWluZ1dpbmRvdyBIYW5kbGVyRnVuY3Rpb25zIEhhbmRsZXJGdW5jdGlvbnNLZXlzIEhhbmtlbEgxIEhhbmtlbEgyIEhhbmtlbE1hdHJpeCBIYW5rZWxUcmFuc2Zvcm0gSGFublBvaXNzb25XaW5kb3cgSGFubldpbmRvdyBIYXJhZGFOb3J0b25Hcm91cEhOIEhhcmFyeUdyYXBoIEhhcm1vbmljTWVhbiBIYXJtb25pY01lYW5GaWx0ZXIgSGFybW9uaWNOdW1iZXIgSGFzaCBIYXZlcnNpbmUgSGF6YXJkRnVuY3Rpb24gSGVhZCBIZWFkQ29tcG9zZSBIZWFkZXJMaW5lcyBIZWFkcyBIZWF2aXNpZGVMYW1iZGEgSGVhdmlzaWRlUGkgSGVhdmlzaWRlVGhldGEgSGVsZEdyb3VwSGUgSGVsZFBhcnQgSGVscEJyb3dzZXJMb29rdXAgSGVscEJyb3dzZXJOb3RlYm9vayBIZWxwQnJvd3NlclNldHRpbmdzIEhlcmUgSGVybWl0ZURlY29tcG9zaXRpb24gSGVybWl0ZUggSGVybWl0aWFuTWF0cml4USBIZXNzZW5iZXJnRGVjb21wb3NpdGlvbiBIZXNzaWFuIEhleGFkZWNpbWFsQ2hhcmFjdGVyIEhleGFoZWRyb24gSGV4YWhlZHJvbkJveCBIZXhhaGVkcm9uQm94T3B0aW9ucyBIaWRkZW5NYXJrb3ZQcm9jZXNzIEhpZGRlblN1cmZhY2UgSGlnaGxpZ2h0ZWQgSGlnaGxpZ2h0R3JhcGggSGlnaGxpZ2h0SW1hZ2UgSGlnaGxpZ2h0TWVzaCBIaWdocGFzc0ZpbHRlciBIaWdtYW5TaW1zR3JvdXBIUyBIaWxiZXJ0Q3VydmUgSGlsYmVydEZpbHRlciBIaWxiZXJ0TWF0cml4IEhpc3RvZ3JhbSBIaXN0b2dyYW0zRCBIaXN0b2dyYW1EaXN0cmlidXRpb24gSGlzdG9ncmFtTGlzdCBIaXN0b2dyYW1UcmFuc2Zvcm0gSGlzdG9ncmFtVHJhbnNmb3JtSW50ZXJwb2xhdGlvbiBIaXN0b3JpY2FsUGVyaW9kRGF0YSBIaXRNaXNzVHJhbnNmb3JtIEhJVFNDZW50cmFsaXR5IEhqb3J0aERpc3RyaWJ1dGlvbiBIb2RnZUR1YWwgSG9lZmZkaW5nRCBIb2VmZmRpbmdEVGVzdCBIb2xkIEhvbGRBbGwgSG9sZEFsbENvbXBsZXRlIEhvbGRDb21wbGV0ZSBIb2xkRmlyc3QgSG9sZEZvcm0gSG9sZFBhdHRlcm4gSG9sZFJlc3QgSG9saWRheUNhbGVuZGFyIEhvbWVEaXJlY3RvcnkgSG9tZVBhZ2UgSG9yaXpvbnRhbCBIb3Jpem9udGFsRm9ybSBIb3Jpem9udGFsR2F1Z2UgSG9yaXpvbnRhbFNjcm9sbFBvc2l0aW9uIEhvcm5lckZvcm0gSG9zdExvb2t1cCBIb3RlbGxpbmdUU3F1YXJlRGlzdHJpYnV0aW9uIEhveXREaXN0cmlidXRpb24gSFRNTFNhdmUgSFRUUEVycm9yUmVzcG9uc2UgSFRUUFJlZGlyZWN0IEhUVFBSZXF1ZXN0IEhUVFBSZXF1ZXN0RGF0YSBIVFRQUmVzcG9uc2UgSHVlIEh1bWFuR3Jvd3RoRGF0YSBIdW1wRG93bkh1bXAgSHVtcEVxdWFsIEh1cndpdHpMZXJjaFBoaSBIdXJ3aXR6WmV0YSBIeXBlcmJvbGljRGlzdHJpYnV0aW9uIEh5cGVyY3ViZUdyYXBoIEh5cGVyZXhwb25lbnRpYWxEaXN0cmlidXRpb24gSHlwZXJmYWN0b3JpYWwgSHlwZXJnZW9tZXRyaWMwRjEgSHlwZXJnZW9tZXRyaWMwRjFSZWd1bGFyaXplZCBIeXBlcmdlb21ldHJpYzFGMSBIeXBlcmdlb21ldHJpYzFGMVJlZ3VsYXJpemVkIEh5cGVyZ2VvbWV0cmljMkYxIEh5cGVyZ2VvbWV0cmljMkYxUmVndWxhcml6ZWQgSHlwZXJnZW9tZXRyaWNEaXN0cmlidXRpb24gSHlwZXJnZW9tZXRyaWNQRlEgSHlwZXJnZW9tZXRyaWNQRlFSZWd1bGFyaXplZCBIeXBlcmdlb21ldHJpY1UgSHlwZXJsaW5rIEh5cGVybGlua0NyZWF0aW9uU2V0dGluZ3MgSHlwZXJwbGFuZSBIeXBoZW5hdGlvbiBIeXBoZW5hdGlvbk9wdGlvbnMgSHlwb2V4cG9uZW50aWFsRGlzdHJpYnV0aW9uIEh5cG90aGVzaXNUZXN0RGF0YScgK1xuICAgICAgJ0kgSWNvbkRhdGEgSWNvbml6ZSBJY29uaXplZE9iamVjdCBJY29uUnVsZXMgSWNvc2FoZWRyb24gSWRlbnRpdHkgSWRlbnRpdHlNYXRyaXggSWYgSWdub3JlQ2FzZSBJZ25vcmVEaWFjcml0aWNzIElnbm9yZVB1bmN0dWF0aW9uIElnbm9yZVNwZWxsQ2hlY2sgSWdub3JpbmdJbmFjdGl2ZSBJbSBJbWFnZSBJbWFnZTNEIEltYWdlM0RQcm9qZWN0aW9uIEltYWdlM0RTbGljZXMgSW1hZ2VBY2N1bXVsYXRlIEltYWdlQWRkIEltYWdlQWRqdXN0IEltYWdlQWxpZ24gSW1hZ2VBcHBseSBJbWFnZUFwcGx5SW5kZXhlZCBJbWFnZUFzcGVjdFJhdGlvIEltYWdlQXNzZW1ibGUgSW1hZ2VBdWdtZW50YXRpb25MYXllciBJbWFnZUJvdW5kaW5nQm94ZXMgSW1hZ2VDYWNoZSBJbWFnZUNhY2hlVmFsaWQgSW1hZ2VDYXB0dXJlIEltYWdlQ2FwdHVyZUZ1bmN0aW9uIEltYWdlQ2FzZXMgSW1hZ2VDaGFubmVscyBJbWFnZUNsaXAgSW1hZ2VDb2xsYWdlIEltYWdlQ29sb3JTcGFjZSBJbWFnZUNvbXBvc2UgSW1hZ2VDb250YWluc1EgSW1hZ2VDb250ZW50cyBJbWFnZUNvbnZvbHZlIEltYWdlQ29vY2N1cnJlbmNlIEltYWdlQ29ybmVycyBJbWFnZUNvcnJlbGF0ZSBJbWFnZUNvcnJlc3BvbmRpbmdQb2ludHMgSW1hZ2VDcm9wIEltYWdlRGF0YSBJbWFnZURlY29udm9sdmUgSW1hZ2VEZW1vc2FpYyBJbWFnZURpZmZlcmVuY2UgSW1hZ2VEaW1lbnNpb25zIEltYWdlRGlzcGxhY2VtZW50cyBJbWFnZURpc3RhbmNlIEltYWdlRWZmZWN0IEltYWdlRXhwb3N1cmVDb21iaW5lIEltYWdlRmVhdHVyZVRyYWNrIEltYWdlRmlsZUFwcGx5IEltYWdlRmlsZUZpbHRlciBJbWFnZUZpbGVTY2FuIEltYWdlRmlsdGVyIEltYWdlRm9jdXNDb21iaW5lIEltYWdlRm9yZXN0aW5nQ29tcG9uZW50cyBJbWFnZUZvcm1hdHRpbmdXaWR0aCBJbWFnZUZvcndhcmRUcmFuc2Zvcm1hdGlvbiBJbWFnZUdyYXBoaWNzIEltYWdlSGlzdG9ncmFtIEltYWdlSWRlbnRpZnkgSW1hZ2VJbnN0YW5jZVEgSW1hZ2VLZXlwb2ludHMgSW1hZ2VMZXZlbHMgSW1hZ2VMaW5lcyBJbWFnZU1hcmdpbnMgSW1hZ2VNYXJrZXIgSW1hZ2VNYXJrZXJzIEltYWdlTWVhc3VyZW1lbnRzIEltYWdlTWVzaCBJbWFnZU11bHRpcGx5IEltYWdlT2Zmc2V0IEltYWdlUGFkIEltYWdlUGFkZGluZyBJbWFnZVBhcnRpdGlvbiBJbWFnZVBlcmlvZG9ncmFtIEltYWdlUGVyc3BlY3RpdmVUcmFuc2Zvcm1hdGlvbiBJbWFnZVBvc2l0aW9uIEltYWdlUHJldmlld0Z1bmN0aW9uIEltYWdlUHlyYW1pZCBJbWFnZVB5cmFtaWRBcHBseSBJbWFnZVEgSW1hZ2VSYW5nZUNhY2hlIEltYWdlUmVjb2xvciBJbWFnZVJlZmxlY3QgSW1hZ2VSZWdpb24gSW1hZ2VSZXNpemUgSW1hZ2VSZXNvbHV0aW9uIEltYWdlUmVzdHlsZSBJbWFnZVJvdGF0ZSBJbWFnZVJvdGF0ZWQgSW1hZ2VTYWxpZW5jeUZpbHRlciBJbWFnZVNjYWxlZCBJbWFnZVNjYW4gSW1hZ2VTaXplIEltYWdlU2l6ZUFjdGlvbiBJbWFnZVNpemVDYWNoZSBJbWFnZVNpemVNdWx0aXBsaWVycyBJbWFnZVNpemVSYXcgSW1hZ2VTdWJ0cmFjdCBJbWFnZVRha2UgSW1hZ2VUcmFuc2Zvcm1hdGlvbiBJbWFnZVRyaW0gSW1hZ2VUeXBlIEltYWdlVmFsdWUgSW1hZ2VWYWx1ZVBvc2l0aW9ucyBJbWFnaW5nRGV2aWNlIEltcGxpY2l0UmVnaW9uIEltcGxpZXMgSW1wb3J0IEltcG9ydEF1dG9SZXBsYWNlbWVudHMgSW1wb3J0Qnl0ZUFycmF5IEltcG9ydE9wdGlvbnMgSW1wb3J0U3RyaW5nIEltcHJvdmVtZW50SW1wb3J0YW5jZSBJbiBJbmFjdGl2YXRlIEluYWN0aXZlIEluY2lkZW5jZUdyYXBoIEluY2lkZW5jZUxpc3QgSW5jaWRlbmNlTWF0cml4IEluY2x1ZGVBcm9tYXRpY0JvbmRzIEluY2x1ZGVDb25zdGFudEJhc2lzIEluY2x1ZGVEZWZpbml0aW9ucyBJbmNsdWRlRGlyZWN0b3JpZXMgSW5jbHVkZUZpbGVFeHRlbnNpb24gSW5jbHVkZUdlbmVyYXRvclRhc2tzIEluY2x1ZGVIeWRyb2dlbnMgSW5jbHVkZUluZmxlY3Rpb25zIEluY2x1ZGVNZXRhSW5mb3JtYXRpb24gSW5jbHVkZVBvZHMgSW5jbHVkZVF1YW50aXRpZXMgSW5jbHVkZVJlbGF0ZWRUYWJsZXMgSW5jbHVkZVNpbmd1bGFyVGVybSBJbmNsdWRlV2luZG93VGltZXMgSW5jcmVtZW50IEluZGVmaW5pdGVNYXRyaXhRIEluZGVudCBJbmRlbnRpbmdOZXdsaW5lU3BhY2luZ3MgSW5kZW50TWF4RnJhY3Rpb24gSW5kZXBlbmRlbmNlVGVzdCBJbmRlcGVuZGVudEVkZ2VTZXRRIEluZGVwZW5kZW50UGh5c2ljYWxRdWFudGl0eSBJbmRlcGVuZGVudFVuaXQgSW5kZXBlbmRlbnRVbml0RGltZW5zaW9uIEluZGVwZW5kZW50VmVydGV4U2V0USBJbmRldGVybWluYXRlIEluZGV0ZXJtaW5hdGVUaHJlc2hvbGQgSW5kZXhDcmVhdGlvbk9wdGlvbnMgSW5kZXhlZCBJbmRleEdyYXBoIEluZGV4VGFnIEluZXF1YWxpdHkgSW5leGFjdE51bWJlclEgSW5leGFjdE51bWJlcnMgSW5maW5pdGVMaW5lIEluZmluaXRlUGxhbmUgSW5maW5pdHkgSW5maXggSW5mbGF0aW9uQWRqdXN0IEluZmxhdGlvbk1ldGhvZCBJbmZvcm1hdGlvbiBJbmZvcm1hdGlvbkRhdGEgSW5mb3JtYXRpb25EYXRhR3JpZCBJbmhlcml0ZWQgSW5oZXJpdFNjb3BlIEluaG9tb2dlbmVvdXNQb2lzc29uUHJvY2VzcyBJbml0aWFsRXZhbHVhdGlvbkhpc3RvcnkgSW5pdGlhbGl6YXRpb24gSW5pdGlhbGl6YXRpb25DZWxsIEluaXRpYWxpemF0aW9uQ2VsbEV2YWx1YXRpb24gSW5pdGlhbGl6YXRpb25DZWxsV2FybmluZyBJbml0aWFsaXphdGlvbk9iamVjdHMgSW5pdGlhbGl6YXRpb25WYWx1ZSBJbml0aWFsaXplIEluaXRpYWxTZWVkaW5nIElubGluZUNvdW50ZXJBc3NpZ25tZW50cyBJbmxpbmVDb3VudGVySW5jcmVtZW50cyBJbmxpbmVSdWxlcyBJbm5lciBJbm5lclBvbHlnb24gSW5uZXJQb2x5aGVkcm9uIElucGFpbnQgSW5wdXQgSW5wdXRBbGlhc2VzIElucHV0QXNzdW1wdGlvbnMgSW5wdXRBdXRvUmVwbGFjZW1lbnRzIElucHV0RmllbGQgSW5wdXRGaWVsZEJveCBJbnB1dEZpZWxkQm94T3B0aW9ucyBJbnB1dEZvcm0gSW5wdXRHcm91cGluZyBJbnB1dE5hbWVQYWNrZXQgSW5wdXROb3RlYm9vayBJbnB1dFBhY2tldCBJbnB1dFNldHRpbmdzIElucHV0U3RyZWFtIElucHV0U3RyaW5nIElucHV0U3RyaW5nUGFja2V0IElucHV0VG9Cb3hGb3JtUGFja2V0IEluc2VydCBJbnNlcnRpb25GdW5jdGlvbiBJbnNlcnRpb25Qb2ludE9iamVjdCBJbnNlcnRMaW5lYnJlYWtzIEluc2VydFJlc3VsdHMgSW5zZXQgSW5zZXQzREJveCBJbnNldDNEQm94T3B0aW9ucyBJbnNldEJveCBJbnNldEJveE9wdGlvbnMgSW5zcGhlcmUgSW5zdGFsbCBJbnN0YWxsU2VydmljZSBJbnN0YW5jZU5vcm1hbGl6YXRpb25MYXllciBJblN0cmluZyBJbnRlZ2VyIEludGVnZXJEaWdpdHMgSW50ZWdlckV4cG9uZW50IEludGVnZXJMZW5ndGggSW50ZWdlck5hbWUgSW50ZWdlclBhcnQgSW50ZWdlclBhcnRpdGlvbnMgSW50ZWdlclEgSW50ZWdlclJldmVyc2UgSW50ZWdlcnMgSW50ZWdlclN0cmluZyBJbnRlZ3JhbCBJbnRlZ3JhdGUgSW50ZXJhY3RpdmUgSW50ZXJhY3RpdmVUcmFkaW5nQ2hhcnQgSW50ZXJsYWNlZCBJbnRlcmxlYXZpbmcgSW50ZXJuYWxseUJhbGFuY2VkRGVjb21wb3NpdGlvbiBJbnRlcnBvbGF0aW5nRnVuY3Rpb24gSW50ZXJwb2xhdGluZ1BvbHlub21pYWwgSW50ZXJwb2xhdGlvbiBJbnRlcnBvbGF0aW9uT3JkZXIgSW50ZXJwb2xhdGlvblBvaW50cyBJbnRlcnBvbGF0aW9uUHJlY2lzaW9uIEludGVycHJldGF0aW9uIEludGVycHJldGF0aW9uQm94IEludGVycHJldGF0aW9uQm94T3B0aW9ucyBJbnRlcnByZXRhdGlvbkZ1bmN0aW9uIEludGVycHJldGVyIEludGVycHJldFRlbXBsYXRlIEludGVycXVhcnRpbGVSYW5nZSBJbnRlcnJ1cHQgSW50ZXJydXB0U2V0dGluZ3MgSW50ZXJzZWN0aW5nUSBJbnRlcnNlY3Rpb24gSW50ZXJ2YWwgSW50ZXJ2YWxJbnRlcnNlY3Rpb24gSW50ZXJ2YWxNYXJrZXJzIEludGVydmFsTWFya2Vyc1N0eWxlIEludGVydmFsTWVtYmVyUSBJbnRlcnZhbFNsaWRlciBJbnRlcnZhbFVuaW9uIEludG8gSW52ZXJzZSBJbnZlcnNlQmV0YVJlZ3VsYXJpemVkIEludmVyc2VDREYgSW52ZXJzZUNoaVNxdWFyZURpc3RyaWJ1dGlvbiBJbnZlcnNlQ29udGludW91c1dhdmVsZXRUcmFuc2Zvcm0gSW52ZXJzZURpc3RhbmNlVHJhbnNmb3JtIEludmVyc2VFbGxpcHRpY05vbWVRIEludmVyc2VFcmYgSW52ZXJzZUVyZmMgSW52ZXJzZUZvdXJpZXIgSW52ZXJzZUZvdXJpZXJDb3NUcmFuc2Zvcm0gSW52ZXJzZUZvdXJpZXJTZXF1ZW5jZVRyYW5zZm9ybSBJbnZlcnNlRm91cmllclNpblRyYW5zZm9ybSBJbnZlcnNlRm91cmllclRyYW5zZm9ybSBJbnZlcnNlRnVuY3Rpb24gSW52ZXJzZUZ1bmN0aW9ucyBJbnZlcnNlR2FtbWFEaXN0cmlidXRpb24gSW52ZXJzZUdhbW1hUmVndWxhcml6ZWQgSW52ZXJzZUdhdXNzaWFuRGlzdHJpYnV0aW9uIEludmVyc2VHdWRlcm1hbm5pYW4gSW52ZXJzZUhhbmtlbFRyYW5zZm9ybSBJbnZlcnNlSGF2ZXJzaW5lIEludmVyc2VJbWFnZVB5cmFtaWQgSW52ZXJzZUphY29iaUNEIEludmVyc2VKYWNvYmlDTiBJbnZlcnNlSmFjb2JpQ1MgSW52ZXJzZUphY29iaURDIEludmVyc2VKYWNvYmlETiBJbnZlcnNlSmFjb2JpRFMgSW52ZXJzZUphY29iaU5DIEludmVyc2VKYWNvYmlORCBJbnZlcnNlSmFjb2JpTlMgSW52ZXJzZUphY29iaVNDIEludmVyc2VKYWNvYmlTRCBJbnZlcnNlSmFjb2JpU04gSW52ZXJzZUxhcGxhY2VUcmFuc2Zvcm0gSW52ZXJzZU1lbGxpblRyYW5zZm9ybSBJbnZlcnNlUGVybXV0YXRpb24gSW52ZXJzZVJhZG9uIEludmVyc2VSYWRvblRyYW5zZm9ybSBJbnZlcnNlU2VyaWVzIEludmVyc2VTaG9ydFRpbWVGb3VyaWVyIEludmVyc2VTcGVjdHJvZ3JhbSBJbnZlcnNlU3Vydml2YWxGdW5jdGlvbiBJbnZlcnNlVHJhbnNmb3JtZWRSZWdpb24gSW52ZXJzZVdhdmVsZXRUcmFuc2Zvcm0gSW52ZXJzZVdlaWVyc3RyYXNzUCBJbnZlcnNlV2lzaGFydE1hdHJpeERpc3RyaWJ1dGlvbiBJbnZlcnNlWlRyYW5zZm9ybSBJbnZpc2libGUgSW52aXNpYmxlQXBwbGljYXRpb24gSW52aXNpYmxlVGltZXMgSVBBZGRyZXNzIElycmVkdWNpYmxlUG9seW5vbWlhbFEgSXNsYW5kRGF0YSBJc29sYXRpbmdJbnRlcnZhbCBJc29tb3JwaGljR3JhcGhRIElzb3RvcGVEYXRhIEl0YWxpYyBJdGVtIEl0ZW1Bc3BlY3RSYXRpbyBJdGVtQm94IEl0ZW1Cb3hPcHRpb25zIEl0ZW1TaXplIEl0ZW1TdHlsZSBJdG9Qcm9jZXNzJyArXG4gICAgICAnSmFjY2FyZERpc3NpbWlsYXJpdHkgSmFjb2JpQW1wbGl0dWRlIEphY29iaWFuIEphY29iaUNEIEphY29iaUNOIEphY29iaUNTIEphY29iaURDIEphY29iaUROIEphY29iaURTIEphY29iaU5DIEphY29iaU5EIEphY29iaU5TIEphY29iaVAgSmFjb2JpU0MgSmFjb2JpU0QgSmFjb2JpU04gSmFjb2JpU3ltYm9sIEphY29iaVpldGEgSmFua29Hcm91cEoxIEphbmtvR3JvdXBKMiBKYW5rb0dyb3VwSjMgSmFua29Hcm91cEo0IEphcnF1ZUJlcmFBTE1UZXN0IEpvaG5zb25EaXN0cmlidXRpb24gSm9pbiBKb2luQWNyb3NzIEpvaW5lZCBKb2luZWRDdXJ2ZSBKb2luZWRDdXJ2ZUJveCBKb2luZWRDdXJ2ZUJveE9wdGlvbnMgSm9pbkZvcm0gSm9yZGFuRGVjb21wb3NpdGlvbiBKb3JkYW5Nb2RlbERlY29tcG9zaXRpb24gSnVsaWFuRGF0ZSBKdWxpYVNldEJvZXR0Y2hlciBKdWxpYVNldEl0ZXJhdGlvbkNvdW50IEp1bGlhU2V0UGxvdCBKdWxpYVNldFBvaW50cycgK1xuICAgICAgJ0sgS2FnaUNoYXJ0IEthaXNlckJlc3NlbFdpbmRvdyBLYWlzZXJXaW5kb3cgS2FsbWFuRXN0aW1hdG9yIEthbG1hbkZpbHRlciBLYXJodW5lbkxvZXZlRGVjb21wb3NpdGlvbiBLYXJ5VHJlZSBLYXR6Q2VudHJhbGl0eSBLQ29yZUNvbXBvbmVudHMgS0Rpc3RyaWJ1dGlvbiBLRWRnZUNvbm5lY3RlZENvbXBvbmVudHMgS0VkZ2VDb25uZWN0ZWRHcmFwaFEgS2VsdmluQmVpIEtlbHZpbkJlciBLZWx2aW5LZWkgS2VsdmluS2VyIEtlbmRhbGxUYXUgS2VuZGFsbFRhdVRlc3QgS2VybmVsRXhlY3V0ZSBLZXJuZWxGdW5jdGlvbiBLZXJuZWxNaXh0dXJlRGlzdHJpYnV0aW9uIEtlcm5lbHMgS2V0IEtleSBLZXlDb2xsaXNpb25GdW5jdGlvbiBLZXlDb21wbGVtZW50IEtleURyb3AgS2V5RHJvcEZyb20gS2V5RXhpc3RzUSBLZXlGcmVlUSBLZXlJbnRlcnNlY3Rpb24gS2V5TWFwIEtleU1lbWJlclEgS2V5cG9pbnRTdHJlbmd0aCBLZXlzIEtleVNlbGVjdCBLZXlTb3J0IEtleVNvcnRCeSBLZXlUYWtlIEtleVVuaW9uIEtleVZhbHVlTWFwIEtleVZhbHVlUGF0dGVybiBLaGluY2hpbiBLaWxsUHJvY2VzcyBLaXJjaGhvZmZHcmFwaCBLaXJjaGhvZmZNYXRyaXggS2xlaW5JbnZhcmlhbnRKIEtuYXBzYWNrU29sdmUgS25pZ2h0VG91ckdyYXBoIEtub3REYXRhIEtub3duVW5pdFEgS29jaEN1cnZlIEtvbG1vZ29yb3ZTbWlybm92VGVzdCBLcm9uZWNrZXJEZWx0YSBLcm9uZWNrZXJNb2RlbERlY29tcG9zaXRpb24gS3JvbmVja2VyUHJvZHVjdCBLcm9uZWNrZXJTeW1ib2wgS3VpcGVyVGVzdCBLdW1hcmFzd2FteURpc3RyaWJ1dGlvbiBLdXJ0b3NpcyBLdXdhaGFyYUZpbHRlciBLVmVydGV4Q29ubmVjdGVkQ29tcG9uZW50cyBLVmVydGV4Q29ubmVjdGVkR3JhcGhRJyArXG4gICAgICAnTEFCQ29sb3IgTGFiZWwgTGFiZWxlZCBMYWJlbGVkU2xpZGVyIExhYmVsaW5nRnVuY3Rpb24gTGFiZWxpbmdTaXplIExhYmVsU3R5bGUgTGFiZWxWaXNpYmlsaXR5IExhZ3VlcnJlTCBMYWtlRGF0YSBMYW1iZGFDb21wb25lbnRzIExhbWJlcnRXIExhbWluYURhdGEgTGFuY3pvc1dpbmRvdyBMYW5kYXVEaXN0cmlidXRpb24gTGFuZ3VhZ2UgTGFuZ3VhZ2VDYXRlZ29yeSBMYW5ndWFnZURhdGEgTGFuZ3VhZ2VJZGVudGlmeSBMYW5ndWFnZU9wdGlvbnMgTGFwbGFjZURpc3RyaWJ1dGlvbiBMYXBsYWNlVHJhbnNmb3JtIExhcGxhY2lhbiBMYXBsYWNpYW5GaWx0ZXIgTGFwbGFjaWFuR2F1c3NpYW5GaWx0ZXIgTGFyZ2UgTGFyZ2VyIExhc3QgTGF0aXR1ZGUgTGF0aXR1ZGVMb25naXR1ZGUgTGF0dGljZURhdGEgTGF0dGljZVJlZHVjZSBMYXVuY2ggTGF1bmNoS2VybmVscyBMYXllcmVkR3JhcGhQbG90IExheWVyU2l6ZUZ1bmN0aW9uIExheW91dEluZm9ybWF0aW9uIExDSENvbG9yIExDTSBMZWFkZXJTaXplIExlYWZDb3VudCBMZWFwWWVhclEgTGVhcm5EaXN0cmlidXRpb24gTGVhcm5lZERpc3RyaWJ1dGlvbiBMZWFybmluZ1JhdGUgTGVhcm5pbmdSYXRlTXVsdGlwbGllcnMgTGVhc3RTcXVhcmVzIExlYXN0U3F1YXJlc0ZpbHRlcktlcm5lbCBMZWZ0IExlZnRBcnJvdyBMZWZ0QXJyb3dCYXIgTGVmdEFycm93UmlnaHRBcnJvdyBMZWZ0RG93blRlZVZlY3RvciBMZWZ0RG93blZlY3RvciBMZWZ0RG93blZlY3RvckJhciBMZWZ0UmlnaHRBcnJvdyBMZWZ0UmlnaHRWZWN0b3IgTGVmdFRlZSBMZWZ0VGVlQXJyb3cgTGVmdFRlZVZlY3RvciBMZWZ0VHJpYW5nbGUgTGVmdFRyaWFuZ2xlQmFyIExlZnRUcmlhbmdsZUVxdWFsIExlZnRVcERvd25WZWN0b3IgTGVmdFVwVGVlVmVjdG9yIExlZnRVcFZlY3RvciBMZWZ0VXBWZWN0b3JCYXIgTGVmdFZlY3RvciBMZWZ0VmVjdG9yQmFyIExlZ2VuZEFwcGVhcmFuY2UgTGVnZW5kZWQgTGVnZW5kRnVuY3Rpb24gTGVnZW5kTGFiZWwgTGVnZW5kTGF5b3V0IExlZ2VuZE1hcmdpbnMgTGVnZW5kTWFya2VycyBMZWdlbmRNYXJrZXJTaXplIExlZ2VuZHJlUCBMZWdlbmRyZVEgTGVnZW5kcmVUeXBlIExlbmd0aCBMZW5ndGhXaGlsZSBMZXJjaFBoaSBMZXNzIExlc3NFcXVhbCBMZXNzRXF1YWxHcmVhdGVyIExlc3NFcXVhbFRoYW4gTGVzc0Z1bGxFcXVhbCBMZXNzR3JlYXRlciBMZXNzTGVzcyBMZXNzU2xhbnRFcXVhbCBMZXNzVGhhbiBMZXNzVGlsZGUgTGV0dGVyQ2hhcmFjdGVyIExldHRlckNvdW50cyBMZXR0ZXJOdW1iZXIgTGV0dGVyUSBMZXZlbCBMZXZlbmVUZXN0IExldmlDaXZpdGFUZW5zb3IgTGV2eURpc3RyaWJ1dGlvbiBMZXhpY29ncmFwaGljIExpYnJhcnlEYXRhVHlwZSBMaWJyYXJ5RnVuY3Rpb24gTGlicmFyeUZ1bmN0aW9uRXJyb3IgTGlicmFyeUZ1bmN0aW9uSW5mb3JtYXRpb24gTGlicmFyeUZ1bmN0aW9uTG9hZCBMaWJyYXJ5RnVuY3Rpb25VbmxvYWQgTGlicmFyeUxvYWQgTGlicmFyeVVubG9hZCBMaWNlbnNlSUQgTGlmdGluZ0ZpbHRlckRhdGEgTGlmdGluZ1dhdmVsZXRUcmFuc2Zvcm0gTGlnaHRCbHVlIExpZ2h0QnJvd24gTGlnaHRDeWFuIExpZ2h0ZXIgTGlnaHRHcmF5IExpZ2h0R3JlZW4gTGlnaHRpbmcgTGlnaHRpbmdBbmdsZSBMaWdodE1hZ2VudGEgTGlnaHRPcmFuZ2UgTGlnaHRQaW5rIExpZ2h0UHVycGxlIExpZ2h0UmVkIExpZ2h0U291cmNlcyBMaWdodFllbGxvdyBMaWtlbGlob29kIExpbWl0IExpbWl0c1Bvc2l0aW9uaW5nIExpbWl0c1Bvc2l0aW9uaW5nVG9rZW5zIExpbmRsZXlEaXN0cmlidXRpb24gTGluZSBMaW5lM0RCb3ggTGluZTNEQm94T3B0aW9ucyBMaW5lYXJGaWx0ZXIgTGluZWFyRnJhY3Rpb25hbE9wdGltaXphdGlvbiBMaW5lYXJGcmFjdGlvbmFsVHJhbnNmb3JtIExpbmVhckdyYWRpZW50SW1hZ2UgTGluZWFyaXppbmdUcmFuc2Zvcm1hdGlvbkRhdGEgTGluZWFyTGF5ZXIgTGluZWFyTW9kZWxGaXQgTGluZWFyT2Zmc2V0RnVuY3Rpb24gTGluZWFyT3B0aW1pemF0aW9uIExpbmVhclByb2dyYW1taW5nIExpbmVhclJlY3VycmVuY2UgTGluZWFyU29sdmUgTGluZWFyU29sdmVGdW5jdGlvbiBMaW5lQm94IExpbmVCb3hPcHRpb25zIExpbmVCcmVhayBMaW5lYnJlYWtBZGp1c3RtZW50cyBMaW5lQnJlYWtDaGFydCBMaW5lYnJlYWtTZW1pY29sb25XZWlnaHRpbmcgTGluZUJyZWFrV2l0aGluIExpbmVDb2xvciBMaW5lR3JhcGggTGluZUluZGVudCBMaW5lSW5kZW50TWF4RnJhY3Rpb24gTGluZUludGVncmFsQ29udm9sdXRpb25QbG90IExpbmVJbnRlZ3JhbENvbnZvbHV0aW9uU2NhbGUgTGluZUxlZ2VuZCBMaW5lT3BhY2l0eSBMaW5lU3BhY2luZyBMaW5lV3JhcFBhcnRzIExpbmtBY3RpdmF0ZSBMaW5rQ2xvc2UgTGlua0Nvbm5lY3QgTGlua0Nvbm5lY3RlZFEgTGlua0NyZWF0ZSBMaW5rRXJyb3IgTGlua0ZsdXNoIExpbmtGdW5jdGlvbiBMaW5rSG9zdCBMaW5rSW50ZXJydXB0IExpbmtMYXVuY2ggTGlua01vZGUgTGlua09iamVjdCBMaW5rT3BlbiBMaW5rT3B0aW9ucyBMaW5rUGF0dGVybnMgTGlua1Byb3RvY29sIExpbmtSYW5rQ2VudHJhbGl0eSBMaW5rUmVhZCBMaW5rUmVhZEhlbGQgTGlua1JlYWR5USBMaW5rcyBMaW5rU2VydmljZSBMaW5rV3JpdGUgTGlua1dyaXRlSGVsZCBMaW91dmlsbGVMYW1iZGEgTGlzdCBMaXN0YWJsZSBMaXN0QW5pbWF0ZSBMaXN0Q29udG91clBsb3QgTGlzdENvbnRvdXJQbG90M0QgTGlzdENvbnZvbHZlIExpc3RDb3JyZWxhdGUgTGlzdEN1cnZlUGF0aFBsb3QgTGlzdERlY29udm9sdmUgTGlzdERlbnNpdHlQbG90IExpc3REZW5zaXR5UGxvdDNEIExpc3RlbiBMaXN0Rm9ybWF0IExpc3RGb3VyaWVyU2VxdWVuY2VUcmFuc2Zvcm0gTGlzdEludGVycG9sYXRpb24gTGlzdExpbmVJbnRlZ3JhbENvbnZvbHV0aW9uUGxvdCBMaXN0TGluZVBsb3QgTGlzdExvZ0xpbmVhclBsb3QgTGlzdExvZ0xvZ1Bsb3QgTGlzdExvZ1Bsb3QgTGlzdFBpY2tlciBMaXN0UGlja2VyQm94IExpc3RQaWNrZXJCb3hCYWNrZ3JvdW5kIExpc3RQaWNrZXJCb3hPcHRpb25zIExpc3RQbGF5IExpc3RQbG90IExpc3RQbG90M0QgTGlzdFBvaW50UGxvdDNEIExpc3RQb2xhclBsb3QgTGlzdFEgTGlzdFNsaWNlQ29udG91clBsb3QzRCBMaXN0U2xpY2VEZW5zaXR5UGxvdDNEIExpc3RTbGljZVZlY3RvclBsb3QzRCBMaXN0U3RlcFBsb3QgTGlzdFN0cmVhbURlbnNpdHlQbG90IExpc3RTdHJlYW1QbG90IExpc3RTdXJmYWNlUGxvdDNEIExpc3RWZWN0b3JEZW5zaXR5UGxvdCBMaXN0VmVjdG9yUGxvdCBMaXN0VmVjdG9yUGxvdDNEIExpc3RaVHJhbnNmb3JtIExpdGVyYWwgTGl0ZXJhbFNlYXJjaCBMb2NhbEFkYXB0aXZlQmluYXJpemUgTG9jYWxDYWNoZSBMb2NhbENsdXN0ZXJpbmdDb2VmZmljaWVudCBMb2NhbGl6ZURlZmluaXRpb25zIExvY2FsaXplVmFyaWFibGVzIExvY2FsT2JqZWN0IExvY2FsT2JqZWN0cyBMb2NhbFJlc3BvbnNlTm9ybWFsaXphdGlvbkxheWVyIExvY2FsU3VibWl0IExvY2FsU3ltYm9sIExvY2FsVGltZSBMb2NhbFRpbWVab25lIExvY2F0aW9uRXF1aXZhbGVuY2VUZXN0IExvY2F0aW9uVGVzdCBMb2NhdG9yIExvY2F0b3JBdXRvQ3JlYXRlIExvY2F0b3JCb3ggTG9jYXRvckJveE9wdGlvbnMgTG9jYXRvckNlbnRlcmluZyBMb2NhdG9yUGFuZSBMb2NhdG9yUGFuZUJveCBMb2NhdG9yUGFuZUJveE9wdGlvbnMgTG9jYXRvclJlZ2lvbiBMb2NrZWQgTG9nIExvZzEwIExvZzIgTG9nQmFybmVzRyBMb2dHYW1tYSBMb2dHYW1tYURpc3RyaWJ1dGlvbiBMb2dpY2FsRXhwYW5kIExvZ0ludGVncmFsIExvZ2lzdGljRGlzdHJpYnV0aW9uIExvZ2lzdGljU2lnbW9pZCBMb2dpdE1vZGVsRml0IExvZ0xpa2VsaWhvb2QgTG9nTGluZWFyUGxvdCBMb2dMb2dpc3RpY0Rpc3RyaWJ1dGlvbiBMb2dMb2dQbG90IExvZ011bHRpbm9ybWFsRGlzdHJpYnV0aW9uIExvZ05vcm1hbERpc3RyaWJ1dGlvbiBMb2dQbG90IExvZ1JhbmtUZXN0IExvZ1Nlcmllc0Rpc3RyaWJ1dGlvbiBMb25nRXF1YWwgTG9uZ2VzdCBMb25nZXN0Q29tbW9uU2VxdWVuY2UgTG9uZ2VzdENvbW1vblNlcXVlbmNlUG9zaXRpb25zIExvbmdlc3RDb21tb25TdWJzZXF1ZW5jZSBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2VQb3NpdGlvbnMgTG9uZ2VzdE1hdGNoIExvbmdlc3RPcmRlcmVkU2VxdWVuY2UgTG9uZ0Zvcm0gTG9uZ2l0dWRlIExvbmdMZWZ0QXJyb3cgTG9uZ0xlZnRSaWdodEFycm93IExvbmdSaWdodEFycm93IExvbmdTaG9ydFRlcm1NZW1vcnlMYXllciBMb29rdXAgTG9vcGJhY2sgTG9vcEZyZWVHcmFwaFEgTG9zc0Z1bmN0aW9uIExvd2VyQ2FzZVEgTG93ZXJMZWZ0QXJyb3cgTG93ZXJSaWdodEFycm93IExvd2VyVHJpYW5ndWxhcml6ZSBMb3dlclRyaWFuZ3VsYXJNYXRyaXhRIExvd3Bhc3NGaWx0ZXIgTFFFc3RpbWF0b3JHYWlucyBMUUdSZWd1bGF0b3IgTFFPdXRwdXRSZWd1bGF0b3JHYWlucyBMUVJlZ3VsYXRvckdhaW5zIExVQmFja1N1YnN0aXR1dGlvbiBMdWNhc0wgTHVjY2lvU2FtaUNvbXBvbmVudHMgTFVEZWNvbXBvc2l0aW9uIEx1bmFyRWNsaXBzZSBMVVZDb2xvciBMeWFwdW5vdlNvbHZlIEx5b25zR3JvdXBMeScgK1xuICAgICAgJ01hY2hpbmVJRCBNYWNoaW5lTmFtZSBNYWNoaW5lTnVtYmVyUSBNYWNoaW5lUHJlY2lzaW9uIE1hY2ludG9zaFN5c3RlbVBhZ2VTZXR1cCBNYWdlbnRhIE1hZ25pZmljYXRpb24gTWFnbmlmeSBNYWlsQWRkcmVzc1ZhbGlkYXRpb24gTWFpbEV4ZWN1dGUgTWFpbEZvbGRlciBNYWlsSXRlbSBNYWlsUmVjZWl2ZXJGdW5jdGlvbiBNYWlsUmVzcG9uc2VGdW5jdGlvbiBNYWlsU2VhcmNoIE1haWxTZXJ2ZXJDb25uZWN0IE1haWxTZXJ2ZXJDb25uZWN0aW9uIE1haWxTZXR0aW5ncyBNYWluU29sdmUgTWFpbnRhaW5EeW5hbWljQ2FjaGVzIE1ham9yaXR5IE1ha2VCb3hlcyBNYWtlRXhwcmVzc2lvbiBNYWtlUnVsZXMgTWFuYWdlZExpYnJhcnlFeHByZXNzaW9uSUQgTWFuYWdlZExpYnJhcnlFeHByZXNzaW9uUSBNYW5kZWxicm90U2V0Qm9ldHRjaGVyIE1hbmRlbGJyb3RTZXREaXN0YW5jZSBNYW5kZWxicm90U2V0SXRlcmF0aW9uQ291bnQgTWFuZGVsYnJvdFNldE1lbWJlclEgTWFuZGVsYnJvdFNldFBsb3QgTWFuZ29sZHRMYW1iZGEgTWFuaGF0dGFuRGlzdGFuY2UgTWFuaXB1bGF0ZSBNYW5pcHVsYXRvciBNYW5uZWRTcGFjZU1pc3Npb25EYXRhIE1hbm5XaGl0bmV5VGVzdCBNYW50aXNzYUV4cG9uZW50IE1hbnVhbCBNYXAgTWFwQWxsIE1hcEF0IE1hcEluZGV4ZWQgTUFQcm9jZXNzIE1hcFRocmVhZCBNYXJjaGVua29QYXN0dXJEaXN0cmlidXRpb24gTWFyY3VtUSBNYXJkaWFDb21iaW5lZFRlc3QgTWFyZGlhS3VydG9zaXNUZXN0IE1hcmRpYVNrZXduZXNzVGVzdCBNYXJnaW5hbERpc3RyaWJ1dGlvbiBNYXJrb3ZQcm9jZXNzUHJvcGVydGllcyBNYXNraW5nIE1hdGNoaW5nRGlzc2ltaWxhcml0eSBNYXRjaExvY2FsTmFtZVEgTWF0Y2hMb2NhbE5hbWVzIE1hdGNoUSBNYXRlcmlhbCBNYXRoZW1hdGljYWxGdW5jdGlvbkRhdGEgTWF0aGVtYXRpY2FOb3RhdGlvbiBNYXRoaWV1QyBNYXRoaWV1Q2hhcmFjdGVyaXN0aWNBIE1hdGhpZXVDaGFyYWN0ZXJpc3RpY0IgTWF0aGlldUNoYXJhY3RlcmlzdGljRXhwb25lbnQgTWF0aGlldUNQcmltZSBNYXRoaWV1R3JvdXBNMTEgTWF0aGlldUdyb3VwTTEyIE1hdGhpZXVHcm91cE0yMiBNYXRoaWV1R3JvdXBNMjMgTWF0aGlldUdyb3VwTTI0IE1hdGhpZXVTIE1hdGhpZXVTUHJpbWUgTWF0aE1MRm9ybSBNYXRoTUxUZXh0IE1hdHJpY2VzIE1hdHJpeEV4cCBNYXRyaXhGb3JtIE1hdHJpeEZ1bmN0aW9uIE1hdHJpeExvZyBNYXRyaXhOb3JtYWxEaXN0cmlidXRpb24gTWF0cml4UGxvdCBNYXRyaXhQb3dlciBNYXRyaXhQcm9wZXJ0eURpc3RyaWJ1dGlvbiBNYXRyaXhRIE1hdHJpeFJhbmsgTWF0cml4VERpc3RyaWJ1dGlvbiBNYXggTWF4QmVuZCBNYXhDZWxsTWVhc3VyZSBNYXhDb2xvckRpc3RhbmNlIE1heERldGVjdCBNYXhEdXJhdGlvbiBNYXhFeHRyYUJhbmR3aWR0aHMgTWF4RXh0cmFDb25kaXRpb25zIE1heEZlYXR1cmVEaXNwbGFjZW1lbnQgTWF4RmVhdHVyZXMgTWF4RmlsdGVyIE1heGltYWxCeSBNYXhpbWl6ZSBNYXhJdGVtcyBNYXhJdGVyYXRpb25zIE1heExpbWl0IE1heE1lbW9yeVVzZWQgTWF4TWl4dHVyZUtlcm5lbHMgTWF4T3ZlcmxhcEZyYWN0aW9uIE1heFBsb3RQb2ludHMgTWF4UG9pbnRzIE1heFJlY3Vyc2lvbiBNYXhTdGFibGVEaXN0cmlidXRpb24gTWF4U3RlcEZyYWN0aW9uIE1heFN0ZXBzIE1heFN0ZXBTaXplIE1heFRyYWluaW5nUm91bmRzIE1heFZhbHVlIE1heHdlbGxEaXN0cmlidXRpb24gTWF4V29yZEdhcCBNY0xhdWdobGluR3JvdXBNY0wgTWVhbiBNZWFuQWJzb2x1dGVMb3NzTGF5ZXIgTWVhbkFyb3VuZCBNZWFuQ2x1c3RlcmluZ0NvZWZmaWNpZW50IE1lYW5EZWdyZWVDb25uZWN0aXZpdHkgTWVhbkRldmlhdGlvbiBNZWFuRmlsdGVyIE1lYW5HcmFwaERpc3RhbmNlIE1lYW5OZWlnaGJvckRlZ3JlZSBNZWFuU2hpZnQgTWVhblNoaWZ0RmlsdGVyIE1lYW5TcXVhcmVkTG9zc0xheWVyIE1lZGlhbiBNZWRpYW5EZXZpYXRpb24gTWVkaWFuRmlsdGVyIE1lZGljYWxUZXN0RGF0YSBNZWRpdW0gTWVpamVyRyBNZWlqZXJHUmVkdWNlIE1laXhuZXJEaXN0cmlidXRpb24gTWVsbGluQ29udm9sdmUgTWVsbGluVHJhbnNmb3JtIE1lbWJlclEgTWVtb3J5QXZhaWxhYmxlIE1lbW9yeUNvbnN0cmFpbmVkIE1lbW9yeUNvbnN0cmFpbnQgTWVtb3J5SW5Vc2UgTWVuZ2VyTWVzaCBNZW51IE1lbnVBcHBlYXJhbmNlIE1lbnVDb21tYW5kS2V5IE1lbnVFdmFsdWF0b3IgTWVudUl0ZW0gTWVudUxpc3QgTWVudVBhY2tldCBNZW51U29ydGluZ1ZhbHVlIE1lbnVTdHlsZSBNZW51VmlldyBNZXJnZSBNZXJnZURpZmZlcmVuY2VzIE1lcmdpbmdGdW5jdGlvbiBNZXJzZW5uZVByaW1lRXhwb25lbnQgTWVyc2VubmVQcmltZUV4cG9uZW50USBNZXNoIE1lc2hDZWxsQ2VudHJvaWQgTWVzaENlbGxDb3VudCBNZXNoQ2VsbEhpZ2hsaWdodCBNZXNoQ2VsbEluZGV4IE1lc2hDZWxsTGFiZWwgTWVzaENlbGxNYXJrZXIgTWVzaENlbGxNZWFzdXJlIE1lc2hDZWxsUXVhbGl0eSBNZXNoQ2VsbHMgTWVzaENlbGxTaGFwZUZ1bmN0aW9uIE1lc2hDZWxsU3R5bGUgTWVzaENvb3JkaW5hdGVzIE1lc2hGdW5jdGlvbnMgTWVzaFByaW1pdGl2ZXMgTWVzaFF1YWxpdHlHb2FsIE1lc2hSYW5nZSBNZXNoUmVmaW5lbWVudEZ1bmN0aW9uIE1lc2hSZWdpb24gTWVzaFJlZ2lvblEgTWVzaFNoYWRpbmcgTWVzaFN0eWxlIE1lc3NhZ2UgTWVzc2FnZURpYWxvZyBNZXNzYWdlTGlzdCBNZXNzYWdlTmFtZSBNZXNzYWdlT2JqZWN0IE1lc3NhZ2VPcHRpb25zIE1lc3NhZ2VQYWNrZXQgTWVzc2FnZXMgTWVzc2FnZXNOb3RlYm9vayBNZXRhQ2hhcmFjdGVycyBNZXRhSW5mb3JtYXRpb24gTWV0ZW9yU2hvd2VyRGF0YSBNZXRob2QgTWV0aG9kT3B0aW9ucyBNZXhpY2FuSGF0V2F2ZWxldCBNZXllcldhdmVsZXQgTWlkcG9pbnQgTWluIE1pbkNvbG9yRGlzdGFuY2UgTWluRGV0ZWN0IE1pbmVyYWxEYXRhIE1pbkZpbHRlciBNaW5pbWFsQnkgTWluaW1hbFBvbHlub21pYWwgTWluaW1hbFN0YXRlU3BhY2VNb2RlbCBNaW5pbWl6ZSBNaW5pbXVtVGltZUluY3JlbWVudCBNaW5JbnRlcnZhbFNpemUgTWlua293c2tpUXVlc3Rpb25NYXJrIE1pbkxpbWl0IE1pbk1heCBNaW5vclBsYW5ldERhdGEgTWlub3JzIE1pblJlY3Vyc2lvbiBNaW5TaXplIE1pblN0YWJsZURpc3RyaWJ1dGlvbiBNaW51cyBNaW51c1BsdXMgTWluVmFsdWUgTWlzc2luZyBNaXNzaW5nQmVoYXZpb3IgTWlzc2luZ0RhdGFNZXRob2QgTWlzc2luZ0RhdGFSdWxlcyBNaXNzaW5nUSBNaXNzaW5nU3RyaW5nIE1pc3NpbmdTdHlsZSBNaXNzaW5nVmFsdWVQYXR0ZXJuIE1pdHRhZ0xlZmZsZXJFIE1peGVkRnJhY3Rpb25QYXJ0cyBNaXhlZEdyYXBoUSBNaXhlZE1hZ25pdHVkZSBNaXhlZFJhZGl4IE1peGVkUmFkaXhRdWFudGl0eSBNaXhlZFVuaXQgTWl4dHVyZURpc3RyaWJ1dGlvbiBNb2QgTW9kYWwgTW9kZSBNb2R1bGFyIE1vZHVsYXJJbnZlcnNlIE1vZHVsYXJMYW1iZGEgTW9kdWxlIE1vZHVsdXMgTW9lYml1c011IE1vbGVjdWxlIE1vbGVjdWxlQ29udGFpbnNRIE1vbGVjdWxlRXF1aXZhbGVudFEgTW9sZWN1bGVHcmFwaCBNb2xlY3VsZU1vZGlmeSBNb2xlY3VsZVBhdHRlcm4gTW9sZWN1bGVQbG90IE1vbGVjdWxlUGxvdDNEIE1vbGVjdWxlUHJvcGVydHkgTW9sZWN1bGVRIE1vbGVjdWxlVmFsdWUgTW9tZW50IE1vbWVudGFyeSBNb21lbnRDb252ZXJ0IE1vbWVudEV2YWx1YXRlIE1vbWVudEdlbmVyYXRpbmdGdW5jdGlvbiBNb21lbnRPZkluZXJ0aWEgTW9uZGF5IE1vbml0b3IgTW9ub21pYWxMaXN0IE1vbm9taWFsT3JkZXIgTW9uc3Rlckdyb3VwTSBNb29uUGhhc2UgTW9vblBvc2l0aW9uIE1vcmxldFdhdmVsZXQgTW9ycGhvbG9naWNhbEJpbmFyaXplIE1vcnBob2xvZ2ljYWxCcmFuY2hQb2ludHMgTW9ycGhvbG9naWNhbENvbXBvbmVudHMgTW9ycGhvbG9naWNhbEV1bGVyTnVtYmVyIE1vcnBob2xvZ2ljYWxHcmFwaCBNb3JwaG9sb2dpY2FsUGVyaW1ldGVyIE1vcnBob2xvZ2ljYWxUcmFuc2Zvcm0gTW9ydGFsaXR5RGF0YSBNb3N0IE1vdW50YWluRGF0YSBNb3VzZUFubm90YXRpb24gTW91c2VBcHBlYXJhbmNlIE1vdXNlQXBwZWFyYW5jZVRhZyBNb3VzZUJ1dHRvbnMgTW91c2VvdmVyIE1vdXNlUG9pbnRlck5vdGUgTW91c2VQb3NpdGlvbiBNb3ZpZURhdGEgTW92aW5nQXZlcmFnZSBNb3ZpbmdNYXAgTW92aW5nTWVkaWFuIE1veWFsRGlzdHJpYnV0aW9uIE11bHRpY29sdW1uIE11bHRpZWRnZVN0eWxlIE11bHRpZ3JhcGhRIE11bHRpbGF1bmNoV2FybmluZyBNdWx0aUxldHRlckl0YWxpY3MgTXVsdGlMZXR0ZXJTdHlsZSBNdWx0aWxpbmVGdW5jdGlvbiBNdWx0aW5vbWlhbCBNdWx0aW5vbWlhbERpc3RyaWJ1dGlvbiBNdWx0aW5vcm1hbERpc3RyaWJ1dGlvbiBNdWx0aXBsaWNhdGl2ZU9yZGVyIE11bHRpcGxpY2l0eSBNdWx0aXBseVNpZGVzIE11bHRpc2VsZWN0aW9uIE11bHRpdmFyaWF0ZUh5cGVyZ2VvbWV0cmljRGlzdHJpYnV0aW9uIE11bHRpdmFyaWF0ZVBvaXNzb25EaXN0cmlidXRpb24gTXVsdGl2YXJpYXRlVERpc3RyaWJ1dGlvbicgK1xuICAgICAgJ04gTmFrYWdhbWlEaXN0cmlidXRpb24gTmFtZVEgTmFtZXMgTmFtZXNwYWNlQm94IE5hbWVzcGFjZUJveE9wdGlvbnMgTmFuZCBOQXJnTWF4IE5BcmdNaW4gTkJlcm5vdWxsaUIgTkJvZHlTaW11bGF0aW9uIE5Cb2R5U2ltdWxhdGlvbkRhdGEgTkNhY2hlIE5ERWlnZW5zeXN0ZW0gTkRFaWdlbnZhbHVlcyBORFNvbHZlIE5EU29sdmVWYWx1ZSBOZWFyZXN0IE5lYXJlc3RGdW5jdGlvbiBOZWFyZXN0TmVpZ2hib3JHcmFwaCBOZWFyZXN0VG8gTmVidWxhRGF0YSBOZWVkQ3VycmVudEZyb250RW5kUGFja2FnZVBhY2tldCBOZWVkQ3VycmVudEZyb250RW5kU3ltYm9sc1BhY2tldCBOZWVkbGVtYW5XdW5zY2hTaW1pbGFyaXR5IE5lZWRzIE5lZ2F0aXZlIE5lZ2F0aXZlQmlub21pYWxEaXN0cmlidXRpb24gTmVnYXRpdmVEZWZpbml0ZU1hdHJpeFEgTmVnYXRpdmVJbnRlZ2VycyBOZWdhdGl2ZU11bHRpbm9taWFsRGlzdHJpYnV0aW9uIE5lZ2F0aXZlUmF0aW9uYWxzIE5lZ2F0aXZlUmVhbHMgTmVnYXRpdmVTZW1pZGVmaW5pdGVNYXRyaXhRIE5laWdoYm9yaG9vZERhdGEgTmVpZ2hib3Job29kR3JhcGggTmVzdCBOZXN0ZWRHcmVhdGVyR3JlYXRlciBOZXN0ZWRMZXNzTGVzcyBOZXN0ZWRTY3JpcHRSdWxlcyBOZXN0R3JhcGggTmVzdExpc3QgTmVzdFdoaWxlIE5lc3RXaGlsZUxpc3QgTmV0QXBwZW5kIE5ldEJpZGlyZWN0aW9uYWxPcGVyYXRvciBOZXRDaGFpbiBOZXREZWNvZGVyIE5ldERlbGV0ZSBOZXREcm9wIE5ldEVuY29kZXIgTmV0RXZhbHVhdGlvbk1vZGUgTmV0RXh0cmFjdCBOZXRGbGF0dGVuIE5ldEZvbGRPcGVyYXRvciBOZXRHcmFwaCBOZXRJbmZvcm1hdGlvbiBOZXRJbml0aWFsaXplIE5ldEluc2VydCBOZXRJbnNlcnRTaGFyZWRBcnJheXMgTmV0Sm9pbiBOZXRNYXBPcGVyYXRvciBOZXRNYXBUaHJlYWRPcGVyYXRvciBOZXRNZWFzdXJlbWVudHMgTmV0TW9kZWwgTmV0TmVzdE9wZXJhdG9yIE5ldFBhaXJFbWJlZGRpbmdPcGVyYXRvciBOZXRQb3J0IE5ldFBvcnRHcmFkaWVudCBOZXRQcmVwZW5kIE5ldFJlbmFtZSBOZXRSZXBsYWNlIE5ldFJlcGxhY2VQYXJ0IE5ldFNoYXJlZEFycmF5IE5ldFN0YXRlT2JqZWN0IE5ldFRha2UgTmV0VHJhaW4gTmV0VHJhaW5SZXN1bHRzT2JqZWN0IE5ldHdvcmtQYWNrZXRDYXB0dXJlIE5ldHdvcmtQYWNrZXRSZWNvcmRpbmcgTmV0d29ya1BhY2tldFJlY29yZGluZ0R1cmluZyBOZXR3b3JrUGFja2V0VHJhY2UgTmV1bWFublZhbHVlIE5ldmlsbGVUaGV0YUMgTmV2aWxsZVRoZXRhRCBOZXZpbGxlVGhldGFOIE5ldmlsbGVUaGV0YVMgTmV3UHJpbWl0aXZlU3R5bGUgTkV4cGVjdGF0aW9uIE5leHQgTmV4dENlbGwgTmV4dERhdGUgTmV4dFByaW1lIE5leHRTY2hlZHVsZWRUYXNrVGltZSBOSG9sZEFsbCBOSG9sZEZpcnN0IE5Ib2xkUmVzdCBOaWNob2xzR3JpZExpbmVzIE5pY2hvbHNQbG90IE5pZ2h0SGVtaXNwaGVyZSBOSW50ZWdyYXRlIE5NYXhpbWl6ZSBOTWF4VmFsdWUgTk1pbmltaXplIE5NaW5WYWx1ZSBOb21pbmFsVmFyaWFibGVzIE5vbkFzc29jaWF0aXZlIE5vbmNlbnRyYWxCZXRhRGlzdHJpYnV0aW9uIE5vbmNlbnRyYWxDaGlTcXVhcmVEaXN0cmlidXRpb24gTm9uY2VudHJhbEZSYXRpb0Rpc3RyaWJ1dGlvbiBOb25jZW50cmFsU3R1ZGVudFREaXN0cmlidXRpb24gTm9uQ29tbXV0YXRpdmVNdWx0aXBseSBOb25Db25zdGFudHMgTm9uZGltZW5zaW9uYWxpemF0aW9uVHJhbnNmb3JtIE5vbmUgTm9uZVRydWUgTm9ubGluZWFyTW9kZWxGaXQgTm9ubGluZWFyU3RhdGVTcGFjZU1vZGVsIE5vbmxvY2FsTWVhbnNGaWx0ZXIgTm9uTmVnYXRpdmUgTm9uTmVnYXRpdmVJbnRlZ2VycyBOb25OZWdhdGl2ZVJhdGlvbmFscyBOb25OZWdhdGl2ZVJlYWxzIE5vblBvc2l0aXZlIE5vblBvc2l0aXZlSW50ZWdlcnMgTm9uUG9zaXRpdmVSYXRpb25hbHMgTm9uUG9zaXRpdmVSZWFscyBOb3IgTm9ybHVuZEIgTm9ybSBOb3JtYWwgTm9ybWFsRGlzdHJpYnV0aW9uIE5vcm1hbEdyb3VwaW5nIE5vcm1hbGl6YXRpb25MYXllciBOb3JtYWxpemUgTm9ybWFsaXplZCBOb3JtYWxpemVkU3F1YXJlZEV1Y2xpZGVhbkRpc3RhbmNlIE5vcm1hbE1hdHJpeFEgTm9ybWFsc0Z1bmN0aW9uIE5vcm1GdW5jdGlvbiBOb3QgTm90Q29uZ3J1ZW50IE5vdEN1cENhcCBOb3REb3VibGVWZXJ0aWNhbEJhciBOb3RlYm9vayBOb3RlYm9va0FwcGx5IE5vdGVib29rQXV0b1NhdmUgTm90ZWJvb2tDbG9zZSBOb3RlYm9va0NvbnZlcnRTZXR0aW5ncyBOb3RlYm9va0NyZWF0ZSBOb3RlYm9va0NyZWF0ZVJldHVybk9iamVjdCBOb3RlYm9va0RlZmF1bHQgTm90ZWJvb2tEZWxldGUgTm90ZWJvb2tEaXJlY3RvcnkgTm90ZWJvb2tEeW5hbWljRXhwcmVzc2lvbiBOb3RlYm9va0V2YWx1YXRlIE5vdGVib29rRXZlbnRBY3Rpb25zIE5vdGVib29rRmlsZU5hbWUgTm90ZWJvb2tGaW5kIE5vdGVib29rRmluZFJldHVybk9iamVjdCBOb3RlYm9va0dldCBOb3RlYm9va0dldExheW91dEluZm9ybWF0aW9uUGFja2V0IE5vdGVib29rR2V0TWlzc3BlbGxpbmdzUGFja2V0IE5vdGVib29rSW1wb3J0IE5vdGVib29rSW5mb3JtYXRpb24gTm90ZWJvb2tJbnRlcmZhY2VPYmplY3QgTm90ZWJvb2tMb2NhdGUgTm90ZWJvb2tPYmplY3QgTm90ZWJvb2tPcGVuIE5vdGVib29rT3BlblJldHVybk9iamVjdCBOb3RlYm9va1BhdGggTm90ZWJvb2tQcmludCBOb3RlYm9va1B1dCBOb3RlYm9va1B1dFJldHVybk9iamVjdCBOb3RlYm9va1JlYWQgTm90ZWJvb2tSZXNldEdlbmVyYXRlZENlbGxzIE5vdGVib29rcyBOb3RlYm9va1NhdmUgTm90ZWJvb2tTYXZlQXMgTm90ZWJvb2tTZWxlY3Rpb24gTm90ZWJvb2tTZXR1cExheW91dEluZm9ybWF0aW9uUGFja2V0IE5vdGVib29rc01lbnUgTm90ZWJvb2tUZW1wbGF0ZSBOb3RlYm9va1dyaXRlIE5vdEVsZW1lbnQgTm90RXF1YWxUaWxkZSBOb3RFeGlzdHMgTm90R3JlYXRlciBOb3RHcmVhdGVyRXF1YWwgTm90R3JlYXRlckZ1bGxFcXVhbCBOb3RHcmVhdGVyR3JlYXRlciBOb3RHcmVhdGVyTGVzcyBOb3RHcmVhdGVyU2xhbnRFcXVhbCBOb3RHcmVhdGVyVGlsZGUgTm90aGluZyBOb3RIdW1wRG93bkh1bXAgTm90SHVtcEVxdWFsIE5vdGlmaWNhdGlvbkZ1bmN0aW9uIE5vdExlZnRUcmlhbmdsZSBOb3RMZWZ0VHJpYW5nbGVCYXIgTm90TGVmdFRyaWFuZ2xlRXF1YWwgTm90TGVzcyBOb3RMZXNzRXF1YWwgTm90TGVzc0Z1bGxFcXVhbCBOb3RMZXNzR3JlYXRlciBOb3RMZXNzTGVzcyBOb3RMZXNzU2xhbnRFcXVhbCBOb3RMZXNzVGlsZGUgTm90TmVzdGVkR3JlYXRlckdyZWF0ZXIgTm90TmVzdGVkTGVzc0xlc3MgTm90UHJlY2VkZXMgTm90UHJlY2VkZXNFcXVhbCBOb3RQcmVjZWRlc1NsYW50RXF1YWwgTm90UHJlY2VkZXNUaWxkZSBOb3RSZXZlcnNlRWxlbWVudCBOb3RSaWdodFRyaWFuZ2xlIE5vdFJpZ2h0VHJpYW5nbGVCYXIgTm90UmlnaHRUcmlhbmdsZUVxdWFsIE5vdFNxdWFyZVN1YnNldCBOb3RTcXVhcmVTdWJzZXRFcXVhbCBOb3RTcXVhcmVTdXBlcnNldCBOb3RTcXVhcmVTdXBlcnNldEVxdWFsIE5vdFN1YnNldCBOb3RTdWJzZXRFcXVhbCBOb3RTdWNjZWVkcyBOb3RTdWNjZWVkc0VxdWFsIE5vdFN1Y2NlZWRzU2xhbnRFcXVhbCBOb3RTdWNjZWVkc1RpbGRlIE5vdFN1cGVyc2V0IE5vdFN1cGVyc2V0RXF1YWwgTm90VGlsZGUgTm90VGlsZGVFcXVhbCBOb3RUaWxkZUZ1bGxFcXVhbCBOb3RUaWxkZVRpbGRlIE5vdFZlcnRpY2FsQmFyIE5vdyBOb1doaXRlc3BhY2UgTlByb2JhYmlsaXR5IE5Qcm9kdWN0IE5Qcm9kdWN0RmFjdG9ycyBOUm9vdHMgTlNvbHZlIE5TdW0gTlN1bVRlcm1zIE51Y2xlYXJFeHBsb3Npb25EYXRhIE51Y2xlYXJSZWFjdG9yRGF0YSBOdWxsIE51bGxSZWNvcmRzIE51bGxTcGFjZSBOdWxsV29yZHMgTnVtYmVyIE51bWJlckNvbXBvc2UgTnVtYmVyRGVjb21wb3NlIE51bWJlckV4cGFuZCBOdW1iZXJGaWVsZENsYXNzTnVtYmVyIE51bWJlckZpZWxkRGlzY3JpbWluYW50IE51bWJlckZpZWxkRnVuZGFtZW50YWxVbml0cyBOdW1iZXJGaWVsZEludGVncmFsQmFzaXMgTnVtYmVyRmllbGROb3JtUmVwcmVzZW50YXRpdmVzIE51bWJlckZpZWxkUmVndWxhdG9yIE51bWJlckZpZWxkUm9vdHNPZlVuaXR5IE51bWJlckZpZWxkU2lnbmF0dXJlIE51bWJlckZvcm0gTnVtYmVyRm9ybWF0IE51bWJlckxpbmVQbG90IE51bWJlck1hcmtzIE51bWJlck11bHRpcGxpZXIgTnVtYmVyUGFkZGluZyBOdW1iZXJQb2ludCBOdW1iZXJRIE51bWJlclNlcGFyYXRvciBOdW1iZXJTaWducyBOdW1iZXJTdHJpbmcgTnVtZXJhdG9yIE51bWVyYXRvckRlbm9taW5hdG9yIE51bWVyaWNhbE9yZGVyIE51bWVyaWNhbFNvcnQgTnVtZXJpY0FycmF5IE51bWVyaWNBcnJheVEgTnVtZXJpY0FycmF5VHlwZSBOdW1lcmljRnVuY3Rpb24gTnVtZXJpY1EgTnV0dGFsbFdpbmRvdyBOVmFsdWVzIE55cXVpc3RHcmlkTGluZXMgTnlxdWlzdFBsb3QnICtcbiAgICAgICdPIE9ic2VydmFiaWxpdHlHcmFtaWFuIE9ic2VydmFiaWxpdHlNYXRyaXggT2JzZXJ2YWJsZURlY29tcG9zaXRpb24gT2JzZXJ2YWJsZU1vZGVsUSBPY2VhbkRhdGEgT2N0YWhlZHJvbiBPZGRRIE9mZiBPZmZzZXQgT0xFRGF0YSBPbiBPTmFuR3JvdXBPTiBPbmNlIE9uZUlkZW50aXR5IE9wYWNpdHkgT3BhY2l0eUZ1bmN0aW9uIE9wYWNpdHlGdW5jdGlvblNjYWxpbmcgT3BlbiBPcGVuQXBwZW5kIE9wZW5lciBPcGVuZXJCb3ggT3BlbmVyQm94T3B0aW9ucyBPcGVuZXJWaWV3IE9wZW5GdW5jdGlvbkluc3BlY3RvclBhY2tldCBPcGVuaW5nIE9wZW5SZWFkIE9wZW5TcGVjaWFsT3B0aW9ucyBPcGVuVGVtcG9yYXJ5IE9wZW5Xcml0ZSBPcGVyYXRlIE9wZXJhdGluZ1N5c3RlbSBPcHRpbXVtRmxvd0RhdGEgT3B0aW9uYWwgT3B0aW9uYWxFbGVtZW50IE9wdGlvbkluc3BlY3RvclNldHRpbmdzIE9wdGlvblEgT3B0aW9ucyBPcHRpb25zUGFja2V0IE9wdGlvbnNQYXR0ZXJuIE9wdGlvblZhbHVlIE9wdGlvblZhbHVlQm94IE9wdGlvblZhbHVlQm94T3B0aW9ucyBPciBPcmFuZ2UgT3JkZXIgT3JkZXJEaXN0cmlidXRpb24gT3JkZXJlZFEgT3JkZXJpbmcgT3JkZXJpbmdCeSBPcmRlcmluZ0xheWVyIE9yZGVybGVzcyBPcmRlcmxlc3NQYXR0ZXJuU2VxdWVuY2UgT3Juc3RlaW5VaGxlbmJlY2tQcm9jZXNzIE9ydGhvZ29uYWxpemUgT3J0aG9nb25hbE1hdHJpeFEgT3V0IE91dGVyIE91dGVyUG9seWdvbiBPdXRlclBvbHloZWRyb24gT3V0cHV0QXV0b092ZXJ3cml0ZSBPdXRwdXRDb250cm9sbGFiaWxpdHlNYXRyaXggT3V0cHV0Q29udHJvbGxhYmxlTW9kZWxRIE91dHB1dEZvcm0gT3V0cHV0Rm9ybURhdGEgT3V0cHV0R3JvdXBpbmcgT3V0cHV0TWF0aEVkaXRFeHByZXNzaW9uIE91dHB1dE5hbWVQYWNrZXQgT3V0cHV0UmVzcG9uc2UgT3V0cHV0U2l6ZUxpbWl0IE91dHB1dFN0cmVhbSBPdmVyIE92ZXJCYXIgT3ZlckRvdCBPdmVyZmxvdyBPdmVySGF0IE92ZXJsYXBzIE92ZXJsYXkgT3ZlcmxheUJveCBPdmVybGF5Qm94T3B0aW9ucyBPdmVyc2NyaXB0IE92ZXJzY3JpcHRCb3ggT3ZlcnNjcmlwdEJveE9wdGlvbnMgT3ZlclRpbGRlIE92ZXJWZWN0b3IgT3ZlcndyaXRlVGFyZ2V0IE93ZW5UIE93blZhbHVlcycgK1xuICAgICAgJ1BhY2thZ2UgUGFja2luZ01ldGhvZCBQYWRkZWRGb3JtIFBhZGRpbmcgUGFkZGluZ0xheWVyIFBhZGRpbmdTaXplIFBhZGVBcHByb3hpbWFudCBQYWRMZWZ0IFBhZFJpZ2h0IFBhZ2VCcmVha0Fib3ZlIFBhZ2VCcmVha0JlbG93IFBhZ2VCcmVha1dpdGhpbiBQYWdlRm9vdGVyTGluZXMgUGFnZUZvb3RlcnMgUGFnZUhlYWRlckxpbmVzIFBhZ2VIZWFkZXJzIFBhZ2VIZWlnaHQgUGFnZVJhbmtDZW50cmFsaXR5IFBhZ2VUaGVtZSBQYWdlV2lkdGggUGFnaW5hdGlvbiBQYWlyZWRCYXJDaGFydCBQYWlyZWRIaXN0b2dyYW0gUGFpcmVkU21vb3RoSGlzdG9ncmFtIFBhaXJlZFRUZXN0IFBhaXJlZFpUZXN0IFBhbGV0dGVOb3RlYm9vayBQYWxldHRlUGF0aCBQYWxpbmRyb21lUSBQYW5lIFBhbmVCb3ggUGFuZUJveE9wdGlvbnMgUGFuZWwgUGFuZWxCb3ggUGFuZWxCb3hPcHRpb25zIFBhbmVsZWQgUGFuZVNlbGVjdG9yIFBhbmVTZWxlY3RvckJveCBQYW5lU2VsZWN0b3JCb3hPcHRpb25zIFBhcGVyV2lkdGggUGFyYWJvbGljQ3lsaW5kZXJEIFBhcmFncmFwaEluZGVudCBQYXJhZ3JhcGhTcGFjaW5nIFBhcmFsbGVsQXJyYXkgUGFyYWxsZWxDb21iaW5lIFBhcmFsbGVsRG8gUGFyYWxsZWxlcGlwZWQgUGFyYWxsZWxFdmFsdWF0ZSBQYXJhbGxlbGl6YXRpb24gUGFyYWxsZWxpemUgUGFyYWxsZWxNYXAgUGFyYWxsZWxOZWVkcyBQYXJhbGxlbG9ncmFtIFBhcmFsbGVsUHJvZHVjdCBQYXJhbGxlbFN1Ym1pdCBQYXJhbGxlbFN1bSBQYXJhbGxlbFRhYmxlIFBhcmFsbGVsVHJ5IFBhcmFtZXRlciBQYXJhbWV0ZXJFc3RpbWF0b3IgUGFyYW1ldGVyTWl4dHVyZURpc3RyaWJ1dGlvbiBQYXJhbWV0ZXJWYXJpYWJsZXMgUGFyYW1ldHJpY0Z1bmN0aW9uIFBhcmFtZXRyaWNORFNvbHZlIFBhcmFtZXRyaWNORFNvbHZlVmFsdWUgUGFyYW1ldHJpY1Bsb3QgUGFyYW1ldHJpY1Bsb3QzRCBQYXJhbWV0cmljUmVnaW9uIFBhcmVudEJveCBQYXJlbnRDZWxsIFBhcmVudENvbm5lY3QgUGFyZW50RGlyZWN0b3J5IFBhcmVudEZvcm0gUGFyZW50aGVzaXplIFBhcmVudExpc3QgUGFyZW50Tm90ZWJvb2sgUGFyZXRvRGlzdHJpYnV0aW9uIFBhcmV0b1BpY2thbmRzRGlzdHJpYnV0aW9uIFBhcmtEYXRhIFBhcnQgUGFydEJlaGF2aW9yIFBhcnRpYWxDb3JyZWxhdGlvbkZ1bmN0aW9uIFBhcnRpYWxEIFBhcnRpY2xlQWNjZWxlcmF0b3JEYXRhIFBhcnRpY2xlRGF0YSBQYXJ0aXRpb24gUGFydGl0aW9uR3JhbnVsYXJpdHkgUGFydGl0aW9uc1AgUGFydGl0aW9uc1EgUGFydExheWVyIFBhcnRPZlNwZWVjaCBQYXJ0UHJvdGVjdGlvbiBQYXJ6ZW5XaW5kb3cgUGFzY2FsRGlzdHJpYnV0aW9uIFBhc3NFdmVudHNEb3duIFBhc3NFdmVudHNVcCBQYXN0ZSBQYXN0ZUF1dG9RdW90ZUNoYXJhY3RlcnMgUGFzdGVCb3hGb3JtSW5saW5lQ2VsbHMgUGFzdGVCdXR0b24gUGF0aCBQYXRoR3JhcGggUGF0aEdyYXBoUSBQYXR0ZXJuIFBhdHRlcm5TZXF1ZW5jZSBQYXR0ZXJuVGVzdCBQYXVsaU1hdHJpeCBQYXVsV2F2ZWxldCBQYXVzZSBQYXVzZWRUaW1lIFBERiBQZWFrRGV0ZWN0IFBlYW5vQ3VydmUgUGVhcnNvbkNoaVNxdWFyZVRlc3QgUGVhcnNvbkNvcnJlbGF0aW9uVGVzdCBQZWFyc29uRGlzdHJpYnV0aW9uIFBlcmNlbnRGb3JtIFBlcmZlY3ROdW1iZXIgUGVyZmVjdE51bWJlclEgUGVyZm9ybWFuY2VHb2FsIFBlcmltZXRlciBQZXJpb2RpY0JvdW5kYXJ5Q29uZGl0aW9uIFBlcmlvZGljSW50ZXJwb2xhdGlvbiBQZXJpb2RvZ3JhbSBQZXJpb2RvZ3JhbUFycmF5IFBlcm1hbmVudCBQZXJtaXNzaW9ucyBQZXJtaXNzaW9uc0dyb3VwIFBlcm1pc3Npb25zR3JvdXBNZW1iZXJRIFBlcm1pc3Npb25zR3JvdXBzIFBlcm1pc3Npb25zS2V5IFBlcm1pc3Npb25zS2V5cyBQZXJtdXRhdGlvbkN5Y2xlcyBQZXJtdXRhdGlvbkN5Y2xlc1EgUGVybXV0YXRpb25Hcm91cCBQZXJtdXRhdGlvbkxlbmd0aCBQZXJtdXRhdGlvbkxpc3QgUGVybXV0YXRpb25MaXN0USBQZXJtdXRhdGlvbk1heCBQZXJtdXRhdGlvbk1pbiBQZXJtdXRhdGlvbk9yZGVyIFBlcm11dGF0aW9uUG93ZXIgUGVybXV0YXRpb25Qcm9kdWN0IFBlcm11dGF0aW9uUmVwbGFjZSBQZXJtdXRhdGlvbnMgUGVybXV0YXRpb25TdXBwb3J0IFBlcm11dGUgUGVyb25hTWFsaWtGaWx0ZXIgUGVycGVuZGljdWxhciBQZXJwZW5kaWN1bGFyQmlzZWN0b3IgUGVyc2lzdGVuY2VMb2NhdGlvbiBQZXJzaXN0ZW5jZVRpbWUgUGVyc2lzdGVudE9iamVjdCBQZXJzaXN0ZW50T2JqZWN0cyBQZXJzaXN0ZW50VmFsdWUgUGVyc29uRGF0YSBQRVJURGlzdHJpYnV0aW9uIFBldGVyc2VuR3JhcGggUGhhc2VNYXJnaW5zIFBoYXNlUmFuZ2UgUGh5c2ljYWxTeXN0ZW1EYXRhIFBpIFBpY2sgUElERGF0YSBQSUREZXJpdmF0aXZlRmlsdGVyIFBJREZlZWRmb3J3YXJkIFBJRFR1bmUgUGllY2V3aXNlIFBpZWNld2lzZUV4cGFuZCBQaWVDaGFydCBQaWVDaGFydDNEIFBpbGxhaVRyYWNlIFBpbGxhaVRyYWNlVGVzdCBQaW5nVGltZSBQaW5rIFBpdGNoUmVjb2duaXplIFBpdm90aW5nIFBpeGVsQ29uc3RyYWluZWQgUGl4ZWxWYWx1ZSBQaXhlbFZhbHVlUG9zaXRpb25zIFBsYWNlZCBQbGFjZWhvbGRlciBQbGFjZWhvbGRlclJlcGxhY2UgUGxhaW4gUGxhbmFyQW5nbGUgUGxhbmFyR3JhcGggUGxhbmFyR3JhcGhRIFBsYW5ja1JhZGlhdGlvbkxhdyBQbGFuZUN1cnZlRGF0YSBQbGFuZXRhcnlNb29uRGF0YSBQbGFuZXREYXRhIFBsYW50RGF0YSBQbGF5IFBsYXlSYW5nZSBQbG90IFBsb3QzRCBQbG90M01hdHJpeCBQbG90RGl2aXNpb24gUGxvdEpvaW5lZCBQbG90TGFiZWwgUGxvdExhYmVscyBQbG90TGF5b3V0IFBsb3RMZWdlbmRzIFBsb3RNYXJrZXJzIFBsb3RQb2ludHMgUGxvdFJhbmdlIFBsb3RSYW5nZUNsaXBwaW5nIFBsb3RSYW5nZUNsaXBQbGFuZXNTdHlsZSBQbG90UmFuZ2VQYWRkaW5nIFBsb3RSZWdpb24gUGxvdFN0eWxlIFBsb3RUaGVtZSBQbHVyYWxpemUgUGx1cyBQbHVzTWludXMgUG9jaGhhbW1lciBQb2RTdGF0ZXMgUG9kV2lkdGggUG9pbnQgUG9pbnQzREJveCBQb2ludDNEQm94T3B0aW9ucyBQb2ludEJveCBQb2ludEJveE9wdGlvbnMgUG9pbnRGaWd1cmVDaGFydCBQb2ludExlZ2VuZCBQb2ludFNpemUgUG9pc3NvbkNvbnN1bERpc3RyaWJ1dGlvbiBQb2lzc29uRGlzdHJpYnV0aW9uIFBvaXNzb25Qcm9jZXNzIFBvaXNzb25XaW5kb3cgUG9sYXJBeGVzIFBvbGFyQXhlc09yaWdpbiBQb2xhckdyaWRMaW5lcyBQb2xhclBsb3QgUG9sYXJUaWNrcyBQb2xlWmVyb01hcmtlcnMgUG9seWFBZXBwbGlEaXN0cmlidXRpb24gUG9seUdhbW1hIFBvbHlnb24gUG9seWdvbjNEQm94IFBvbHlnb24zREJveE9wdGlvbnMgUG9seWdvbmFsTnVtYmVyIFBvbHlnb25BbmdsZSBQb2x5Z29uQm94IFBvbHlnb25Cb3hPcHRpb25zIFBvbHlnb25Db29yZGluYXRlcyBQb2x5Z29uRGVjb21wb3NpdGlvbiBQb2x5Z29uSG9sZVNjYWxlIFBvbHlnb25JbnRlcnNlY3Rpb25zIFBvbHlnb25TY2FsZSBQb2x5aGVkcm9uIFBvbHloZWRyb25BbmdsZSBQb2x5aGVkcm9uQ29vcmRpbmF0ZXMgUG9seWhlZHJvbkRhdGEgUG9seWhlZHJvbkRlY29tcG9zaXRpb24gUG9seWhlZHJvbkdlbnVzIFBvbHlMb2cgUG9seW5vbWlhbEV4dGVuZGVkR0NEIFBvbHlub21pYWxGb3JtIFBvbHlub21pYWxHQ0QgUG9seW5vbWlhbExDTSBQb2x5bm9taWFsTW9kIFBvbHlub21pYWxRIFBvbHlub21pYWxRdW90aWVudCBQb2x5bm9taWFsUXVvdGllbnRSZW1haW5kZXIgUG9seW5vbWlhbFJlZHVjZSBQb2x5bm9taWFsUmVtYWluZGVyIFBvbHlub21pYWxzIFBvb2xpbmdMYXllciBQb3B1cE1lbnUgUG9wdXBNZW51Qm94IFBvcHVwTWVudUJveE9wdGlvbnMgUG9wdXBWaWV3IFBvcHVwV2luZG93IFBvc2l0aW9uIFBvc2l0aW9uSW5kZXggUG9zaXRpdmUgUG9zaXRpdmVEZWZpbml0ZU1hdHJpeFEgUG9zaXRpdmVJbnRlZ2VycyBQb3NpdGl2ZVJhdGlvbmFscyBQb3NpdGl2ZVJlYWxzIFBvc2l0aXZlU2VtaWRlZmluaXRlTWF0cml4USBQb3NzaWJsZVplcm9RIFBvc3RmaXggUG9zdFNjcmlwdCBQb3dlciBQb3dlckRpc3RyaWJ1dGlvbiBQb3dlckV4cGFuZCBQb3dlck1vZCBQb3dlck1vZExpc3QgUG93ZXJSYW5nZSBQb3dlclNwZWN0cmFsRGVuc2l0eSBQb3dlcnNSZXByZXNlbnRhdGlvbnMgUG93ZXJTeW1tZXRyaWNQb2x5bm9taWFsIFByZWNlZGVuY2UgUHJlY2VkZW5jZUZvcm0gUHJlY2VkZXMgUHJlY2VkZXNFcXVhbCBQcmVjZWRlc1NsYW50RXF1YWwgUHJlY2VkZXNUaWxkZSBQcmVjaXNpb24gUHJlY2lzaW9uR29hbCBQcmVEZWNyZW1lbnQgUHJlZGljdCBQcmVkaWN0aW9uUm9vdCBQcmVkaWN0b3JGdW5jdGlvbiBQcmVkaWN0b3JJbmZvcm1hdGlvbiBQcmVkaWN0b3JNZWFzdXJlbWVudHMgUHJlZGljdG9yTWVhc3VyZW1lbnRzT2JqZWN0IFByZWVtcHRQcm90ZWN0IFByZWZlcmVuY2VzUGF0aCBQcmVmaXggUHJlSW5jcmVtZW50IFByZXBlbmQgUHJlcGVuZExheWVyIFByZXBlbmRUbyBQcmVwcm9jZXNzaW5nUnVsZXMgUHJlc2VydmVDb2xvciBQcmVzZXJ2ZUltYWdlT3B0aW9ucyBQcmV2aW91cyBQcmV2aW91c0NlbGwgUHJldmlvdXNEYXRlIFByaWNlR3JhcGhEaXN0cmlidXRpb24gUHJpbWFyeVBsYWNlaG9sZGVyIFByaW1lIFByaW1lTnUgUHJpbWVPbWVnYSBQcmltZVBpIFByaW1lUG93ZXJRIFByaW1lUSBQcmltZXMgUHJpbWVaZXRhUCBQcmltaXRpdmVQb2x5bm9taWFsUSBQcmltaXRpdmVSb290IFByaW1pdGl2ZVJvb3RMaXN0IFByaW5jaXBhbENvbXBvbmVudHMgUHJpbmNpcGFsVmFsdWUgUHJpbnQgUHJpbnRhYmxlQVNDSUlRIFByaW50QWN0aW9uIFByaW50Rm9ybSBQcmludGluZ0NvcGllcyBQcmludGluZ09wdGlvbnMgUHJpbnRpbmdQYWdlUmFuZ2UgUHJpbnRpbmdTdGFydGluZ1BhZ2VOdW1iZXIgUHJpbnRpbmdTdHlsZUVudmlyb25tZW50IFByaW50b3V0M0QgUHJpbnRvdXQzRFByZXZpZXdlciBQcmludFByZWNpc2lvbiBQcmludFRlbXBvcmFyeSBQcmlzbSBQcmlzbUJveCBQcmlzbUJveE9wdGlvbnMgUHJpdmF0ZUNlbGxPcHRpb25zIFByaXZhdGVFdmFsdWF0aW9uT3B0aW9ucyBQcml2YXRlRm9udE9wdGlvbnMgUHJpdmF0ZUZyb250RW5kT3B0aW9ucyBQcml2YXRlS2V5IFByaXZhdGVOb3RlYm9va09wdGlvbnMgUHJpdmF0ZVBhdGhzIFByb2JhYmlsaXR5IFByb2JhYmlsaXR5RGlzdHJpYnV0aW9uIFByb2JhYmlsaXR5UGxvdCBQcm9iYWJpbGl0eVByIFByb2JhYmlsaXR5U2NhbGVQbG90IFByb2JpdE1vZGVsRml0IFByb2Nlc3NDb25uZWN0aW9uIFByb2Nlc3NEaXJlY3RvcnkgUHJvY2Vzc0Vudmlyb25tZW50IFByb2Nlc3NlcyBQcm9jZXNzRXN0aW1hdG9yIFByb2Nlc3NJbmZvcm1hdGlvbiBQcm9jZXNzT2JqZWN0IFByb2Nlc3NQYXJhbWV0ZXJBc3N1bXB0aW9ucyBQcm9jZXNzUGFyYW1ldGVyUSBQcm9jZXNzU3RhdGVEb21haW4gUHJvY2Vzc1N0YXR1cyBQcm9jZXNzVGltZURvbWFpbiBQcm9kdWN0IFByb2R1Y3REaXN0cmlidXRpb24gUHJvZHVjdExvZyBQcm9ncmVzc0luZGljYXRvciBQcm9ncmVzc0luZGljYXRvckJveCBQcm9ncmVzc0luZGljYXRvckJveE9wdGlvbnMgUHJvamVjdGlvbiBQcm9sb2cgUHJvbXB0Rm9ybSBQcm9vZk9iamVjdCBQcm9wZXJ0aWVzIFByb3BlcnR5IFByb3BlcnR5TGlzdCBQcm9wZXJ0eVZhbHVlIFByb3BvcnRpb24gUHJvcG9ydGlvbmFsIFByb3RlY3QgUHJvdGVjdGVkIFByb3RlaW5EYXRhIFBydW5pbmcgUHNldWRvSW52ZXJzZSBQc3ljaHJvbWV0cmljUHJvcGVydHlEYXRhIFB1YmxpY0tleSBQdWJsaXNoZXJJRCBQdWxzYXJEYXRhIFB1bmN0dWF0aW9uQ2hhcmFjdGVyIFB1cnBsZSBQdXQgUHV0QXBwZW5kIFB5cmFtaWQgUHlyYW1pZEJveCBQeXJhbWlkQm94T3B0aW9ucycgK1xuICAgICAgJ1FCaW5vbWlhbCBRRmFjdG9yaWFsIFFHYW1tYSBRSHlwZXJnZW9tZXRyaWNQRlEgUW5EaXNwZXJzaW9uIFFQb2NoaGFtbWVyIFFQb2x5R2FtbWEgUVJEZWNvbXBvc2l0aW9uIFF1YWRyYXRpY0lycmF0aW9uYWxRIFF1YWRyYXRpY09wdGltaXphdGlvbiBRdWFudGlsZSBRdWFudGlsZVBsb3QgUXVhbnRpdHkgUXVhbnRpdHlBcnJheSBRdWFudGl0eURpc3RyaWJ1dGlvbiBRdWFudGl0eUZvcm0gUXVhbnRpdHlNYWduaXR1ZGUgUXVhbnRpdHlRIFF1YW50aXR5VW5pdCBRdWFudGl0eVZhcmlhYmxlIFF1YW50aXR5VmFyaWFibGVDYW5vbmljYWxVbml0IFF1YW50aXR5VmFyaWFibGVEaW1lbnNpb25zIFF1YW50aXR5VmFyaWFibGVJZGVudGlmaWVyIFF1YW50aXR5VmFyaWFibGVQaHlzaWNhbFF1YW50aXR5IFF1YXJ0aWNzIFF1YXJ0aWxlRGV2aWF0aW9uIFF1YXJ0aWxlcyBRdWFydGlsZVNrZXduZXNzIFF1ZXJ5IFF1ZXVlaW5nTmV0d29ya1Byb2Nlc3MgUXVldWVpbmdQcm9jZXNzIFF1ZXVlUHJvcGVydGllcyBRdWlldCBRdWl0IFF1b3RpZW50IFF1b3RpZW50UmVtYWluZGVyJyArXG4gICAgICAnUmFkaWFsR3JhZGllbnRJbWFnZSBSYWRpYWxpdHlDZW50cmFsaXR5IFJhZGljYWxCb3ggUmFkaWNhbEJveE9wdGlvbnMgUmFkaW9CdXR0b24gUmFkaW9CdXR0b25CYXIgUmFkaW9CdXR0b25Cb3ggUmFkaW9CdXR0b25Cb3hPcHRpb25zIFJhZG9uIFJhZG9uVHJhbnNmb3JtIFJhbWFudWphblRhdSBSYW1hbnVqYW5UYXVMIFJhbWFudWphblRhdVRoZXRhIFJhbWFudWphblRhdVogUmFtcCBSYW5kb20gUmFuZG9tQ2hvaWNlIFJhbmRvbUNvbG9yIFJhbmRvbUNvbXBsZXggUmFuZG9tRW50aXR5IFJhbmRvbUZ1bmN0aW9uIFJhbmRvbUdlb1Bvc2l0aW9uIFJhbmRvbUdyYXBoIFJhbmRvbUltYWdlIFJhbmRvbUluc3RhbmNlIFJhbmRvbUludGVnZXIgUmFuZG9tUGVybXV0YXRpb24gUmFuZG9tUG9pbnQgUmFuZG9tUG9seWdvbiBSYW5kb21Qb2x5aGVkcm9uIFJhbmRvbVByaW1lIFJhbmRvbVJlYWwgUmFuZG9tU2FtcGxlIFJhbmRvbVNlZWQgUmFuZG9tU2VlZGluZyBSYW5kb21WYXJpYXRlIFJhbmRvbVdhbGtQcm9jZXNzIFJhbmRvbVdvcmQgUmFuZ2UgUmFuZ2VGaWx0ZXIgUmFuZ2VTcGVjaWZpY2F0aW9uIFJhbmtlZE1heCBSYW5rZWRNaW4gUmFyZXJQcm9iYWJpbGl0eSBSYXN0ZXIgUmFzdGVyM0QgUmFzdGVyM0RCb3ggUmFzdGVyM0RCb3hPcHRpb25zIFJhc3RlckFycmF5IFJhc3RlckJveCBSYXN0ZXJCb3hPcHRpb25zIFJhc3Rlcml6ZSBSYXN0ZXJTaXplIFJhdGlvbmFsIFJhdGlvbmFsRnVuY3Rpb25zIFJhdGlvbmFsaXplIFJhdGlvbmFscyBSYXRpb3MgUmF3QXJyYXkgUmF3Qm94ZXMgUmF3RGF0YSBSYXdNZWRpdW0gUmF5bGVpZ2hEaXN0cmlidXRpb24gUmUgUmVhZCBSZWFkQnl0ZUFycmF5IFJlYWRMaW5lIFJlYWRMaXN0IFJlYWRQcm90ZWN0ZWQgUmVhZFN0cmluZyBSZWFsIFJlYWxBYnMgUmVhbEJsb2NrRGlhZ29uYWxGb3JtIFJlYWxEaWdpdHMgUmVhbEV4cG9uZW50IFJlYWxzIFJlYWxTaWduIFJlYXAgUmVjb2duaXRpb25QcmlvciBSZWNvZ25pdGlvblRocmVzaG9sZCBSZWNvcmQgUmVjb3JkTGlzdHMgUmVjb3JkU2VwYXJhdG9ycyBSZWN0YW5nbGUgUmVjdGFuZ2xlQm94IFJlY3RhbmdsZUJveE9wdGlvbnMgUmVjdGFuZ2xlQ2hhcnQgUmVjdGFuZ2xlQ2hhcnQzRCBSZWN0YW5ndWxhclJlcGVhdGluZ0VsZW1lbnQgUmVjdXJyZW5jZUZpbHRlciBSZWN1cnJlbmNlVGFibGUgUmVjdXJyaW5nRGlnaXRzRm9ybSBSZWQgUmVkdWNlIFJlZkJveCBSZWZlcmVuY2VMaW5lU3R5bGUgUmVmZXJlbmNlTWFya2VycyBSZWZlcmVuY2VNYXJrZXJTdHlsZSBSZWZpbmUgUmVmbGVjdGlvbk1hdHJpeCBSZWZsZWN0aW9uVHJhbnNmb3JtIFJlZnJlc2ggUmVmcmVzaFJhdGUgUmVnaW9uIFJlZ2lvbkJpbmFyaXplIFJlZ2lvbkJvdW5kYXJ5IFJlZ2lvbkJvdW5kcyBSZWdpb25DZW50cm9pZCBSZWdpb25EaWZmZXJlbmNlIFJlZ2lvbkRpbWVuc2lvbiBSZWdpb25EaXNqb2ludCBSZWdpb25EaXN0YW5jZSBSZWdpb25EaXN0YW5jZUZ1bmN0aW9uIFJlZ2lvbkVtYmVkZGluZ0RpbWVuc2lvbiBSZWdpb25FcXVhbCBSZWdpb25GdW5jdGlvbiBSZWdpb25JbWFnZSBSZWdpb25JbnRlcnNlY3Rpb24gUmVnaW9uTWVhc3VyZSBSZWdpb25NZW1iZXIgUmVnaW9uTWVtYmVyRnVuY3Rpb24gUmVnaW9uTW9tZW50IFJlZ2lvbk5lYXJlc3QgUmVnaW9uTmVhcmVzdEZ1bmN0aW9uIFJlZ2lvblBsb3QgUmVnaW9uUGxvdDNEIFJlZ2lvblByb2R1Y3QgUmVnaW9uUSBSZWdpb25SZXNpemUgUmVnaW9uU2l6ZSBSZWdpb25TeW1tZXRyaWNEaWZmZXJlbmNlIFJlZ2lvblVuaW9uIFJlZ2lvbldpdGhpbiBSZWdpc3RlckV4dGVybmFsRXZhbHVhdG9yIFJlZ3VsYXJFeHByZXNzaW9uIFJlZ3VsYXJpemF0aW9uIFJlZ3VsYXJseVNhbXBsZWRRIFJlZ3VsYXJQb2x5Z29uIFJlSW0gUmVJbUxhYmVscyBSZUltUGxvdCBSZUltU3R5bGUgUmVpbnN0YWxsIFJlbGF0aW9uYWxEYXRhYmFzZSBSZWxhdGlvbkdyYXBoIFJlbGVhc2UgUmVsZWFzZUhvbGQgUmVsaWFiaWxpdHlEaXN0cmlidXRpb24gUmVsaWVmSW1hZ2UgUmVsaWVmUGxvdCBSZW1vdGVBdXRob3JpemF0aW9uQ2FjaGluZyBSZW1vdGVDb25uZWN0IFJlbW90ZUNvbm5lY3Rpb25PYmplY3QgUmVtb3RlRmlsZSBSZW1vdGVSdW4gUmVtb3RlUnVuUHJvY2VzcyBSZW1vdmUgUmVtb3ZlQWxwaGFDaGFubmVsIFJlbW92ZUFzeW5jaHJvbm91c1Rhc2sgUmVtb3ZlQXVkaW9TdHJlYW0gUmVtb3ZlQmFja2dyb3VuZCBSZW1vdmVDaGFubmVsTGlzdGVuZXIgUmVtb3ZlQ2hhbm5lbFN1YnNjcmliZXJzIFJlbW92ZWQgUmVtb3ZlRGlhY3JpdGljcyBSZW1vdmVJbnB1dFN0cmVhbU1ldGhvZCBSZW1vdmVPdXRwdXRTdHJlYW1NZXRob2QgUmVtb3ZlUHJvcGVydHkgUmVtb3ZlU2NoZWR1bGVkVGFzayBSZW1vdmVVc2VycyBSZW5hbWVEaXJlY3RvcnkgUmVuYW1lRmlsZSBSZW5kZXJBbGwgUmVuZGVyaW5nT3B0aW9ucyBSZW5ld2FsUHJvY2VzcyBSZW5rb0NoYXJ0IFJlcGFpck1lc2ggUmVwZWF0ZWQgUmVwZWF0ZWROdWxsIFJlcGVhdGVkU3RyaW5nIFJlcGVhdGVkVGltaW5nIFJlcGVhdGluZ0VsZW1lbnQgUmVwbGFjZSBSZXBsYWNlQWxsIFJlcGxhY2VIZWxkUGFydCBSZXBsYWNlSW1hZ2VWYWx1ZSBSZXBsYWNlTGlzdCBSZXBsYWNlUGFydCBSZXBsYWNlUGl4ZWxWYWx1ZSBSZXBsYWNlUmVwZWF0ZWQgUmVwbGljYXRlTGF5ZXIgUmVxdWlyZWRQaHlzaWNhbFF1YW50aXRpZXMgUmVzYW1wbGluZyBSZXNhbXBsaW5nQWxnb3JpdGhtRGF0YSBSZXNhbXBsaW5nTWV0aG9kIFJlc2NhbGUgUmVzY2FsaW5nVHJhbnNmb3JtIFJlc2V0RGlyZWN0b3J5IFJlc2V0TWVudXNQYWNrZXQgUmVzZXRTY2hlZHVsZWRUYXNrIFJlc2hhcGVMYXllciBSZXNpZHVlIFJlc2l6ZUxheWVyIFJlc29sdmUgUmVzb3VyY2VBY3F1aXJlIFJlc291cmNlRGF0YSBSZXNvdXJjZUZ1bmN0aW9uIFJlc291cmNlT2JqZWN0IFJlc291cmNlUmVnaXN0ZXIgUmVzb3VyY2VSZW1vdmUgUmVzb3VyY2VTZWFyY2ggUmVzb3VyY2VTdWJtaXNzaW9uT2JqZWN0IFJlc291cmNlU3VibWl0IFJlc291cmNlU3lzdGVtQmFzZSBSZXNvdXJjZVVwZGF0ZSBSZXNwb25zZUZvcm0gUmVzdCBSZXN0YXJ0SW50ZXJ2YWwgUmVzdHJpY3RlZCBSZXN1bHRhbnQgUmVzdW1lUGFja2V0IFJldHVybiBSZXR1cm5FbnRlcnNJbnB1dCBSZXR1cm5FeHByZXNzaW9uUGFja2V0IFJldHVybklucHV0Rm9ybVBhY2tldCBSZXR1cm5QYWNrZXQgUmV0dXJuUmVjZWlwdEZ1bmN0aW9uIFJldHVyblRleHRQYWNrZXQgUmV2ZXJzZSBSZXZlcnNlQmlvcnRob2dvbmFsU3BsaW5lV2F2ZWxldCBSZXZlcnNlRWxlbWVudCBSZXZlcnNlRXF1aWxpYnJpdW0gUmV2ZXJzZUdyYXBoIFJldmVyc2VTb3J0IFJldmVyc2VTb3J0QnkgUmV2ZXJzZVVwRXF1aWxpYnJpdW0gUmV2b2x1dGlvbkF4aXMgUmV2b2x1dGlvblBsb3QzRCBSR0JDb2xvciBSaWNjYXRpU29sdmUgUmljZURpc3RyaWJ1dGlvbiBSaWRnZUZpbHRlciBSaWVtYW5uUiBSaWVtYW5uU2llZ2VsVGhldGEgUmllbWFublNpZWdlbFogUmllbWFublhpIFJpZmZsZSBSaWdodCBSaWdodEFycm93IFJpZ2h0QXJyb3dCYXIgUmlnaHRBcnJvd0xlZnRBcnJvdyBSaWdodENvbXBvc2l0aW9uIFJpZ2h0Q29zZXRSZXByZXNlbnRhdGl2ZSBSaWdodERvd25UZWVWZWN0b3IgUmlnaHREb3duVmVjdG9yIFJpZ2h0RG93blZlY3RvckJhciBSaWdodFRlZSBSaWdodFRlZUFycm93IFJpZ2h0VGVlVmVjdG9yIFJpZ2h0VHJpYW5nbGUgUmlnaHRUcmlhbmdsZUJhciBSaWdodFRyaWFuZ2xlRXF1YWwgUmlnaHRVcERvd25WZWN0b3IgUmlnaHRVcFRlZVZlY3RvciBSaWdodFVwVmVjdG9yIFJpZ2h0VXBWZWN0b3JCYXIgUmlnaHRWZWN0b3IgUmlnaHRWZWN0b3JCYXIgUmlza0FjaGlldmVtZW50SW1wb3J0YW5jZSBSaXNrUmVkdWN0aW9uSW1wb3J0YW5jZSBSb2dlcnNUYW5pbW90b0Rpc3NpbWlsYXJpdHkgUm9sbFBpdGNoWWF3QW5nbGVzIFJvbGxQaXRjaFlhd01hdHJpeCBSb21hbk51bWVyYWwgUm9vdCBSb290QXBwcm94aW1hbnQgUm9vdEludGVydmFscyBSb290TG9jdXNQbG90IFJvb3RNZWFuU3F1YXJlIFJvb3RPZlVuaXR5USBSb290UmVkdWNlIFJvb3RzIFJvb3RTdW0gUm90YXRlIFJvdGF0ZUxhYmVsIFJvdGF0ZUxlZnQgUm90YXRlUmlnaHQgUm90YXRpb25BY3Rpb24gUm90YXRpb25Cb3ggUm90YXRpb25Cb3hPcHRpb25zIFJvdGF0aW9uTWF0cml4IFJvdGF0aW9uVHJhbnNmb3JtIFJvdW5kIFJvdW5kSW1wbGllcyBSb3VuZGluZ1JhZGl1cyBSb3cgUm93QWxpZ25tZW50cyBSb3dCYWNrZ3JvdW5kcyBSb3dCb3ggUm93SGVpZ2h0cyBSb3dMaW5lcyBSb3dNaW5IZWlnaHQgUm93UmVkdWNlIFJvd3NFcXVhbCBSb3dTcGFjaW5ncyBSU29sdmUgUlNvbHZlVmFsdWUgUnVkaW5TaGFwaXJvIFJ1ZHZhbGlzR3JvdXBSdSBSdWxlIFJ1bGVDb25kaXRpb24gUnVsZURlbGF5ZWQgUnVsZUZvcm0gUnVsZVBsb3QgUnVsZXJVbml0cyBSdW4gUnVuUHJvY2VzcyBSdW5TY2hlZHVsZWRUYXNrIFJ1blRocm91Z2ggUnVudGltZUF0dHJpYnV0ZXMgUnVudGltZU9wdGlvbnMgUnVzc2VsbFJhb0Rpc3NpbWlsYXJpdHknICtcbiAgICAgICdTYW1lUSBTYW1lVGVzdCBTYW1wbGVkRW50aXR5Q2xhc3MgU2FtcGxlRGVwdGggU2FtcGxlZFNvdW5kRnVuY3Rpb24gU2FtcGxlZFNvdW5kTGlzdCBTYW1wbGVSYXRlIFNhbXBsaW5nUGVyaW9kIFNBUklNQVByb2Nlc3MgU0FSTUFQcm9jZXNzIFNBU1RyaWFuZ2xlIFNhdGVsbGl0ZURhdGEgU2F0aXNmaWFiaWxpdHlDb3VudCBTYXRpc2ZpYWJpbGl0eUluc3RhbmNlcyBTYXRpc2ZpYWJsZVEgU2F0dXJkYXkgU2F2ZSBTYXZlYWJsZSBTYXZlQXV0b0RlbGV0ZSBTYXZlQ29ubmVjdGlvbiBTYXZlRGVmaW5pdGlvbnMgU2F2aXR6a3lHb2xheU1hdHJpeCBTYXd0b290aFdhdmUgU2NhbGUgU2NhbGVkIFNjYWxlRGl2aXNpb25zIFNjYWxlZE1vdXNlUG9zaXRpb24gU2NhbGVPcmlnaW4gU2NhbGVQYWRkaW5nIFNjYWxlUmFuZ2VzIFNjYWxlUmFuZ2VTdHlsZSBTY2FsaW5nRnVuY3Rpb25zIFNjYWxpbmdNYXRyaXggU2NhbGluZ1RyYW5zZm9ybSBTY2FuIFNjaGVkdWxlZFRhc2sgU2NoZWR1bGVkVGFza0FjdGl2ZVEgU2NoZWR1bGVkVGFza0luZm9ybWF0aW9uIFNjaGVkdWxlZFRhc2tJbmZvcm1hdGlvbkRhdGEgU2NoZWR1bGVkVGFza09iamVjdCBTY2hlZHVsZWRUYXNrcyBTY2h1ckRlY29tcG9zaXRpb24gU2NpZW50aWZpY0Zvcm0gU2NpZW50aWZpY05vdGF0aW9uVGhyZXNob2xkIFNjb3JlckdpIFNjb3JlckdpUHJpbWUgU2NvcmVySGkgU2NvcmVySGlQcmltZSBTY3JlZW5SZWN0YW5nbGUgU2NyZWVuU3R5bGVFbnZpcm9ubWVudCBTY3JpcHRCYXNlbGluZVNoaWZ0cyBTY3JpcHRGb3JtIFNjcmlwdExldmVsIFNjcmlwdE1pblNpemUgU2NyaXB0UnVsZXMgU2NyaXB0U2l6ZU11bHRpcGxpZXJzIFNjcm9sbGJhcnMgU2Nyb2xsaW5nT3B0aW9ucyBTY3JvbGxQb3NpdGlvbiBTZWFyY2hBZGp1c3RtZW50IFNlYXJjaEluZGV4T2JqZWN0IFNlYXJjaEluZGljZXMgU2VhcmNoUXVlcnlTdHJpbmcgU2VhcmNoUmVzdWx0T2JqZWN0IFNlYyBTZWNoIFNlY2hEaXN0cmlidXRpb24gU2Vjb25kT3JkZXJDb25lT3B0aW1pemF0aW9uIFNlY3Rpb25Hcm91cGluZyBTZWN0b3JDaGFydCBTZWN0b3JDaGFydDNEIFNlY3Rvck9yaWdpbiBTZWN0b3JTcGFjaW5nIFNlY3VyZWRBdXRoZW50aWNhdGlvbktleSBTZWN1cmVkQXV0aGVudGljYXRpb25LZXlzIFNlZWRSYW5kb20gU2VsZWN0IFNlbGVjdGFibGUgU2VsZWN0Q29tcG9uZW50cyBTZWxlY3RlZENlbGxzIFNlbGVjdGVkTm90ZWJvb2sgU2VsZWN0Rmlyc3QgU2VsZWN0aW9uIFNlbGVjdGlvbkFuaW1hdGUgU2VsZWN0aW9uQ2VsbCBTZWxlY3Rpb25DZWxsQ3JlYXRlQ2VsbCBTZWxlY3Rpb25DZWxsRGVmYXVsdFN0eWxlIFNlbGVjdGlvbkNlbGxQYXJlbnRTdHlsZSBTZWxlY3Rpb25DcmVhdGVDZWxsIFNlbGVjdGlvbkRlYnVnZ2VyVGFnIFNlbGVjdGlvbkR1cGxpY2F0ZUNlbGwgU2VsZWN0aW9uRXZhbHVhdGUgU2VsZWN0aW9uRXZhbHVhdGVDcmVhdGVDZWxsIFNlbGVjdGlvbk1vdmUgU2VsZWN0aW9uUGxhY2Vob2xkZXIgU2VsZWN0aW9uU2V0U3R5bGUgU2VsZWN0V2l0aENvbnRlbnRzIFNlbGZMb29wcyBTZWxmTG9vcFN0eWxlIFNlbWFudGljSW1wb3J0IFNlbWFudGljSW1wb3J0U3RyaW5nIFNlbWFudGljSW50ZXJwcmV0YXRpb24gU2VtaWFsZ2VicmFpY0NvbXBvbmVudEluc3RhbmNlcyBTZW1pZGVmaW5pdGVPcHRpbWl6YXRpb24gU2VuZE1haWwgU2VuZE1lc3NhZ2UgU2VxdWVuY2UgU2VxdWVuY2VBbGlnbm1lbnQgU2VxdWVuY2VBdHRlbnRpb25MYXllciBTZXF1ZW5jZUNhc2VzIFNlcXVlbmNlQ291bnQgU2VxdWVuY2VGb2xkIFNlcXVlbmNlRm9sZExpc3QgU2VxdWVuY2VGb3JtIFNlcXVlbmNlSG9sZCBTZXF1ZW5jZUxhc3RMYXllciBTZXF1ZW5jZU1vc3RMYXllciBTZXF1ZW5jZVBvc2l0aW9uIFNlcXVlbmNlUHJlZGljdCBTZXF1ZW5jZVByZWRpY3RvckZ1bmN0aW9uIFNlcXVlbmNlUmVwbGFjZSBTZXF1ZW5jZVJlc3RMYXllciBTZXF1ZW5jZVJldmVyc2VMYXllciBTZXF1ZW5jZVNwbGl0IFNlcmllcyBTZXJpZXNDb2VmZmljaWVudCBTZXJpZXNEYXRhIFNlcnZpY2VDb25uZWN0IFNlcnZpY2VEaXNjb25uZWN0IFNlcnZpY2VFeGVjdXRlIFNlcnZpY2VPYmplY3QgU2VydmljZVJlcXVlc3QgU2VydmljZVJlc3BvbnNlIFNlcnZpY2VTdWJtaXQgU2Vzc2lvblN1Ym1pdCBTZXNzaW9uVGltZSBTZXQgU2V0QWNjdXJhY3kgU2V0QWxwaGFDaGFubmVsIFNldEF0dHJpYnV0ZXMgU2V0YmFja3MgU2V0Qm94Rm9ybU5hbWVzUGFja2V0IFNldENsb3VkRGlyZWN0b3J5IFNldENvb2tpZXMgU2V0RGVsYXllZCBTZXREaXJlY3RvcnkgU2V0RW52aXJvbm1lbnQgU2V0RXZhbHVhdGlvbk5vdGVib29rIFNldEZpbGVEYXRlIFNldEZpbGVMb2FkaW5nQ29udGV4dCBTZXROb3RlYm9va1N0YXR1c0xpbmUgU2V0T3B0aW9ucyBTZXRPcHRpb25zUGFja2V0IFNldFBlcm1pc3Npb25zIFNldFByZWNpc2lvbiBTZXRQcm9wZXJ0eSBTZXRTZWN1cmVkQXV0aGVudGljYXRpb25LZXkgU2V0U2VsZWN0ZWROb3RlYm9vayBTZXRTaGFyZWRGdW5jdGlvbiBTZXRTaGFyZWRWYXJpYWJsZSBTZXRTcGVlY2hQYXJhbWV0ZXJzUGFja2V0IFNldFN0cmVhbVBvc2l0aW9uIFNldFN5c3RlbU1vZGVsIFNldFN5c3RlbU9wdGlvbnMgU2V0dGVyIFNldHRlckJhciBTZXR0ZXJCb3ggU2V0dGVyQm94T3B0aW9ucyBTZXR0aW5nIFNldFVzZXJzIFNldFZhbHVlIFNoYWRpbmcgU2hhbGxvdyBTaGFubm9uV2F2ZWxldCBTaGFwaXJvV2lsa1Rlc3QgU2hhcmUgU2hhcmluZ0xpc3QgU2hhcnBlbiBTaGVhcmluZ01hdHJpeCBTaGVhcmluZ1RyYW5zZm9ybSBTaGVsbFJlZ2lvbiBTaGVuQ2FzdGFuTWF0cml4IFNoaWZ0ZWRHb21wZXJ0ekRpc3RyaWJ1dGlvbiBTaGlmdFJlZ2lzdGVyU2VxdWVuY2UgU2hvcnQgU2hvcnREb3duQXJyb3cgU2hvcnRlc3QgU2hvcnRlc3RNYXRjaCBTaG9ydGVzdFBhdGhGdW5jdGlvbiBTaG9ydExlZnRBcnJvdyBTaG9ydFJpZ2h0QXJyb3cgU2hvcnRUaW1lRm91cmllciBTaG9ydFRpbWVGb3VyaWVyRGF0YSBTaG9ydFVwQXJyb3cgU2hvdyBTaG93QXV0b0NvbnZlcnQgU2hvd0F1dG9TcGVsbENoZWNrIFNob3dBdXRvU3R5bGVzIFNob3dDZWxsQnJhY2tldCBTaG93Q2VsbExhYmVsIFNob3dDZWxsVGFncyBTaG93Q2xvc2VkQ2VsbEFyZWEgU2hvd0NvZGVBc3Npc3QgU2hvd0NvbnRlbnRzIFNob3dDb250cm9scyBTaG93Q3Vyc29yVHJhY2tlciBTaG93R3JvdXBPcGVuQ2xvc2VJY29uIFNob3dHcm91cE9wZW5lciBTaG93SW52aXNpYmxlQ2hhcmFjdGVycyBTaG93UGFnZUJyZWFrcyBTaG93UHJlZGljdGl2ZUludGVyZmFjZSBTaG93U2VsZWN0aW9uIFNob3dTaG9ydEJveEZvcm0gU2hvd1NwZWNpYWxDaGFyYWN0ZXJzIFNob3dTdHJpbmdDaGFyYWN0ZXJzIFNob3dTeW50YXhTdHlsZXMgU2hyaW5raW5nRGVsYXkgU2hyaW5rV3JhcEJvdW5kaW5nQm94IFNpZGVyZWFsVGltZSBTaWVnZWxUaGV0YSBTaWVnZWxUdWtleVRlc3QgU2llcnBpbnNraUN1cnZlIFNpZXJwaW5za2lNZXNoIFNpZ24gU2lnbmF0dXJlIFNpZ25lZFJhbmtUZXN0IFNpZ25lZFJlZ2lvbkRpc3RhbmNlIFNpZ25pZmljYW5jZUxldmVsIFNpZ25QYWRkaW5nIFNpZ25UZXN0IFNpbWlsYXJpdHlSdWxlcyBTaW1wbGVHcmFwaCBTaW1wbGVHcmFwaFEgU2ltcGxlUG9seWdvblEgU2ltcGxlUG9seWhlZHJvblEgU2ltcGxleCBTaW1wbGlmeSBTaW4gU2luYyBTaW5naE1hZGRhbGFEaXN0cmlidXRpb24gU2luZ2xlRXZhbHVhdGlvbiBTaW5nbGVMZXR0ZXJJdGFsaWNzIFNpbmdsZUxldHRlclN0eWxlIFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIFNpbmd1bGFyVmFsdWVMaXN0IFNpbmd1bGFyVmFsdWVQbG90IFNpbmd1bGFyVmFsdWVzIFNpbmggU2luaEludGVncmFsIFNpbkludGVncmFsIFNpeEpTeW1ib2wgU2tlbGV0b24gU2tlbGV0b25UcmFuc2Zvcm0gU2tlbGxhbURpc3RyaWJ1dGlvbiBTa2V3bmVzcyBTa2V3Tm9ybWFsRGlzdHJpYnV0aW9uIFNraW5TdHlsZSBTa2lwIFNsaWNlQ29udG91clBsb3QzRCBTbGljZURlbnNpdHlQbG90M0QgU2xpY2VEaXN0cmlidXRpb24gU2xpY2VWZWN0b3JQbG90M0QgU2xpZGVyIFNsaWRlcjJEIFNsaWRlcjJEQm94IFNsaWRlcjJEQm94T3B0aW9ucyBTbGlkZXJCb3ggU2xpZGVyQm94T3B0aW9ucyBTbGlkZVZpZXcgU2xvdCBTbG90U2VxdWVuY2UgU21hbGwgU21hbGxDaXJjbGUgU21hbGxlciBTbWl0aERlY29tcG9zaXRpb24gU21pdGhEZWxheUNvbXBlbnNhdG9yIFNtaXRoV2F0ZXJtYW5TaW1pbGFyaXR5IFNtb290aERlbnNpdHlIaXN0b2dyYW0gU21vb3RoSGlzdG9ncmFtIFNtb290aEhpc3RvZ3JhbTNEIFNtb290aEtlcm5lbERpc3RyaWJ1dGlvbiBTbkRpc3BlcnNpb24gU25pcHBldCBTbnViUG9seWhlZHJvbiBTb2NpYWxNZWRpYURhdGEgU29ja2V0IFNvY2tldENvbm5lY3QgU29ja2V0TGlzdGVuIFNvY2tldExpc3RlbmVyIFNvY2tldE9iamVjdCBTb2NrZXRPcGVuIFNvY2tldFJlYWRNZXNzYWdlIFNvY2tldFJlYWR5USBTb2NrZXRzIFNvY2tldFdhaXRBbGwgU29ja2V0V2FpdE5leHQgU29mdG1heExheWVyIFNva2FsU25lYXRoRGlzc2ltaWxhcml0eSBTb2xhckVjbGlwc2UgU29sYXJTeXN0ZW1GZWF0dXJlRGF0YSBTb2xpZEFuZ2xlIFNvbGlkRGF0YSBTb2xpZFJlZ2lvblEgU29sdmUgU29sdmVBbHdheXMgU29sdmVEZWxheWVkIFNvcnQgU29ydEJ5IFNvcnRlZEJ5IFNvcnRlZEVudGl0eUNsYXNzIFNvdW5kIFNvdW5kQW5kR3JhcGhpY3MgU291bmROb3RlIFNvdW5kVm9sdW1lIFNvdXJjZUxpbmsgU293IFNwYWNlIFNwYWNlQ3VydmVEYXRhIFNwYWNlRm9ybSBTcGFjZXIgU3BhY2luZ3MgU3BhbiBTcGFuQWRqdXN0bWVudHMgU3BhbkNoYXJhY3RlclJvdW5kaW5nIFNwYW5Gcm9tQWJvdmUgU3BhbkZyb21Cb3RoIFNwYW5Gcm9tTGVmdCBTcGFuTGluZVRoaWNrbmVzcyBTcGFuTWF4U2l6ZSBTcGFuTWluU2l6ZSBTcGFubmluZ0NoYXJhY3RlcnMgU3BhblN5bW1ldHJpYyBTcGFyc2VBcnJheSBTcGF0aWFsR3JhcGhEaXN0cmlidXRpb24gU3BhdGlhbE1lZGlhbiBTcGF0aWFsVHJhbnNmb3JtYXRpb25MYXllciBTcGVhayBTcGVha1RleHRQYWNrZXQgU3BlYXJtYW5SYW5rVGVzdCBTcGVhcm1hblJobyBTcGVjaWVzRGF0YSBTcGVjaWZpY2l0eUdvYWwgU3BlY3RyYWxMaW5lRGF0YSBTcGVjdHJvZ3JhbSBTcGVjdHJvZ3JhbUFycmF5IFNwZWN1bGFyaXR5IFNwZWVjaFJlY29nbml6ZSBTcGVlY2hTeW50aGVzaXplIFNwZWxsaW5nQ29ycmVjdGlvbiBTcGVsbGluZ0NvcnJlY3Rpb25MaXN0IFNwZWxsaW5nRGljdGlvbmFyaWVzIFNwZWxsaW5nRGljdGlvbmFyaWVzUGF0aCBTcGVsbGluZ09wdGlvbnMgU3BlbGxpbmdTdWdnZXN0aW9uc1BhY2tldCBTcGhlcmUgU3BoZXJlQm94IFNwaGVyZVBvaW50cyBTcGhlcmljYWxCZXNzZWxKIFNwaGVyaWNhbEJlc3NlbFkgU3BoZXJpY2FsSGFua2VsSDEgU3BoZXJpY2FsSGFua2VsSDIgU3BoZXJpY2FsSGFybW9uaWNZIFNwaGVyaWNhbFBsb3QzRCBTcGhlcmljYWxSZWdpb24gU3BoZXJpY2FsU2hlbGwgU3BoZXJvaWRhbEVpZ2VudmFsdWUgU3BoZXJvaWRhbEpvaW5pbmdGYWN0b3IgU3BoZXJvaWRhbFBTIFNwaGVyb2lkYWxQU1ByaW1lIFNwaGVyb2lkYWxRUyBTcGhlcm9pZGFsUVNQcmltZSBTcGhlcm9pZGFsUmFkaWFsRmFjdG9yIFNwaGVyb2lkYWxTMSBTcGhlcm9pZGFsUzFQcmltZSBTcGhlcm9pZGFsUzIgU3BoZXJvaWRhbFMyUHJpbWUgU3BsaWNlIFNwbGljZWREaXN0cmlidXRpb24gU3BsaW5lQ2xvc2VkIFNwbGluZURlZ3JlZSBTcGxpbmVLbm90cyBTcGxpbmVXZWlnaHRzIFNwbGl0IFNwbGl0QnkgU3Bva2VuU3RyaW5nIFNxcnQgU3FydEJveCBTcXJ0Qm94T3B0aW9ucyBTcXVhcmUgU3F1YXJlZEV1Y2xpZGVhbkRpc3RhbmNlIFNxdWFyZUZyZWVRIFNxdWFyZUludGVyc2VjdGlvbiBTcXVhcmVNYXRyaXhRIFNxdWFyZVJlcGVhdGluZ0VsZW1lbnQgU3F1YXJlc1IgU3F1YXJlU3Vic2V0IFNxdWFyZVN1YnNldEVxdWFsIFNxdWFyZVN1cGVyc2V0IFNxdWFyZVN1cGVyc2V0RXF1YWwgU3F1YXJlVW5pb24gU3F1YXJlV2F2ZSBTU1NUcmlhbmdsZSBTdGFiaWxpdHlNYXJnaW5zIFN0YWJpbGl0eU1hcmdpbnNTdHlsZSBTdGFibGVEaXN0cmlidXRpb24gU3RhY2sgU3RhY2tCZWdpbiBTdGFja0NvbXBsZXRlIFN0YWNrZWREYXRlTGlzdFBsb3QgU3RhY2tlZExpc3RQbG90IFN0YWNrSW5oaWJpdCBTdGFkaXVtU2hhcGUgU3RhbmRhcmRBdG1vc3BoZXJlRGF0YSBTdGFuZGFyZERldmlhdGlvbiBTdGFuZGFyZERldmlhdGlvbkZpbHRlciBTdGFuZGFyZEZvcm0gU3RhbmRhcmRpemUgU3RhbmRhcmRpemVkIFN0YW5kYXJkT2NlYW5EYXRhIFN0YW5kYnlEaXN0cmlidXRpb24gU3RhciBTdGFyQ2x1c3RlckRhdGEgU3RhckRhdGEgU3RhckdyYXBoIFN0YXJ0QXN5bmNocm9ub3VzVGFzayBTdGFydEV4dGVybmFsU2Vzc2lvbiBTdGFydGluZ1N0ZXBTaXplIFN0YXJ0T2ZMaW5lIFN0YXJ0T2ZTdHJpbmcgU3RhcnRQcm9jZXNzIFN0YXJ0U2NoZWR1bGVkVGFzayBTdGFydHVwU291bmQgU3RhcnRXZWJTZXNzaW9uIFN0YXRlRGltZW5zaW9ucyBTdGF0ZUZlZWRiYWNrR2FpbnMgU3RhdGVPdXRwdXRFc3RpbWF0b3IgU3RhdGVSZXNwb25zZSBTdGF0ZVNwYWNlTW9kZWwgU3RhdGVTcGFjZVJlYWxpemF0aW9uIFN0YXRlU3BhY2VUcmFuc2Zvcm0gU3RhdGVUcmFuc2Zvcm1hdGlvbkxpbmVhcml6ZSBTdGF0aW9uYXJ5RGlzdHJpYnV0aW9uIFN0YXRpb25hcnlXYXZlbGV0UGFja2V0VHJhbnNmb3JtIFN0YXRpb25hcnlXYXZlbGV0VHJhbnNmb3JtIFN0YXR1c0FyZWEgU3RhdHVzQ2VudHJhbGl0eSBTdGVwTW9uaXRvciBTdGVyZW9jaGVtaXN0cnlFbGVtZW50cyBTdGllbHRqZXNHYW1tYSBTdGlybGluZ1MxIFN0aXJsaW5nUzIgU3RvcEFzeW5jaHJvbm91c1Rhc2sgU3RvcHBpbmdQb3dlckRhdGEgU3RvcFNjaGVkdWxlZFRhc2sgU3RyYXRhVmFyaWFibGVzIFN0cmF0b25vdmljaFByb2Nlc3MgU3RyZWFtQ29sb3JGdW5jdGlvbiBTdHJlYW1Db2xvckZ1bmN0aW9uU2NhbGluZyBTdHJlYW1EZW5zaXR5UGxvdCBTdHJlYW1NYXJrZXJzIFN0cmVhbVBsb3QgU3RyZWFtUG9pbnRzIFN0cmVhbVBvc2l0aW9uIFN0cmVhbXMgU3RyZWFtU2NhbGUgU3RyZWFtU3R5bGUgU3RyaW5nIFN0cmluZ0JyZWFrIFN0cmluZ0J5dGVDb3VudCBTdHJpbmdDYXNlcyBTdHJpbmdDb250YWluc1EgU3RyaW5nQ291bnQgU3RyaW5nRGVsZXRlIFN0cmluZ0Ryb3AgU3RyaW5nRW5kc1EgU3RyaW5nRXhwcmVzc2lvbiBTdHJpbmdFeHRyYWN0IFN0cmluZ0Zvcm0gU3RyaW5nRm9ybWF0IFN0cmluZ0ZyZWVRIFN0cmluZ0luc2VydCBTdHJpbmdKb2luIFN0cmluZ0xlbmd0aCBTdHJpbmdNYXRjaFEgU3RyaW5nUGFkTGVmdCBTdHJpbmdQYWRSaWdodCBTdHJpbmdQYXJ0IFN0cmluZ1BhcnRpdGlvbiBTdHJpbmdQb3NpdGlvbiBTdHJpbmdRIFN0cmluZ1JlcGVhdCBTdHJpbmdSZXBsYWNlIFN0cmluZ1JlcGxhY2VMaXN0IFN0cmluZ1JlcGxhY2VQYXJ0IFN0cmluZ1JldmVyc2UgU3RyaW5nUmlmZmxlIFN0cmluZ1JvdGF0ZUxlZnQgU3RyaW5nUm90YXRlUmlnaHQgU3RyaW5nU2tlbGV0b24gU3RyaW5nU3BsaXQgU3RyaW5nU3RhcnRzUSBTdHJpbmdUYWtlIFN0cmluZ1RlbXBsYXRlIFN0cmluZ1RvQnl0ZUFycmF5IFN0cmluZ1RvU3RyZWFtIFN0cmluZ1RyaW0gU3RyaXBCb3hlcyBTdHJpcE9uSW5wdXQgU3RyaXBXcmFwcGVyQm94ZXMgU3Ryb2tlRm9ybSBTdHJ1Y3R1cmFsSW1wb3J0YW5jZSBTdHJ1Y3R1cmVkQXJyYXkgU3RydWN0dXJlZFNlbGVjdGlvbiBTdHJ1dmVIIFN0cnV2ZUwgU3R1YiBTdHVkZW50VERpc3RyaWJ1dGlvbiBTdHlsZSBTdHlsZUJveCBTdHlsZUJveEF1dG9EZWxldGUgU3R5bGVEYXRhIFN0eWxlRGVmaW5pdGlvbnMgU3R5bGVGb3JtIFN0eWxlSGludHMgU3R5bGVLZXlNYXBwaW5nIFN0eWxlTWVudUxpc3RpbmcgU3R5bGVOYW1lRGlhbG9nU2V0dGluZ3MgU3R5bGVOYW1lcyBTdHlsZVByaW50IFN0eWxlU2hlZXRQYXRoIFN1YmRpdmlkZSBTdWJmYWN0b3JpYWwgU3ViZ3JhcGggU3ViTWludXMgU3ViUGx1cyBTdWJyZXN1bHRhbnRQb2x5bm9taWFsUmVtYWluZGVycyBTdWJyZXN1bHRhbnRQb2x5bm9taWFscyBTdWJyZXN1bHRhbnRzIFN1YnNjcmlwdCBTdWJzY3JpcHRCb3ggU3Vic2NyaXB0Qm94T3B0aW9ucyBTdWJzY3JpcHRlZCBTdWJzZXF1ZW5jZXMgU3Vic2V0IFN1YnNldEVxdWFsIFN1YnNldE1hcCBTdWJzZXRRIFN1YnNldHMgU3ViU3RhciBTdWJzdGl0dXRpb25TeXN0ZW0gU3Vic3VwZXJzY3JpcHQgU3Vic3VwZXJzY3JpcHRCb3ggU3Vic3VwZXJzY3JpcHRCb3hPcHRpb25zIFN1YnRyYWN0IFN1YnRyYWN0RnJvbSBTdWJ0cmFjdFNpZGVzIFN1YlZhbHVlcyBTdWNjZWVkcyBTdWNjZWVkc0VxdWFsIFN1Y2NlZWRzU2xhbnRFcXVhbCBTdWNjZWVkc1RpbGRlIFN1Y2Nlc3MgU3VjaFRoYXQgU3VtIFN1bUNvbnZlcmdlbmNlIFN1bW1hdGlvbkxheWVyIFN1bmRheSBTdW5Qb3NpdGlvbiBTdW5yaXNlIFN1bnNldCBTdXBlckRhZ2dlciBTdXBlck1pbnVzIFN1cGVybm92YURhdGEgU3VwZXJQbHVzIFN1cGVyc2NyaXB0IFN1cGVyc2NyaXB0Qm94IFN1cGVyc2NyaXB0Qm94T3B0aW9ucyBTdXBlcnNldCBTdXBlcnNldEVxdWFsIFN1cGVyU3RhciBTdXJkIFN1cmRGb3JtIFN1cmZhY2VBcmVhIFN1cmZhY2VDb2xvciBTdXJmYWNlRGF0YSBTdXJmYWNlR3JhcGhpY3MgU3Vydml2YWxEaXN0cmlidXRpb24gU3Vydml2YWxGdW5jdGlvbiBTdXJ2aXZhbE1vZGVsIFN1cnZpdmFsTW9kZWxGaXQgU3VzcGVuZFBhY2tldCBTdXp1a2lEaXN0cmlidXRpb24gU3V6dWtpR3JvdXBTdXogU3dhdGNoTGVnZW5kIFN3aXRjaCBTeW1ib2wgU3ltYm9sTmFtZSBTeW1sZXRXYXZlbGV0IFN5bW1ldHJpYyBTeW1tZXRyaWNHcm91cCBTeW1tZXRyaWNLZXkgU3ltbWV0cmljTWF0cml4USBTeW1tZXRyaWNQb2x5bm9taWFsIFN5bW1ldHJpY1JlZHVjdGlvbiBTeW1tZXRyaXplIFN5bW1ldHJpemVkQXJyYXkgU3ltbWV0cml6ZWRBcnJheVJ1bGVzIFN5bW1ldHJpemVkRGVwZW5kZW50Q29tcG9uZW50cyBTeW1tZXRyaXplZEluZGVwZW5kZW50Q29tcG9uZW50cyBTeW1tZXRyaXplZFJlcGxhY2VQYXJ0IFN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gU3luY2hyb25vdXNVcGRhdGluZyBTeW5vbnltcyBTeW50YXggU3ludGF4Rm9ybSBTeW50YXhJbmZvcm1hdGlvbiBTeW50YXhMZW5ndGggU3ludGF4UGFja2V0IFN5bnRheFEgU3ludGhlc2l6ZU1pc3NpbmdWYWx1ZXMgU3lzdGVtRGlhbG9nSW5wdXQgU3lzdGVtRXhjZXB0aW9uIFN5c3RlbUdldCBTeXN0ZW1IZWxwUGF0aCBTeXN0ZW1JbmZvcm1hdGlvbiBTeXN0ZW1JbmZvcm1hdGlvbkRhdGEgU3lzdGVtSW5zdGFsbCBTeXN0ZW1Nb2RlbCBTeXN0ZW1Nb2RlbGVyIFN5c3RlbU1vZGVsRXhhbXBsZXMgU3lzdGVtTW9kZWxMaW5lYXJpemUgU3lzdGVtTW9kZWxQYXJhbWV0cmljU2ltdWxhdGUgU3lzdGVtTW9kZWxQbG90IFN5c3RlbU1vZGVsUHJvZ3Jlc3NSZXBvcnRpbmcgU3lzdGVtTW9kZWxSZWxpYWJpbGl0eSBTeXN0ZW1Nb2RlbHMgU3lzdGVtTW9kZWxTaW11bGF0ZSBTeXN0ZW1Nb2RlbFNpbXVsYXRlU2Vuc2l0aXZpdHkgU3lzdGVtTW9kZWxTaW11bGF0aW9uRGF0YSBTeXN0ZW1PcGVuIFN5c3RlbU9wdGlvbnMgU3lzdGVtUHJvY2Vzc0RhdGEgU3lzdGVtUHJvY2Vzc2VzIFN5c3RlbXNDb25uZWN0aW9uc01vZGVsIFN5c3RlbXNNb2RlbERlbGF5IFN5c3RlbXNNb2RlbERlbGF5QXBwcm94aW1hdGUgU3lzdGVtc01vZGVsRGVsZXRlIFN5c3RlbXNNb2RlbERpbWVuc2lvbnMgU3lzdGVtc01vZGVsRXh0cmFjdCBTeXN0ZW1zTW9kZWxGZWVkYmFja0Nvbm5lY3QgU3lzdGVtc01vZGVsTGFiZWxzIFN5c3RlbXNNb2RlbExpbmVhcml0eSBTeXN0ZW1zTW9kZWxNZXJnZSBTeXN0ZW1zTW9kZWxPcmRlciBTeXN0ZW1zTW9kZWxQYXJhbGxlbENvbm5lY3QgU3lzdGVtc01vZGVsU2VyaWVzQ29ubmVjdCBTeXN0ZW1zTW9kZWxTdGF0ZUZlZWRiYWNrQ29ubmVjdCBTeXN0ZW1zTW9kZWxWZWN0b3JSZWxhdGl2ZU9yZGVycyBTeXN0ZW1TdHViIFN5c3RlbVRlc3QnICtcbiAgICAgICdUYWIgVGFiRmlsbGluZyBUYWJsZSBUYWJsZUFsaWdubWVudHMgVGFibGVEZXB0aCBUYWJsZURpcmVjdGlvbnMgVGFibGVGb3JtIFRhYmxlSGVhZGluZ3MgVGFibGVTcGFjaW5nIFRhYmxlVmlldyBUYWJsZVZpZXdCb3ggVGFibGVWaWV3Qm94QmFja2dyb3VuZCBUYWJsZVZpZXdCb3hPcHRpb25zIFRhYlNwYWNpbmdzIFRhYlZpZXcgVGFiVmlld0JveCBUYWJWaWV3Qm94T3B0aW9ucyBUYWdCb3ggVGFnQm94Tm90ZSBUYWdCb3hPcHRpb25zIFRhZ2dpbmdSdWxlcyBUYWdTZXQgVGFnU2V0RGVsYXllZCBUYWdTdHlsZSBUYWdVbnNldCBUYWtlIFRha2VEcm9wIFRha2VMYXJnZXN0IFRha2VMYXJnZXN0QnkgVGFrZUxpc3QgVGFrZVNtYWxsZXN0IFRha2VTbWFsbGVzdEJ5IFRha2VXaGlsZSBUYWxseSBUYW4gVGFuaCBUYXJnZXREZXZpY2UgVGFyZ2V0RnVuY3Rpb25zIFRhcmdldFN5c3RlbSBUYXJnZXRVbml0cyBUYXNrQWJvcnQgVGFza0V4ZWN1dGUgVGFza09iamVjdCBUYXNrUmVtb3ZlIFRhc2tSZXN1bWUgVGFza3MgVGFza1N1c3BlbmQgVGFza1dhaXQgVGF1dG9sb2d5USBUZWxlZ3JhcGhQcm9jZXNzIFRlbXBsYXRlQXBwbHkgVGVtcGxhdGVBcmdCb3ggVGVtcGxhdGVCb3ggVGVtcGxhdGVCb3hPcHRpb25zIFRlbXBsYXRlRXZhbHVhdGUgVGVtcGxhdGVFeHByZXNzaW9uIFRlbXBsYXRlSWYgVGVtcGxhdGVPYmplY3QgVGVtcGxhdGVTZXF1ZW5jZSBUZW1wbGF0ZVNsb3QgVGVtcGxhdGVTbG90U2VxdWVuY2UgVGVtcGxhdGVVbmV2YWx1YXRlZCBUZW1wbGF0ZVZlcmJhdGltIFRlbXBsYXRlV2l0aCBUZW1wb3JhbERhdGEgVGVtcG9yYWxSZWd1bGFyaXR5IFRlbXBvcmFyeSBUZW1wb3JhcnlWYXJpYWJsZSBUZW5zb3JDb250cmFjdCBUZW5zb3JEaW1lbnNpb25zIFRlbnNvckV4cGFuZCBUZW5zb3JQcm9kdWN0IFRlbnNvclEgVGVuc29yUmFuayBUZW5zb3JSZWR1Y2UgVGVuc29yU3ltbWV0cnkgVGVuc29yVHJhbnNwb3NlIFRlbnNvcldlZGdlIFRlc3RJRCBUZXN0UmVwb3J0IFRlc3RSZXBvcnRPYmplY3QgVGVzdFJlc3VsdE9iamVjdCBUZXRyYWhlZHJvbiBUZXRyYWhlZHJvbkJveCBUZXRyYWhlZHJvbkJveE9wdGlvbnMgVGVYRm9ybSBUZVhTYXZlIFRleHQgVGV4dDNEQm94IFRleHQzREJveE9wdGlvbnMgVGV4dEFsaWdubWVudCBUZXh0QmFuZCBUZXh0Qm91bmRpbmdCb3ggVGV4dEJveCBUZXh0Q2FzZXMgVGV4dENlbGwgVGV4dENsaXBib2FyZFR5cGUgVGV4dENvbnRlbnRzIFRleHREYXRhIFRleHRFbGVtZW50IFRleHRGb3JtIFRleHRHcmlkIFRleHRKdXN0aWZpY2F0aW9uIFRleHRMaW5lIFRleHRQYWNrZXQgVGV4dFBhcmFncmFwaCBUZXh0UG9zaXRpb24gVGV4dFJlY29nbml6ZSBUZXh0U2VhcmNoIFRleHRTZWFyY2hSZXBvcnQgVGV4dFNlbnRlbmNlcyBUZXh0U3RyaW5nIFRleHRTdHJ1Y3R1cmUgVGV4dFN0eWxlIFRleHRUcmFuc2xhdGlvbiBUZXh0dXJlIFRleHR1cmVDb29yZGluYXRlRnVuY3Rpb24gVGV4dHVyZUNvb3JkaW5hdGVTY2FsaW5nIFRleHRXb3JkcyBUaGVyZWZvcmUgVGhlcm1vZHluYW1pY0RhdGEgVGhlcm1vbWV0ZXJHYXVnZSBUaGljayBUaGlja25lc3MgVGhpbiBUaGlubmluZyBUaGlzTGluayBUaG9tcHNvbkdyb3VwVGggVGhyZWFkIFRocmVhZGluZ0xheWVyIFRocmVlSlN5bWJvbCBUaHJlc2hvbGQgVGhyb3VnaCBUaHJvdyBUaHVlTW9yc2UgVGh1bWJuYWlsIFRodXJzZGF5IFRpY2tzIFRpY2tzU3R5bGUgVGlkZURhdGEgVGlsZGUgVGlsZGVFcXVhbCBUaWxkZUZ1bGxFcXVhbCBUaWxkZVRpbGRlIFRpbWVDb25zdHJhaW5lZCBUaW1lQ29uc3RyYWludCBUaW1lRGlyZWN0aW9uIFRpbWVGb3JtYXQgVGltZUdvYWwgVGltZWxpbmVQbG90IFRpbWVPYmplY3QgVGltZU9iamVjdFEgVGltZXMgVGltZXNCeSBUaW1lU2VyaWVzIFRpbWVTZXJpZXNBZ2dyZWdhdGUgVGltZVNlcmllc0ZvcmVjYXN0IFRpbWVTZXJpZXNJbnNlcnQgVGltZVNlcmllc0ludmVydGliaWxpdHkgVGltZVNlcmllc01hcCBUaW1lU2VyaWVzTWFwVGhyZWFkIFRpbWVTZXJpZXNNb2RlbCBUaW1lU2VyaWVzTW9kZWxGaXQgVGltZVNlcmllc1Jlc2FtcGxlIFRpbWVTZXJpZXNSZXNjYWxlIFRpbWVTZXJpZXNTaGlmdCBUaW1lU2VyaWVzVGhyZWFkIFRpbWVTZXJpZXNXaW5kb3cgVGltZVVzZWQgVGltZVZhbHVlIFRpbWVXYXJwaW5nQ29ycmVzcG9uZGVuY2UgVGltZVdhcnBpbmdEaXN0YW5jZSBUaW1lWm9uZSBUaW1lWm9uZUNvbnZlcnQgVGltZVpvbmVPZmZzZXQgVGltaW5nIFRpbnkgVGl0bGVHcm91cGluZyBUaXRzR3JvdXBUIFRvQm94ZXMgVG9DaGFyYWN0ZXJDb2RlIFRvQ29sb3IgVG9Db250aW51b3VzVGltZU1vZGVsIFRvRGF0ZSBUb2RheSBUb0Rpc2NyZXRlVGltZU1vZGVsIFRvRW50aXR5IFRvZXBsaXR6TWF0cml4IFRvRXhwcmVzc2lvbiBUb0ZpbGVOYW1lIFRvZ2V0aGVyIFRvZ2dsZSBUb2dnbGVGYWxzZSBUb2dnbGVyIFRvZ2dsZXJCYXIgVG9nZ2xlckJveCBUb2dnbGVyQm94T3B0aW9ucyBUb0hlbGRFeHByZXNzaW9uIFRvSW52ZXJ0aWJsZVRpbWVTZXJpZXMgVG9rZW5Xb3JkcyBUb2xlcmFuY2UgVG9Mb3dlckNhc2UgVG9tb3Jyb3cgVG9OdW1iZXJGaWVsZCBUb29CaWcgVG9vbHRpcCBUb29sdGlwQm94IFRvb2x0aXBCb3hPcHRpb25zIFRvb2x0aXBEZWxheSBUb29sdGlwU3R5bGUgVG9wIFRvcEhhdFRyYW5zZm9ybSBUb1BvbGFyQ29vcmRpbmF0ZXMgVG9wb2xvZ2ljYWxTb3J0IFRvUmFkaWNhbHMgVG9SdWxlcyBUb1NwaGVyaWNhbENvb3JkaW5hdGVzIFRvU3RyaW5nIFRvdGFsIFRvdGFsSGVpZ2h0IFRvdGFsTGF5ZXIgVG90YWxWYXJpYXRpb25GaWx0ZXIgVG90YWxXaWR0aCBUb3VjaFBvc2l0aW9uIFRvdWNoc2NyZWVuQXV0b1pvb20gVG91Y2hzY3JlZW5Db250cm9sUGxhY2VtZW50IFRvVXBwZXJDYXNlIFRyIFRyYWNlIFRyYWNlQWJvdmUgVHJhY2VBY3Rpb24gVHJhY2VCYWNrd2FyZCBUcmFjZURlcHRoIFRyYWNlRGlhbG9nIFRyYWNlRm9yd2FyZCBUcmFjZUludGVybmFsIFRyYWNlTGV2ZWwgVHJhY2VPZmYgVHJhY2VPbiBUcmFjZU9yaWdpbmFsIFRyYWNlUHJpbnQgVHJhY2VTY2FuIFRyYWNrZWRTeW1ib2xzIFRyYWNraW5nRnVuY3Rpb24gVHJhY3lXaWRvbURpc3RyaWJ1dGlvbiBUcmFkaW5nQ2hhcnQgVHJhZGl0aW9uYWxGb3JtIFRyYWRpdGlvbmFsRnVuY3Rpb25Ob3RhdGlvbiBUcmFkaXRpb25hbE5vdGF0aW9uIFRyYWRpdGlvbmFsT3JkZXIgVHJhaW5pbmdQcm9ncmVzc0NoZWNrcG9pbnRpbmcgVHJhaW5pbmdQcm9ncmVzc0Z1bmN0aW9uIFRyYWluaW5nUHJvZ3Jlc3NNZWFzdXJlbWVudHMgVHJhaW5pbmdQcm9ncmVzc1JlcG9ydGluZyBUcmFpbmluZ1N0b3BwaW5nQ3JpdGVyaW9uIFRyYW5zZmVyRnVuY3Rpb25DYW5jZWwgVHJhbnNmZXJGdW5jdGlvbkV4cGFuZCBUcmFuc2ZlckZ1bmN0aW9uRmFjdG9yIFRyYW5zZmVyRnVuY3Rpb25Nb2RlbCBUcmFuc2ZlckZ1bmN0aW9uUG9sZXMgVHJhbnNmZXJGdW5jdGlvblRyYW5zZm9ybSBUcmFuc2ZlckZ1bmN0aW9uWmVyb3MgVHJhbnNmb3JtYXRpb25DbGFzcyBUcmFuc2Zvcm1hdGlvbkZ1bmN0aW9uIFRyYW5zZm9ybWF0aW9uRnVuY3Rpb25zIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWVkRGlzdHJpYnV0aW9uIFRyYW5zZm9ybWVkRmllbGQgVHJhbnNmb3JtZWRQcm9jZXNzIFRyYW5zZm9ybWVkUmVnaW9uIFRyYW5zaXRpb25EaXJlY3Rpb24gVHJhbnNpdGlvbkR1cmF0aW9uIFRyYW5zaXRpb25FZmZlY3QgVHJhbnNpdGl2ZUNsb3N1cmVHcmFwaCBUcmFuc2l0aXZlUmVkdWN0aW9uR3JhcGggVHJhbnNsYXRlIFRyYW5zbGF0aW9uT3B0aW9ucyBUcmFuc2xhdGlvblRyYW5zZm9ybSBUcmFuc2xpdGVyYXRlIFRyYW5zcGFyZW50IFRyYW5zcGFyZW50Q29sb3IgVHJhbnNwb3NlIFRyYW5zcG9zZUxheWVyIFRyYXBTZWxlY3Rpb24gVHJhdmVsRGlyZWN0aW9ucyBUcmF2ZWxEaXJlY3Rpb25zRGF0YSBUcmF2ZWxEaXN0YW5jZSBUcmF2ZWxEaXN0YW5jZUxpc3QgVHJhdmVsTWV0aG9kIFRyYXZlbFRpbWUgVHJlZUZvcm0gVHJlZUdyYXBoIFRyZWVHcmFwaFEgVHJlZVBsb3QgVHJlbmRTdHlsZSBUcmlhbmdsZSBUcmlhbmdsZUNlbnRlciBUcmlhbmdsZUNvbnN0cnVjdCBUcmlhbmdsZU1lYXN1cmVtZW50IFRyaWFuZ2xlV2F2ZSBUcmlhbmd1bGFyRGlzdHJpYnV0aW9uIFRyaWFuZ3VsYXRlTWVzaCBUcmlnIFRyaWdFeHBhbmQgVHJpZ0ZhY3RvciBUcmlnRmFjdG9yTGlzdCBUcmlnZ2VyIFRyaWdSZWR1Y2UgVHJpZ1RvRXhwIFRyaW1tZWRNZWFuIFRyaW1tZWRWYXJpYW5jZSBUcm9waWNhbFN0b3JtRGF0YSBUcnVlIFRydWVRIFRydW5jYXRlZERpc3RyaWJ1dGlvbiBUcnVuY2F0ZWRQb2x5aGVkcm9uIFRzYWxsaXNRRXhwb25lbnRpYWxEaXN0cmlidXRpb24gVHNhbGxpc1FHYXVzc2lhbkRpc3RyaWJ1dGlvbiBUVGVzdCBUdWJlIFR1YmVCZXppZXJDdXJ2ZUJveCBUdWJlQmV6aWVyQ3VydmVCb3hPcHRpb25zIFR1YmVCb3ggVHViZUJveE9wdGlvbnMgVHViZUJTcGxpbmVDdXJ2ZUJveCBUdWJlQlNwbGluZUN1cnZlQm94T3B0aW9ucyBUdWVzZGF5IFR1a2V5TGFtYmRhRGlzdHJpYnV0aW9uIFR1a2V5V2luZG93IFR1bm5lbERhdGEgVHVwbGVzIFR1cmFuR3JhcGggVHVyaW5nTWFjaGluZSBUdXR0ZVBvbHlub21pYWwgVHdvV2F5UnVsZSBUeXBlZCBUeXBlU3BlY2lmaWVyJyArXG4gICAgICAnVW5hdGVRIFVuY29tcHJlc3MgVW5jb25zdHJhaW5lZFBhcmFtZXRlcnMgVW5kZWZpbmVkIFVuZGVyQmFyIFVuZGVyZmxvdyBVbmRlcmxpbmVkIFVuZGVyb3ZlcnNjcmlwdCBVbmRlcm92ZXJzY3JpcHRCb3ggVW5kZXJvdmVyc2NyaXB0Qm94T3B0aW9ucyBVbmRlcnNjcmlwdCBVbmRlcnNjcmlwdEJveCBVbmRlcnNjcmlwdEJveE9wdGlvbnMgVW5kZXJzZWFGZWF0dXJlRGF0YSBVbmRpcmVjdGVkRWRnZSBVbmRpcmVjdGVkR3JhcGggVW5kaXJlY3RlZEdyYXBoUSBVbmRvT3B0aW9ucyBVbmRvVHJhY2tlZFZhcmlhYmxlcyBVbmVxdWFsIFVuZXF1YWxUbyBVbmV2YWx1YXRlZCBVbmlmb3JtRGlzdHJpYnV0aW9uIFVuaWZvcm1HcmFwaERpc3RyaWJ1dGlvbiBVbmlmb3JtUG9seWhlZHJvbiBVbmlmb3JtU3VtRGlzdHJpYnV0aW9uIFVuaW5zdGFsbCBVbmlvbiBVbmlvblBsdXMgVW5pcXVlIFVuaXRhcnlNYXRyaXhRIFVuaXRCb3ggVW5pdENvbnZlcnQgVW5pdERpbWVuc2lvbnMgVW5pdGl6ZSBVbml0Um9vdFRlc3QgVW5pdFNpbXBsaWZ5IFVuaXRTdGVwIFVuaXRTeXN0ZW0gVW5pdFRyaWFuZ2xlIFVuaXRWZWN0b3IgVW5pdFZlY3RvckxheWVyIFVuaXR5RGltZW5zaW9ucyBVbml2ZXJzZU1vZGVsRGF0YSBVbml2ZXJzaXR5RGF0YSBVbml4VGltZSBVbnByb3RlY3QgVW5yZWdpc3RlckV4dGVybmFsRXZhbHVhdG9yIFVuc2FtZVEgVW5zYXZlZFZhcmlhYmxlcyBVbnNldCBVbnNldFNoYXJlZCBVbnRyYWNrZWRWYXJpYWJsZXMgVXAgVXBBcnJvdyBVcEFycm93QmFyIFVwQXJyb3dEb3duQXJyb3cgVXBkYXRlIFVwZGF0ZUR5bmFtaWNPYmplY3RzIFVwZGF0ZUR5bmFtaWNPYmplY3RzU3luY2hyb25vdXMgVXBkYXRlSW50ZXJ2YWwgVXBkYXRlU2VhcmNoSW5kZXggVXBEb3duQXJyb3cgVXBFcXVpbGlicml1bSBVcHBlckNhc2VRIFVwcGVyTGVmdEFycm93IFVwcGVyUmlnaHRBcnJvdyBVcHBlclRyaWFuZ3VsYXJpemUgVXBwZXJUcmlhbmd1bGFyTWF0cml4USBVcHNhbXBsZSBVcFNldCBVcFNldERlbGF5ZWQgVXBUZWUgVXBUZWVBcnJvdyBVcFRvIFVwVmFsdWVzIFVSTCBVUkxCdWlsZCBVUkxEZWNvZGUgVVJMRGlzcGF0Y2hlciBVUkxEb3dubG9hZCBVUkxEb3dubG9hZFN1Ym1pdCBVUkxFbmNvZGUgVVJMRXhlY3V0ZSBVUkxFeHBhbmQgVVJMRmV0Y2ggVVJMRmV0Y2hBc3luY2hyb25vdXMgVVJMUGFyc2UgVVJMUXVlcnlEZWNvZGUgVVJMUXVlcnlFbmNvZGUgVVJMUmVhZCBVUkxSZXNwb25zZVRpbWUgVVJMU2F2ZSBVUkxTYXZlQXN5bmNocm9ub3VzIFVSTFNob3J0ZW4gVVJMU3VibWl0IFVzZUdyYXBoaWNzUmFuZ2UgVXNlckRlZmluZWRXYXZlbGV0IFVzaW5nIFVzaW5nRnJvbnRFbmQgVXRpbGl0eUZ1bmN0aW9uJyArXG4gICAgICAnVjJHZXQgVmFsZW5jZUVycm9ySGFuZGxpbmcgVmFsaWRhdGlvbkxlbmd0aCBWYWxpZGF0aW9uU2V0IFZhbHVlIFZhbHVlQm94IFZhbHVlQm94T3B0aW9ucyBWYWx1ZURpbWVuc2lvbnMgVmFsdWVGb3JtIFZhbHVlUHJlcHJvY2Vzc2luZ0Z1bmN0aW9uIFZhbHVlUSBWYWx1ZXMgVmFsdWVzRGF0YSBWYXJpYWJsZXMgVmFyaWFuY2UgVmFyaWFuY2VFcXVpdmFsZW5jZVRlc3QgVmFyaWFuY2VFc3RpbWF0b3JGdW5jdGlvbiBWYXJpYW5jZUdhbW1hRGlzdHJpYnV0aW9uIFZhcmlhbmNlVGVzdCBWZWN0b3JBbmdsZSBWZWN0b3JBcm91bmQgVmVjdG9yQ29sb3JGdW5jdGlvbiBWZWN0b3JDb2xvckZ1bmN0aW9uU2NhbGluZyBWZWN0b3JEZW5zaXR5UGxvdCBWZWN0b3JHbHlwaERhdGEgVmVjdG9yR3JlYXRlciBWZWN0b3JHcmVhdGVyRXF1YWwgVmVjdG9yTGVzcyBWZWN0b3JMZXNzRXF1YWwgVmVjdG9yTWFya2VycyBWZWN0b3JQbG90IFZlY3RvclBsb3QzRCBWZWN0b3JQb2ludHMgVmVjdG9yUSBWZWN0b3JzIFZlY3RvclNjYWxlIFZlY3RvclN0eWxlIFZlZSBWZXJiYXRpbSBWZXJib3NlIFZlcmJvc2VDb252ZXJ0VG9Qb3N0U2NyaXB0UGFja2V0IFZlcmlmaWNhdGlvblRlc3QgVmVyaWZ5Q29udmVyZ2VuY2UgVmVyaWZ5RGVyaXZlZEtleSBWZXJpZnlEaWdpdGFsU2lnbmF0dXJlIFZlcmlmeUludGVycHJldGF0aW9uIFZlcmlmeVNlY3VyaXR5Q2VydGlmaWNhdGVzIFZlcmlmeVNvbHV0aW9ucyBWZXJpZnlUZXN0QXNzdW1wdGlvbnMgVmVyc2lvbiBWZXJzaW9uTnVtYmVyIFZlcnRleEFkZCBWZXJ0ZXhDYXBhY2l0eSBWZXJ0ZXhDb2xvcnMgVmVydGV4Q29tcG9uZW50IFZlcnRleENvbm5lY3Rpdml0eSBWZXJ0ZXhDb250cmFjdCBWZXJ0ZXhDb29yZGluYXRlUnVsZXMgVmVydGV4Q29vcmRpbmF0ZXMgVmVydGV4Q29ycmVsYXRpb25TaW1pbGFyaXR5IFZlcnRleENvc2luZVNpbWlsYXJpdHkgVmVydGV4Q291bnQgVmVydGV4Q292ZXJRIFZlcnRleERhdGFDb29yZGluYXRlcyBWZXJ0ZXhEZWdyZWUgVmVydGV4RGVsZXRlIFZlcnRleERpY2VTaW1pbGFyaXR5IFZlcnRleEVjY2VudHJpY2l0eSBWZXJ0ZXhJbkNvbXBvbmVudCBWZXJ0ZXhJbkRlZ3JlZSBWZXJ0ZXhJbmRleCBWZXJ0ZXhKYWNjYXJkU2ltaWxhcml0eSBWZXJ0ZXhMYWJlbGluZyBWZXJ0ZXhMYWJlbHMgVmVydGV4TGFiZWxTdHlsZSBWZXJ0ZXhMaXN0IFZlcnRleE5vcm1hbHMgVmVydGV4T3V0Q29tcG9uZW50IFZlcnRleE91dERlZ3JlZSBWZXJ0ZXhRIFZlcnRleFJlbmRlcmluZ0Z1bmN0aW9uIFZlcnRleFJlcGxhY2UgVmVydGV4U2hhcGUgVmVydGV4U2hhcGVGdW5jdGlvbiBWZXJ0ZXhTaXplIFZlcnRleFN0eWxlIFZlcnRleFRleHR1cmVDb29yZGluYXRlcyBWZXJ0ZXhXZWlnaHQgVmVydGV4V2VpZ2h0ZWRHcmFwaFEgVmVydGljYWwgVmVydGljYWxCYXIgVmVydGljYWxGb3JtIFZlcnRpY2FsR2F1Z2UgVmVydGljYWxTZXBhcmF0b3IgVmVydGljYWxTbGlkZXIgVmVydGljYWxUaWxkZSBWaWV3QW5nbGUgVmlld0NlbnRlciBWaWV3TWF0cml4IFZpZXdQb2ludCBWaWV3UG9pbnRTZWxlY3RvclNldHRpbmdzIFZpZXdQb3J0IFZpZXdQcm9qZWN0aW9uIFZpZXdSYW5nZSBWaWV3VmVjdG9yIFZpZXdWZXJ0aWNhbCBWaXJ0dWFsR3JvdXBEYXRhIFZpc2libGUgVmlzaWJsZUNlbGwgVm9pY2VTdHlsZURhdGEgVm9pZ3REaXN0cmlidXRpb24gVm9sY2Fub0RhdGEgVm9sdW1lIFZvbk1pc2VzRGlzdHJpYnV0aW9uIFZvcm9ub2lNZXNoJyArXG4gICAgICAnV2FpdEFsbCBXYWl0QXN5bmNocm9ub3VzVGFzayBXYWl0TmV4dCBXYWl0VW50aWwgV2FrZWJ5RGlzdHJpYnV0aW9uIFdhbGxlbml1c0h5cGVyZ2VvbWV0cmljRGlzdHJpYnV0aW9uIFdhcmluZ1l1bGVEaXN0cmlidXRpb24gV2FycGluZ0NvcnJlc3BvbmRlbmNlIFdhcnBpbmdEaXN0YW5jZSBXYXRlcnNoZWRDb21wb25lbnRzIFdhdHNvblVTcXVhcmVUZXN0IFdhdHRzU3Ryb2dhdHpHcmFwaERpc3RyaWJ1dGlvbiBXYXZlbGV0QmVzdEJhc2lzIFdhdmVsZXRGaWx0ZXJDb2VmZmljaWVudHMgV2F2ZWxldEltYWdlUGxvdCBXYXZlbGV0TGlzdFBsb3QgV2F2ZWxldE1hcEluZGV4ZWQgV2F2ZWxldE1hdHJpeFBsb3QgV2F2ZWxldFBoaSBXYXZlbGV0UHNpIFdhdmVsZXRTY2FsZSBXYXZlbGV0U2NhbG9ncmFtIFdhdmVsZXRUaHJlc2hvbGQgV2Vha2x5Q29ubmVjdGVkQ29tcG9uZW50cyBXZWFrbHlDb25uZWN0ZWRHcmFwaENvbXBvbmVudHMgV2Vha2x5Q29ubmVjdGVkR3JhcGhRIFdlYWtTdGF0aW9uYXJpdHkgV2VhdGhlckRhdGEgV2VhdGhlckZvcmVjYXN0RGF0YSBXZWJBdWRpb1NlYXJjaCBXZWJFbGVtZW50T2JqZWN0IFdlYmVyRSBXZWJFeGVjdXRlIFdlYkltYWdlIFdlYkltYWdlU2VhcmNoIFdlYlNlYXJjaCBXZWJTZXNzaW9uT2JqZWN0IFdlYlNlc3Npb25zIFdlYldpbmRvd09iamVjdCBXZWRnZSBXZWRuZXNkYXkgV2VpYnVsbERpc3RyaWJ1dGlvbiBXZWllcnN0cmFzc0UxIFdlaWVyc3RyYXNzRTIgV2VpZXJzdHJhc3NFMyBXZWllcnN0cmFzc0V0YTEgV2VpZXJzdHJhc3NFdGEyIFdlaWVyc3RyYXNzRXRhMyBXZWllcnN0cmFzc0hhbGZQZXJpb2RzIFdlaWVyc3RyYXNzSGFsZlBlcmlvZFcxIFdlaWVyc3RyYXNzSGFsZlBlcmlvZFcyIFdlaWVyc3RyYXNzSGFsZlBlcmlvZFczIFdlaWVyc3RyYXNzSW52YXJpYW50RzIgV2VpZXJzdHJhc3NJbnZhcmlhbnRHMyBXZWllcnN0cmFzc0ludmFyaWFudHMgV2VpZXJzdHJhc3NQIFdlaWVyc3RyYXNzUFByaW1lIFdlaWVyc3RyYXNzU2lnbWEgV2VpZXJzdHJhc3NaZXRhIFdlaWdodGVkQWRqYWNlbmN5R3JhcGggV2VpZ2h0ZWRBZGphY2VuY3lNYXRyaXggV2VpZ2h0ZWREYXRhIFdlaWdodGVkR3JhcGhRIFdlaWdodHMgV2VsY2hXaW5kb3cgV2hlZWxHcmFwaCBXaGVuRXZlbnQgV2hpY2ggV2hpbGUgV2hpdGUgV2hpdGVOb2lzZVByb2Nlc3MgV2hpdGVQb2ludCBXaGl0ZXNwYWNlIFdoaXRlc3BhY2VDaGFyYWN0ZXIgV2hpdHRha2VyTSBXaGl0dGFrZXJXIFdpZW5lckZpbHRlciBXaWVuZXJQcm9jZXNzIFdpZ25lckQgV2lnbmVyU2VtaWNpcmNsZURpc3RyaWJ1dGlvbiBXaWtpcGVkaWFEYXRhIFdpa2lwZWRpYVNlYXJjaCBXaWxrc1cgV2lsa3NXVGVzdCBXaW5kRGlyZWN0aW9uRGF0YSBXaW5kaW5nQ291bnQgV2luZGluZ1BvbHlnb24gV2luZG93Q2xpY2tTZWxlY3QgV2luZG93RWxlbWVudHMgV2luZG93RmxvYXRpbmcgV2luZG93RnJhbWUgV2luZG93RnJhbWVFbGVtZW50cyBXaW5kb3dNYXJnaW5zIFdpbmRvd01vdmFibGUgV2luZG93T3BhY2l0eSBXaW5kb3dQZXJzaXN0ZW50U3R5bGVzIFdpbmRvd1NlbGVjdGVkIFdpbmRvd1NpemUgV2luZG93U3RhdHVzQXJlYSBXaW5kb3dUaXRsZSBXaW5kb3dUb29sYmFycyBXaW5kb3dXaWR0aCBXaW5kU3BlZWREYXRhIFdpbmRWZWN0b3JEYXRhIFdpbnNvcml6ZWRNZWFuIFdpbnNvcml6ZWRWYXJpYW5jZSBXaXNoYXJ0TWF0cml4RGlzdHJpYnV0aW9uIFdpdGggV29sZnJhbUFscGhhIFdvbGZyYW1BbHBoYURhdGUgV29sZnJhbUFscGhhUXVhbnRpdHkgV29sZnJhbUFscGhhUmVzdWx0IFdvbGZyYW1MYW5ndWFnZURhdGEgV29yZCBXb3JkQm91bmRhcnkgV29yZENoYXJhY3RlciBXb3JkQ2xvdWQgV29yZENvdW50IFdvcmRDb3VudHMgV29yZERhdGEgV29yZERlZmluaXRpb24gV29yZEZyZXF1ZW5jeSBXb3JkRnJlcXVlbmN5RGF0YSBXb3JkTGlzdCBXb3JkT3JpZW50YXRpb24gV29yZFNlYXJjaCBXb3JkU2VsZWN0aW9uRnVuY3Rpb24gV29yZFNlcGFyYXRvcnMgV29yZFNwYWNpbmdzIFdvcmRTdGVtIFdvcmRUcmFuc2xhdGlvbiBXb3JraW5nUHJlY2lzaW9uIFdyYXBBcm91bmQgV3JpdGUgV3JpdGVMaW5lIFdyaXRlU3RyaW5nIFdyb25za2lhbicgK1xuICAgICAgJ1hNTEVsZW1lbnQgWE1MT2JqZWN0IFhNTFRlbXBsYXRlIFhub3IgWG9yIFhZWkNvbG9yJyArXG4gICAgICAnWWVsbG93IFllc3RlcmRheSBZdWxlRGlzc2ltaWxhcml0eScgK1xuICAgICAgJ1plcm5pa2VSIFplcm9TeW1tZXRyaWMgWmVyb1Rlc3QgWmVyb1dpZHRoVGltZXMgWmV0YSBaZXRhWmVybyBaSVBDb2RlRGF0YSBaaXBmRGlzdHJpYnV0aW9uIFpvb21DZW50ZXIgWm9vbUZhY3RvciBaVGVzdCBaVHJhbnNmb3JtJyArXG4gICAgICAnJEFib3J0ZWQgJEFjdGl2YXRpb25Hcm91cElEICRBY3RpdmF0aW9uS2V5ICRBY3RpdmF0aW9uVXNlclJlZ2lzdGVyZWQgJEFkZE9uc0RpcmVjdG9yeSAkQWxsb3dFeHRlcm5hbENoYW5uZWxGdW5jdGlvbnMgJEFzc2VydEZ1bmN0aW9uICRBc3N1bXB0aW9ucyAkQXN5bmNocm9ub3VzVGFzayAkQXVkaW9JbnB1dERldmljZXMgJEF1ZGlvT3V0cHV0RGV2aWNlcyAkQmFzZURpcmVjdG9yeSAkQmF0Y2hJbnB1dCAkQmF0Y2hPdXRwdXQgJEJsb2NrY2hhaW5CYXNlICRCb3hGb3JtcyAkQnl0ZU9yZGVyaW5nICRDYWNoZUJhc2VEaXJlY3RvcnkgJENhbmNlbGVkICRDaGFubmVsQmFzZSAkQ2hhcmFjdGVyRW5jb2RpbmcgJENoYXJhY3RlckVuY29kaW5ncyAkQ2xvdWRCYXNlICRDbG91ZENvbm5lY3RlZCAkQ2xvdWRDcmVkaXRzQXZhaWxhYmxlICRDbG91ZEV2YWx1YXRpb24gJENsb3VkRXhwcmVzc2lvbkJhc2UgJENsb3VkT2JqZWN0TmFtZUZvcm1hdCAkQ2xvdWRPYmplY3RVUkxUeXBlICRDbG91ZFJvb3REaXJlY3RvcnkgJENsb3VkU3ltYm9sQmFzZSAkQ2xvdWRVc2VySUQgJENsb3VkVXNlclVVSUQgJENsb3VkVmVyc2lvbiAkQ2xvdWRWZXJzaW9uTnVtYmVyICRDbG91ZFdvbGZyYW1FbmdpbmVWZXJzaW9uTnVtYmVyICRDb21tYW5kTGluZSAkQ29tcGlsYXRpb25UYXJnZXQgJENvbmRpdGlvbkhvbGQgJENvbmZpZ3VyZWRLZXJuZWxzICRDb250ZXh0ICRDb250ZXh0UGF0aCAkQ29udHJvbEFjdGl2ZVNldHRpbmcgJENvb2tpZXMgJENvb2tpZVN0b3JlICRDcmVhdGlvbkRhdGUgJEN1cnJlbnRMaW5rICRDdXJyZW50VGFzayAkQ3VycmVudFdlYlNlc3Npb24gJERhdGVTdHJpbmdGb3JtYXQgJERlZmF1bHRBdWRpb0lucHV0RGV2aWNlICREZWZhdWx0QXVkaW9PdXRwdXREZXZpY2UgJERlZmF1bHRGb250ICREZWZhdWx0RnJvbnRFbmQgJERlZmF1bHRJbWFnaW5nRGV2aWNlICREZWZhdWx0TG9jYWxCYXNlICREZWZhdWx0TWFpbGJveCAkRGVmYXVsdE5ldHdvcmtJbnRlcmZhY2UgJERlZmF1bHRQYXRoICREaXNwbGF5ICREaXNwbGF5RnVuY3Rpb24gJERpc3RyaWJ1dGVkQ29udGV4dHMgJER5bmFtaWNFdmFsdWF0aW9uICRFY2hvICRFbWJlZENvZGVFbnZpcm9ubWVudHMgJEVtYmVkZGFibGVTZXJ2aWNlcyAkRW50aXR5U3RvcmVzICRFcGlsb2cgJEV2YWx1YXRpb25DbG91ZEJhc2UgJEV2YWx1YXRpb25DbG91ZE9iamVjdCAkRXZhbHVhdGlvbkVudmlyb25tZW50ICRFeHBvcnRGb3JtYXRzICRGYWlsZWQgJEZpbmFuY2lhbERhdGFTb3VyY2UgJEZvbnRGYW1pbGllcyAkRm9ybWF0VHlwZSAkRnJvbnRFbmQgJEZyb250RW5kU2Vzc2lvbiAkR2VvRW50aXR5VHlwZXMgJEdlb0xvY2F0aW9uICRHZW9Mb2NhdGlvbkNpdHkgJEdlb0xvY2F0aW9uQ291bnRyeSAkR2VvTG9jYXRpb25QcmVjaXNpb24gJEdlb0xvY2F0aW9uU291cmNlICRIaXN0b3J5TGVuZ3RoICRIb21lRGlyZWN0b3J5ICRIVE1MRXhwb3J0UnVsZXMgJEhUVFBDb29raWVzICRIVFRQUmVxdWVzdCAkSWdub3JlRU9GICRJbWFnZUZvcm1hdHRpbmdXaWR0aCAkSW1hZ2luZ0RldmljZSAkSW1hZ2luZ0RldmljZXMgJEltcG9ydEZvcm1hdHMgJEluY29taW5nTWFpbFNldHRpbmdzICRJbml0aWFsRGlyZWN0b3J5ICRJbml0aWFsaXphdGlvbiAkSW5pdGlhbGl6YXRpb25Db250ZXh0cyAkSW5wdXQgJElucHV0RmlsZU5hbWUgJElucHV0U3RyZWFtTWV0aG9kcyAkSW5zcGVjdG9yICRJbnN0YWxsYXRpb25EYXRlICRJbnN0YWxsYXRpb25EaXJlY3RvcnkgJEludGVyZmFjZUVudmlyb25tZW50ICRJbnRlcnByZXRlclR5cGVzICRJdGVyYXRpb25MaW1pdCAkS2VybmVsQ291bnQgJEtlcm5lbElEICRMYW5ndWFnZSAkTGF1bmNoRGlyZWN0b3J5ICRMaWJyYXJ5UGF0aCAkTGljZW5zZUV4cGlyYXRpb25EYXRlICRMaWNlbnNlSUQgJExpY2Vuc2VQcm9jZXNzZXMgJExpY2Vuc2VTZXJ2ZXIgJExpY2Vuc2VTdWJwcm9jZXNzZXMgJExpY2Vuc2VUeXBlICRMaW5lICRMaW5rZWQgJExpbmtTdXBwb3J0ZWQgJExvYWRlZEZpbGVzICRMb2NhbEJhc2UgJExvY2FsU3ltYm9sQmFzZSAkTWFjaGluZUFkZHJlc3NlcyAkTWFjaGluZURvbWFpbiAkTWFjaGluZURvbWFpbnMgJE1hY2hpbmVFcHNpbG9uICRNYWNoaW5lSUQgJE1hY2hpbmVOYW1lICRNYWNoaW5lUHJlY2lzaW9uICRNYWNoaW5lVHlwZSAkTWF4RXh0cmFQcmVjaXNpb24gJE1heExpY2Vuc2VQcm9jZXNzZXMgJE1heExpY2Vuc2VTdWJwcm9jZXNzZXMgJE1heE1hY2hpbmVOdW1iZXIgJE1heE51bWJlciAkTWF4UGllY2V3aXNlQ2FzZXMgJE1heFByZWNpc2lvbiAkTWF4Um9vdERlZ3JlZSAkTWVzc2FnZUdyb3VwcyAkTWVzc2FnZUxpc3QgJE1lc3NhZ2VQcmVQcmludCAkTWVzc2FnZXMgJE1pbk1hY2hpbmVOdW1iZXIgJE1pbk51bWJlciAkTWlub3JSZWxlYXNlTnVtYmVyICRNaW5QcmVjaXNpb24gJE1vYmlsZVBob25lICRNb2R1bGVOdW1iZXIgJE5ldHdvcmtDb25uZWN0ZWQgJE5ldHdvcmtJbnRlcmZhY2VzICROZXR3b3JrTGljZW5zZSAkTmV3TWVzc2FnZSAkTmV3U3ltYm9sICROb3RlYm9va3MgJE5vVmFsdWUgJE51bWJlck1hcmtzICRPZmYgJE9wZXJhdGluZ1N5c3RlbSAkT3V0cHV0ICRPdXRwdXRGb3JtcyAkT3V0cHV0U2l6ZUxpbWl0ICRPdXRwdXRTdHJlYW1NZXRob2RzICRQYWNrYWdlcyAkUGFyZW50TGluayAkUGFyZW50UHJvY2Vzc0lEICRQYXNzd29yZEZpbGUgJFBhdGNoTGV2ZWxJRCAkUGF0aCAkUGF0aG5hbWVTZXBhcmF0b3IgJFBlcmZvcm1hbmNlR29hbCAkUGVybWlzc2lvbnMgJFBlcm1pc3Npb25zR3JvdXBCYXNlICRQZXJzaXN0ZW5jZUJhc2UgJFBlcnNpc3RlbmNlUGF0aCAkUGlwZVN1cHBvcnRlZCAkUGxvdFRoZW1lICRQb3N0ICRQcmUgJFByZWZlcmVuY2VzRGlyZWN0b3J5ICRQcmVJbml0aWFsaXphdGlvbiAkUHJlUHJpbnQgJFByZVJlYWQgJFByaW50Rm9ybXMgJFByaW50TGl0ZXJhbCAkUHJpbnRvdXQzRFByZXZpZXdlciAkUHJvY2Vzc0lEICRQcm9jZXNzb3JDb3VudCAkUHJvY2Vzc29yVHlwZSAkUHJvZHVjdEluZm9ybWF0aW9uICRQcm9ncmFtTmFtZSAkUHVibGlzaGVySUQgJFJhbmRvbVN0YXRlICRSZWN1cnNpb25MaW1pdCAkUmVnaXN0ZXJlZERldmljZUNsYXNzZXMgJFJlZ2lzdGVyZWRVc2VyTmFtZSAkUmVsZWFzZU51bWJlciAkUmVxdWVzdGVyQWRkcmVzcyAkUmVxdWVzdGVyV29sZnJhbUlEICRSZXF1ZXN0ZXJXb2xmcmFtVVVJRCAkUmVzb3VyY2VTeXN0ZW1CYXNlICRSb290RGlyZWN0b3J5ICRTY2hlZHVsZWRUYXNrICRTY3JpcHRDb21tYW5kTGluZSAkU2NyaXB0SW5wdXRTdHJpbmcgJFNlY3VyZWRBdXRoZW50aWNhdGlvbktleVRva2VucyAkU2VydmljZUNyZWRpdHNBdmFpbGFibGUgJFNlcnZpY2VzICRTZXNzaW9uSUQgJFNldFBhcmVudExpbmsgJFNoYXJlZEZ1bmN0aW9ucyAkU2hhcmVkVmFyaWFibGVzICRTb3VuZERpc3BsYXkgJFNvdW5kRGlzcGxheUZ1bmN0aW9uICRTb3VyY2VMaW5rICRTU0hBdXRoZW50aWNhdGlvbiAkU3VtbWFyeUJveERhdGFTaXplTGltaXQgJFN1cHByZXNzSW5wdXRGb3JtSGVhZHMgJFN5bmNocm9ub3VzRXZhbHVhdGlvbiAkU3ludGF4SGFuZGxlciAkU3lzdGVtICRTeXN0ZW1DaGFyYWN0ZXJFbmNvZGluZyAkU3lzdGVtSUQgJFN5c3RlbU1lbW9yeSAkU3lzdGVtU2hlbGwgJFN5c3RlbVRpbWVab25lICRTeXN0ZW1Xb3JkTGVuZ3RoICRUZW1wbGF0ZVBhdGggJFRlbXBvcmFyeURpcmVjdG9yeSAkVGVtcG9yYXJ5UHJlZml4ICRUZXN0RmlsZU5hbWUgJFRleHRTdHlsZSAkVGltZWRPdXQgJFRpbWVVbml0ICRUaW1lWm9uZSAkVGltZVpvbmVFbnRpdHkgJFRvcERpcmVjdG9yeSAkVHJhY2VPZmYgJFRyYWNlT24gJFRyYWNlUGF0dGVybiAkVHJhY2VQb3N0QWN0aW9uICRUcmFjZVByZUFjdGlvbiAkVW5pdFN5c3RlbSAkVXJnZW50ICRVc2VyQWRkT25zRGlyZWN0b3J5ICRVc2VyQWdlbnRMYW5ndWFnZXMgJFVzZXJBZ2VudE1hY2hpbmUgJFVzZXJBZ2VudE5hbWUgJFVzZXJBZ2VudE9wZXJhdGluZ1N5c3RlbSAkVXNlckFnZW50U3RyaW5nICRVc2VyQWdlbnRWZXJzaW9uICRVc2VyQmFzZURpcmVjdG9yeSAkVXNlckRvY3VtZW50c0RpcmVjdG9yeSAkVXNlcm5hbWUgJFVzZXJOYW1lICRVc2VyVVJMQmFzZSAkVmVyc2lvbiAkVmVyc2lvbk51bWJlciAkVm9pY2VTdHlsZXMgJFdvbGZyYW1JRCAkV29sZnJhbVVVSUQnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwoXFxcXConLCAnXFxcXCpcXFxcKScsIHtjb250YWluczogWydzZWxmJ119KSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLypcbiAgRm9ybWFsIHN5bnRheCBpcyBub3QgcHVibGlzaGVkLCBoZWxwZnVsIGxpbms6XG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9rb3JuaWxvdmEtbC9tYXRsYWItSW50ZWxsaUotcGx1Z2luL2Jsb2IvbWFzdGVyL3NyYy9tYWluL2dyYW1tYXIvTWF0bGFiLmJuZlxuKi9cbmZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgVFJBTlNQT1NFX1JFID0gJyhcXCd8XFxcXC5cXCcpKyc7XG4gIHZhciBUUkFOU1BPU0UgPSB7XG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IGJlZ2luOiBUUkFOU1BPU0VfUkUgfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYnJlYWsgY2FzZSBjYXRjaCBjbGFzc2RlZiBjb250aW51ZSBlbHNlIGVsc2VpZiBlbmQgZW51bWVyYXRlZCBldmVudHMgZm9yIGZ1bmN0aW9uICcgK1xuICAgICAgICAnZ2xvYmFsIGlmIG1ldGhvZHMgb3RoZXJ3aXNlIHBhcmZvciBwZXJzaXN0ZW50IHByb3BlcnRpZXMgcmV0dXJuIHNwbWQgc3dpdGNoIHRyeSB3aGlsZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3NpbiBzaW5kIHNpbmggYXNpbiBhc2luZCBhc2luaCBjb3MgY29zZCBjb3NoIGFjb3MgYWNvc2QgYWNvc2ggdGFuIHRhbmQgdGFuaCBhdGFuICcgK1xuICAgICAgICAnYXRhbmQgYXRhbjIgYXRhbmggc2VjIHNlY2Qgc2VjaCBhc2VjIGFzZWNkIGFzZWNoIGNzYyBjc2NkIGNzY2ggYWNzYyBhY3NjZCBhY3NjaCBjb3QgJyArXG4gICAgICAgICdjb3RkIGNvdGggYWNvdCBhY290ZCBhY290aCBoeXBvdCBleHAgZXhwbTEgbG9nIGxvZzFwIGxvZzEwIGxvZzIgcG93MiByZWFscG93IHJlYWxsb2cgJyArXG4gICAgICAgICdyZWFsc3FydCBzcXJ0IG50aHJvb3QgbmV4dHBvdzIgYWJzIGFuZ2xlIGNvbXBsZXggY29uaiBpbWFnIHJlYWwgdW53cmFwIGlzcmVhbCAnICtcbiAgICAgICAgJ2NwbHhwYWlyIGZpeCBmbG9vciBjZWlsIHJvdW5kIG1vZCByZW0gc2lnbiBhaXJ5IGJlc3NlbGogYmVzc2VseSBiZXNzZWxoIGJlc3NlbGkgJyArXG4gICAgICAgICdiZXNzZWxrIGJldGEgYmV0YWluYyBiZXRhbG4gZWxsaXBqIGVsbGlwa2UgZXJmIGVyZmMgZXJmY3ggZXJmaW52IGV4cGludCBnYW1tYSAnICtcbiAgICAgICAgJ2dhbW1haW5jIGdhbW1hbG4gcHNpIGxlZ2VuZHJlIGNyb3NzIGRvdCBmYWN0b3IgaXNwcmltZSBwcmltZXMgZ2NkIGxjbSByYXQgcmF0cyBwZXJtcyAnICtcbiAgICAgICAgJ25jaG9vc2VrIGZhY3RvcmlhbCBjYXJ0MnNwaCBjYXJ0MnBvbCBwb2wyY2FydCBzcGgyY2FydCBoc3YycmdiIHJnYjJoc3YgemVyb3Mgb25lcyAnICtcbiAgICAgICAgJ2V5ZSByZXBtYXQgcmFuZCByYW5kbiBsaW5zcGFjZSBsb2dzcGFjZSBmcmVxc3BhY2UgbWVzaGdyaWQgYWNjdW1hcnJheSBzaXplIGxlbmd0aCAnICtcbiAgICAgICAgJ25kaW1zIG51bWVsIGRpc3AgaXNlbXB0eSBpc2VxdWFsIGlzZXF1YWx3aXRoZXF1YWxuYW5zIGNhdCByZXNoYXBlIGRpYWcgYmxrZGlhZyB0cmlsICcgK1xuICAgICAgICAndHJpdSBmbGlwbHIgZmxpcHVkIGZsaXBkaW0gcm90OTAgZmluZCBzdWIyaW5kIGluZDJzdWIgYnN4ZnVuIG5kZ3JpZCBwZXJtdXRlIGlwZXJtdXRlICcgK1xuICAgICAgICAnc2hpZnRkaW0gY2lyY3NoaWZ0IHNxdWVlemUgaXNzY2FsYXIgaXN2ZWN0b3IgYW5zIGVwcyByZWFsbWF4IHJlYWxtaW4gcGkgaSBpbmYgbmFuICcgK1xuICAgICAgICAnaXNuYW4gaXNpbmYgaXNmaW5pdGUgaiB3aHkgY29tcGFuIGdhbGxlcnkgaGFkYW1hcmQgaGFua2VsIGhpbGIgaW52aGlsYiBtYWdpYyBwYXNjYWwgJyArXG4gICAgICAgICdyb3NzZXIgdG9lcGxpdHogdmFuZGVyIHdpbGtpbnNvbiBtYXggbWluIG5hbm1heCBuYW5taW4gbWVhbiBuYW5tZWFuIHR5cGUgdGFibGUgJyArXG4gICAgICAgICdyZWFkdGFibGUgd3JpdGV0YWJsZSBzb3J0cm93cyBzb3J0IGZpZ3VyZSBwbG90IHBsb3QzIHNjYXR0ZXIgc2NhdHRlcjMgY2VsbGZ1biAnICtcbiAgICAgICAgJ2xlZ2VuZCBpbnRlcnNlY3QgaXNtZW1iZXIgcHJvY3J1c3RlcyBob2xkIG51bTJjZWxsICdcbiAgICB9LFxuICAgIGlsbGVnYWw6ICcoLy98XCJ8I3wvXFxcXCp8XFxcXHMrL1xcXFx3KyknLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIHtiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknfSxcbiAgICAgICAgICAgICAge2JlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXSd9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiAvdHJ1ZXxmYWxzZS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgc3RhcnRzOiBUUkFOU1BPU0VcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW2EtekEtWl1bYS16QS1aXzAtOV0qJyArIFRSQU5TUE9TRV9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBzdGFydHM6IFRSQU5TUE9TRVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICB7YmVnaW46ICdcXCdcXCcnfV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxdfH18XFwpLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBzdGFydHM6IFRSQU5TUE9TRVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAge2JlZ2luOiAnXCJcIid9XG4gICAgICAgIF0sXG4gICAgICAgIHN0YXJ0czogVFJBTlNQT1NFXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXHMqXFxcXCVcXFxce1xcXFxzKiQnLCAnXlxcXFxzKlxcXFwlXFxcXH1cXFxccyokJyksXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwlJywgJyQnKVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9ICdpZiB0aGVuIGVsc2UgZWxzZWlmIGZvciB0aHJ1IGRvIHdoaWxlIHVubGVzcyBzdGVwIGluIGFuZCBvciBub3QnO1xuICB2YXIgTElURVJBTFMgPSAndHJ1ZSBmYWxzZSB1bmtub3duIGluZiBtaW5mIGluZCB1bmQgJWUgJWkgJXBpICVwaGkgJWdhbW1hJztcbiAgdmFyIEJVSUxUSU5fRlVOQ1RJT05TID1cbiAgICAgICAgJyBhYmFzZXAgYWJzIGFic2ludCBhYnNvbHV0ZV9yZWFsX3RpbWUgYWNvcyBhY29zaCBhY290IGFjb3RoIGFjc2MgYWNzY2ggYWN0aXZhdGUnXG4gICAgICArICcgYWRkY29sIGFkZF9lZGdlIGFkZF9lZGdlcyBhZGRtYXRyaWNlcyBhZGRyb3cgYWRkX3ZlcnRleCBhZGRfdmVydGljZXMgYWRqYWNlbmN5X21hdHJpeCdcbiAgICAgICsgJyBhZGpvaW4gYWRqb2ludCBhZiBhZ2QgYWlyeSBhaXJ5X2FpIGFpcnlfYmkgYWlyeV9kYWkgYWlyeV9kYmkgYWxnc3lzIGFsZ190eXBlJ1xuICAgICAgKyAnIGFsaWFzIGFsbHJvb3RzIGFscGhhY2hhcnAgYWxwaGFudW1lcmljcCBhbW9ydGl6YXRpb24gJWFuZCBhbm51aXR5X2Z2J1xuICAgICAgKyAnIGFubnVpdHlfcHYgYW50aWQgYW50aWRpZmYgQW50aURpZmZlcmVuY2UgYXBwZW5kIGFwcGVuZGZpbGUgYXBwbHkgYXBwbHkxIGFwcGx5MidcbiAgICAgICsgJyBhcHBseWIxIGFwcm9wb3MgYXJncyBhcml0X2Ftb3J0aXphdGlvbiBhcml0aG1ldGljIGFyaXRoc3VtIGFycmF5IGFycmF5YXBwbHknXG4gICAgICArICcgYXJyYXlpbmZvIGFycmF5bWFrZSBhcnJheXNldGFwcGx5IGFzY2lpIGFzZWMgYXNlY2ggYXNpbiBhc2luaCBhc2tpbnRlZ2VyJ1xuICAgICAgKyAnIGFza3NpZ24gYXNzb2MgYXNzb2NfbGVnZW5kcmVfcCBhc3NvY19sZWdlbmRyZV9xIGFzc3VtZSBhc3N1bWVfZXh0ZXJuYWxfYnl0ZV9vcmRlcidcbiAgICAgICsgJyBhc3ltcGEgYXQgYXRhbiBhdGFuMiBhdGFuaCBhdGVuc2ltcCBhdG9tIGF0dmFsdWUgYXVnY29lZm1hdHJpeCBhdWdtZW50ZWRfbGFncmFuZ2lhbl9tZXRob2QnXG4gICAgICArICcgYXYgYXZlcmFnZV9kZWdyZWUgYmFja3RyYWNlIGJhcnMgYmFyc3Bsb3QgYmFyc3Bsb3RfZGVzY3JpcHRpb24gYmFzZTY0IGJhc2U2NF9kZWNvZGUnXG4gICAgICArICcgYmFzaGluZGljZXMgYmF0Y2ggYmF0Y2hsb2FkIGJjMiBiZHZhYyBiZWxsbiBiZW5lZml0X2Nvc3QgYmVybiBiZXJucG9seSBiZXJuc3RlaW5fYXBwcm94J1xuICAgICAgKyAnIGJlcm5zdGVpbl9leHBhbmQgYmVybnN0ZWluX3BvbHkgYmVzc2VsIGJlc3NlbF9pIGJlc3NlbF9qIGJlc3NlbF9rIGJlc3NlbF9zaW1wbGlmeSdcbiAgICAgICsgJyBiZXNzZWxfeSBiZXRhIGJldGFfaW5jb21wbGV0ZSBiZXRhX2luY29tcGxldGVfZ2VuZXJhbGl6ZWQgYmV0YV9pbmNvbXBsZXRlX3JlZ3VsYXJpemVkJ1xuICAgICAgKyAnIGJlem91dCBiZmFsbHJvb3RzIGJmZmFjIGJmX2ZpbmRfcm9vdCBiZl9mbWluX2NvYnlsYSBiZmh6ZXRhIGJmbG9hdCBiZmxvYXRwJ1xuICAgICAgKyAnIGJmcHNpIGJmcHNpMCBiZnpldGEgYmljb25uZWN0ZWRfY29tcG9uZW50cyBiaW1ldHJpYyBiaW5vbWlhbCBiaXBhcnRpdGlvbidcbiAgICAgICsgJyBibG9jayBibG9ja21hdHJpeHAgYm9kZV9nYWluIGJvZGVfcGhhc2UgYm90aGNvZWYgYm94IGJveHBsb3QgYm94cGxvdF9kZXNjcmlwdGlvbidcbiAgICAgICsgJyBicmVhayBidWdfcmVwb3J0IGJ1aWxkX2luZm98MTAgYnVpbGRxIGJ1aWxkX3NhbXBsZSBidXJuIGNhYnMgY2FuZm9ybSBjYW50ZW4nXG4gICAgICArICcgY2FyZGluYWxpdHkgY2FyZyBjYXJ0YW4gY2FydGVzaWFuX3Byb2R1Y3QgY2F0Y2ggY2F1Y2h5X21hdHJpeCBjYmZmYWMgY2RmX2Jlcm5vdWxsaSdcbiAgICAgICsgJyBjZGZfYmV0YSBjZGZfYmlub21pYWwgY2RmX2NhdWNoeSBjZGZfY2hpMiBjZGZfY29udGludW91c191bmlmb3JtIGNkZl9kaXNjcmV0ZV91bmlmb3JtJ1xuICAgICAgKyAnIGNkZl9leHAgY2RmX2YgY2RmX2dhbW1hIGNkZl9nZW5lcmFsX2Zpbml0ZV9kaXNjcmV0ZSBjZGZfZ2VvbWV0cmljIGNkZl9ndW1iZWwnXG4gICAgICArICcgY2RmX2h5cGVyZ2VvbWV0cmljIGNkZl9sYXBsYWNlIGNkZl9sb2dpc3RpYyBjZGZfbG9nbm9ybWFsIGNkZl9uZWdhdGl2ZV9iaW5vbWlhbCdcbiAgICAgICsgJyBjZGZfbm9uY2VudHJhbF9jaGkyIGNkZl9ub25jZW50cmFsX3N0dWRlbnRfdCBjZGZfbm9ybWFsIGNkZl9wYXJldG8gY2RmX3BvaXNzb24nXG4gICAgICArICcgY2RmX3Jhbmtfc3VtIGNkZl9yYXlsZWlnaCBjZGZfc2lnbmVkX3JhbmsgY2RmX3N0dWRlbnRfdCBjZGZfd2VpYnVsbCBjZGlzcGxheSdcbiAgICAgICsgJyBjZWlsaW5nIGNlbnRyYWxfbW9tZW50IGNlcXVhbCBjZXF1YWxpZ25vcmUgY2YgY2ZkaXNyZXAgY2ZleHBhbmQgY2dlb2Rlc2ljJ1xuICAgICAgKyAnIGNncmVhdGVycCBjZ3JlYXRlcnBpZ25vcmUgY2hhbmdlbmFtZSBjaGFuZ2V2YXIgY2hhb3NnYW1lIGNoYXJhdCBjaGFyZnVuIGNoYXJmdW4yJ1xuICAgICAgKyAnIGNoYXJsaXN0IGNoYXJwIGNoYXJwb2x5IGNoZGlyIGNoZWJ5c2hldl90IGNoZWJ5c2hldl91IGNoZWNrZGl2IGNoZWNrX292ZXJsYXBzJ1xuICAgICAgKyAnIGNoaW5lc2UgY2hvbGVza3kgY2hyaXN0b2YgY2hyb21hdGljX2luZGV4IGNocm9tYXRpY19udW1iZXIgY2ludCBjaXJjdWxhbnRfZ3JhcGgnXG4gICAgICArICcgY2xlYXJfZWRnZV93ZWlnaHQgY2xlYXJfcnVsZXMgY2xlYXJfdmVydGV4X2xhYmVsIGNsZWJzY2hfZ29yZGFuIGNsZWJzY2hfZ3JhcGgnXG4gICAgICArICcgY2xlc3NwIGNsZXNzcGlnbm9yZSBjbG9zZSBjbG9zZWZpbGUgY21ldHJpYyBjb2VmZiBjb2VmbWF0cml4IGNvZ3JhZCBjb2wgY29sbGFwc2UnXG4gICAgICArICcgY29sbGVjdHRlcm1zIGNvbHVtbm9wIGNvbHVtbnNwYWNlIGNvbHVtbnN3YXAgY29sdW1udmVjdG9yIGNvbWJpbmF0aW9uIGNvbWJpbmUnXG4gICAgICArICcgY29tcDJwdWkgY29tcGFyZSBjb21wZmlsZSBjb21waWxlIGNvbXBpbGVfZmlsZSBjb21wbGVtZW50X2dyYXBoIGNvbXBsZXRlX2JpcGFydGl0ZV9ncmFwaCdcbiAgICAgICsgJyBjb21wbGV0ZV9ncmFwaCBjb21wbGV4X251bWJlcl9wIGNvbXBvbmVudHMgY29tcG9zZV9mdW5jdGlvbnMgY29uY2FuIGNvbmNhdCdcbiAgICAgICsgJyBjb25qdWdhdGUgY29ubWV0ZGVyaXYgY29ubmVjdGVkX2NvbXBvbmVudHMgY29ubmVjdF92ZXJ0aWNlcyBjb25zIGNvbnN0YW50J1xuICAgICAgKyAnIGNvbnN0YW50cCBjb25zdGl0dWVudCBjb25zdHZhbHVlIGNvbnQycGFydCBjb250ZW50IGNvbnRpbnVvdXNfZnJlcSBjb250b3J0aW9uJ1xuICAgICAgKyAnIGNvbnRvdXJfcGxvdCBjb250cmFjdCBjb250cmFjdF9lZGdlIGNvbnRyYWdyYWQgY29udHJpYl9vZGUgY29udmVydCBjb29yZCdcbiAgICAgICsgJyBjb3B5IGNvcHlfZmlsZSBjb3B5X2dyYXBoIGNvcHlsaXN0IGNvcHltYXRyaXggY29yIGNvcyBjb3NoIGNvdCBjb3RoIGNvdiBjb3YxJ1xuICAgICAgKyAnIGNvdmRpZmYgY292ZWN0IGNvdmVycyBjcmMyNHN1bSBjcmVhdGVfZ3JhcGggY3JlYXRlX2xpc3QgY3NjIGNzY2ggY3NldHVwIGNzcGxpbmUnXG4gICAgICArICcgY3RheWxvciBjdF9jb29yZHN5cyBjdHJhbnNmb3JtIGN0cmFuc3Bvc2UgY3ViZV9ncmFwaCBjdWJvY3RhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIGN1bmxpc3AgY3YgY3ljbGVfZGlncmFwaCBjeWNsZV9ncmFwaCBjeWxpbmRyaWNhbCBkYXlzMzYwIGRibGludCBkZWFjdGl2YXRlJ1xuICAgICAgKyAnIGRlY2xhcmUgZGVjbGFyZV9jb25zdHZhbHVlIGRlY2xhcmVfZGltZW5zaW9ucyBkZWNsYXJlX2Z1bmRhbWVudGFsX2RpbWVuc2lvbnMnXG4gICAgICArICcgZGVjbGFyZV9mdW5kYW1lbnRhbF91bml0cyBkZWNsYXJlX3F0eSBkZWNsYXJlX3RyYW5zbGF0ZWQgZGVjbGFyZV91bml0X2NvbnZlcnNpb24nXG4gICAgICArICcgZGVjbGFyZV91bml0cyBkZWNsYXJlX3dlaWdodHMgZGVjc3ltIGRlZmNvbiBkZWZpbmUgZGVmaW5lX2FsdF9kaXNwbGF5IGRlZmluZV92YXJpYWJsZSdcbiAgICAgICsgJyBkZWZpbnQgZGVmbWF0Y2ggZGVmcnVsZSBkZWZzdHJ1Y3QgZGVmdGF5bG9yIGRlZ3JlZV9zZXF1ZW5jZSBkZWwgZGVsZXRlIGRlbGV0ZW4nXG4gICAgICArICcgZGVsdGEgZGVtbyBkZW1vaXZyZSBkZW5vbSBkZXBlbmRzIGRlcml2ZGVncmVlIGRlcml2bGlzdCBkZXNjcmliZSBkZXNvbHZlJ1xuICAgICAgKyAnIGRldGVybWluYW50IGRmbG9hdCBkZ2F1c3NfYSBkZ2F1c3NfYiBkZ2VldiBkZ2VtbSBkZ2VxcmYgZGdlc3YgZGdlc3ZkIGRpYWcnXG4gICAgICArICcgZGlhZ21hdHJpeCBkaWFnX21hdHJpeCBkaWFnbWF0cml4cCBkaWFtZXRlciBkaWZmIGRpZ2l0Y2hhcnAgZGltYWNzX2V4cG9ydCdcbiAgICAgICsgJyBkaW1hY3NfaW1wb3J0IGRpbWVuc2lvbiBkaW1lbnNpb25sZXNzIGRpbWVuc2lvbnMgZGltZW5zaW9uc19hc19saXN0IGRpcmVjdCdcbiAgICAgICsgJyBkaXJlY3RvcnkgZGlzY3JldGVfZnJlcSBkaXNqb2luIGRpc2pvaW50cCBkaXNvbGF0ZSBkaXNwIGRpc3Bjb24gZGlzcGZvcm0nXG4gICAgICArICcgZGlzcGZ1biBkaXNwSm9yZGFuIGRpc3BsYXkgZGlzcHJ1bGUgZGlzcHRlcm1zIGRpc3RyaWIgZGl2aWRlIGRpdmlzb3JzIGRpdnN1bSdcbiAgICAgICsgJyBka3VtbWVyX20gZGt1bW1lcl91IGRsYW5nZSBkb2RlY2FoZWRyb25fZ3JhcGggZG90cHJvZHVjdCBkb3RzaW1wIGRwYXJ0J1xuICAgICAgKyAnIGRyYXcgZHJhdzJkIGRyYXczZCBkcmF3ZGYgZHJhd19maWxlIGRyYXdfZ3JhcGggZHNjYWxhciBlY2hlbG9uIGVkZ2VfY29sb3JpbmcnXG4gICAgICArICcgZWRnZV9jb25uZWN0aXZpdHkgZWRnZXMgZWlnZW5zX2J5X2phY29iaSBlaWdlbnZhbHVlcyBlaWdlbnZlY3RvcnMgZWlnaHRoJ1xuICAgICAgKyAnIGVpbnN0ZWluIGVpdmFscyBlaXZlY3RzIGVsYXBzZWRfcmVhbF90aW1lIGVsYXBzZWRfcnVuX3RpbWUgZWxlMmNvbXAgZWxlMnBvbHlub21lJ1xuICAgICAgKyAnIGVsZTJwdWkgZWxlbSBlbGVtZW50cCBlbGV2YXRpb25fZ3JpZCBlbGltIGVsaW1fYWxsYnV0IGVsaW1pbmF0ZSBlbGltaW5hdGVfdXNpbmcnXG4gICAgICArICcgZWxsaXBzZSBlbGxpcHRpY19lIGVsbGlwdGljX2VjIGVsbGlwdGljX2V1IGVsbGlwdGljX2YgZWxsaXB0aWNfa2MgZWxsaXB0aWNfcGknXG4gICAgICArICcgZW1hdHJpeCBlbXB0eV9ncmFwaCBlbXB0eXAgZW5kY29ucyBlbnRlcm1hdHJpeCBlbnRlcnRlbnNvciBlbnRpZXIgZXF1YWwgZXF1YWxwJ1xuICAgICAgKyAnIGVxdWl2X2NsYXNzZXMgZXJmIGVyZmMgZXJmX2dlbmVyYWxpemVkIGVyZmkgZXJyY2F0Y2ggZXJyb3IgZXJyb3Jtc2cgZXJyb3JzJ1xuICAgICAgKyAnIGV1bGVyIGV2IGV2YWxfc3RyaW5nIGV2ZW5wIGV2ZXJ5IGV2b2x1dGlvbiBldm9sdXRpb24yZCBldnVuZGlmZiBleGFtcGxlIGV4cCdcbiAgICAgICsgJyBleHBhbmQgZXhwYW5kd3J0IGV4cGFuZHdydF9mYWN0b3JlZCBleHBpbnQgZXhwaW50ZWdyYWxfY2hpIGV4cGludGVncmFsX2NpJ1xuICAgICAgKyAnIGV4cGludGVncmFsX2UgZXhwaW50ZWdyYWxfZTEgZXhwaW50ZWdyYWxfZWkgZXhwaW50ZWdyYWxfZV9zaW1wbGlmeSBleHBpbnRlZ3JhbF9saSdcbiAgICAgICsgJyBleHBpbnRlZ3JhbF9zaGkgZXhwaW50ZWdyYWxfc2kgZXhwbGljaXQgZXhwbG9zZSBleHBvbmVudGlhbGl6ZSBleHByZXNzIGV4cHQnXG4gICAgICArICcgZXhzZWMgZXh0ZGlmZiBleHRyYWN0X2xpbmVhcl9lcXVhdGlvbnMgZXh0cmVtYWxfc3Vic2V0IGV6Z2NkICVmIGY5MCBmYWNzdW0nXG4gICAgICArICcgZmFjdGNvbWIgZmFjdG9yIGZhY3RvcmZhY3N1bSBmYWN0b3JpYWwgZmFjdG9yb3V0IGZhY3RvcnN1bSBmYWN0cyBmYXN0X2NlbnRyYWxfZWxlbWVudHMnXG4gICAgICArICcgZmFzdF9saW5zb2x2ZSBmYXN0dGltZXMgZmVhdHVyZXAgZmVybmZhbGUgZmZ0IGZpYiBmaWJ0b3BoaSBmaWZ0aCBmaWxlbmFtZV9tZXJnZSdcbiAgICAgICsgJyBmaWxlX3NlYXJjaCBmaWxlX3R5cGUgZmlsbGFycmF5IGZpbmRkZSBmaW5kX3Jvb3QgZmluZF9yb290X2FicyBmaW5kX3Jvb3RfZXJyb3InXG4gICAgICArICcgZmluZF9yb290X3JlbCBmaXJzdCBmaXggZmxhdHRlbiBmbGVuZ3RoIGZsb2F0IGZsb2F0bnVtcCBmbG9vciBmbG93ZXJfc25hcmsnXG4gICAgICArICcgZmx1c2ggZmx1c2gxZGVyaXYgZmx1c2hkIGZsdXNobmQgZmx1c2hfb3V0cHV0IGZtaW5fY29ieWxhIGZvcmdldCBmb3J0cmFuJ1xuICAgICAgKyAnIGZvdXJjb3MgZm91cmV4cGFuZCBmb3VyaWVyIGZvdXJpZXJfZWxpbSBmb3VyaW50IGZvdXJpbnRjb3MgZm91cmludHNpbiBmb3Vyc2ltcCdcbiAgICAgICsgJyBmb3Vyc2luIGZvdXJ0aCBmcG9zaXRpb24gZnJhbWVfYnJhY2tldCBmcmVlb2YgZnJlc2hsaW5lIGZyZXNuZWxfYyBmcmVzbmVsX3MnXG4gICAgICArICcgZnJvbV9hZGphY2VuY3lfbWF0cml4IGZydWNodF9ncmFwaCBmdWxsX2xpc3RpZnkgZnVsbG1hcCBmdWxsbWFwbCBmdWxscmF0c2ltcCdcbiAgICAgICsgJyBmdWxscmF0c3Vic3QgZnVsbHNldGlmeSBmdW5jc29sdmUgZnVuZGFtZW50YWxfZGltZW5zaW9ucyBmdW5kYW1lbnRhbF91bml0cydcbiAgICAgICsgJyBmdW5kZWYgZnVubWFrZSBmdW5wIGZ2IGcwIGcxIGdhbW1hIGdhbW1hX2dyZWVrIGdhbW1hX2luY29tcGxldGUgZ2FtbWFfaW5jb21wbGV0ZV9nZW5lcmFsaXplZCdcbiAgICAgICsgJyBnYW1tYV9pbmNvbXBsZXRlX3JlZ3VsYXJpemVkIGdhdXNzIGdhdXNzX2EgZ2F1c3NfYiBnYXVzc3Byb2IgZ2NkIGdjZGV4IGdjZGl2aWRlJ1xuICAgICAgKyAnIGdjZmFjIGdjZmFjdG9yIGdkIGdlbmVyYWxpemVkX2xhbWJlcnRfdyBnZW5mYWN0IGdlbl9sYWd1ZXJyZSBnZW5tYXRyaXggZ2Vuc3ltJ1xuICAgICAgKyAnIGdlb19hbW9ydGl6YXRpb24gZ2VvX2FubnVpdHlfZnYgZ2VvX2FubnVpdHlfcHYgZ2VvbWFwIGdlb21ldHJpYyBnZW9tZXRyaWNfbWVhbidcbiAgICAgICsgJyBnZW9zdW0gZ2V0IGdldGN1cnJlbnRkaXJlY3RvcnkgZ2V0X2VkZ2Vfd2VpZ2h0IGdldGVudiBnZXRfbHVfZmFjdG9ycyBnZXRfb3V0cHV0X3N0cmVhbV9zdHJpbmcnXG4gICAgICArICcgZ2V0X3BpeGVsIGdldF9wbG90X29wdGlvbiBnZXRfdGV4X2Vudmlyb25tZW50IGdldF90ZXhfZW52aXJvbm1lbnRfZGVmYXVsdCdcbiAgICAgICsgJyBnZXRfdmVydGV4X2xhYmVsIGdmYWN0b3IgZ2ZhY3RvcnN1bSBnZ2YgZ2lydGggZ2xvYmFsX3ZhcmlhbmNlcyBnbiBnbnVwbG90X2Nsb3NlJ1xuICAgICAgKyAnIGdudXBsb3RfcmVwbG90IGdudXBsb3RfcmVzZXQgZ251cGxvdF9yZXN0YXJ0IGdudXBsb3Rfc3RhcnQgZ28gR29zcGVyIEdvc3BlclN1bSdcbiAgICAgICsgJyBncjJkIGdyM2QgZ3JhZGVmIGdyYW1zY2htaWR0IGdyYXBoNl9kZWNvZGUgZ3JhcGg2X2VuY29kZSBncmFwaDZfZXhwb3J0IGdyYXBoNl9pbXBvcnQnXG4gICAgICArICcgZ3JhcGhfY2VudGVyIGdyYXBoX2NoYXJwb2x5IGdyYXBoX2VpZ2VudmFsdWVzIGdyYXBoX2Zsb3cgZ3JhcGhfb3JkZXIgZ3JhcGhfcGVyaXBoZXJ5J1xuICAgICAgKyAnIGdyYXBoX3Byb2R1Y3QgZ3JhcGhfc2l6ZSBncmFwaF91bmlvbiBncmVhdF9yaG9tYmljb3NpZG9kZWNhaGVkcm9uX2dyYXBoIGdyZWF0X3Job21iaWN1Ym9jdGFoZWRyb25fZ3JhcGgnXG4gICAgICArICcgZ3JpZF9ncmFwaCBncmluZCBncm9ibmVyX2Jhc2lzIGdyb3R6Y2hfZ3JhcGggaGFtaWx0b25fY3ljbGUgaGFtaWx0b25fcGF0aCdcbiAgICAgICsgJyBoYW5rZWwgaGFua2VsXzEgaGFua2VsXzIgaGFybW9uaWMgaGFybW9uaWNfbWVhbiBoYXYgaGVhd29vZF9ncmFwaCBoZXJtaXRlJ1xuICAgICAgKyAnIGhlc3NpYW4gaGdmcmVkIGhpbGJlcnRtYXAgaGlsYmVydF9tYXRyaXggaGlwb3cgaGlzdG9ncmFtIGhpc3RvZ3JhbV9kZXNjcmlwdGlvbidcbiAgICAgICsgJyBob2RnZSBob3JuZXIgaHlwZXJnZW9tZXRyaWMgaTAgaTEgJWliZXMgaWMxIGljMiBpY19jb252ZXJ0IGljaHIxIGljaHIyIGljb3NhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIGljb3NpZG9kZWNhaGVkcm9uX2dyYXBoIGljdXJ2YXR1cmUgaWRlbnQgaWRlbnRmb3IgaWRlbnRpdHkgaWRpZmYgaWRpbSBpZHVtbXknXG4gICAgICArICcgaWVxbiAlaWYgaWZhY3RvcnMgaWZyYW1lcyBpZnMgaWdjZGV4IGlnZW9kZXNpY19jb29yZHMgaWx0IGltYWdlIGltYWdwYXJ0J1xuICAgICAgKyAnIGltZXRyaWMgaW1wbGljaXQgaW1wbGljaXRfZGVyaXZhdGl2ZSBpbXBsaWNpdF9wbG90IGluZGV4ZWRfdGVuc29yIGluZGljZXMnXG4gICAgICArICcgaW5kdWNlZF9zdWJncmFwaCBpbmZlcmVuY2VwIGluZmVyZW5jZV9yZXN1bHQgaW5maXggaW5mb19kaXNwbGF5IGluaXRfYXRlbnNvcidcbiAgICAgICsgJyBpbml0X2N0ZW5zb3IgaW5fbmVpZ2hib3JzIGlubmVycHJvZHVjdCBpbnBhcnQgaW5wcm9kIGlucnQgaW50ZWdlcnAgaW50ZWdlcl9wYXJ0aXRpb25zJ1xuICAgICAgKyAnIGludGVncmF0ZSBpbnRlcnNlY3QgaW50ZXJzZWN0aW9uIGludGVydmFscCBpbnRvcG9pcyBpbnRvc3VtIGludmFyaWFudDEgaW52YXJpYW50MidcbiAgICAgICsgJyBpbnZlcnNlX2ZmdCBpbnZlcnNlX2phY29iaV9jZCBpbnZlcnNlX2phY29iaV9jbiBpbnZlcnNlX2phY29iaV9jcyBpbnZlcnNlX2phY29iaV9kYydcbiAgICAgICsgJyBpbnZlcnNlX2phY29iaV9kbiBpbnZlcnNlX2phY29iaV9kcyBpbnZlcnNlX2phY29iaV9uYyBpbnZlcnNlX2phY29iaV9uZCBpbnZlcnNlX2phY29iaV9ucydcbiAgICAgICsgJyBpbnZlcnNlX2phY29iaV9zYyBpbnZlcnNlX2phY29iaV9zZCBpbnZlcnNlX2phY29iaV9zbiBpbnZlcnQgaW52ZXJ0X2J5X2Fkam9pbnQnXG4gICAgICArICcgaW52ZXJ0X2J5X2x1IGludl9tb2QgaXJyIGlzIGlzX2JpY29ubmVjdGVkIGlzX2JpcGFydGl0ZSBpc19jb25uZWN0ZWQgaXNfZGlncmFwaCdcbiAgICAgICsgJyBpc19lZGdlX2luX2dyYXBoIGlzX2dyYXBoIGlzX2dyYXBoX29yX2RpZ3JhcGggaXNob3cgaXNfaXNvbW9ycGhpYyBpc29sYXRlJ1xuICAgICAgKyAnIGlzb21vcnBoaXNtIGlzX3BsYW5hciBpc3FydCBpc3JlYWxfcCBpc19zY29ubmVjdGVkIGlzX3RyZWUgaXNfdmVydGV4X2luX2dyYXBoJ1xuICAgICAgKyAnIGl0ZW1zX2luZmVyZW5jZSAlaiBqMCBqMSBqYWNvYmkgamFjb2JpYW4gamFjb2JpX2NkIGphY29iaV9jbiBqYWNvYmlfY3MgamFjb2JpX2RjJ1xuICAgICAgKyAnIGphY29iaV9kbiBqYWNvYmlfZHMgamFjb2JpX25jIGphY29iaV9uZCBqYWNvYmlfbnMgamFjb2JpX3AgamFjb2JpX3NjIGphY29iaV9zZCdcbiAgICAgICsgJyBqYWNvYmlfc24gSkYgam4gam9pbiBqb3JkYW4ganVsaWEganVsaWFfc2V0IGp1bGlhX3NpbiAlayBrZGVscyBrZGVsdGEga2lsbCdcbiAgICAgICsgJyBraWxsY29udGV4dCBrb3N0a2Ega3Jvbl9kZWx0YSBrcm9uZWNrZXJfcHJvZHVjdCBrdW1tZXJfbSBrdW1tZXJfdSBrdXJ0b3NpcydcbiAgICAgICsgJyBrdXJ0b3Npc19iZXJub3VsbGkga3VydG9zaXNfYmV0YSBrdXJ0b3Npc19iaW5vbWlhbCBrdXJ0b3Npc19jaGkyIGt1cnRvc2lzX2NvbnRpbnVvdXNfdW5pZm9ybSdcbiAgICAgICsgJyBrdXJ0b3Npc19kaXNjcmV0ZV91bmlmb3JtIGt1cnRvc2lzX2V4cCBrdXJ0b3Npc19mIGt1cnRvc2lzX2dhbW1hIGt1cnRvc2lzX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIGt1cnRvc2lzX2dlb21ldHJpYyBrdXJ0b3Npc19ndW1iZWwga3VydG9zaXNfaHlwZXJnZW9tZXRyaWMga3VydG9zaXNfbGFwbGFjZSdcbiAgICAgICsgJyBrdXJ0b3Npc19sb2dpc3RpYyBrdXJ0b3Npc19sb2dub3JtYWwga3VydG9zaXNfbmVnYXRpdmVfYmlub21pYWwga3VydG9zaXNfbm9uY2VudHJhbF9jaGkyJ1xuICAgICAgKyAnIGt1cnRvc2lzX25vbmNlbnRyYWxfc3R1ZGVudF90IGt1cnRvc2lzX25vcm1hbCBrdXJ0b3Npc19wYXJldG8ga3VydG9zaXNfcG9pc3NvbidcbiAgICAgICsgJyBrdXJ0b3Npc19yYXlsZWlnaCBrdXJ0b3Npc19zdHVkZW50X3Qga3VydG9zaXNfd2VpYnVsbCBsYWJlbCBsYWJlbHMgbGFncmFuZ2UnXG4gICAgICArICcgbGFndWVycmUgbGFtYmRhIGxhbWJlcnRfdyBsYXBsYWNlIGxhcGxhY2lhbl9tYXRyaXggbGFzdCBsYmZncyBsYzJrZHQgbGNoYXJwJ1xuICAgICAgKyAnIGxjX2wgbGNtIGxjX3UgbGRlZmludCBsZGlzcCBsZGlzcGxheSBsZWdlbmRyZV9wIGxlZ2VuZHJlX3EgbGVpbnN0ZWluIGxlbmd0aCdcbiAgICAgICsgJyBsZXQgbGV0cnVsZXMgbGV0c2ltcCBsZXZpX2Npdml0YSBsZnJlZW9mIGxndHJlaWxsaXMgbGhzIGxpIGxpZWRpZmYgbGltaXQnXG4gICAgICArICcgTGluZHN0ZWR0IGxpbmVhciBsaW5lYXJpbnRlcnBvbCBsaW5lYXJfcHJvZ3JhbSBsaW5lYXJfcmVncmVzc2lvbiBsaW5lX2dyYXBoJ1xuICAgICAgKyAnIGxpbnNvbHZlIGxpc3RhcnJheSBsaXN0X2NvcnJlbGF0aW9ucyBsaXN0aWZ5IGxpc3RfbWF0cml4X2VudHJpZXMgbGlzdF9uY19tb25vbWlhbHMnXG4gICAgICArICcgbGlzdG9mdGVucyBsaXN0b2Z2YXJzIGxpc3RwIGxtYXggbG1pbiBsb2FkIGxvYWRmaWxlIGxvY2FsIGxvY2F0ZV9tYXRyaXhfZW50cnknXG4gICAgICArICcgbG9nIGxvZ2NvbnRyYWN0IGxvZ19nYW1tYSBsb3BvdyBsb3JlbnR6X2dhdWdlIGxvd2VyY2FzZXAgbHBhcnQgbHJhdHN1YnN0J1xuICAgICAgKyAnIGxyZWR1Y2UgbHJpZW1hbm4gbHNxdWFyZXNfZXN0aW1hdGVzIGxzcXVhcmVzX2VzdGltYXRlc19hcHByb3hpbWF0ZSBsc3F1YXJlc19lc3RpbWF0ZXNfZXhhY3QnXG4gICAgICArICcgbHNxdWFyZXNfbXNlIGxzcXVhcmVzX3Jlc2lkdWFsX21zZSBsc3F1YXJlc19yZXNpZHVhbHMgbHN1bSBsdHJlaWxsaXMgbHVfYmFja3N1YidcbiAgICAgICsgJyBsdWNhcyBsdV9mYWN0b3IgJW0gbWFjcm9leHBhbmQgbWFjcm9leHBhbmQxIG1ha2VfYXJyYXkgbWFrZWJveCBtYWtlZmFjdCBtYWtlZ2FtbWEnXG4gICAgICArICcgbWFrZV9ncmFwaCBtYWtlX2xldmVsX3BpY3R1cmUgbWFrZWxpc3QgbWFrZU9yZGVycyBtYWtlX3BvbHlfY29udGluZW50IG1ha2VfcG9seV9jb3VudHJ5J1xuICAgICAgKyAnIG1ha2VfcG9seWdvbiBtYWtlX3JhbmRvbV9zdGF0ZSBtYWtlX3JnYl9waWN0dXJlIG1ha2VzZXQgbWFrZV9zdHJpbmdfaW5wdXRfc3RyZWFtJ1xuICAgICAgKyAnIG1ha2Vfc3RyaW5nX291dHB1dF9zdHJlYW0gbWFrZV90cmFuc2Zvcm0gbWFuZGVsYnJvdCBtYW5kZWxicm90X3NldCBtYXAgbWFwYXRvbSdcbiAgICAgICsgJyBtYXBsaXN0IG1hdGNoZGVjbGFyZSBtYXRjaGZpeCBtYXRfY29uZCBtYXRfZnVsbHVuYmxvY2tlciBtYXRfZnVuY3Rpb24gbWF0aG1sX2Rpc3BsYXknXG4gICAgICArICcgbWF0X25vcm0gbWF0cml4IG1hdHJpeG1hcCBtYXRyaXhwIG1hdHJpeF9zaXplIG1hdHRyYWNlIG1hdF90cmFjZSBtYXRfdW5ibG9ja2VyJ1xuICAgICAgKyAnIG1heCBtYXhfY2xpcXVlIG1heF9kZWdyZWUgbWF4X2Zsb3cgbWF4aW1pemVfbHAgbWF4X2luZGVwZW5kZW50X3NldCBtYXhfbWF0Y2hpbmcnXG4gICAgICArICcgbWF5YmUgbWQ1c3VtIG1lYW4gbWVhbl9iZXJub3VsbGkgbWVhbl9iZXRhIG1lYW5fYmlub21pYWwgbWVhbl9jaGkyIG1lYW5fY29udGludW91c191bmlmb3JtJ1xuICAgICAgKyAnIG1lYW5fZGV2aWF0aW9uIG1lYW5fZGlzY3JldGVfdW5pZm9ybSBtZWFuX2V4cCBtZWFuX2YgbWVhbl9nYW1tYSBtZWFuX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIG1lYW5fZ2VvbWV0cmljIG1lYW5fZ3VtYmVsIG1lYW5faHlwZXJnZW9tZXRyaWMgbWVhbl9sYXBsYWNlIG1lYW5fbG9naXN0aWMnXG4gICAgICArICcgbWVhbl9sb2dub3JtYWwgbWVhbl9uZWdhdGl2ZV9iaW5vbWlhbCBtZWFuX25vbmNlbnRyYWxfY2hpMiBtZWFuX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIG1lYW5fbm9ybWFsIG1lYW5fcGFyZXRvIG1lYW5fcG9pc3NvbiBtZWFuX3JheWxlaWdoIG1lYW5fc3R1ZGVudF90IG1lYW5fd2VpYnVsbCdcbiAgICAgICsgJyBtZWRpYW4gbWVkaWFuX2RldmlhdGlvbiBtZW1iZXIgbWVzaCBtZXRyaWNleHBhbmRhbGwgbWdmMV9zaGExIG1pbiBtaW5fZGVncmVlJ1xuICAgICAgKyAnIG1pbl9lZGdlX2N1dCBtaW5mYWN0b3JpYWwgbWluaW1hbFBvbHkgbWluaW1pemVfbHAgbWluaW11bV9zcGFubmluZ190cmVlIG1pbm9yJ1xuICAgICAgKyAnIG1pbnBhY2tfbHNxdWFyZXMgbWlucGFja19zb2x2ZSBtaW5fdmVydGV4X2NvdmVyIG1pbl92ZXJ0ZXhfY3V0IG1rZGlyIG1uZXd0b24nXG4gICAgICArICcgbW9kIG1vZGVfZGVjbGFyZSBtb2RlX2lkZW50aXR5IE1vZGVNYXRyaXggbW9lYml1cyBtb24yc2NodXIgbW9ubyBtb25vbWlhbF9kaW1lbnNpb25zJ1xuICAgICAgKyAnIG11bHRpYmVybnN0ZWluX3BvbHkgbXVsdGlfZGlzcGxheV9mb3JfdGV4aW5mbyBtdWx0aV9lbGVtIG11bHRpbm9taWFsIG11bHRpbm9taWFsX2NvZWZmJ1xuICAgICAgKyAnIG11bHRpX29yYml0IG11bHRpcGxvdF9tb2RlIG11bHRpX3B1aSBtdWx0c3ltIG11bHR0aHJ1IG15Y2llbHNraV9ncmFwaCBuYXJ5J1xuICAgICAgKyAnIG5hdHVyYWxfdW5pdCBuY19kZWdyZWUgbmNleHB0IG5jaGFycG9seSBuZWdhdGl2ZV9waWN0dXJlIG5laWdoYm9ycyBuZXcgbmV3Y29udGV4dCdcbiAgICAgICsgJyBuZXdkZXQgbmV3X2dyYXBoIG5ld2xpbmUgbmV3dG9uIG5ld192YXJpYWJsZSBuZXh0X3ByaW1lIG5pY2VkdW1taWVzIG5pY2VpbmRpY2VzJ1xuICAgICAgKyAnIG5pbnRoIG5vZml4IG5vbmFycmF5IG5vbmNlbnRyYWxfbW9tZW50IG5vbm1ldHJpY2l0eSBub25uZWdpbnRlZ2VycCBub25zY2FsYXJwJ1xuICAgICAgKyAnIG5vbnplcm9hbmRmcmVlb2Ygbm90ZXF1YWwgbm91bmlmeSBucHRldHJhZCBucHYgbnJvb3RzIG50ZXJtcyBudGVybXN0J1xuICAgICAgKyAnIG50aHJvb3QgbnVsbGl0eSBudWxsc3BhY2UgbnVtIG51bWJlcmVkX2JvdW5kYXJpZXMgbnVtYmVycCBudW1iZXJfdG9fb2N0ZXRzJ1xuICAgICAgKyAnIG51bV9kaXN0aW5jdF9wYXJ0aXRpb25zIG51bWVydmFsIG51bWZhY3RvciBudW1fcGFydGl0aW9ucyBudXN1bSBuemV0YSBuemV0YWknXG4gICAgICArICcgbnpldGFyIG9jdGV0c190b19udW1iZXIgb2N0ZXRzX3RvX29pZCBvZGRfZ2lydGggb2RkcCBvZGUyIG9kZV9jaGVjayBvZGVsaW4nXG4gICAgICArICcgb2lkX3RvX29jdGV0cyBvcCBvcGVuYSBvcGVuYV9iaW5hcnkgb3BlbnIgb3BlbnJfYmluYXJ5IG9wZW53IG9wZW53X2JpbmFyeSdcbiAgICAgICsgJyBvcGVyYXRvcnAgb3BzdWJzdCBvcHRpbWl6ZSAlb3Igb3JiaXQgb3JiaXRzIG9yZGVyZ3JlYXQgb3JkZXJncmVhdHAgb3JkZXJsZXNzJ1xuICAgICAgKyAnIG9yZGVybGVzc3Agb3J0aG9nb25hbF9jb21wbGVtZW50IG9ydGhvcG9seV9yZWN1ciBvcnRob3BvbHlfd2VpZ2h0IG91dGVybWFwJ1xuICAgICAgKyAnIG91dF9uZWlnaGJvcnMgb3V0b2Zwb2lzIHBhZGUgcGFyYWJvbGljX2N5bGluZGVyX2QgcGFyYW1ldHJpYyBwYXJhbWV0cmljX3N1cmZhY2UnXG4gICAgICArICcgcGFyZyBwYXJHb3NwZXIgcGFyc2Vfc3RyaW5nIHBhcnNlX3RpbWVkYXRlIHBhcnQgcGFydDJjb250IHBhcnRmcmFjIHBhcnRpdGlvbidcbiAgICAgICsgJyBwYXJ0aXRpb25fc2V0IHBhcnRwb2wgcGF0aF9kaWdyYXBoIHBhdGhfZ3JhcGggcGF0aG5hbWVfZGlyZWN0b3J5IHBhdGhuYW1lX25hbWUnXG4gICAgICArICcgcGF0aG5hbWVfdHlwZSBwZGZfYmVybm91bGxpIHBkZl9iZXRhIHBkZl9iaW5vbWlhbCBwZGZfY2F1Y2h5IHBkZl9jaGkyIHBkZl9jb250aW51b3VzX3VuaWZvcm0nXG4gICAgICArICcgcGRmX2Rpc2NyZXRlX3VuaWZvcm0gcGRmX2V4cCBwZGZfZiBwZGZfZ2FtbWEgcGRmX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIHBkZl9nZW9tZXRyaWMgcGRmX2d1bWJlbCBwZGZfaHlwZXJnZW9tZXRyaWMgcGRmX2xhcGxhY2UgcGRmX2xvZ2lzdGljIHBkZl9sb2dub3JtYWwnXG4gICAgICArICcgcGRmX25lZ2F0aXZlX2Jpbm9taWFsIHBkZl9ub25jZW50cmFsX2NoaTIgcGRmX25vbmNlbnRyYWxfc3R1ZGVudF90IHBkZl9ub3JtYWwnXG4gICAgICArICcgcGRmX3BhcmV0byBwZGZfcG9pc3NvbiBwZGZfcmFua19zdW0gcGRmX3JheWxlaWdoIHBkZl9zaWduZWRfcmFuayBwZGZfc3R1ZGVudF90J1xuICAgICAgKyAnIHBkZl93ZWlidWxsIHBlYXJzb25fc2tld25lc3MgcGVybWFuZW50IHBlcm11dCBwZXJtdXRhdGlvbiBwZXJtdXRhdGlvbnMgcGV0ZXJzZW5fZ3JhcGgnXG4gICAgICArICcgcGV0cm92IHBpY2thcGFydCBwaWN0dXJlX2VxdWFscCBwaWN0dXJlcCBwaWVjaGFydCBwaWVjaGFydF9kZXNjcmlwdGlvbiBwbGFuYXJfZW1iZWRkaW5nJ1xuICAgICAgKyAnIHBsYXliYWNrIHBsb2cgcGxvdDJkIHBsb3QzZCBwbG90ZGYgcGxvdGVxIHBsc3F1YXJlcyBwb2NoaGFtbWVyIHBvaW50cyBwb2lzZGlmZidcbiAgICAgICsgJyBwb2lzZXhwdCBwb2lzaW50IHBvaXNtYXAgcG9pc3BsdXMgcG9pc3NpbXAgcG9pc3N1YnN0IHBvaXN0aW1lcyBwb2lzdHJpbSBwb2xhcidcbiAgICAgICsgJyBwb2xhcmZvcm0gcG9sYXJ0b3JlY3QgcG9sYXJfdG9feHkgcG9seV9hZGQgcG9seV9idWNoYmVyZ2VyIHBvbHlfYnVjaGJlcmdlcl9jcml0ZXJpb24nXG4gICAgICArICcgcG9seV9jb2xvbl9pZGVhbCBwb2x5X2NvbnRlbnQgcG9seWRlY29tcCBwb2x5X2RlcGVuZHNfcCBwb2x5X2VsaW1pbmF0aW9uX2lkZWFsJ1xuICAgICAgKyAnIHBvbHlfZXhhY3RfZGl2aWRlIHBvbHlfZXhwYW5kIHBvbHlfZXhwdCBwb2x5X2djZCBwb2x5Z29uIHBvbHlfZ3JvYm5lciBwb2x5X2dyb2JuZXJfZXF1YWwnXG4gICAgICArICcgcG9seV9ncm9ibmVyX21lbWJlciBwb2x5X2dyb2JuZXJfc3Vic2V0cCBwb2x5X2lkZWFsX2ludGVyc2VjdGlvbiBwb2x5X2lkZWFsX3BvbHlzYXR1cmF0aW9uJ1xuICAgICAgKyAnIHBvbHlfaWRlYWxfcG9seXNhdHVyYXRpb24xIHBvbHlfaWRlYWxfc2F0dXJhdGlvbiBwb2x5X2lkZWFsX3NhdHVyYXRpb24xIHBvbHlfbGNtJ1xuICAgICAgKyAnIHBvbHlfbWluaW1pemF0aW9uIHBvbHltb2QgcG9seV9tdWx0aXBseSBwb2x5bm9tZTJlbGUgcG9seW5vbWlhbHAgcG9seV9ub3JtYWxfZm9ybSdcbiAgICAgICsgJyBwb2x5X25vcm1hbGl6ZSBwb2x5X25vcm1hbGl6ZV9saXN0IHBvbHlfcG9seXNhdHVyYXRpb25fZXh0ZW5zaW9uIHBvbHlfcHJpbWl0aXZlX3BhcnQnXG4gICAgICArICcgcG9seV9wc2V1ZG9fZGl2aWRlIHBvbHlfcmVkdWNlZF9ncm9ibmVyIHBvbHlfcmVkdWN0aW9uIHBvbHlfc2F0dXJhdGlvbl9leHRlbnNpb24nXG4gICAgICArICcgcG9seV9zX3BvbHlub21pYWwgcG9seV9zdWJ0cmFjdCBwb2x5dG9jb21wYW5pb24gcG9wIHBvc3RmaXggcG90ZW50aWFsIHBvd2VyX21vZCdcbiAgICAgICsgJyBwb3dlcnNlcmllcyBwb3dlcnNldCBwcmVmaXggcHJldl9wcmltZSBwcmltZXAgcHJpbWVzIHByaW5jaXBhbF9jb21wb25lbnRzJ1xuICAgICAgKyAnIHByaW50IHByaW50ZiBwcmludGZpbGUgcHJpbnRfZ3JhcGggcHJpbnRwb2lzIHByaW50cHJvcHMgcHJvZHJhYyBwcm9kdWN0IHByb3BlcnRpZXMnXG4gICAgICArICcgcHJvcHZhcnMgcHNpIHBzdWJzdCBwdHJpYW5ndWxhcml6ZSBwdWkgcHVpMmNvbXAgcHVpMmVsZSBwdWkycG9seW5vbWUgcHVpX2RpcmVjdCdcbiAgICAgICsgJyBwdWlyZWR1YyBwdXNoIHB1dCBwdiBxcHV0IHFyYW5nZSBxdHkgcXVhZF9jb250cm9sIHF1YWRfcWFnIHF1YWRfcWFnaSBxdWFkX3FhZ3AnXG4gICAgICArICcgcXVhZF9xYWdzIHF1YWRfcWF3YyBxdWFkX3Fhd2YgcXVhZF9xYXdvIHF1YWRfcWF3cyBxdWFkcmlsYXRlcmFsIHF1YW50aWxlJ1xuICAgICAgKyAnIHF1YW50aWxlX2Jlcm5vdWxsaSBxdWFudGlsZV9iZXRhIHF1YW50aWxlX2Jpbm9taWFsIHF1YW50aWxlX2NhdWNoeSBxdWFudGlsZV9jaGkyJ1xuICAgICAgKyAnIHF1YW50aWxlX2NvbnRpbnVvdXNfdW5pZm9ybSBxdWFudGlsZV9kaXNjcmV0ZV91bmlmb3JtIHF1YW50aWxlX2V4cCBxdWFudGlsZV9mJ1xuICAgICAgKyAnIHF1YW50aWxlX2dhbW1hIHF1YW50aWxlX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHF1YW50aWxlX2dlb21ldHJpYyBxdWFudGlsZV9ndW1iZWwnXG4gICAgICArICcgcXVhbnRpbGVfaHlwZXJnZW9tZXRyaWMgcXVhbnRpbGVfbGFwbGFjZSBxdWFudGlsZV9sb2dpc3RpYyBxdWFudGlsZV9sb2dub3JtYWwnXG4gICAgICArICcgcXVhbnRpbGVfbmVnYXRpdmVfYmlub21pYWwgcXVhbnRpbGVfbm9uY2VudHJhbF9jaGkyIHF1YW50aWxlX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHF1YW50aWxlX25vcm1hbCBxdWFudGlsZV9wYXJldG8gcXVhbnRpbGVfcG9pc3NvbiBxdWFudGlsZV9yYXlsZWlnaCBxdWFudGlsZV9zdHVkZW50X3QnXG4gICAgICArICcgcXVhbnRpbGVfd2VpYnVsbCBxdWFydGlsZV9za2V3bmVzcyBxdWl0IHF1bml0IHF1b3RpZW50IHJhY2FoX3YgcmFjYWhfdyByYWRjYW4nXG4gICAgICArICcgcmFkaXVzIHJhbmRvbSByYW5kb21fYmVybm91bGxpIHJhbmRvbV9iZXRhIHJhbmRvbV9iaW5vbWlhbCByYW5kb21fYmlwYXJ0aXRlX2dyYXBoJ1xuICAgICAgKyAnIHJhbmRvbV9jYXVjaHkgcmFuZG9tX2NoaTIgcmFuZG9tX2NvbnRpbnVvdXNfdW5pZm9ybSByYW5kb21fZGlncmFwaCByYW5kb21fZGlzY3JldGVfdW5pZm9ybSdcbiAgICAgICsgJyByYW5kb21fZXhwIHJhbmRvbV9mIHJhbmRvbV9nYW1tYSByYW5kb21fZ2VuZXJhbF9maW5pdGVfZGlzY3JldGUgcmFuZG9tX2dlb21ldHJpYydcbiAgICAgICsgJyByYW5kb21fZ3JhcGggcmFuZG9tX2dyYXBoMSByYW5kb21fZ3VtYmVsIHJhbmRvbV9oeXBlcmdlb21ldHJpYyByYW5kb21fbGFwbGFjZSdcbiAgICAgICsgJyByYW5kb21fbG9naXN0aWMgcmFuZG9tX2xvZ25vcm1hbCByYW5kb21fbmVnYXRpdmVfYmlub21pYWwgcmFuZG9tX25ldHdvcmsnXG4gICAgICArICcgcmFuZG9tX25vbmNlbnRyYWxfY2hpMiByYW5kb21fbm9uY2VudHJhbF9zdHVkZW50X3QgcmFuZG9tX25vcm1hbCByYW5kb21fcGFyZXRvJ1xuICAgICAgKyAnIHJhbmRvbV9wZXJtdXRhdGlvbiByYW5kb21fcG9pc3NvbiByYW5kb21fcmF5bGVpZ2ggcmFuZG9tX3JlZ3VsYXJfZ3JhcGggcmFuZG9tX3N0dWRlbnRfdCdcbiAgICAgICsgJyByYW5kb21fdG91cm5hbWVudCByYW5kb21fdHJlZSByYW5kb21fd2VpYnVsbCByYW5nZSByYW5rIHJhdCByYXRjb2VmIHJhdGRlbm9tJ1xuICAgICAgKyAnIHJhdGRpZmYgcmF0ZGlzcmVwIHJhdGV4cGFuZCByYXRpbnRlcnBvbCByYXRpb25hbCByYXRpb25hbGl6ZSByYXRudW1lciByYXRudW1wJ1xuICAgICAgKyAnIHJhdHAgcmF0c2ltcCByYXRzdWJzdCByYXR2YXJzIHJhdHdlaWdodCByZWFkIHJlYWRfYXJyYXkgcmVhZF9iaW5hcnlfYXJyYXknXG4gICAgICArICcgcmVhZF9iaW5hcnlfbGlzdCByZWFkX2JpbmFyeV9tYXRyaXggcmVhZGJ5dGUgcmVhZGNoYXIgcmVhZF9oYXNoZWRfYXJyYXkgcmVhZGxpbmUnXG4gICAgICArICcgcmVhZF9saXN0IHJlYWRfbWF0cml4IHJlYWRfbmVzdGVkX2xpc3QgcmVhZG9ubHkgcmVhZF94cG0gcmVhbF9pbWFncGFydF90b19jb25qdWdhdGUnXG4gICAgICArICcgcmVhbHBhcnQgcmVhbHJvb3RzIHJlYXJyYXkgcmVjdGFuZ2xlIHJlY3Rmb3JtIHJlY3Rmb3JtX2xvZ19pZl9jb25zdGFudCByZWN0dG9wb2xhcidcbiAgICAgICsgJyByZWRpZmYgcmVkdWNlX2NvbnN0cyByZWR1Y2Vfb3JkZXIgcmVnaW9uIHJlZ2lvbl9ib3VuZGFyaWVzIHJlZ2lvbl9ib3VuZGFyaWVzX3BsdXMnXG4gICAgICArICcgcmVtIHJlbWFpbmRlciByZW1hcnJheSByZW1ib3ggcmVtY29tcHMgcmVtY29uIHJlbWNvb3JkIHJlbWZ1biByZW1mdW5jdGlvbidcbiAgICAgICsgJyByZW1sZXQgcmVtb3ZlIHJlbW92ZV9jb25zdHZhbHVlIHJlbW92ZV9kaW1lbnNpb25zIHJlbW92ZV9lZGdlIHJlbW92ZV9mdW5kYW1lbnRhbF9kaW1lbnNpb25zJ1xuICAgICAgKyAnIHJlbW92ZV9mdW5kYW1lbnRhbF91bml0cyByZW1vdmVfcGxvdF9vcHRpb24gcmVtb3ZlX3ZlcnRleCByZW1wYXJ0IHJlbXJ1bGUnXG4gICAgICArICcgcmVtc3ltIHJlbXZhbHVlIHJlbmFtZSByZW5hbWVfZmlsZSByZXNldCByZXNldF9kaXNwbGF5cyByZXNpZHVlIHJlc29sdmFudGUnXG4gICAgICArICcgcmVzb2x2YW50ZV9hbHRlcm5lZTEgcmVzb2x2YW50ZV9iaXBhcnRpdGUgcmVzb2x2YW50ZV9kaWVkcmFsZSByZXNvbHZhbnRlX2tsZWluJ1xuICAgICAgKyAnIHJlc29sdmFudGVfa2xlaW4zIHJlc29sdmFudGVfcHJvZHVpdF9zeW0gcmVzb2x2YW50ZV91bml0YWlyZSByZXNvbHZhbnRlX3ZpZXJlcidcbiAgICAgICsgJyByZXN0IHJlc3VsdGFudCByZXR1cm4gcmV2ZWFsIHJldmVyc2UgcmV2ZXJ0IHJldmVydDIgcmdiMmxldmVsIHJocyByaWNjaSByaWVtYW5uJ1xuICAgICAgKyAnIHJpbnZhcmlhbnQgcmlzY2ggcmsgcm1kaXIgcm5jb21iaW5lIHJvbWJlcmcgcm9vbSByb290c2NvbnRyYWN0IHJvdW5kIHJvdydcbiAgICAgICsgJyByb3dvcCByb3dzd2FwIHJyZWR1Y2UgcnVuX3Rlc3RzdWl0ZSAlcyBzYXZlIHNhdmluZyBzY2FsYXJwIHNjYWxlZF9iZXNzZWxfaSdcbiAgICAgICsgJyBzY2FsZWRfYmVzc2VsX2kwIHNjYWxlZF9iZXNzZWxfaTEgc2NhbGVmYWN0b3JzIHNjYW5tYXAgc2NhdHRlcnBsb3Qgc2NhdHRlcnBsb3RfZGVzY3JpcHRpb24nXG4gICAgICArICcgc2NlbmUgc2NodXIyY29tcCBzY29uY2F0IHNjb3B5IHNjc2ltcCBzY3VydmF0dXJlIHNkb3duY2FzZSBzZWMgc2VjaCBzZWNvbmQnXG4gICAgICArICcgc2VxdWFsIHNlcXVhbGlnbm9yZSBzZXRfYWx0X2Rpc3BsYXkgc2V0ZGlmZmVyZW5jZSBzZXRfZHJhd19kZWZhdWx0cyBzZXRfZWRnZV93ZWlnaHQnXG4gICAgICArICcgc2V0ZWxteCBzZXRlcXVhbHAgc2V0aWZ5IHNldHAgc2V0X3BhcnRpdGlvbnMgc2V0X3Bsb3Rfb3B0aW9uIHNldF9wcm9tcHQgc2V0X3JhbmRvbV9zdGF0ZSdcbiAgICAgICsgJyBzZXRfdGV4X2Vudmlyb25tZW50IHNldF90ZXhfZW52aXJvbm1lbnRfZGVmYXVsdCBzZXR1bml0cyBzZXR1cF9hdXRvbG9hZCBzZXRfdXBfZG90X3NpbXBsaWZpY2F0aW9ucydcbiAgICAgICsgJyBzZXRfdmVydGV4X2xhYmVsIHNldmVudGggc2V4cGxvZGUgc2Ygc2hhMXN1bSBzaGEyNTZzdW0gc2hvcnRlc3RfcGF0aCBzaG9ydGVzdF93ZWlnaHRlZF9wYXRoJ1xuICAgICAgKyAnIHNob3cgc2hvd2NvbXBzIHNob3dyYXR2YXJzIHNpZXJwaW5za2lhbGUgc2llcnBpbnNraW1hcCBzaWduIHNpZ251bSBzaW1pbGFyaXR5dHJhbnNmb3JtJ1xuICAgICAgKyAnIHNpbXBfaW5lcXVhbGl0eSBzaW1wbGlmeV9zdW0gc2ltcGxvZGUgc2ltcG1ldGRlcml2IHNpbXRyYW4gc2luIHNpbmggc2luc2VydCdcbiAgICAgICsgJyBzaW52ZXJ0Y2FzZSBzaXh0aCBza2V3bmVzcyBza2V3bmVzc19iZXJub3VsbGkgc2tld25lc3NfYmV0YSBza2V3bmVzc19iaW5vbWlhbCdcbiAgICAgICsgJyBza2V3bmVzc19jaGkyIHNrZXduZXNzX2NvbnRpbnVvdXNfdW5pZm9ybSBza2V3bmVzc19kaXNjcmV0ZV91bmlmb3JtIHNrZXduZXNzX2V4cCdcbiAgICAgICsgJyBza2V3bmVzc19mIHNrZXduZXNzX2dhbW1hIHNrZXduZXNzX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHNrZXduZXNzX2dlb21ldHJpYydcbiAgICAgICsgJyBza2V3bmVzc19ndW1iZWwgc2tld25lc3NfaHlwZXJnZW9tZXRyaWMgc2tld25lc3NfbGFwbGFjZSBza2V3bmVzc19sb2dpc3RpYydcbiAgICAgICsgJyBza2V3bmVzc19sb2dub3JtYWwgc2tld25lc3NfbmVnYXRpdmVfYmlub21pYWwgc2tld25lc3Nfbm9uY2VudHJhbF9jaGkyIHNrZXduZXNzX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHNrZXduZXNzX25vcm1hbCBza2V3bmVzc19wYXJldG8gc2tld25lc3NfcG9pc3NvbiBza2V3bmVzc19yYXlsZWlnaCBza2V3bmVzc19zdHVkZW50X3QnXG4gICAgICArICcgc2tld25lc3Nfd2VpYnVsbCBzbGVuZ3RoIHNtYWtlIHNtYWxsX3Job21iaWNvc2lkb2RlY2FoZWRyb25fZ3JhcGggc21hbGxfcmhvbWJpY3Vib2N0YWhlZHJvbl9ncmFwaCdcbiAgICAgICsgJyBzbWF4IHNtaW4gc21pc21hdGNoIHNub3dtYXAgc251Yl9jdWJlX2dyYXBoIHNudWJfZG9kZWNhaGVkcm9uX2dyYXBoIHNvbHZlJ1xuICAgICAgKyAnIHNvbHZlX3JlYyBzb2x2ZV9yZWNfcmF0IHNvbWUgc29tcmFjIHNvcnQgc3BhcnNlNl9kZWNvZGUgc3BhcnNlNl9lbmNvZGUgc3BhcnNlNl9leHBvcnQnXG4gICAgICArICcgc3BhcnNlNl9pbXBvcnQgc3BlY2ludCBzcGhlcmljYWwgc3BoZXJpY2FsX2Jlc3NlbF9qIHNwaGVyaWNhbF9iZXNzZWxfeSBzcGhlcmljYWxfaGFua2VsMSdcbiAgICAgICsgJyBzcGhlcmljYWxfaGFua2VsMiBzcGhlcmljYWxfaGFybW9uaWMgc3BoZXJpY2FsX3RvX3h5eiBzcGxpY2Ugc3BsaXQgc3Bvc2l0aW9uJ1xuICAgICAgKyAnIHNwcmludCBzcWZyIHNxcnQgc3FydGRlbmVzdCBzcmVtb3ZlIHNyZW1vdmVmaXJzdCBzcmV2ZXJzZSBzc2VhcmNoIHNzb3J0IHNzdGF0dXMnXG4gICAgICArICcgc3N1YnN0IHNzdWJzdGZpcnN0IHN0YWlyY2FzZSBzdGFuZGFyZGl6ZSBzdGFuZGFyZGl6ZV9pbnZlcnNlX3RyaWcgc3RhcnBsb3QnXG4gICAgICArICcgc3RhcnBsb3RfZGVzY3JpcHRpb24gc3RhdHVzIHN0ZCBzdGQxIHN0ZF9iZXJub3VsbGkgc3RkX2JldGEgc3RkX2Jpbm9taWFsJ1xuICAgICAgKyAnIHN0ZF9jaGkyIHN0ZF9jb250aW51b3VzX3VuaWZvcm0gc3RkX2Rpc2NyZXRlX3VuaWZvcm0gc3RkX2V4cCBzdGRfZiBzdGRfZ2FtbWEnXG4gICAgICArICcgc3RkX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHN0ZF9nZW9tZXRyaWMgc3RkX2d1bWJlbCBzdGRfaHlwZXJnZW9tZXRyaWMgc3RkX2xhcGxhY2UnXG4gICAgICArICcgc3RkX2xvZ2lzdGljIHN0ZF9sb2dub3JtYWwgc3RkX25lZ2F0aXZlX2Jpbm9taWFsIHN0ZF9ub25jZW50cmFsX2NoaTIgc3RkX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHN0ZF9ub3JtYWwgc3RkX3BhcmV0byBzdGRfcG9pc3NvbiBzdGRfcmF5bGVpZ2ggc3RkX3N0dWRlbnRfdCBzdGRfd2VpYnVsbCdcbiAgICAgICsgJyBzdGVtcGxvdCBzdGlybGluZyBzdGlybGluZzEgc3RpcmxpbmcyIHN0cmltIHN0cmltbCBzdHJpbXIgc3RyaW5nIHN0cmluZ291dCdcbiAgICAgICsgJyBzdHJpbmdwIHN0cm9uZ19jb21wb25lbnRzIHN0cnV2ZV9oIHN0cnV2ZV9sIHN1YmxpcyBzdWJsaXN0IHN1Ymxpc3RfaW5kaWNlcydcbiAgICAgICsgJyBzdWJtYXRyaXggc3Vic2FtcGxlIHN1YnNldCBzdWJzZXRwIHN1YnN0IHN1YnN0aW5wYXJ0IHN1YnN0X3BhcmFsbGVsIHN1YnN0cGFydCdcbiAgICAgICsgJyBzdWJzdHJpbmcgc3VidmFyIHN1YnZhcnAgc3VtIHN1bWNvbnRyYWN0IHN1bW1hbmRfdG9fcmVjIHN1cGNhc2Ugc3VwY29udGV4dCdcbiAgICAgICsgJyBzeW1ib2xwIHN5bW1kaWZmZXJlbmNlIHN5bW1ldHJpY3Agc3lzdGVtIHRha2VfY2hhbm5lbCB0YWtlX2luZmVyZW5jZSB0YW4nXG4gICAgICArICcgdGFuaCB0YXlsb3IgdGF5bG9yaW5mbyB0YXlsb3JwIHRheWxvcl9zaW1wbGlmaWVyIHRheXRvcmF0IHRjbF9vdXRwdXQgdGNvbnRyYWN0J1xuICAgICAgKyAnIHRlbGxyYXQgdGVsbHNpbXAgdGVsbHNpbXBhZnRlciB0ZW50ZXggdGVudGggdGVzdF9tZWFuIHRlc3RfbWVhbnNfZGlmZmVyZW5jZSdcbiAgICAgICsgJyB0ZXN0X25vcm1hbGl0eSB0ZXN0X3Byb3BvcnRpb24gdGVzdF9wcm9wb3J0aW9uc19kaWZmZXJlbmNlIHRlc3RfcmFua19zdW0nXG4gICAgICArICcgdGVzdF9zaWduIHRlc3Rfc2lnbmVkX3JhbmsgdGVzdF92YXJpYW5jZSB0ZXN0X3ZhcmlhbmNlX3JhdGlvIHRleCB0ZXgxIHRleF9kaXNwbGF5J1xuICAgICAgKyAnIHRleHB1dCAldGggdGhpcmQgdGhyb3cgdGltZSB0aW1lZGF0ZSB0aW1lciB0aW1lcl9pbmZvIHRsZGVmaW50IHRsaW1pdCB0b2RkX2NveGV0ZXInXG4gICAgICArICcgdG9lcGxpdHogdG9rZW5zIHRvX2xpc3AgdG9wb2xvZ2ljYWxfc29ydCB0b19wb2x5IHRvX3BvbHlfc29sdmUgdG90YWxkaXNyZXAnXG4gICAgICArICcgdG90YWxmb3VyaWVyIHRvdGllbnQgdHBhcnRwb2wgdHJhY2UgdHJhY2VtYXRyaXggdHJhY2Vfb3B0aW9ucyB0cmFuc2Zvcm1fc2FtcGxlJ1xuICAgICAgKyAnIHRyYW5zbGF0ZSB0cmFuc2xhdGVfZmlsZSB0cmFuc3Bvc2UgdHJlZWZhbGUgdHJlZV9yZWR1Y2UgdHJlaWxsaXMgdHJlaW5hdCdcbiAgICAgICsgJyB0cmlhbmdsZSB0cmlhbmd1bGFyaXplIHRyaWdleHBhbmQgdHJpZ3JhdCB0cmlncmVkdWNlIHRyaWdzaW1wIHRydW5jIHRydW5jYXRlJ1xuICAgICAgKyAnIHRydW5jYXRlZF9jdWJlX2dyYXBoIHRydW5jYXRlZF9kb2RlY2FoZWRyb25fZ3JhcGggdHJ1bmNhdGVkX2ljb3NhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIHRydW5jYXRlZF90ZXRyYWhlZHJvbl9ncmFwaCB0cl93YXJuaW5nc19nZXQgdHViZSB0dXR0ZV9ncmFwaCB1ZWl2ZWN0cyB1Zm9yZ2V0J1xuICAgICAgKyAnIHVsdHJhc3BoZXJpY2FsIHVuZGVybHlpbmdfZ3JhcGggdW5kaWZmIHVuaW9uIHVuaXF1ZSB1bml0ZWlnZW52ZWN0b3JzIHVuaXRwJ1xuICAgICAgKyAnIHVuaXRzIHVuaXRfc3RlcCB1bml0dmVjdG9yIHVub3JkZXIgdW5zdW0gdW50ZWxscmF0IHVudGltZXInXG4gICAgICArICcgdW50cmFjZSB1cHBlcmNhc2VwIHVyaWNjaSB1cmllbWFubiB1dmVjdCB2YW5kZXJtb25kZV9tYXRyaXggdmFyIHZhcjEgdmFyX2Jlcm5vdWxsaSdcbiAgICAgICsgJyB2YXJfYmV0YSB2YXJfYmlub21pYWwgdmFyX2NoaTIgdmFyX2NvbnRpbnVvdXNfdW5pZm9ybSB2YXJfZGlzY3JldGVfdW5pZm9ybSdcbiAgICAgICsgJyB2YXJfZXhwIHZhcl9mIHZhcl9nYW1tYSB2YXJfZ2VuZXJhbF9maW5pdGVfZGlzY3JldGUgdmFyX2dlb21ldHJpYyB2YXJfZ3VtYmVsJ1xuICAgICAgKyAnIHZhcl9oeXBlcmdlb21ldHJpYyB2YXJfbGFwbGFjZSB2YXJfbG9naXN0aWMgdmFyX2xvZ25vcm1hbCB2YXJfbmVnYXRpdmVfYmlub21pYWwnXG4gICAgICArICcgdmFyX25vbmNlbnRyYWxfY2hpMiB2YXJfbm9uY2VudHJhbF9zdHVkZW50X3QgdmFyX25vcm1hbCB2YXJfcGFyZXRvIHZhcl9wb2lzc29uJ1xuICAgICAgKyAnIHZhcl9yYXlsZWlnaCB2YXJfc3R1ZGVudF90IHZhcl93ZWlidWxsIHZlY3RvciB2ZWN0b3Jwb3RlbnRpYWwgdmVjdG9yc2ltcCdcbiAgICAgICsgJyB2ZXJiaWZ5IHZlcnMgdmVydGV4X2NvbG9yaW5nIHZlcnRleF9jb25uZWN0aXZpdHkgdmVydGV4X2RlZ3JlZSB2ZXJ0ZXhfZGlzdGFuY2UnXG4gICAgICArICcgdmVydGV4X2VjY2VudHJpY2l0eSB2ZXJ0ZXhfaW5fZGVncmVlIHZlcnRleF9vdXRfZGVncmVlIHZlcnRpY2VzIHZlcnRpY2VzX3RvX2N5Y2xlJ1xuICAgICAgKyAnIHZlcnRpY2VzX3RvX3BhdGggJXcgd2V5bCB3aGVlbF9ncmFwaCB3aWVuZXJfaW5kZXggd2lnbmVyXzNqIHdpZ25lcl82aidcbiAgICAgICsgJyB3aWduZXJfOWogd2l0aF9zdGRvdXQgd3JpdGVfYmluYXJ5X2RhdGEgd3JpdGVieXRlIHdyaXRlX2RhdGEgd3JpdGVmaWxlIHdyb25za2lhbidcbiAgICAgICsgJyB4cmVkdWNlIHh0aHJ1ICV5IFplaWxiZXJnZXIgemVyb2VxdWl2IHplcm9mb3IgemVyb21hdHJpeCB6ZXJvbWF0cml4cCB6ZXRhJ1xuICAgICAgKyAnIHpnZWV2IHpoZWV2IHpsYW5nZSB6bl9hZGRfdGFibGUgem5fY2FybWljaGFlbF9sYW1iZGEgem5fY2hhcmFjdGVyaXN0aWNfZmFjdG9ycydcbiAgICAgICsgJyB6bl9kZXRlcm1pbmFudCB6bl9mYWN0b3JfZ2VuZXJhdG9ycyB6bl9pbnZlcnRfYnlfbHUgem5fbG9nIHpuX211bHRfdGFibGUnXG4gICAgICArICcgYWJzYm94Y2hhciBhY3RpdmVjb250ZXh0cyBhZGFwdF9kZXB0aCBhZGRpdGl2ZSBhZGltIGFmb3JtIGFsZ2VicmFpYydcbiAgICAgICsgJyBhbGdlcHNpbG9uIGFsZ2V4YWN0IGFsaWFzZXMgYWxsYnV0IGFsbF9kb3RzaW1wX2Rlbm9tcyBhbGxvY2F0aW9uIGFsbHN5bSBhbHBoYWJldGljJ1xuICAgICAgKyAnIGFuaW1hdGlvbiBhbnRpc3ltbWV0cmljIGFycmF5cyBhc2tleHAgYXNzdW1lX3BvcyBhc3N1bWVfcG9zX3ByZWQgYXNzdW1lc2NhbGFyJ1xuICAgICAgKyAnIGFzeW1ib2wgYXRvbWdyYWQgYXRyaWcxIGF4ZXMgYXhpc18zZCBheGlzX2JvdHRvbSBheGlzX2xlZnQgYXhpc19yaWdodCBheGlzX3RvcCdcbiAgICAgICsgJyBhemltdXRoIGJhY2tncm91bmQgYmFja2dyb3VuZF9jb2xvciBiYWNrc3Vic3QgYmVybGVmYWN0IGJlcm5zdGVpbl9leHBsaWNpdCdcbiAgICAgICsgJyBiZXNzZWxleHBhbmQgYmV0YV9hcmdzX3N1bV90b19pbnRlZ2VyIGJldGFfZXhwYW5kIGJmdG9yYXQgYmZ0cnVuYyBiaW5kdGVzdCdcbiAgICAgICsgJyBib3JkZXIgYm91bmRhcmllc19hcnJheSBib3ggYm94Y2hhciBicmVha3VwICVjIGNhcHBpbmcgY2F1Y2h5c3VtIGNicmFuZ2UnXG4gICAgICArICcgY2J0aWNzIGNlbnRlciBjZmxlbmd0aCBjZnJhbWVfZmxhZyBjbm9ubWV0X2ZsYWcgY29sb3IgY29sb3JfYmFyIGNvbG9yX2Jhcl90aWNzJ1xuICAgICAgKyAnIGNvbG9yYm94IGNvbHVtbnMgY29tbXV0YXRpdmUgY29tcGxleCBjb25lIGNvbnRleHQgY29udGV4dHMgY29udG91ciBjb250b3VyX2xldmVscydcbiAgICAgICsgJyBjb3NucGlmbGFnIGN0YXlwb3YgY3RheXB0IGN0YXlzd2l0Y2ggY3RheXZhciBjdF9jb29yZHMgY3RvcnNpb25fZmxhZyBjdHJnc2ltcCdcbiAgICAgICsgJyBjdWJlIGN1cnJlbnRfbGV0X3J1bGVfcGFja2FnZSBjeWxpbmRlciBkYXRhX2ZpbGVfbmFtZSBkZWJ1Z21vZGUgZGVjcmVhc2luZydcbiAgICAgICsgJyBkZWZhdWx0X2xldF9ydWxlX3BhY2thZ2UgZGVsYXkgZGVwZW5kZW5jaWVzIGRlcml2YWJicmV2IGRlcml2c3Vic3QgZGV0b3V0J1xuICAgICAgKyAnIGRpYWdtZXRyaWMgZGlmZiBkaW0gZGltZW5zaW9ucyBkaXNwZmxhZyBkaXNwbGF5MmR8MTAgZGlzcGxheV9mb3JtYXRfaW50ZXJuYWwnXG4gICAgICArICcgZGlzdHJpYnV0ZV9vdmVyIGRvYWxsbXhvcHMgZG9tYWluIGRvbXhleHB0IGRvbXhteG9wcyBkb214bmN0aW1lcyBkb250ZmFjdG9yJ1xuICAgICAgKyAnIGRvc2NteG9wcyBkb3NjbXhwbHVzIGRvdDBuc2NzaW1wIGRvdDBzaW1wIGRvdDFzaW1wIGRvdGFzc29jIGRvdGNvbnN0cnVsZXMnXG4gICAgICArICcgZG90ZGlzdHJpYiBkb3RleHB0c2ltcCBkb3RpZGVudCBkb3RzY3J1bGVzIGRyYXdfZ3JhcGhfcHJvZ3JhbSBkcmF3X3JlYWxwYXJ0J1xuICAgICAgKyAnIGVkZ2VfY29sb3IgZWRnZV9jb2xvcmluZyBlZGdlX3BhcnRpdGlvbiBlZGdlX3R5cGUgZWRnZV93aWR0aCAlZWRpc3BmbGFnJ1xuICAgICAgKyAnIGVsZXZhdGlvbiAlZW1vZGUgZW5kcGhpIGVuZHRoZXRhIGVuZ2luZWVyaW5nX2Zvcm1hdF9mbG9hdHMgZW5oYW5jZWQzZCAlZW51bWVyJ1xuICAgICAgKyAnIGVwc2lsb25fbHAgZXJmZmxhZyBlcmZfcmVwcmVzZW50YXRpb24gZXJyb3Jtc2cgZXJyb3Jfc2l6ZSBlcnJvcl9zeW1zIGVycm9yX3R5cGUnXG4gICAgICArICcgJWVfdG9fbnVtbG9nIGV2YWwgZXZlbiBldmVuZnVuIGV2ZmxhZyBldmZ1biBldl9wb2ludCBleHBhbmR3cnRfZGVub20gZXhwaW50ZXhwYW5kJ1xuICAgICAgKyAnIGV4cGludHJlcCBleHBvbiBleHBvcCBleHB0ZGlzcGZsYWcgZXhwdGlzb2xhdGUgZXhwdHN1YnN0IGZhY2V4cGFuZCBmYWNzdW1fY29tYmluZSdcbiAgICAgICsgJyBmYWN0bGltIGZhY3RvcmZsYWcgZmFjdG9yaWFsX2V4cGFuZCBmYWN0b3JzX29ubHkgZmIgZmVhdHVyZSBmZWF0dXJlcydcbiAgICAgICsgJyBmaWxlX25hbWUgZmlsZV9vdXRwdXRfYXBwZW5kIGZpbGVfc2VhcmNoX2RlbW8gZmlsZV9zZWFyY2hfbGlzcCBmaWxlX3NlYXJjaF9tYXhpbWF8MTAnXG4gICAgICArICcgZmlsZV9zZWFyY2hfdGVzdHMgZmlsZV9zZWFyY2hfdXNhZ2UgZmlsZV90eXBlX2xpc3AgZmlsZV90eXBlX21heGltYXwxMCBmaWxsX2NvbG9yJ1xuICAgICAgKyAnIGZpbGxfZGVuc2l0eSBmaWxsZWRfZnVuYyBmaXhlZF92ZXJ0aWNlcyBmbGlwZmxhZyBmbG9hdDJiZiBmb250IGZvbnRfc2l6ZSdcbiAgICAgICsgJyBmb3J0aW5kZW50IGZvcnRzcGFjZXMgZnBwcmVjIGZwcHJpbnRwcmVjIGZ1bmN0aW9ucyBnYW1tYV9leHBhbmQgZ2FtbWFsaW0nXG4gICAgICArICcgZ2RldCBnZW5pbmRleCBnZW5zdW1udW0gR0dGQ0ZNQVggR0dGSU5GSU5JVFkgZ2xvYmFsc29sdmUgZ251cGxvdF9jb21tYW5kJ1xuICAgICAgKyAnIGdudXBsb3RfY3VydmVfc3R5bGVzIGdudXBsb3RfY3VydmVfdGl0bGVzIGdudXBsb3RfZGVmYXVsdF90ZXJtX2NvbW1hbmQgZ251cGxvdF9kdW1iX3Rlcm1fY29tbWFuZCdcbiAgICAgICsgJyBnbnVwbG90X2ZpbGVfYXJncyBnbnVwbG90X2ZpbGVfbmFtZSBnbnVwbG90X291dF9maWxlIGdudXBsb3RfcGRmX3Rlcm1fY29tbWFuZCdcbiAgICAgICsgJyBnbnVwbG90X3BtM2QgZ251cGxvdF9wbmdfdGVybV9jb21tYW5kIGdudXBsb3RfcG9zdGFtYmxlIGdudXBsb3RfcHJlYW1ibGUnXG4gICAgICArICcgZ251cGxvdF9wc190ZXJtX2NvbW1hbmQgZ251cGxvdF9zdmdfdGVybV9jb21tYW5kIGdudXBsb3RfdGVybSBnbnVwbG90X3ZpZXdfYXJncydcbiAgICAgICsgJyBHb3NwZXJfaW5fWmVpbGJlcmdlciBncmFkZWZzIGdyaWQgZ3JpZDJkIGdyaW5kIGhhbGZhbmdsZXMgaGVhZF9hbmdsZSBoZWFkX2JvdGgnXG4gICAgICArICcgaGVhZF9sZW5ndGggaGVhZF90eXBlIGhlaWdodCBoeXBlcmdlb21ldHJpY19yZXByZXNlbnRhdGlvbiAlaWFyZ3MgaWJhc2UnXG4gICAgICArICcgaWNjMSBpY2MyIGljb3VudGVyIGlkdW1teXggaWVxbnByaW50IGlmYiBpZmMxIGlmYzIgaWZnIGlmZ2kgaWZyIGlmcmFtZV9icmFja2V0X2Zvcm0nXG4gICAgICArICcgaWZyaSBpZ2Vvd2VkZ2VfZmxhZyBpa3QxIGlrdDIgaW1hZ2luYXJ5IGluY2hhciBpbmNyZWFzaW5nIGluZmV2YWwnXG4gICAgICArICcgaW5maW5pdHkgaW5mbGFnIGluZm9saXN0cyBpbm0gaW5tYzEgaW5tYzIgaW50YW5hbHlzaXMgaW50ZWdlciBpbnRlZ2VydmFsdWVkJ1xuICAgICAgKyAnIGludGVncmF0ZV91c2Vfcm9vdHNvZiBpbnRlZ3JhdGlvbl9jb25zdGFudCBpbnRlZ3JhdGlvbl9jb25zdGFudF9jb3VudGVyIGludGVycG9sYXRlX2NvbG9yJ1xuICAgICAgKyAnIGludGZhY2xpbSBpcF9ncmlkIGlwX2dyaWRfaW4gaXJyYXRpb25hbCBpc29sYXRlX3dydF90aW1lcyBpdGVyYXRpb25zIGl0cidcbiAgICAgICsgJyBqdWxpYV9wYXJhbWV0ZXIgJWsxICVrMiBrZWVwZmxvYXQga2V5IGtleV9wb3Mga2ludmFyaWFudCBrdCBsYWJlbCBsYWJlbF9hbGlnbm1lbnQnXG4gICAgICArICcgbGFiZWxfb3JpZW50YXRpb24gbGFiZWxzIGxhc3NvY2lhdGl2ZSBsYmZnc19uY29ycmVjdGlvbnMgbGJmZ3NfbmZldmFsX21heCdcbiAgICAgICsgJyBsZWZ0anVzdCBsZWdlbmQgbGV0cmF0IGxldF9ydWxlX3BhY2thZ2VzIGxmZyBsZyBsaG9zcGl0YWxsaW0gbGltc3Vic3QgbGluZWFyJ1xuICAgICAgKyAnIGxpbmVhcl9zb2x2ZXIgbGluZWNoYXIgbGluZWx8MTAgbGluZW51bSBsaW5lX3R5cGUgbGluZXdpZHRoIGxpbmVfd2lkdGggbGluc29sdmVfcGFyYW1zJ1xuICAgICAgKyAnIGxpbnNvbHZld2FybiBsaXNwZGlzcCBsaXN0YXJpdGggbGlzdGNvbnN0dmFycyBsaXN0ZHVtbXl2YXJzIGxteGNoYXIgbG9hZF9wYXRobmFtZSdcbiAgICAgICsgJyBsb2FkcHJpbnQgbG9nYWJzIGxvZ2FyYyBsb2djYiBsb2djb25jb2VmZnAgbG9nZXhwYW5kIGxvZ25lZ2ludCBsb2dzaW1wIGxvZ3gnXG4gICAgICArICcgbG9neF9zZWNvbmRhcnkgbG9neSBsb2d5X3NlY29uZGFyeSBsb2d6IGxyaWVtIG0xcGJyYW5jaCBtYWNyb2V4cGFuc2lvbiBtYWNyb3MnXG4gICAgICArICcgbWFpbnZhciBtYW51YWxfZGVtbyBtYXBlcnJvciBtYXBwcmludCBtYXRyaXhfZWxlbWVudF9hZGQgbWF0cml4X2VsZW1lbnRfbXVsdCdcbiAgICAgICsgJyBtYXRyaXhfZWxlbWVudF90cmFuc3Bvc2UgbWF4YXBwbHlkZXB0aCBtYXhhcHBseWhlaWdodCBtYXhpbWFfdGVtcGRpcnwxMCBtYXhpbWFfdXNlcmRpcnwxMCdcbiAgICAgICsgJyBtYXhuZWdleCBNQVhfT1JEIG1heHBvc2V4IG1heHBzaWZyYWNkZW5vbSBtYXhwc2lmcmFjbnVtIG1heHBzaW5lZ2ludCBtYXhwc2lwb3NpbnQnXG4gICAgICArICcgbWF4dGF5b3JkZXIgbWVzaF9saW5lc19jb2xvciBtZXRob2QgbW9kX2JpZ19wcmltZSBtb2RlX2NoZWNrX2Vycm9ycCdcbiAgICAgICsgJyBtb2RlX2NoZWNrcCBtb2RlX2NoZWNrX3dhcm5wIG1vZF90ZXN0IG1vZF90aHJlc2hvbGQgbW9kdWxhcl9saW5lYXJfc29sdmVyJ1xuICAgICAgKyAnIG1vZHVsdXMgbXVsdGlwbGljYXRpdmUgbXVsdGlwbGljaXRpZXMgbXlvcHRpb25zIG5hcnkgbmVnZGlzdHJpYiBuZWdzdW1kaXNwZmxhZydcbiAgICAgICsgJyBuZXdsaW5lIG5ld3RvbmVwc2lsb24gbmV3dG9ubWF4aXRlciBuZXh0bGF5ZXJmYWN0b3IgbmljZWluZGljZXNwcmVmIG5tIG5tYydcbiAgICAgICsgJyBub2V2YWwgbm9sYWJlbHMgbm9uZWdhdGl2ZV9scCBub25pbnRlZ2VyIG5vbnNjYWxhciBub3VuIG5vdW5kaXNwIG5vdW5zIG5wJ1xuICAgICAgKyAnIG5waSBudGlja3MgbnRyaWcgbnVtZXIgbnVtZXJfcGJyYW5jaCBvYmFzZSBvZGQgb2RkZnVuIG9wYWNpdHkgb3Bwcm9wZXJ0aWVzJ1xuICAgICAgKyAnIG9wc3Vic3Qgb3B0aW1wcmVmaXggb3B0aW9uc2V0IG9yaWVudGF0aW9uIG9yaWdpbiBvcnRob3BvbHlfcmV0dXJuc19pbnRlcnZhbHMnXG4gICAgICArICcgb3V0YXRpdmUgb3V0Y2hhciBwYWNrYWdlZmlsZSBwYWxldHRlIHBhcnRzd2l0Y2ggcGRmX2ZpbGUgcGZlZm9ybWF0IHBoaXJlc29sdXRpb24nXG4gICAgICArICcgJXBpYXJncyBwaWVjZSBwaXZvdF9jb3VudF9zeCBwaXZvdF9tYXhfc3ggcGxvdF9mb3JtYXQgcGxvdF9vcHRpb25zIHBsb3RfcmVhbHBhcnQnXG4gICAgICArICcgcG5nX2ZpbGUgcG9jaGhhbW1lcl9tYXhfaW5kZXggcG9pbnRzIHBvaW50c2l6ZSBwb2ludF9zaXplIHBvaW50c19qb2luZWQgcG9pbnRfdHlwZSdcbiAgICAgICsgJyBwb2lzbGltIHBvaXNzb24gcG9seV9jb2VmZmljaWVudF9yaW5nIHBvbHlfZWxpbWluYXRpb25fb3JkZXIgcG9seWZhY3RvciBwb2x5X2dyb2JuZXJfYWxnb3JpdGhtJ1xuICAgICAgKyAnIHBvbHlfZ3JvYm5lcl9kZWJ1ZyBwb2x5X21vbm9taWFsX29yZGVyIHBvbHlfcHJpbWFyeV9lbGltaW5hdGlvbl9vcmRlciBwb2x5X3JldHVybl90ZXJtX2xpc3QnXG4gICAgICArICcgcG9seV9zZWNvbmRhcnlfZWxpbWluYXRpb25fb3JkZXIgcG9seV90b3BfcmVkdWN0aW9uX29ubHkgcG9zZnVuIHBvc2l0aW9uJ1xuICAgICAgKyAnIHBvd2VyZGlzcCBwcmVkIHByZWRlcnJvciBwcmltZXBfbnVtYmVyX29mX3Rlc3RzIHByb2R1Y3RfdXNlX2dhbW1hIHByb2dyYW0nXG4gICAgICArICcgcHJvZ3JhbW1vZGUgcHJvbW90ZV9mbG9hdF90b19iaWdmbG9hdCBwcm9tcHQgcHJvcG9ydGlvbmFsX2F4ZXMgcHJvcHMgcHNleHBhbmQnXG4gICAgICArICcgcHNfZmlsZSByYWRleHBhbmQgcmFkaXVzIHJhZHN1YnN0ZmxhZyByYXNzb2NpYXRpdmUgcmF0YWxnZGVub20gcmF0Y2hyaXN0b2YnXG4gICAgICArICcgcmF0ZGVub21kaXZpZGUgcmF0ZWluc3RlaW4gcmF0ZXBzaWxvbiByYXRmYWMgcmF0aW9uYWwgcmF0bXggcmF0cHJpbnQgcmF0cmllbWFubidcbiAgICAgICsgJyByYXRzaW1wZXhwb25zIHJhdHZhcnN3aXRjaCByYXR3ZWlnaHRzIHJhdHdleWwgcmF0d3RsdmwgcmVhbCByZWFsb25seSByZWRyYXcnXG4gICAgICArICcgcmVmY2hlY2sgcmVzb2x1dGlvbiByZXN0YXJ0IHJlc3VsdGFudCByaWMgcmllbSBybXhjaGFyICVybnVtX2xpc3Qgcm9tYmVyZ2FicydcbiAgICAgICsgJyByb21iZXJnaXQgcm9tYmVyZ21pbiByb21iZXJndG9sIHJvb3RzY29ubW9kZSByb290c2Vwc2lsb24gcnVuX3ZpZXdlciBzYW1lX3h5J1xuICAgICAgKyAnIHNhbWVfeHl6IHNhdmVkZWYgc2F2ZWZhY3RvcnMgc2NhbGFyIHNjYWxhcm1hdHJpeHAgc2NhbGUgc2NhbGVfbHAgc2V0Y2hlY2snXG4gICAgICArICcgc2V0Y2hlY2ticmVhayBzZXR2YWwgc2hvd19lZGdlX2NvbG9yIHNob3dfZWRnZXMgc2hvd19lZGdlX3R5cGUgc2hvd19lZGdlX3dpZHRoJ1xuICAgICAgKyAnIHNob3dfaWQgc2hvd19sYWJlbCBzaG93dGltZSBzaG93X3ZlcnRleF9jb2xvciBzaG93X3ZlcnRleF9zaXplIHNob3dfdmVydGV4X3R5cGUnXG4gICAgICArICcgc2hvd192ZXJ0aWNlcyBzaG93X3dlaWdodCBzaW1wIHNpbXBsaWZpZWRfb3V0cHV0IHNpbXBsaWZ5X3Byb2R1Y3RzIHNpbXBwcm9kdWN0J1xuICAgICAgKyAnIHNpbXBzdW0gc2lubnBpZmxhZyBzb2x2ZWRlY29tcG9zZXMgc29sdmVleHBsaWNpdCBzb2x2ZWZhY3RvcnMgc29sdmVudWxsd2FybidcbiAgICAgICsgJyBzb2x2ZXJhZGNhbiBzb2x2ZXRyaWd3YXJuIHNwYWNlIHNwYXJzZSBzcGhlcmUgc3ByaW5nX2VtYmVkZGluZ19kZXB0aCBzcXJ0ZGlzcGZsYWcnXG4gICAgICArICcgc3RhcmRpc3Agc3RhcnRwaGkgc3RhcnR0aGV0YSBzdGF0c19udW1lciBzdHJpbmdkaXNwIHN0cnVjdHVyZXMgc3R5bGUgc3VibGlzX2FwcGx5X2xhbWJkYSdcbiAgICAgICsgJyBzdWJudW1zaW1wIHN1bWV4cGFuZCBzdW1zcGxpdGZhY3Qgc3VyZmFjZSBzdXJmYWNlX2hpZGUgc3ZnX2ZpbGUgc3ltbWV0cmljJ1xuICAgICAgKyAnIHRhYiB0YXlsb3JkZXB0aCB0YXlsb3JfbG9nZXhwYW5kIHRheWxvcl9vcmRlcl9jb2VmZmljaWVudHMgdGF5bG9yX3RydW5jYXRlX3BvbHlub21pYWxzJ1xuICAgICAgKyAnIHRlbnNvcmtpbGwgdGVybWluYWwgdGVzdHN1aXRlX2ZpbGVzIHRoZXRhcmVzb2x1dGlvbiB0aW1lcl9kZXZhbHVlIHRpdGxlIHRsaW1zd2l0Y2gnXG4gICAgICArICcgdHIgdHJhY2sgdHJhbnNjb21waWxlIHRyYW5zZm9ybSB0cmFuc2Zvcm1feHkgdHJhbnNsYXRlX2Zhc3RfYXJyYXlzIHRyYW5zcGFyZW50J1xuICAgICAgKyAnIHRyYW5zcnVuIHRyX2FycmF5X2FzX3JlZiB0cl9ib3VuZF9mdW5jdGlvbl9hcHBseXAgdHJfZmlsZV90dHlfbWVzc2FnZXNwIHRyX2Zsb2F0X2Nhbl9icmFuY2hfY29tcGxleCdcbiAgICAgICsgJyB0cl9mdW5jdGlvbl9jYWxsX2RlZmF1bHQgdHJpZ2V4cGFuZHBsdXMgdHJpZ2V4cGFuZHRpbWVzIHRyaWdpbnZlcnNlcyB0cmlnc2lnbidcbiAgICAgICsgJyB0cml2aWFsX3NvbHV0aW9ucyB0cl9udW1lciB0cl9vcHRpbWl6ZV9tYXhfbG9vcCB0cl9zZW1pY29tcGlsZSB0cl9zdGF0ZV92YXJzJ1xuICAgICAgKyAnIHRyX3dhcm5fYmFkX2Z1bmN0aW9uX2NhbGxzIHRyX3dhcm5fZmV4cHIgdHJfd2Fybl9tZXZhbCB0cl93YXJuX21vZGUnXG4gICAgICArICcgdHJfd2Fybl91bmRlY2xhcmVkIHRyX3dhcm5fdW5kZWZpbmVkX3ZhcmlhYmxlIHRzdGVwIHR0eW9mZiB0dWJlX2V4dHJlbWVzJ1xuICAgICAgKyAnIHVmZyB1ZyAldW5pdGV4cGFuZCB1bml0X3ZlY3RvcnMgdXJpYyB1cmllbSB1c2VfZmFzdF9hcnJheXMgdXNlcl9wcmVhbWJsZSdcbiAgICAgICsgJyB1c2Vyc2V0dW5pdHMgdmFsdWVzIHZlY3RfY3Jvc3MgdmVyYm9zZSB2ZXJ0ZXhfY29sb3IgdmVydGV4X2NvbG9yaW5nIHZlcnRleF9wYXJ0aXRpb24nXG4gICAgICArICcgdmVydGV4X3NpemUgdmVydGV4X3R5cGUgdmlldyB3YXJuaW5ncyB3ZXlsIHdpZHRoIHdpbmRvd25hbWUgd2luZG93dGl0bGUgd2lyZWRfc3VyZmFjZSdcbiAgICAgICsgJyB3aXJlZnJhbWUgeGF4aXMgeGF4aXNfY29sb3IgeGF4aXNfc2Vjb25kYXJ5IHhheGlzX3R5cGUgeGF4aXNfd2lkdGggeGxhYmVsJ1xuICAgICAgKyAnIHhsYWJlbF9zZWNvbmRhcnkgeGxlbmd0aCB4cmFuZ2UgeHJhbmdlX3NlY29uZGFyeSB4dGljcyB4dGljc19heGlzIHh0aWNzX3JvdGF0ZSdcbiAgICAgICsgJyB4dGljc19yb3RhdGVfc2Vjb25kYXJ5IHh0aWNzX3NlY29uZGFyeSB4dGljc19zZWNvbmRhcnlfYXhpcyB4dV9ncmlkIHhfdm94ZWwnXG4gICAgICArICcgeHlfZmlsZSB4eXBsYW5lIHh5X3NjYWxlIHlheGlzIHlheGlzX2NvbG9yIHlheGlzX3NlY29uZGFyeSB5YXhpc190eXBlIHlheGlzX3dpZHRoJ1xuICAgICAgKyAnIHlsYWJlbCB5bGFiZWxfc2Vjb25kYXJ5IHlsZW5ndGggeXJhbmdlIHlyYW5nZV9zZWNvbmRhcnkgeXRpY3MgeXRpY3NfYXhpcydcbiAgICAgICsgJyB5dGljc19yb3RhdGUgeXRpY3Nfcm90YXRlX3NlY29uZGFyeSB5dGljc19zZWNvbmRhcnkgeXRpY3Nfc2Vjb25kYXJ5X2F4aXMnXG4gICAgICArICcgeXZfZ3JpZCB5X3ZveGVsIHl4X3JhdGlvIHpheGlzIHpheGlzX2NvbG9yIHpheGlzX3R5cGUgemF4aXNfd2lkdGggemVyb2EgemVyb2InXG4gICAgICArICcgemVyb2Jlcm4gemV0YSVwaSB6bGFiZWwgemxhYmVsX3JvdGF0ZSB6bGVuZ3RoIHptaW4gem5fcHJpbXJvb3RfbGltaXQgem5fcHJpbXJvb3RfcHJldGVzdCc7XG4gIHZhciBTWU1CT0xTID0gJ18gX18gJXwwICUlfDAnO1xuXG4gIHJldHVybiB7XG4gICAgbGV4ZW1lczogJ1tBLVphLXpfJV1bMC05QS1aYS16XyVdKicsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgICBidWlsdF9pbjogQlVJTFRJTl9GVU5DVElPTlMsXG4gICAgICBzeW1ib2w6IFNZTUJPTFMsXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46ICcvXFxcXConLFxuICAgICAgICBlbmQ6ICdcXFxcKi8nLFxuICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gZmxvYXQgbnVtYmVyIHcvIGV4cG9uZW50XG4gICAgICAgICAgICAvLyBobW0sIEkgd29uZGVyIGlmIHdlIG91Z2h0IHRvIGluY2x1ZGUgb3RoZXIgZXhwb25lbnQgbWFya2Vycz9cbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoXFxcXGQrfFxcXFxkK1xcXFwufFxcXFwuXFxcXGQrfFxcXFxkK1xcXFwuXFxcXGQrKVtFZV1bLStdP1xcXFxkK1xcXFxiJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGJpZ2Zsb2F0IG51bWJlclxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcZCt8XFxcXGQrXFxcXC58XFxcXC5cXFxcZCt8XFxcXGQrXFxcXC5cXFxcZCspW0JiXVstK10/XFxcXGQrXFxcXGInLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gZmxvYXQgbnVtYmVyIHcvb3V0IGV4cG9uZW50XG4gICAgICAgICAgICAvLyBEb2Vzbid0IHNlZW0gdG8gcmVjb2duaXplIGZsb2F0cyB3aGljaCBzdGFydCB3aXRoICcuJ1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcLlxcXFxkK3xcXFxcZCtcXFxcLlxcXFxkKylcXFxcYicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBpbnRlZ2VyIGluIGJhc2UgdXAgdG8gMzZcbiAgICAgICAgICAgIC8vIERvZXNuJ3Qgc2VlbSB0byByZWNvZ25pemUgaW50ZWdlcnMgd2hpY2ggZW5kIHdpdGggJy4nXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKFxcXFxkK3wwWzAtOUEtWmEtel0rKVxcXFwuP1xcXFxiJyxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC9AL1xuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOlxuICAgICAgJ2ludCBmbG9hdCBzdHJpbmcgdmVjdG9yIG1hdHJpeCBpZiBlbHNlIHN3aXRjaCBjYXNlIGRlZmF1bHQgd2hpbGUgZG8gZm9yIGluIGJyZWFrICcgK1xuICAgICAgJ2NvbnRpbnVlIGdsb2JhbCBwcm9jIHJldHVybiBhYm91dCBhYnMgYWRkQXR0ciBhZGRBdHRyaWJ1dGVFZGl0b3JOb2RlSGVscCBhZGREeW5hbWljICcgK1xuICAgICAgJ2FkZE5ld1NoZWxmVGFiIGFkZFBQIGFkZFBhbmVsQ2F0ZWdvcnkgYWRkUHJlZml4VG9OYW1lIGFkdmFuY2VUb05leHREcml2ZW5LZXkgJyArXG4gICAgICAnYWZmZWN0ZWROZXQgYWZmZWN0cyBhaW1Db25zdHJhaW50IGFpciBhbGlhcyBhbGlhc0F0dHIgYWxpZ24gYWxpZ25DdHggYWxpZ25DdXJ2ZSAnICtcbiAgICAgICdhbGlnblN1cmZhY2UgYWxsVmlld0ZpdCBhbWJpZW50TGlnaHQgYW5nbGUgYW5nbGVCZXR3ZWVuIGFuaW1Db25lIGFuaW1DdXJ2ZUVkaXRvciAnICtcbiAgICAgICdhbmltRGlzcGxheSBhbmltVmlldyBhbm5vdGF0ZSBhcHBlbmRTdHJpbmdBcnJheSBhcHBsaWNhdGlvbk5hbWUgYXBwbHlBdHRyUHJlc2V0ICcgK1xuICAgICAgJ2FwcGx5VGFrZSBhcmNMZW5EaW1Db250ZXh0IGFyY0xlbmd0aERpbWVuc2lvbiBhcmNsZW4gYXJyYXlNYXBwZXIgYXJ0M2RQYWludEN0eCAnICtcbiAgICAgICdhcnRBdHRyQ3R4IGFydEF0dHJQYWludFZlcnRleEN0eCBhcnRBdHRyU2tpblBhaW50Q3R4IGFydEF0dHJUb29sIGFydEJ1aWxkUGFpbnRNZW51ICcgK1xuICAgICAgJ2FydEZsdWlkQXR0ckN0eCBhcnRQdXR0eUN0eCBhcnRTZWxlY3RDdHggYXJ0U2V0UGFpbnRDdHggYXJ0VXNlclBhaW50Q3R4IGFzc2lnbkNvbW1hbmQgJyArXG4gICAgICAnYXNzaWduSW5wdXREZXZpY2UgYXNzaWduVmlld3BvcnRGYWN0b3JpZXMgYXR0YWNoQ3VydmUgYXR0YWNoRGV2aWNlQXR0ciBhdHRhY2hTdXJmYWNlICcgK1xuICAgICAgJ2F0dHJDb2xvclNsaWRlckdycCBhdHRyQ29tcGF0aWJpbGl0eSBhdHRyQ29udHJvbEdycCBhdHRyRW51bU9wdGlvbk1lbnUgJyArXG4gICAgICAnYXR0ckVudW1PcHRpb25NZW51R3JwIGF0dHJGaWVsZEdycCBhdHRyRmllbGRTbGlkZXJHcnAgYXR0ck5hdmlnYXRpb25Db250cm9sR3JwICcgK1xuICAgICAgJ2F0dHJQcmVzZXRFZGl0V2luIGF0dHJpYnV0ZUV4aXN0cyBhdHRyaWJ1dGVJbmZvIGF0dHJpYnV0ZU1lbnUgYXR0cmlidXRlUXVlcnkgJyArXG4gICAgICAnYXV0b0tleWZyYW1lIGF1dG9QbGFjZSBiYWtlQ2xpcCBiYWtlRmx1aWRTaGFkaW5nIGJha2VQYXJ0aWFsSGlzdG9yeSBiYWtlUmVzdWx0cyAnICtcbiAgICAgICdiYWtlU2ltdWxhdGlvbiBiYXNlbmFtZSBiYXNlbmFtZUV4IGJhdGNoUmVuZGVyIGJlc3NlbCBiZXZlbCBiZXZlbFBsdXMgYmluTWVtYmVyc2hpcCAnICtcbiAgICAgICdiaW5kU2tpbiBibGVuZDIgYmxlbmRTaGFwZSBibGVuZFNoYXBlRWRpdG9yIGJsZW5kU2hhcGVQYW5lbCBibGVuZFR3b0F0dHIgYmxpbmREYXRhVHlwZSAnICtcbiAgICAgICdib25lTGF0dGljZSBib3VuZGFyeSBib3hEb2xseUN0eCBib3hab29tQ3R4IGJ1ZmZlckN1cnZlIGJ1aWxkQm9va21hcmtNZW51ICcgK1xuICAgICAgJ2J1aWxkS2V5ZnJhbWVNZW51IGJ1dHRvbiBidXR0b25NYW5pcCBDQkcgY2FjaGVGaWxlIGNhY2hlRmlsZUNvbWJpbmUgY2FjaGVGaWxlTWVyZ2UgJyArXG4gICAgICAnY2FjaGVGaWxlVHJhY2sgY2FtZXJhIGNhbWVyYVZpZXcgY2FuQ3JlYXRlTWFuaXAgY2FudmFzIGNhcGl0YWxpemVTdHJpbmcgY2F0Y2ggJyArXG4gICAgICAnY2F0Y2hRdWlldCBjZWlsIGNoYW5nZVN1YmRpdkNvbXBvbmVudERpc3BsYXlMZXZlbCBjaGFuZ2VTdWJkaXZSZWdpb24gY2hhbm5lbEJveCAnICtcbiAgICAgICdjaGFyYWN0ZXIgY2hhcmFjdGVyTWFwIGNoYXJhY3Rlck91dGxpbmVFZGl0b3IgY2hhcmFjdGVyaXplIGNoZGlyIGNoZWNrQm94IGNoZWNrQm94R3JwICcgK1xuICAgICAgJ2NoZWNrRGVmYXVsdFJlbmRlckdsb2JhbHMgY2hvaWNlIGNpcmNsZSBjaXJjdWxhckZpbGxldCBjbGFtcCBjbGVhciBjbGVhckNhY2hlIGNsaXAgJyArXG4gICAgICAnY2xpcEVkaXRvciBjbGlwRWRpdG9yQ3VycmVudFRpbWVDdHggY2xpcFNjaGVkdWxlIGNsaXBTY2hlZHVsZXJPdXRsaW5lciBjbGlwVHJpbUJlZm9yZSAnICtcbiAgICAgICdjbG9zZUN1cnZlIGNsb3NlU3VyZmFjZSBjbHVzdGVyIGNtZEZpbGVPdXRwdXQgY21kU2Nyb2xsRmllbGRFeGVjdXRlciAnICtcbiAgICAgICdjbWRTY3JvbGxGaWVsZFJlcG9ydGVyIGNtZFNoZWxsIGNvYXJzZW5TdWJkaXZTZWxlY3Rpb25MaXN0IGNvbGxpc2lvbiBjb2xvciAnICtcbiAgICAgICdjb2xvckF0UG9pbnQgY29sb3JFZGl0b3IgY29sb3JJbmRleCBjb2xvckluZGV4U2xpZGVyR3JwIGNvbG9yU2xpZGVyQnV0dG9uR3JwICcgK1xuICAgICAgJ2NvbG9yU2xpZGVyR3JwIGNvbHVtbkxheW91dCBjb21tYW5kRWNobyBjb21tYW5kTGluZSBjb21tYW5kUG9ydCBjb21wYWN0SGFpclN5c3RlbSAnICtcbiAgICAgICdjb21wb25lbnRFZGl0b3IgY29tcG9zaXRpbmdJbnRlcm9wIGNvbXB1dGVQb2x5c2V0Vm9sdW1lIGNvbmRpdGlvbiBjb25lIGNvbmZpcm1EaWFsb2cgJyArXG4gICAgICAnY29ubmVjdEF0dHIgY29ubmVjdENvbnRyb2wgY29ubmVjdER5bmFtaWMgY29ubmVjdEpvaW50IGNvbm5lY3Rpb25JbmZvIGNvbnN0cmFpbiAnICtcbiAgICAgICdjb25zdHJhaW5WYWx1ZSBjb25zdHJ1Y3Rpb25IaXN0b3J5IGNvbnRhaW5lciBjb250YWluc011bHRpYnl0ZSBjb250ZXh0SW5mbyBjb250cm9sICcgK1xuICAgICAgJ2NvbnZlcnRGcm9tT2xkTGF5ZXJzIGNvbnZlcnRJZmZUb1BzZCBjb252ZXJ0TGlnaHRtYXAgY29udmVydFNvbGlkVHggY29udmVydFRlc3NlbGxhdGlvbiAnICtcbiAgICAgICdjb252ZXJ0VW5pdCBjb3B5QXJyYXkgY29weUZsZXhvciBjb3B5S2V5IGNvcHlTa2luV2VpZ2h0cyBjb3MgY3BCdXR0b24gY3BDYWNoZSAnICtcbiAgICAgICdjcENsb3RoU2V0IGNwQ29sbGlzaW9uIGNwQ29uc3RyYWludCBjcENvbnZDbG90aFRvTWVzaCBjcEZvcmNlcyBjcEdldFNvbHZlckF0dHIgY3BQYW5lbCAnICtcbiAgICAgICdjcFByb3BlcnR5IGNwUmlnaWRDb2xsaXNpb25GaWx0ZXIgY3BTZWFtIGNwU2V0RWRpdCBjcFNldFNvbHZlckF0dHIgY3BTb2x2ZXIgJyArXG4gICAgICAnY3BTb2x2ZXJUeXBlcyBjcFRvb2wgY3BVcGRhdGVDbG90aFVWcyBjcmVhdGVEaXNwbGF5TGF5ZXIgY3JlYXRlRHJhd0N0eCBjcmVhdGVFZGl0b3IgJyArXG4gICAgICAnY3JlYXRlTGF5ZXJlZFBzZEZpbGUgY3JlYXRlTW90aW9uRmllbGQgY3JlYXRlTmV3U2hlbGYgY3JlYXRlTm9kZSBjcmVhdGVSZW5kZXJMYXllciAnICtcbiAgICAgICdjcmVhdGVTdWJkaXZSZWdpb24gY3Jvc3MgY3Jvc3NQcm9kdWN0IGN0eEFib3J0IGN0eENvbXBsZXRpb24gY3R4RWRpdE1vZGUgY3R4VHJhdmVyc2UgJyArXG4gICAgICAnY3VycmVudEN0eCBjdXJyZW50VGltZSBjdXJyZW50VGltZUN0eCBjdXJyZW50VW5pdCBjdXJ2ZSBjdXJ2ZUFkZFB0Q3R4ICcgK1xuICAgICAgJ2N1cnZlQ1ZDdHggY3VydmVFUEN0eCBjdXJ2ZUVkaXRvckN0eCBjdXJ2ZUludGVyc2VjdCBjdXJ2ZU1vdmVFUEN0eCBjdXJ2ZU9uU3VyZmFjZSAnICtcbiAgICAgICdjdXJ2ZVNrZXRjaEN0eCBjdXRLZXkgY3ljbGVDaGVjayBjeWxpbmRlciBkYWdQb3NlIGRhdGUgZGVmYXVsdExpZ2h0TGlzdENoZWNrQm94ICcgK1xuICAgICAgJ2RlZmF1bHROYXZpZ2F0aW9uIGRlZmluZURhdGFTZXJ2ZXIgZGVmaW5lVmlydHVhbERldmljZSBkZWZvcm1lciBkZWdfdG9fcmFkIGRlbGV0ZSAnICtcbiAgICAgICdkZWxldGVBdHRyIGRlbGV0ZVNoYWRpbmdHcm91cHNBbmRNYXRlcmlhbHMgZGVsZXRlU2hlbGZUYWIgZGVsZXRlVUkgZGVsZXRlVW51c2VkQnJ1c2hlcyAnICtcbiAgICAgICdkZWxyYW5kc3RyIGRldGFjaEN1cnZlIGRldGFjaERldmljZUF0dHIgZGV0YWNoU3VyZmFjZSBkZXZpY2VFZGl0b3IgZGV2aWNlUGFuZWwgZGdJbmZvICcgK1xuICAgICAgJ2RnZGlydHkgZGdldmFsIGRndGltZXIgZGltV2hlbiBkaXJlY3RLZXlDdHggZGlyZWN0aW9uYWxMaWdodCBkaXJtYXAgZGlybmFtZSBkaXNhYmxlICcgK1xuICAgICAgJ2Rpc2Nvbm5lY3RBdHRyIGRpc2Nvbm5lY3RKb2ludCBkaXNrQ2FjaGUgZGlzcGxhY2VtZW50VG9Qb2x5IGRpc3BsYXlBZmZlY3RlZCAnICtcbiAgICAgICdkaXNwbGF5Q29sb3IgZGlzcGxheUN1bGwgZGlzcGxheUxldmVsT2ZEZXRhaWwgZGlzcGxheVByZWYgZGlzcGxheVJHQkNvbG9yICcgK1xuICAgICAgJ2Rpc3BsYXlTbW9vdGhuZXNzIGRpc3BsYXlTdGF0cyBkaXNwbGF5U3RyaW5nIGRpc3BsYXlTdXJmYWNlIGRpc3RhbmNlRGltQ29udGV4dCAnICtcbiAgICAgICdkaXN0YW5jZURpbWVuc2lvbiBkb0JsdXIgZG9sbHkgZG9sbHlDdHggZG9wZVNoZWV0RWRpdG9yIGRvdCBkb3RQcm9kdWN0ICcgK1xuICAgICAgJ2RvdWJsZVByb2ZpbGVCaXJhaWxTdXJmYWNlIGRyYWcgZHJhZ0F0dHJDb250ZXh0IGRyYWdnZXJDb250ZXh0IGRyb3BvZmZMb2NhdG9yICcgK1xuICAgICAgJ2R1cGxpY2F0ZSBkdXBsaWNhdGVDdXJ2ZSBkdXBsaWNhdGVTdXJmYWNlIGR5bkNhY2hlIGR5bkNvbnRyb2wgZHluRXhwb3J0IGR5bkV4cHJlc3Npb24gJyArXG4gICAgICAnZHluR2xvYmFscyBkeW5QYWludEVkaXRvciBkeW5QYXJ0aWNsZUN0eCBkeW5QcmVmIGR5blJlbEVkUGFuZWwgZHluUmVsRWRpdG9yICcgK1xuICAgICAgJ2R5bmFtaWNMb2FkIGVkaXRBdHRyTGltaXRzIGVkaXREaXNwbGF5TGF5ZXJHbG9iYWxzIGVkaXREaXNwbGF5TGF5ZXJNZW1iZXJzICcgK1xuICAgICAgJ2VkaXRSZW5kZXJMYXllckFkanVzdG1lbnQgZWRpdFJlbmRlckxheWVyR2xvYmFscyBlZGl0UmVuZGVyTGF5ZXJNZW1iZXJzIGVkaXRvciAnICtcbiAgICAgICdlZGl0b3JUZW1wbGF0ZSBlZmZlY3RvciBlbWl0IGVtaXR0ZXIgZW5hYmxlRGV2aWNlIGVuY29kZVN0cmluZyBlbmRTdHJpbmcgZW5kc1dpdGggZW52ICcgK1xuICAgICAgJ2VxdWl2YWxlbnQgZXF1aXZhbGVudFRvbCBlcmYgZXJyb3IgZXZhbCBldmFsRGVmZXJyZWQgZXZhbEVjaG8gZXZlbnQgJyArXG4gICAgICAnZXhhY3RXb3JsZEJvdW5kaW5nQm94IGV4Y2x1c2l2ZUxpZ2h0Q2hlY2tCb3ggZXhlYyBleGVjdXRlRm9yRWFjaE9iamVjdCBleGlzdHMgZXhwICcgK1xuICAgICAgJ2V4cHJlc3Npb24gZXhwcmVzc2lvbkVkaXRvckxpc3RlbiBleHRlbmRDdXJ2ZSBleHRlbmRTdXJmYWNlIGV4dHJ1ZGUgZmNoZWNrIGZjbG9zZSBmZW9mICcgK1xuICAgICAgJ2ZmbHVzaCBmZ2V0bGluZSBmZ2V0d29yZCBmaWxlIGZpbGVCcm93c2VyRGlhbG9nIGZpbGVEaWFsb2cgZmlsZUV4dGVuc2lvbiBmaWxlSW5mbyAnICtcbiAgICAgICdmaWxldGVzdCBmaWxsZXRDdXJ2ZSBmaWx0ZXIgZmlsdGVyQ3VydmUgZmlsdGVyRXhwYW5kIGZpbHRlclN0dWRpb0ltcG9ydCAnICtcbiAgICAgICdmaW5kQWxsSW50ZXJzZWN0aW9ucyBmaW5kQW5pbUN1cnZlcyBmaW5kS2V5ZnJhbWUgZmluZE1lbnVJdGVtIGZpbmRSZWxhdGVkU2tpbkNsdXN0ZXIgJyArXG4gICAgICAnZmluZGVyIGZpcnN0UGFyZW50T2YgZml0QnNwbGluZSBmbGV4b3IgZmxvYXRFcSBmbG9hdEZpZWxkIGZsb2F0RmllbGRHcnAgZmxvYXRTY3JvbGxCYXIgJyArXG4gICAgICAnZmxvYXRTbGlkZXIgZmxvYXRTbGlkZXIyIGZsb2F0U2xpZGVyQnV0dG9uR3JwIGZsb2F0U2xpZGVyR3JwIGZsb29yIGZsb3cgZmx1aWRDYWNoZUluZm8gJyArXG4gICAgICAnZmx1aWRFbWl0dGVyIGZsdWlkVm94ZWxJbmZvIGZsdXNoVW5kbyBmbW9kIGZvbnREaWFsb2cgZm9wZW4gZm9ybUxheW91dCBmb3JtYXQgZnByaW50ICcgK1xuICAgICAgJ2ZyYW1lTGF5b3V0IGZyZWFkIGZyZWVGb3JtRmlsbGV0IGZyZXdpbmQgZnJvbU5hdGl2ZVBhdGggZndyaXRlIGdhbW1hIGdhdXNzICcgK1xuICAgICAgJ2dlb21ldHJ5Q29uc3RyYWludCBnZXRBcHBsaWNhdGlvblZlcnNpb25Bc0Zsb2F0IGdldEF0dHIgZ2V0Q2xhc3NpZmljYXRpb24gJyArXG4gICAgICAnZ2V0RGVmYXVsdEJydXNoIGdldEZpbGVMaXN0IGdldEZsdWlkQXR0ciBnZXRJbnB1dERldmljZVJhbmdlIGdldE1heWFQYW5lbFR5cGVzICcgK1xuICAgICAgJ2dldE1vZGlmaWVycyBnZXRQYW5lbCBnZXRQYXJ0aWNsZUF0dHIgZ2V0UGx1Z2luUmVzb3VyY2UgZ2V0ZW52IGdldHBpZCBnbFJlbmRlciAnICtcbiAgICAgICdnbFJlbmRlckVkaXRvciBnbG9iYWxTdGl0Y2ggZ21hdGNoIGdvYWwgZ290b0JpbmRQb3NlIGdyYWJDb2xvciBncmFkaWVudENvbnRyb2wgJyArXG4gICAgICAnZ3JhZGllbnRDb250cm9sTm9BdHRyIGdyYXBoRG9sbHlDdHggZ3JhcGhTZWxlY3RDb250ZXh0IGdyYXBoVHJhY2tDdHggZ3Jhdml0eSBncmlkICcgK1xuICAgICAgJ2dyaWRMYXlvdXQgZ3JvdXAgZ3JvdXBPYmplY3RzQnlOYW1lIEhmQWRkQXR0cmFjdG9yVG9BUyBIZkFzc2lnbkFTIEhmQnVpbGRFcXVhbE1hcCAnICtcbiAgICAgICdIZkJ1aWxkRnVyRmlsZXMgSGZCdWlsZEZ1ckltYWdlcyBIZkNhbmNlbEFGUiBIZkNvbm5lY3RBU1RvSEYgSGZDcmVhdGVBdHRyYWN0b3IgJyArXG4gICAgICAnSGZEZWxldGVBUyBIZkVkaXRBUyBIZlBlcmZvcm1DcmVhdGVBUyBIZlJlbW92ZUF0dHJhY3RvckZyb21BUyBIZlNlbGVjdEF0dGFjaGVkICcgK1xuICAgICAgJ0hmU2VsZWN0QXR0cmFjdG9ycyBIZlVuQXNzaWduQVMgaGFyZGVuUG9pbnRDdXJ2ZSBoYXJkd2FyZSBoYXJkd2FyZVJlbmRlclBhbmVsICcgK1xuICAgICAgJ2hlYWRzVXBEaXNwbGF5IGhlYWRzVXBNZXNzYWdlIGhlbHAgaGVscExpbmUgaGVybWl0ZSBoaWRlIGhpbGl0ZSBoaXRUZXN0IGhvdEJveCBob3RrZXkgJyArXG4gICAgICAnaG90a2V5Q2hlY2sgaHN2X3RvX3JnYiBodWRCdXR0b24gaHVkU2xpZGVyIGh1ZFNsaWRlckJ1dHRvbiBod1JlZmxlY3Rpb25NYXAgaHdSZW5kZXIgJyArXG4gICAgICAnaHdSZW5kZXJMb2FkIGh5cGVyR3JhcGggaHlwZXJQYW5lbCBoeXBlclNoYWRlIGh5cG90IGljb25UZXh0QnV0dG9uIGljb25UZXh0Q2hlY2tCb3ggJyArXG4gICAgICAnaWNvblRleHRSYWRpb0J1dHRvbiBpY29uVGV4dFJhZGlvQ29sbGVjdGlvbiBpY29uVGV4dFNjcm9sbExpc3QgaWNvblRleHRTdGF0aWNMYWJlbCAnICtcbiAgICAgICdpa0hhbmRsZSBpa0hhbmRsZUN0eCBpa0hhbmRsZURpc3BsYXlTY2FsZSBpa1NvbHZlciBpa1NwbGluZUhhbmRsZUN0eCBpa1N5c3RlbSAnICtcbiAgICAgICdpa1N5c3RlbUluZm8gaWtma0Rpc3BsYXlNZXRob2QgaWxsdXN0cmF0b3JDdXJ2ZXMgaW1hZ2UgaW1mUGx1Z2lucyBpbmhlcml0VHJhbnNmb3JtICcgK1xuICAgICAgJ2luc2VydEpvaW50IGluc2VydEpvaW50Q3R4IGluc2VydEtleUN0eCBpbnNlcnRLbm90Q3VydmUgaW5zZXJ0S25vdFN1cmZhY2UgaW5zdGFuY2UgJyArXG4gICAgICAnaW5zdGFuY2VhYmxlIGluc3RhbmNlciBpbnRGaWVsZCBpbnRGaWVsZEdycCBpbnRTY3JvbGxCYXIgaW50U2xpZGVyIGludFNsaWRlckdycCAnICtcbiAgICAgICdpbnRlclRvVUkgaW50ZXJuYWxWYXIgaW50ZXJzZWN0IGlwckVuZ2luZSBpc0FuaW1DdXJ2ZSBpc0Nvbm5lY3RlZCBpc0RpcnR5IGlzUGFyZW50T2YgJyArXG4gICAgICAnaXNTYW1lT2JqZWN0IGlzVHJ1ZSBpc1ZhbGlkT2JqZWN0TmFtZSBpc1ZhbGlkU3RyaW5nIGlzVmFsaWRVaU5hbWUgaXNvbGF0ZVNlbGVjdCAnICtcbiAgICAgICdpdGVtRmlsdGVyIGl0ZW1GaWx0ZXJBdHRyIGl0ZW1GaWx0ZXJSZW5kZXIgaXRlbUZpbHRlclR5cGUgam9pbnQgam9pbnRDbHVzdGVyIGpvaW50Q3R4ICcgK1xuICAgICAgJ2pvaW50RGlzcGxheVNjYWxlIGpvaW50TGF0dGljZSBrZXlUYW5nZW50IGtleWZyYW1lIGtleWZyYW1lT3V0bGluZXIgJyArXG4gICAgICAna2V5ZnJhbWVSZWdpb25DdXJyZW50VGltZUN0eCBrZXlmcmFtZVJlZ2lvbkRpcmVjdEtleUN0eCBrZXlmcmFtZVJlZ2lvbkRvbGx5Q3R4ICcgK1xuICAgICAgJ2tleWZyYW1lUmVnaW9uSW5zZXJ0S2V5Q3R4IGtleWZyYW1lUmVnaW9uTW92ZUtleUN0eCBrZXlmcmFtZVJlZ2lvblNjYWxlS2V5Q3R4ICcgK1xuICAgICAgJ2tleWZyYW1lUmVnaW9uU2VsZWN0S2V5Q3R4IGtleWZyYW1lUmVnaW9uU2V0S2V5Q3R4IGtleWZyYW1lUmVnaW9uVHJhY2tDdHggJyArXG4gICAgICAna2V5ZnJhbWVTdGF0cyBsYXNzb0NvbnRleHQgbGF0dGljZSBsYXR0aWNlRGVmb3JtS2V5Q3R4IGxhdW5jaCBsYXVuY2hJbWFnZUVkaXRvciAnICtcbiAgICAgICdsYXllckJ1dHRvbiBsYXllcmVkU2hhZGVyUG9ydCBsYXllcmVkVGV4dHVyZVBvcnQgbGF5b3V0IGxheW91dERpYWxvZyBsaWdodExpc3QgJyArXG4gICAgICAnbGlnaHRMaXN0RWRpdG9yIGxpZ2h0TGlzdFBhbmVsIGxpZ2h0bGluayBsaW5lSW50ZXJzZWN0aW9uIGxpbmVhclByZWNpc2lvbiBsaW5zdGVwICcgK1xuICAgICAgJ2xpc3RBbmltYXRhYmxlIGxpc3RBdHRyIGxpc3RDYW1lcmFzIGxpc3RDb25uZWN0aW9ucyBsaXN0RGV2aWNlQXR0YWNobWVudHMgbGlzdEhpc3RvcnkgJyArXG4gICAgICAnbGlzdElucHV0RGV2aWNlQXhlcyBsaXN0SW5wdXREZXZpY2VCdXR0b25zIGxpc3RJbnB1dERldmljZXMgbGlzdE1lbnVBbm5vdGF0aW9uICcgK1xuICAgICAgJ2xpc3ROb2RlVHlwZXMgbGlzdFBhbmVsQ2F0ZWdvcmllcyBsaXN0UmVsYXRpdmVzIGxpc3RTZXRzIGxpc3RUcmFuc2Zvcm1zICcgK1xuICAgICAgJ2xpc3RVbnNlbGVjdGVkIGxpc3RlckVkaXRvciBsb2FkRmx1aWQgbG9hZE5ld1NoZWxmIGxvYWRQbHVnaW4gJyArXG4gICAgICAnbG9hZFBsdWdpbkxhbmd1YWdlUmVzb3VyY2VzIGxvYWRQcmVmT2JqZWN0cyBsb2NhbGl6ZWRQYW5lbExhYmVsIGxvY2tOb2RlIGxvZnQgbG9nICcgK1xuICAgICAgJ2xvbmdOYW1lT2YgbG9va1RocnUgbHMgbHNUaHJvdWdoRmlsdGVyIGxzVHlwZSBsc1VJIE1heWF0b21yIG1hZyBtYWtlSWRlbnRpdHkgbWFrZUxpdmUgJyArXG4gICAgICAnbWFrZVBhaW50YWJsZSBtYWtlUm9sbCBtYWtlU2luZ2xlU3VyZmFjZSBtYWtlVHViZU9uIG1ha2Vib3QgbWFuaXBNb3ZlQ29udGV4dCAnICtcbiAgICAgICdtYW5pcE1vdmVMaW1pdHNDdHggbWFuaXBPcHRpb25zIG1hbmlwUm90YXRlQ29udGV4dCBtYW5pcFJvdGF0ZUxpbWl0c0N0eCAnICtcbiAgICAgICdtYW5pcFNjYWxlQ29udGV4dCBtYW5pcFNjYWxlTGltaXRzQ3R4IG1hcmtlciBtYXRjaCBtYXggbWVtb3J5IG1lbnUgbWVudUJhckxheW91dCAnICtcbiAgICAgICdtZW51RWRpdG9yIG1lbnVJdGVtIG1lbnVJdGVtVG9TaGVsZiBtZW51U2V0IG1lbnVTZXRQcmVmIG1lc3NhZ2VMaW5lIG1pbiBtaW5pbWl6ZUFwcCAnICtcbiAgICAgICdtaXJyb3JKb2ludCBtb2RlbEN1cnJlbnRUaW1lQ3R4IG1vZGVsRWRpdG9yIG1vZGVsUGFuZWwgbW91c2UgbW92SW4gbW92T3V0IG1vdmUgJyArXG4gICAgICAnbW92ZUlLdG9GSyBtb3ZlS2V5Q3R4IG1vdmVWZXJ0ZXhBbG9uZ0RpcmVjdGlvbiBtdWx0aVByb2ZpbGVCaXJhaWxTdXJmYWNlIG11dGUgJyArXG4gICAgICAnblBhcnRpY2xlIG5hbWVDb21tYW5kIG5hbWVGaWVsZCBuYW1lc3BhY2UgbmFtZXNwYWNlSW5mbyBuZXdQYW5lbEl0ZW1zIG5ld3RvbiBub2RlQ2FzdCAnICtcbiAgICAgICdub2RlSWNvbkJ1dHRvbiBub2RlT3V0bGluZXIgbm9kZVByZXNldCBub2RlVHlwZSBub2lzZSBub25MaW5lYXIgbm9ybWFsQ29uc3RyYWludCAnICtcbiAgICAgICdub3JtYWxpemUgbnVyYnNCb29sZWFuIG51cmJzQ29weVVWU2V0IG51cmJzQ3ViZSBudXJic0VkaXRVViBudXJic1BsYW5lIG51cmJzU2VsZWN0ICcgK1xuICAgICAgJ251cmJzU3F1YXJlIG51cmJzVG9Qb2x5IG51cmJzVG9Qb2x5Z29uc1ByZWYgbnVyYnNUb1N1YmRpdiBudXJic1RvU3ViZGl2UHJlZiAnICtcbiAgICAgICdudXJic1VWU2V0IG51cmJzVmlld0RpcmVjdGlvblZlY3RvciBvYmpFeGlzdHMgb2JqZWN0Q2VudGVyIG9iamVjdExheWVyIG9iamVjdFR5cGUgJyArXG4gICAgICAnb2JqZWN0VHlwZVVJIG9ic29sZXRlUHJvYyBvY2Vhbk51cmJzUHJldmlld1BsYW5lIG9mZnNldEN1cnZlIG9mZnNldEN1cnZlT25TdXJmYWNlICcgK1xuICAgICAgJ29mZnNldFN1cmZhY2Ugb3BlbkdMRXh0ZW5zaW9uIG9wZW5NYXlhUHJlZiBvcHRpb25NZW51IG9wdGlvbk1lbnVHcnAgb3B0aW9uVmFyIG9yYml0ICcgK1xuICAgICAgJ29yYml0Q3R4IG9yaWVudENvbnN0cmFpbnQgb3V0bGluZXJFZGl0b3Igb3V0bGluZXJQYW5lbCBvdmVycmlkZU1vZGlmaWVyICcgK1xuICAgICAgJ3BhaW50RWZmZWN0c0Rpc3BsYXkgcGFpckJsZW5kIHBhbGV0dGVQb3J0IHBhbmVMYXlvdXQgcGFuZWwgcGFuZWxDb25maWd1cmF0aW9uICcgK1xuICAgICAgJ3BhbmVsSGlzdG9yeSBwYXJhbURpbUNvbnRleHQgcGFyYW1EaW1lbnNpb24gcGFyYW1Mb2NhdG9yIHBhcmVudCBwYXJlbnRDb25zdHJhaW50ICcgK1xuICAgICAgJ3BhcnRpY2xlIHBhcnRpY2xlRXhpc3RzIHBhcnRpY2xlSW5zdGFuY2VyIHBhcnRpY2xlUmVuZGVySW5mbyBwYXJ0aXRpb24gcGFzdGVLZXkgJyArXG4gICAgICAncGF0aEFuaW1hdGlvbiBwYXVzZSBwY2xvc2UgcGVyY2VudCBwZXJmb3JtYW5jZU9wdGlvbnMgcGZ4c3Ryb2tlcyBwaWNrV2FsayBwaWN0dXJlICcgK1xuICAgICAgJ3BpeGVsTW92ZSBwbGFuYXJTcmYgcGxhbmUgcGxheSBwbGF5YmFja09wdGlvbnMgcGxheWJsYXN0IHBsdWdBdHRyIHBsdWdOb2RlIHBsdWdpbkluZm8gJyArXG4gICAgICAncGx1Z2luUmVzb3VyY2VVdGlsIHBvaW50Q29uc3RyYWludCBwb2ludEN1cnZlQ29uc3RyYWludCBwb2ludExpZ2h0IHBvaW50TWF0cml4TXVsdCAnICtcbiAgICAgICdwb2ludE9uQ3VydmUgcG9pbnRPblN1cmZhY2UgcG9pbnRQb3NpdGlvbiBwb2xlVmVjdG9yQ29uc3RyYWludCBwb2x5QXBwZW5kICcgK1xuICAgICAgJ3BvbHlBcHBlbmRGYWNldEN0eCBwb2x5QXBwZW5kVmVydGV4IHBvbHlBdXRvUHJvamVjdGlvbiBwb2x5QXZlcmFnZU5vcm1hbCAnICtcbiAgICAgICdwb2x5QXZlcmFnZVZlcnRleCBwb2x5QmV2ZWwgcG9seUJsZW5kQ29sb3IgcG9seUJsaW5kRGF0YSBwb2x5Qm9vbE9wIHBvbHlCcmlkZ2VFZGdlICcgK1xuICAgICAgJ3BvbHlDYWNoZU1vbml0b3IgcG9seUNoZWNrIHBvbHlDaGlwT2ZmIHBvbHlDbGlwYm9hcmQgcG9seUNsb3NlQm9yZGVyIHBvbHlDb2xsYXBzZUVkZ2UgJyArXG4gICAgICAncG9seUNvbGxhcHNlRmFjZXQgcG9seUNvbG9yQmxpbmREYXRhIHBvbHlDb2xvckRlbCBwb2x5Q29sb3JQZXJWZXJ0ZXggcG9seUNvbG9yU2V0ICcgK1xuICAgICAgJ3BvbHlDb21wYXJlIHBvbHlDb25lIHBvbHlDb3B5VVYgcG9seUNyZWFzZSBwb2x5Q3JlYXNlQ3R4IHBvbHlDcmVhdGVGYWNldCAnICtcbiAgICAgICdwb2x5Q3JlYXRlRmFjZXRDdHggcG9seUN1YmUgcG9seUN1dCBwb2x5Q3V0Q3R4IHBvbHlDeWxpbmRlciBwb2x5Q3lsaW5kcmljYWxQcm9qZWN0aW9uICcgK1xuICAgICAgJ3BvbHlEZWxFZGdlIHBvbHlEZWxGYWNldCBwb2x5RGVsVmVydGV4IHBvbHlEdXBsaWNhdGVBbmRDb25uZWN0IHBvbHlEdXBsaWNhdGVFZGdlICcgK1xuICAgICAgJ3BvbHlFZGl0VVYgcG9seUVkaXRVVlNoZWxsIHBvbHlFdmFsdWF0ZSBwb2x5RXh0cnVkZUVkZ2UgcG9seUV4dHJ1ZGVGYWNldCAnICtcbiAgICAgICdwb2x5RXh0cnVkZVZlcnRleCBwb2x5RmxpcEVkZ2UgcG9seUZsaXBVViBwb2x5Rm9yY2VVViBwb2x5R2VvU2FtcGxlciBwb2x5SGVsaXggJyArXG4gICAgICAncG9seUluZm8gcG9seUluc3RhbGxBY3Rpb24gcG9seUxheW91dFVWIHBvbHlMaXN0Q29tcG9uZW50Q29udmVyc2lvbiBwb2x5TWFwQ3V0ICcgK1xuICAgICAgJ3BvbHlNYXBEZWwgcG9seU1hcFNldyBwb2x5TWFwU2V3TW92ZSBwb2x5TWVyZ2VFZGdlIHBvbHlNZXJnZUVkZ2VDdHggcG9seU1lcmdlRmFjZXQgJyArXG4gICAgICAncG9seU1lcmdlRmFjZXRDdHggcG9seU1lcmdlVVYgcG9seU1lcmdlVmVydGV4IHBvbHlNaXJyb3JGYWNlIHBvbHlNb3ZlRWRnZSAnICtcbiAgICAgICdwb2x5TW92ZUZhY2V0IHBvbHlNb3ZlRmFjZXRVViBwb2x5TW92ZVVWIHBvbHlNb3ZlVmVydGV4IHBvbHlOb3JtYWwgcG9seU5vcm1hbFBlclZlcnRleCAnICtcbiAgICAgICdwb2x5Tm9ybWFsaXplVVYgcG9seU9wdFV2cyBwb2x5T3B0aW9ucyBwb2x5T3V0cHV0IHBvbHlQaXBlIHBvbHlQbGFuYXJQcm9qZWN0aW9uICcgK1xuICAgICAgJ3BvbHlQbGFuZSBwb2x5UGxhdG9uaWNTb2xpZCBwb2x5UG9rZSBwb2x5UHJpbWl0aXZlIHBvbHlQcmlzbSBwb2x5UHJvamVjdGlvbiAnICtcbiAgICAgICdwb2x5UHlyYW1pZCBwb2x5UXVhZCBwb2x5UXVlcnlCbGluZERhdGEgcG9seVJlZHVjZSBwb2x5U2VsZWN0IHBvbHlTZWxlY3RDb25zdHJhaW50ICcgK1xuICAgICAgJ3BvbHlTZWxlY3RDb25zdHJhaW50TW9uaXRvciBwb2x5U2VsZWN0Q3R4IHBvbHlTZWxlY3RFZGl0Q3R4IHBvbHlTZXBhcmF0ZSAnICtcbiAgICAgICdwb2x5U2V0VG9GYWNlTm9ybWFsIHBvbHlTZXdFZGdlIHBvbHlTaG9ydGVzdFBhdGhDdHggcG9seVNtb290aCBwb2x5U29mdEVkZ2UgJyArXG4gICAgICAncG9seVNwaGVyZSBwb2x5U3BoZXJpY2FsUHJvamVjdGlvbiBwb2x5U3BsaXQgcG9seVNwbGl0Q3R4IHBvbHlTcGxpdEVkZ2UgcG9seVNwbGl0UmluZyAnICtcbiAgICAgICdwb2x5U3BsaXRWZXJ0ZXggcG9seVN0cmFpZ2h0ZW5VVkJvcmRlciBwb2x5U3ViZGl2aWRlRWRnZSBwb2x5U3ViZGl2aWRlRmFjZXQgJyArXG4gICAgICAncG9seVRvU3ViZGl2IHBvbHlUb3J1cyBwb2x5VHJhbnNmZXIgcG9seVRyaWFuZ3VsYXRlIHBvbHlVVlNldCBwb2x5VW5pdGUgcG9seVdlZGdlRmFjZSAnICtcbiAgICAgICdwb3BlbiBwb3B1cE1lbnUgcG9zZSBwb3cgcHJlbG9hZFJlZkVkIHByaW50IHByb2dyZXNzQmFyIHByb2dyZXNzV2luZG93IHByb2pGaWxlVmlld2VyICcgK1xuICAgICAgJ3Byb2plY3RDdXJ2ZSBwcm9qZWN0VGFuZ2VudCBwcm9qZWN0aW9uQ29udGV4dCBwcm9qZWN0aW9uTWFuaXAgcHJvbXB0RGlhbG9nIHByb3BNb2RDdHggJyArXG4gICAgICAncHJvcE1vdmUgcHNkQ2hhbm5lbE91dGxpbmVyIHBzZEVkaXRUZXh0dXJlRmlsZSBwc2RFeHBvcnQgcHNkVGV4dHVyZUZpbGUgcHV0ZW52IHB3ZCAnICtcbiAgICAgICdweXRob24gcXVlcnlTdWJkaXYgcXVpdCByYWRfdG9fZGVnIHJhZGlhbCByYWRpb0J1dHRvbiByYWRpb0J1dHRvbkdycCByYWRpb0NvbGxlY3Rpb24gJyArXG4gICAgICAncmFkaW9NZW51SXRlbUNvbGxlY3Rpb24gcmFtcENvbG9yUG9ydCByYW5kIHJhbmRvbWl6ZUZvbGxpY2xlcyByYW5kc3RhdGUgcmFuZ2VDb250cm9sICcgK1xuICAgICAgJ3JlYWRUYWtlIHJlYnVpbGRDdXJ2ZSByZWJ1aWxkU3VyZmFjZSByZWNvcmRBdHRyIHJlY29yZERldmljZSByZWRvIHJlZmVyZW5jZSAnICtcbiAgICAgICdyZWZlcmVuY2VFZGl0IHJlZmVyZW5jZVF1ZXJ5IHJlZmluZVN1YmRpdlNlbGVjdGlvbkxpc3QgcmVmcmVzaCByZWZyZXNoQUUgJyArXG4gICAgICAncmVnaXN0ZXJQbHVnaW5SZXNvdXJjZSByZWhhc2ggcmVsb2FkSW1hZ2UgcmVtb3ZlSm9pbnQgcmVtb3ZlTXVsdGlJbnN0YW5jZSAnICtcbiAgICAgICdyZW1vdmVQYW5lbENhdGVnb3J5IHJlbmFtZSByZW5hbWVBdHRyIHJlbmFtZVNlbGVjdGlvbkxpc3QgcmVuYW1lVUkgcmVuZGVyICcgK1xuICAgICAgJ3JlbmRlckdsb2JhbHNOb2RlIHJlbmRlckluZm8gcmVuZGVyTGF5ZXJCdXR0b24gcmVuZGVyTGF5ZXJQYXJlbnQgJyArXG4gICAgICAncmVuZGVyTGF5ZXJQb3N0UHJvY2VzcyByZW5kZXJMYXllclVucGFyZW50IHJlbmRlck1hbmlwIHJlbmRlclBhcnRpdGlvbiAnICtcbiAgICAgICdyZW5kZXJRdWFsaXR5Tm9kZSByZW5kZXJTZXR0aW5ncyByZW5kZXJUaHVtYm5haWxVcGRhdGUgcmVuZGVyV2luZG93RWRpdG9yICcgK1xuICAgICAgJ3JlbmRlcldpbmRvd1NlbGVjdENvbnRleHQgcmVuZGVyZXIgcmVvcmRlciByZW9yZGVyRGVmb3JtZXJzIHJlcXVpcmVzIHJlcm9vdCAnICtcbiAgICAgICdyZXNhbXBsZUZsdWlkIHJlc2V0QUUgcmVzZXRQZnhUb1BvbHlDYW1lcmEgcmVzZXRUb29sIHJlc29sdXRpb25Ob2RlIHJldGFyZ2V0ICcgK1xuICAgICAgJ3JldmVyc2VDdXJ2ZSByZXZlcnNlU3VyZmFjZSByZXZvbHZlIHJnYl90b19oc3YgcmlnaWRCb2R5IHJpZ2lkU29sdmVyIHJvbGwgcm9sbEN0eCAnICtcbiAgICAgICdyb290T2Ygcm90IHJvdGF0ZSByb3RhdGlvbkludGVycG9sYXRpb24gcm91bmRDb25zdGFudFJhZGl1cyByb3dDb2x1bW5MYXlvdXQgcm93TGF5b3V0ICcgK1xuICAgICAgJ3J1blRpbWVDb21tYW5kIHJ1bnVwIHNhbXBsZUltYWdlIHNhdmVBbGxTaGVsdmVzIHNhdmVBdHRyUHJlc2V0IHNhdmVGbHVpZCBzYXZlSW1hZ2UgJyArXG4gICAgICAnc2F2ZUluaXRpYWxTdGF0ZSBzYXZlTWVudSBzYXZlUHJlZk9iamVjdHMgc2F2ZVByZWZzIHNhdmVTaGVsZiBzYXZlVG9vbFNldHRpbmdzIHNjYWxlICcgK1xuICAgICAgJ3NjYWxlQnJ1c2hCcmlnaHRuZXNzIHNjYWxlQ29tcG9uZW50cyBzY2FsZUNvbnN0cmFpbnQgc2NhbGVLZXkgc2NhbGVLZXlDdHggc2NlbmVFZGl0b3IgJyArXG4gICAgICAnc2NlbmVVSVJlcGxhY2VtZW50IHNjbWggc2NyaXB0Q3R4IHNjcmlwdEVkaXRvckluZm8gc2NyaXB0Sm9iIHNjcmlwdE5vZGUgc2NyaXB0VGFibGUgJyArXG4gICAgICAnc2NyaXB0VG9TaGVsZiBzY3JpcHRlZFBhbmVsIHNjcmlwdGVkUGFuZWxUeXBlIHNjcm9sbEZpZWxkIHNjcm9sbExheW91dCBzY3VscHQgJyArXG4gICAgICAnc2VhcmNoUGF0aEFycmF5IHNlZWQgc2VsTG9hZFNldHRpbmdzIHNlbGVjdCBzZWxlY3RDb250ZXh0IHNlbGVjdEN1cnZlQ1Ygc2VsZWN0S2V5ICcgK1xuICAgICAgJ3NlbGVjdEtleUN0eCBzZWxlY3RLZXlmcmFtZVJlZ2lvbkN0eCBzZWxlY3RNb2RlIHNlbGVjdFByZWYgc2VsZWN0UHJpb3JpdHkgc2VsZWN0VHlwZSAnICtcbiAgICAgICdzZWxlY3RlZE5vZGVzIHNlbGVjdGlvbkNvbm5lY3Rpb24gc2VwYXJhdG9yIHNldEF0dHIgc2V0QXR0ckVudW1SZXNvdXJjZSAnICtcbiAgICAgICdzZXRBdHRyTWFwcGluZyBzZXRBdHRyTmljZU5hbWVSZXNvdXJjZSBzZXRDb25zdHJhaW50UmVzdFBvc2l0aW9uICcgK1xuICAgICAgJ3NldERlZmF1bHRTaGFkaW5nR3JvdXAgc2V0RHJpdmVuS2V5ZnJhbWUgc2V0RHluYW1pYyBzZXRFZGl0Q3R4IHNldEVkaXRvciBzZXRGbHVpZEF0dHIgJyArXG4gICAgICAnc2V0Rm9jdXMgc2V0SW5maW5pdHkgc2V0SW5wdXREZXZpY2VNYXBwaW5nIHNldEtleUN0eCBzZXRLZXlQYXRoIHNldEtleWZyYW1lICcgK1xuICAgICAgJ3NldEtleWZyYW1lQmxlbmRzaGFwZVRhcmdldFd0cyBzZXRNZW51TW9kZSBzZXROb2RlTmljZU5hbWVSZXNvdXJjZSBzZXROb2RlVHlwZUZsYWcgJyArXG4gICAgICAnc2V0UGFyZW50IHNldFBhcnRpY2xlQXR0ciBzZXRQZnhUb1BvbHlDYW1lcmEgc2V0UGx1Z2luUmVzb3VyY2Ugc2V0UHJvamVjdCAnICtcbiAgICAgICdzZXRTdGFtcERlbnNpdHkgc2V0U3RhcnR1cE1lc3NhZ2Ugc2V0U3RhdGUgc2V0VG9vbFRvIHNldFVJVGVtcGxhdGUgc2V0WGZvcm1NYW5pcCBzZXRzICcgK1xuICAgICAgJ3NoYWRpbmdDb25uZWN0aW9uIHNoYWRpbmdHZW9tZXRyeVJlbEN0eCBzaGFkaW5nTGlnaHRSZWxDdHggc2hhZGluZ05ldHdvcmtDb21wYXJlICcgK1xuICAgICAgJ3NoYWRpbmdOb2RlIHNoYXBlQ29tcGFyZSBzaGVsZkJ1dHRvbiBzaGVsZkxheW91dCBzaGVsZlRhYkxheW91dCBzaGVsbEZpZWxkICcgK1xuICAgICAgJ3Nob3J0TmFtZU9mIHNob3dIZWxwIHNob3dIaWRkZW4gc2hvd01hbmlwQ3R4IHNob3dTZWxlY3Rpb25JblRpdGxlICcgK1xuICAgICAgJ3Nob3dTaGFkaW5nR3JvdXBBdHRyRWRpdG9yIHNob3dXaW5kb3cgc2lnbiBzaW1wbGlmeSBzaW4gc2luZ2xlUHJvZmlsZUJpcmFpbFN1cmZhY2UgJyArXG4gICAgICAnc2l6ZSBzaXplQnl0ZXMgc2tpbkNsdXN0ZXIgc2tpblBlcmNlbnQgc21vb3RoQ3VydmUgc21vb3RoVGFuZ2VudFN1cmZhY2Ugc21vb3Roc3RlcCAnICtcbiAgICAgICdzbmFwMnRvMiBzbmFwS2V5IHNuYXBNb2RlIHNuYXBUb2dldGhlckN0eCBzbmFwc2hvdCBzb2Z0IHNvZnRNb2Qgc29mdE1vZEN0eCBzb3J0IHNvdW5kICcgK1xuICAgICAgJ3NvdW5kQ29udHJvbCBzb3VyY2Ugc3BhY2VMb2NhdG9yIHNwaGVyZSBzcGhyYW5kIHNwb3RMaWdodCBzcG90TGlnaHRQcmV2aWV3UG9ydCAnICtcbiAgICAgICdzcHJlYWRTaGVldEVkaXRvciBzcHJpbmcgc3FydCBzcXVhcmVTdXJmYWNlIHNydENvbnRleHQgc3RhY2tUcmFjZSBzdGFydFN0cmluZyAnICtcbiAgICAgICdzdGFydHNXaXRoIHN0aXRjaEFuZEV4cGxvZGVTaGVsbCBzdGl0Y2hTdXJmYWNlIHN0aXRjaFN1cmZhY2VQb2ludHMgc3RyY21wICcgK1xuICAgICAgJ3N0cmluZ0FycmF5Q2F0ZW5hdGUgc3RyaW5nQXJyYXlDb250YWlucyBzdHJpbmdBcnJheUNvdW50IHN0cmluZ0FycmF5SW5zZXJ0QXRJbmRleCAnICtcbiAgICAgICdzdHJpbmdBcnJheUludGVyc2VjdG9yIHN0cmluZ0FycmF5UmVtb3ZlIHN0cmluZ0FycmF5UmVtb3ZlQXRJbmRleCAnICtcbiAgICAgICdzdHJpbmdBcnJheVJlbW92ZUR1cGxpY2F0ZXMgc3RyaW5nQXJyYXlSZW1vdmVFeGFjdCBzdHJpbmdBcnJheVRvU3RyaW5nICcgK1xuICAgICAgJ3N0cmluZ1RvU3RyaW5nQXJyYXkgc3RyaXAgc3RyaXBQcmVmaXhGcm9tTmFtZSBzdHJva2Ugc3ViZEF1dG9Qcm9qZWN0aW9uICcgK1xuICAgICAgJ3N1YmRDbGVhblRvcG9sb2d5IHN1YmRDb2xsYXBzZSBzdWJkRHVwbGljYXRlQW5kQ29ubmVjdCBzdWJkRWRpdFVWICcgK1xuICAgICAgJ3N1YmRMaXN0Q29tcG9uZW50Q29udmVyc2lvbiBzdWJkTWFwQ3V0IHN1YmRNYXBTZXdNb3ZlIHN1YmRNYXRjaFRvcG9sb2d5IHN1YmRNaXJyb3IgJyArXG4gICAgICAnc3ViZFRvQmxpbmQgc3ViZFRvUG9seSBzdWJkVHJhbnNmZXJVVnNUb0NhY2hlIHN1YmRpdiBzdWJkaXZDcmVhc2UgJyArXG4gICAgICAnc3ViZGl2RGlzcGxheVNtb290aG5lc3Mgc3Vic3RpdHV0ZSBzdWJzdGl0dXRlQWxsU3RyaW5nIHN1YnN0aXR1dGVHZW9tZXRyeSBzdWJzdHJpbmcgJyArXG4gICAgICAnc3VyZmFjZSBzdXJmYWNlU2FtcGxlciBzdXJmYWNlU2hhZGVyTGlzdCBzd2F0Y2hEaXNwbGF5UG9ydCBzd2l0Y2hUYWJsZSBzeW1ib2xCdXR0b24gJyArXG4gICAgICAnc3ltYm9sQ2hlY2tCb3ggc3lzRmlsZSBzeXN0ZW0gdGFiTGF5b3V0IHRhbiB0YW5nZW50Q29uc3RyYWludCB0ZXhMYXR0aWNlRGVmb3JtQ29udGV4dCAnICtcbiAgICAgICd0ZXhNYW5pcENvbnRleHQgdGV4TW92ZUNvbnRleHQgdGV4TW92ZVVWU2hlbGxDb250ZXh0IHRleFJvdGF0ZUNvbnRleHQgdGV4U2NhbGVDb250ZXh0ICcgK1xuICAgICAgJ3RleFNlbGVjdENvbnRleHQgdGV4U2VsZWN0U2hvcnRlc3RQYXRoQ3R4IHRleFNtdWRnZVVWQ29udGV4dCB0ZXhXaW5Ub29sQ3R4IHRleHQgJyArXG4gICAgICAndGV4dEN1cnZlcyB0ZXh0RmllbGQgdGV4dEZpZWxkQnV0dG9uR3JwIHRleHRGaWVsZEdycCB0ZXh0TWFuaXAgdGV4dFNjcm9sbExpc3QgJyArXG4gICAgICAndGV4dFRvU2hlbGYgdGV4dHVyZURpc3BsYWNlUGxhbmUgdGV4dHVyZUhhaXJDb2xvciB0ZXh0dXJlUGxhY2VtZW50Q29udGV4dCAnICtcbiAgICAgICd0ZXh0dXJlV2luZG93IHRocmVhZENvdW50IHRocmVlUG9pbnRBcmNDdHggdGltZUNvbnRyb2wgdGltZVBvcnQgdGltZXJYIHRvTmF0aXZlUGF0aCAnICtcbiAgICAgICd0b2dnbGUgdG9nZ2xlQXhpcyB0b2dnbGVXaW5kb3dWaXNpYmlsaXR5IHRva2VuaXplIHRva2VuaXplTGlzdCB0b2xlcmFuY2UgdG9sb3dlciAnICtcbiAgICAgICd0b29sQnV0dG9uIHRvb2xDb2xsZWN0aW9uIHRvb2xEcm9wcGVkIHRvb2xIYXNPcHRpb25zIHRvb2xQcm9wZXJ0eVdpbmRvdyB0b3J1cyB0b3VwcGVyICcgK1xuICAgICAgJ3RyYWNlIHRyYWNrIHRyYWNrQ3R4IHRyYW5zZmVyQXR0cmlidXRlcyB0cmFuc2Zvcm1Db21wYXJlIHRyYW5zZm9ybUxpbWl0cyB0cmFuc2xhdG9yICcgK1xuICAgICAgJ3RyaW0gdHJ1bmMgdHJ1bmNhdGVGbHVpZENhY2hlIHRydW5jYXRlSGFpckNhY2hlIHR1bWJsZSB0dW1ibGVDdHggdHVyYnVsZW5jZSAnICtcbiAgICAgICd0d29Qb2ludEFyY0N0eCB1aVJlcyB1aVRlbXBsYXRlIHVuYXNzaWduSW5wdXREZXZpY2UgdW5kbyB1bmRvSW5mbyB1bmdyb3VwIHVuaWZvcm0gdW5pdCAnICtcbiAgICAgICd1bmxvYWRQbHVnaW4gdW50YW5nbGVVViB1bnRpdGxlZEZpbGVOYW1lIHVudHJpbSB1cEF4aXMgdXBkYXRlQUUgdXNlckN0eCB1dkxpbmsgJyArXG4gICAgICAndXZTbmFwc2hvdCB2YWxpZGF0ZVNoZWxmTmFtZSB2ZWN0b3JpemUgdmlldzJkVG9vbEN0eCB2aWV3Q2FtZXJhIHZpZXdDbGlwUGxhbmUgJyArXG4gICAgICAndmlld0ZpdCB2aWV3SGVhZE9uIHZpZXdMb29rQXQgdmlld01hbmlwIHZpZXdQbGFjZSB2aWV3U2V0IHZpc29yIHZvbHVtZUF4aXMgdm9ydGV4ICcgK1xuICAgICAgJ3dhaXRDdXJzb3Igd2FybmluZyB3ZWJCcm93c2VyIHdlYkJyb3dzZXJQcmVmcyB3aGF0SXMgd2luZG93IHdpbmRvd1ByZWYgd2lyZSAnICtcbiAgICAgICd3aXJlQ29udGV4dCB3b3Jrc3BhY2Ugd3JpbmtsZSB3cmlua2xlQ29udGV4dCB3cml0ZVRha2UgeGJtTGFuZ1BhdGhMaXN0IHhmb3JtJyxcbiAgICBpbGxlZ2FsOiAnPC8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuICAgICAgeyAvLyBlYXRzIHZhcmlhYmxlc1xuICAgICAgICBiZWdpbjogJ1tcXFxcJFxcXFwlXFxcXEBdKFxcXFxeXFxcXHdcXFxcYnwjXFxcXHcrfFteXFxcXHNcXFxcd3tdfHtcXFxcdyt9fFxcXFx3KyknXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ21vZHVsZSB1c2VfbW9kdWxlIGltcG9ydF9tb2R1bGUgaW5jbHVkZV9tb2R1bGUgZW5kX21vZHVsZSBpbml0aWFsaXNlICcgK1xuICAgICAgJ211dGFibGUgaW5pdGlhbGl6ZSBmaW5hbGl6ZSBmaW5hbGlzZSBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gcHJlZCAnICtcbiAgICAgICdtb2RlIGZ1bmMgdHlwZSBpbnN0IHNvbHZlciBhbnlfcHJlZCBhbnlfZnVuYyBpcyBzZW1pZGV0IGRldCBub25kZXQgJyArXG4gICAgICAnbXVsdGkgZXJyb25lb3VzIGZhaWx1cmUgY2Nfbm9uZGV0IGNjX211bHRpIHR5cGVjbGFzcyBpbnN0YW5jZSB3aGVyZSAnICtcbiAgICAgICdwcmFnbWEgcHJvbWlzZSBleHRlcm5hbCB0cmFjZSBhdG9taWMgb3JfZWxzZSByZXF1aXJlX2NvbXBsZXRlX3N3aXRjaCAnICtcbiAgICAgICdyZXF1aXJlX2RldCByZXF1aXJlX3NlbWlkZXQgcmVxdWlyZV9tdWx0aSByZXF1aXJlX25vbmRldCAnICtcbiAgICAgICdyZXF1aXJlX2NjX211bHRpIHJlcXVpcmVfY2Nfbm9uZGV0IHJlcXVpcmVfZXJyb25lb3VzIHJlcXVpcmVfZmFpbHVyZScsXG4gICAgbWV0YTpcbiAgICAgIC8vIHByYWdtYVxuICAgICAgJ2lubGluZSBub19pbmxpbmUgdHlwZV9zcGVjIHNvdXJjZV9maWxlIGZhY3RfdGFibGUgb2Jzb2xldGUgbWVtbyAnICtcbiAgICAgICdsb29wX2NoZWNrIG1pbmltYWxfbW9kZWwgdGVybWluYXRlcyBkb2VzX25vdF90ZXJtaW5hdGUgJyArXG4gICAgICAnY2hlY2tfdGVybWluYXRpb24gcHJvbWlzZV9lcXVpdmFsZW50X2NsYXVzZXMgJyArXG4gICAgICAvLyBwcmVwcm9jZXNzb3JcbiAgICAgICdmb3JlaWduX3Byb2MgZm9yZWlnbl9kZWNsIGZvcmVpZ25fY29kZSBmb3JlaWduX3R5cGUgJyArXG4gICAgICAnZm9yZWlnbl9pbXBvcnRfbW9kdWxlIGZvcmVpZ25fZXhwb3J0X2VudW0gZm9yZWlnbl9leHBvcnQgJyArXG4gICAgICAnZm9yZWlnbl9lbnVtIG1heV9jYWxsX21lcmN1cnkgd2lsbF9ub3RfY2FsbF9tZXJjdXJ5IHRocmVhZF9zYWZlICcgK1xuICAgICAgJ25vdF90aHJlYWRfc2FmZSBtYXliZV90aHJlYWRfc2FmZSBwcm9taXNlX3B1cmUgcHJvbWlzZV9zZW1pcHVyZSAnICtcbiAgICAgICd0YWJsZWRfZm9yX2lvIGxvY2FsIHVudHJhaWxlZCB0cmFpbGVkIGF0dGFjaF90b19pb19zdGF0ZSAnICtcbiAgICAgICdjYW5fcGFzc19hc19tZXJjdXJ5X3R5cGUgc3RhYmxlIHdpbGxfbm90X3Rocm93X2V4Y2VwdGlvbiAnICtcbiAgICAgICdtYXlfbW9kaWZ5X3RyYWlsIHdpbGxfbm90X21vZGlmeV90cmFpbCBtYXlfZHVwbGljYXRlICcgK1xuICAgICAgJ21heV9ub3RfZHVwbGljYXRlIGFmZmVjdHNfbGl2ZW5lc3MgZG9lc19ub3RfYWZmZWN0X2xpdmVuZXNzICcgK1xuICAgICAgJ2RvZXNudF9hZmZlY3RfbGl2ZW5lc3Mgbm9fc2hhcmluZyB1bmtub3duX3NoYXJpbmcgc2hhcmluZycsXG4gICAgYnVpbHRfaW46XG4gICAgICAnc29tZSBhbGwgbm90IGlmIHRoZW4gZWxzZSB0cnVlIGZhaWwgZmFsc2UgdHJ5IGNhdGNoIGNhdGNoX2FueSAnICtcbiAgICAgICdzZW1pZGV0X3RydWUgc2VtaWRldF9mYWxzZSBzZW1pZGV0X2ZhaWwgaW1wdXJlX3RydWUgaW1wdXJlIHNlbWlwdXJlJ1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKCclJywgJyQnKTtcblxuICB2YXIgTlVNQ09ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBcIjAnLlxcXFx8MFtib3hdWzAtOWEtZkEtRl0qXCJcbiAgfTtcblxuICB2YXIgQVRPTSA9IGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtyZWxldmFuY2U6IDB9KTtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7cmVsZXZhbmNlOiAwfSk7XG4gIHZhciBTVFJJTkdfRk1UID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ1xcXFxcXFxcW2FiZm5ydHZdXFxcXHxcXFxcXFxcXHhbMC05YS1mQS1GXSpcXFxcXFxcXFxcXFx8JVstKyMgKi4wLTldKltkaW94WHVjc2ZlRWdHcF0nLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBTVFJJTkcuY29udGFpbnMucHVzaChTVFJJTkdfRk1UKTtcblxuICB2YXIgSU1QTElDQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICc8PT4nfSxcbiAgICAgIHtiZWdpbjogJzw9JywgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJz0+JywgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJy9cXFxcXFxcXCd9LFxuICAgICAge2JlZ2luOiAnXFxcXFxcXFwvJ31cbiAgICBdXG4gIH07XG5cbiAgdmFyIEhFQURfQk9EWV9DT05KVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJzotXFxcXHwtLT4nfSxcbiAgICAgIHtiZWdpbjogJz0nLCByZWxldmFuY2U6IDB9XG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydtJywgJ21vbyddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgSU1QTElDQVRJT04sXG4gICAgICBIRUFEX0JPRFlfQ09OSlVOQ1RJT04sXG4gICAgICBDT01NRU5ULFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE5VTUNPREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgQVRPTSxcbiAgICAgIFNUUklORyxcbiAgICAgIHtiZWdpbjogLzotL30sIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB7YmVnaW46IC9cXC4kL30gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIC8vbG9jYWwgbGFiZWxzOiAlP1tGQl0/W0FUXT9cXGR7MSwyfVxcdytcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsnbWlwcyddLFxuICAgIGxleGVtZXM6ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbWV0YTpcbiAgICAgICAgLy9HTlUgcHJlcHJvY3NcbiAgICAgICAgJy4yYnl0ZSAuNGJ5dGUgLmFsaWduIC5hc2NpaSAuYXNjaXogLmJhbGlnbiAuYnl0ZSAuY29kZSAuZGF0YSAuZWxzZSAuZW5kIC5lbmRpZiAuZW5kbSAuZW5kciAuZXF1IC5lcnIgLmV4aXRtIC5leHRlcm4gLmdsb2JhbCAuaHdvcmQgLmlmIC5pZmRlZiAuaWZuZGVmIC5pbmNsdWRlIC5pcnAgLmxvbmcgLm1hY3JvIC5yZXB0IC5yZXEgLnNlY3Rpb24gLnNldCAuc2tpcCAuc3BhY2UgLnRleHQgLndvcmQgLmx0b3JnICcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJyQwICQxICQyICQzICQ0ICQ1ICQ2ICQ3ICQ4ICQ5ICQxMCAkMTEgJDEyICQxMyAkMTQgJDE1ICcgKyAvLyBpbnRlZ2VyIHJlZ2lzdGVyc1xuICAgICAgICAnJDE2ICQxNyAkMTggJDE5ICQyMCAkMjEgJDIyICQyMyAkMjQgJDI1ICQyNiAkMjcgJDI4ICQyOSAkMzAgJDMxICcgKyAvLyBpbnRlZ2VyIHJlZ2lzdGVyc1xuICAgICAgICAnemVybyBhdCB2MCB2MSBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICd0MCB0MSB0MiB0MyB0NCB0NSB0NiB0NyB0OCB0OSBzMCBzMSBzMiBzMyBzNCBzNSBzNiBzNyBzOCAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICdrMCBrMSBncCBzcCBmcCByYSAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICckZjAgJGYxICRmMiAkZjIgJGY0ICRmNSAkZjYgJGY3ICRmOCAkZjkgJGYxMCAkZjExICRmMTIgJGYxMyAkZjE0ICRmMTUgJyArIC8vIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyc1xuICAgICAgICAnJGYxNiAkZjE3ICRmMTggJGYxOSAkZjIwICRmMjEgJGYyMiAkZjIzICRmMjQgJGYyNSAkZjI2ICRmMjcgJGYyOCAkZjI5ICRmMzAgJGYzMSAnICsgLy8gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzXG4gICAgICAgICdDb250ZXh0IFJhbmRvbSBFbnRyeUxvMCBFbnRyeUxvMSBDb250ZXh0IFBhZ2VNYXNrIFdpcmVkIEVudHJ5SGkgJyArIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgICAgICdIV1JFbmEgQmFkVkFkZHIgQ291bnQgQ29tcGFyZSBTUiBJbnRDdGwgU1JTQ3RsIFNSU01hcCBDYXVzZSBFUEMgUFJJZCAnICsgLy8gQ29wcm9jZXNzb3IgMCByZWdpc3RlcnNcbiAgICAgICAgJ0VCYXNlIENvbmZpZyBDb25maWcxIENvbmZpZzIgQ29uZmlnMyBMTEFkZHIgRGVidWcgREVQQyBERVNBVkUgQ2FjaGVFcnIgJyArIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgICAgICdFQ0MgRXJyb3JFUEMgVGFnTG8gRGF0YUxvIFRhZ0hpIERhdGFIaSBXYXRjaExvIFdhdGNoSGkgUGVyZkN0bCBQZXJmQ250ICcgLy8gQ29wcm9jZXNzb3IgMCByZWdpc3RlcnNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcrICAgICAvL21uZW1vbmljc1xuICAgICAgICAgICAgLy8gMzItYml0IGludGVnZXIgaW5zdHJ1Y3Rpb25zXG4gICAgICAgICAgICAnYWRkaT91P3xhbmRpP3xiKGFsKT98YmVxbD98YmdleihhbCk/bD98Ymd0emw/fGJsZXpsP3xibHR6KGFsKT9sP3wnICtcbiAgICAgICAgICAgICdibmVsP3xjbFtvel18ZGl2dT98ZXh0fGluc3xqKGFsKT98amFscihcXC5oYik/fGpyKFxcLmhiKT98bGJ1P3xsaHU/fCcgK1xuICAgICAgICAgICAgJ2xsfGx1aXxsd1tscl0/fG1hZGR1P3xtZmhpfG1mbG98bW92bnxtb3Z6fG1vdmV8bXN1YnU/fG10aGl8bXRsb3xtdWx8JyArXG4gICAgICAgICAgICAnbXVsdHU/fG5vcHxub3J8b3JpP3xyb3Rydj98c2J8c2N8c2VbYmhdfHNofHNsbHY/fHNsdGk/dT98c3Jhdj98JyArXG4gICAgICAgICAgICAnc3Jsdj98c3VidT98c3dbbHJdP3x4b3JpP3x3c2JofCcgK1xuICAgICAgICAgICAgLy8gZmxvYXRpbmctcG9pbnQgaW5zdHJ1Y3Rpb25zXG4gICAgICAgICAgICAnYWJzXFwuW3NkXXxhZGRcXC5bc2RdfGFsbnYucHN8YmMxW2Z0XWw/fCcgK1xuICAgICAgICAgICAgJ2NcXC4ocz9mfHVufHU/ZXF8W291XWx0fFtvdV1sZXxuZ2xlP3xzZXF8bFtldF18bmdbZXRdKVxcLltzZF18JyArXG4gICAgICAgICAgICAnKGNlaWx8Zmxvb3J8cm91bmR8dHJ1bmMpXFwuW2x3XVxcLltzZF18Y2ZjMXxjdnRcXC5kXFwuW2xzd118JyArXG4gICAgICAgICAgICAnY3Z0XFwubFxcLltkc3ddfGN2dFxcLnBzXFwuc3xjdnRcXC5zXFwuW2Rsd118Y3Z0XFwuc1xcLnBbbHVdfGN2dFxcLndcXC5bZGxzXXwnICtcbiAgICAgICAgICAgICdkaXZcXC5bZHNdfGxkeD9jMXxsdXhjMXxsd3g/YzF8bWFkZFxcLltzZF18bWZjMXxtb3ZbZm50el0/XFwuW2RzXXwnICtcbiAgICAgICAgICAgICdtc3ViXFwuW3NkXXxtdGg/YzF8bXVsXFwuW2RzXXxuZWdcXC5bZHNdfG5tYWRkXFwuW2RzXXxubXN1YlxcLltkc118JyArXG4gICAgICAgICAgICAncFtsdV1bbHVdXFwucHN8cmVjaXBcXC5mbXR8cj9zcXJ0XFwuW2RzXXxzZHg/YzF8c3ViXFwuW2RzXXxzdXhjMXwnICtcbiAgICAgICAgICAgICdzd3g/YzF8JyArXG4gICAgICAgICAgICAvLyBzeXN0ZW0gY29udHJvbCBpbnN0cnVjdGlvbnNcbiAgICAgICAgICAgICdicmVha3xjYWNoZXxkP2VyZXR8W2RlXWl8ZWhifG1mYzB8bXRjMHxwYXVzZXxwcmVmeD98cmRod3J8JyArXG4gICAgICAgICAgICAncmRwZ3ByfHNkYmJwfHNzbm9wfHN5bmNpP3xzeXNjYWxsfHRlcWk/fHRnZWk/dT98dGxiKHB8cnx3W2lyXSl8JyArXG4gICAgICAgICAgICAndGx0aT91P3x0bmVpP3x3YWl0fHdycGdwcicrXG4gICAgICAgICcpJyxcbiAgICAgICAgZW5kOiAnXFxcXHMnXG4gICAgICB9LFxuICAgICAgLy8gbGluZXMgZW5kaW5nIHdpdGggOyBvciAjIGFyZW4ndCByZWFsbHkgY29tbWVudHMsIHByb2JhYmx5IGF1dG8tZGV0ZWN0IGZhaWxcbiAgICAgIGhsanMuQ09NTUVOVCgnWzsjXSg/IVxccyokKScsICckJyksXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLFxuICAgICAgICBlbmQ6ICdbXlxcXFxcXFxcXVxcJycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFx8JywgZW5kOiAnXFxcXHwnLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICB7YmVnaW46ICcweFswLTlhLWZdKyd9LCAvL2hleFxuICAgICAgICAgICAge2JlZ2luOiAnXFxcXGItP1xcXFxkKyd9ICAgICAgICAgICAvL2JhcmUgbnVtYmVyXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJ15cXFxccypbYS16X1xcXFwuXFxcXCRdW2EtejAtOV9cXFxcLlxcXFwkXSs6J30sIC8vR05VIE1JUFMgc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdeXFxcXHMqWzAtOV0rOid9LCAvLyBudW1iZXJlZCBsb2NhbCBsYWJlbHNcbiAgICAgICAgICAgIHtiZWdpbjogJ1swLTldK1tiZl0nIH0gIC8vIG51bWJlciBsb2NhbCBsYWJlbCByZWZlcmVuY2UgKGJhY2t3YXJkcywgZm9yd2FyZHMpXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogJ1xcLydcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6XG4gICAgICAnZW52aXJvbiB2b2NhYnVsYXJpZXMgbm90YXRpb25zIGNvbnN0cnVjdG9ycyBkZWZpbml0aW9ucyAnICtcbiAgICAgICdyZWdpc3RyYXRpb25zIHRoZW9yZW1zIHNjaGVtZXMgcmVxdWlyZW1lbnRzIGJlZ2luIGVuZCBkZWZpbml0aW9uICcgK1xuICAgICAgJ3JlZ2lzdHJhdGlvbiBjbHVzdGVyIGV4aXN0ZW5jZSBwcmVkIGZ1bmMgZGVmcHJlZCBkZWZmdW5jIHRoZW9yZW0gJyArXG4gICAgICAncHJvb2YgbGV0IHRha2UgYXNzdW1lIHRoZW4gdGh1cyBoZW5jZSBleCBmb3Igc3QgaG9sZHMgY29uc2lkZXIgJyArXG4gICAgICAncmVjb25zaWRlciBzdWNoIHRoYXQgYW5kIGluIHByb3ZpZGVkIG9mIGFzIGZyb20gYmUgYmVpbmcgYnkgbWVhbnMgJyArXG4gICAgICAnZXF1YWxzIGltcGxpZXMgaWZmIHJlZGVmaW5lIGRlZmluZSBub3cgbm90IG9yIGF0dHIgaXMgbW9kZSAnICtcbiAgICAgICdzdXBwb3NlIHBlciBjYXNlcyBzZXQgdGhlc2lzIGNvbnRyYWRpY3Rpb24gc2NoZW1lIHJlc2VydmUgc3RydWN0ICcgK1xuICAgICAgJ2NvcnJlY3RuZXNzIGNvbXBhdGliaWxpdHkgY29oZXJlbmNlIHN5bW1ldHJ5IGFzc3ltZXRyeSAnICtcbiAgICAgICdyZWZsZXhpdml0eSBpcnJlZmxleGl2aXR5IGNvbm5lY3RlZG5lc3MgdW5pcXVlbmVzcyBjb21tdXRhdGl2aXR5ICcgK1xuICAgICAgJ2lkZW1wb3RlbmNlIGludm9sdXRpdmVuZXNzIHByb2plY3Rpdml0eScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnOjonLCAnJCcpXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFBFUkxfS0VZV09SRFMgPSAnZ2V0cHdlbnQgZ2V0c2VydmVudCBxdW90ZW1ldGEgbXNncmN2IHNjYWxhciBraWxsIGRibWNsb3NlIHVuZGVmIGxjICcgK1xuICAgICdtYSBzeXN3cml0ZSB0ciBzZW5kIHVtYXNrIHN5c29wZW4gc2htd3JpdGUgdmVjIHF4IHV0aW1lIGxvY2FsIG9jdCBzZW1jdGwgbG9jYWx0aW1lICcgK1xuICAgICdyZWFkcGlwZSBkbyByZXR1cm4gZm9ybWF0IHJlYWQgc3ByaW50ZiBkYm1vcGVuIHBvcCBnZXRwZ3JwIG5vdCBnZXRwd25hbSByZXdpbmRkaXIgcXEnICtcbiAgICAnZmlsZW5vIHF3IGVuZHByb3RvZW50IHdhaXQgc2V0aG9zdGVudCBibGVzcyBzfDAgb3BlbmRpciBjb250aW51ZSBlYWNoIHNsZWVwIGVuZGdyZW50ICcgK1xuICAgICdzaHV0ZG93biBkdW1wIGNob21wIGNvbm5lY3QgZ2V0c29ja25hbWUgZGllIHNvY2tldHBhaXIgY2xvc2UgZmxvY2sgZXhpc3RzIGluZGV4IHNobWdldCcgK1xuICAgICdzdWIgZm9yIGVuZHB3ZW50IHJlZG8gbHN0YXQgbXNnY3RsIHNldHBncnAgYWJzIGV4aXQgc2VsZWN0IHByaW50IHJlZiBnZXRob3N0YnlhZGRyICcgK1xuICAgICd1bnNoaWZ0IGZjbnRsIHN5c2NhbGwgZ290byBnZXRuZXRieWFkZHIgam9pbiBnbXRpbWUgc3ltbGluayBzZW1nZXQgc3BsaWNlIHh8MCAnICtcbiAgICAnZ2V0cGVlcm5hbWUgcmVjdiBsb2cgc2V0c29ja29wdCBjb3MgbGFzdCByZXZlcnNlIGdldGhvc3RieW5hbWUgZ2V0Z3JuYW0gc3R1ZHkgZm9ybWxpbmUgJyArXG4gICAgJ2VuZGhvc3RlbnQgdGltZXMgY2hvcCBsZW5ndGggZ2V0aG9zdGVudCBnZXRuZXRlbnQgcGFjayBnZXRwcm90b2VudCBnZXRzZXJ2YnluYW1lIHJhbmQgJyArXG4gICAgJ21rZGlyIHBvcyBjaG1vZCB5fDAgc3Vic3RyIGVuZG5ldGVudCBwcmludGYgbmV4dCBvcGVuIG1zZ3NuZCByZWFkZGlyIHVzZSB1bmxpbmsgJyArXG4gICAgJ2dldHNvY2tvcHQgZ2V0cHJpb3JpdHkgcmluZGV4IHdhbnRhcnJheSBoZXggc3lzdGVtIGdldHNlcnZieXBvcnQgZW5kc2VydmVudCBpbnQgY2hyICcgK1xuICAgICd1bnRpZSBybWRpciBwcm90b3R5cGUgdGVsbCBsaXN0ZW4gZm9yayBzaG1yZWFkIHVjZmlyc3Qgc2V0cHJvdG9lbnQgZWxzZSBzeXNzZWVrIGxpbmsgJyArXG4gICAgJ2dldGdyZ2lkIHNobWN0bCB3YWl0cGlkIHVucGFjayBnZXRuZXRieW5hbWUgcmVzZXQgY2hkaXIgZ3JlcCBzcGxpdCByZXF1aXJlIGNhbGxlciAnICtcbiAgICAnbGNmaXJzdCB1bnRpbCB3YXJuIHdoaWxlIHZhbHVlcyBzaGlmdCB0ZWxsZGlyIGdldHB3dWlkIG15IGdldHByb3RvYnludW1iZXIgZGVsZXRlIGFuZCAnICtcbiAgICAnc29ydCB1YyBkZWZpbmVkIHNyYW5kIGFjY2VwdCBwYWNrYWdlIHNlZWtkaXIgZ2V0cHJvdG9ieW5hbWUgc2Vtb3Agb3VyIHJlbmFtZSBzZWVrIGlmIHF8MCAnICtcbiAgICAnY2hyb290IHN5c3JlYWQgc2V0cHdlbnQgbm8gY3J5cHQgZ2V0YyBjaG93biBzcXJ0IHdyaXRlIHNldG5ldGVudCBzZXRwcmlvcml0eSBmb3JlYWNoICcgK1xuICAgICd0aWUgc2luIG1zZ2dldCBtYXAgc3RhdCBnZXRsb2dpbiB1bmxlc3MgZWxzaWYgdHJ1bmNhdGUgZXhlYyBrZXlzIGdsb2IgdGllZCBjbG9zZWRpcicgK1xuICAgICdpb2N0bCBzb2NrZXQgcmVhZGxpbmsgZXZhbCB4b3IgcmVhZGxpbmUgYmlubW9kZSBzZXRzZXJ2ZW50IGVvZiBvcmQgYmluZCBhbGFybSBwaXBlICcgK1xuICAgICdhdGFuMiBnZXRncmVudCBleHAgdGltZSBwdXNoIHNldGdyZW50IGd0IGx0IG9yIG5lIG18MCBicmVhayBnaXZlbiBzYXkgc3RhdGUgd2hlbic7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdbJEBdXFxcXHsnLCBlbmQ6ICdcXFxcfScsXG4gICAga2V5d29yZHM6IFBFUkxfS0VZV09SRFNcbiAgfTtcbiAgdmFyIE1FVEhPRCA9IHtcbiAgICBiZWdpbjogJy0+eycsIGVuZDogJ30nXG4gICAgLy8gY29udGFpbnMgZGVmaW5lZCBsYXRlclxuICB9O1xuICB2YXIgVkFSID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRcXGQvfSxcbiAgICAgIHtiZWdpbjogL1tcXCQlQF0oXFxeXFx3XFxifCNcXHcrKDo6XFx3KykqfHtcXHcrfXxcXHcrKDo6XFx3KikqKS99LFxuICAgICAge2JlZ2luOiAvW1xcJCVAXVteXFxzXFx3e10vLCByZWxldmFuY2U6IDB9XG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HX0NPTlRBSU5TID0gW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIFZBUl07XG4gIHZhciBQRVJMX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgVkFSLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJ15cXFxcPVxcXFx3JyxcbiAgICAgICdcXFxcPWN1dCcsXG4gICAgICB7XG4gICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlXG4gICAgICB9XG4gICAgKSxcbiAgICBNRVRIT0QsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGNvbnRhaW5zOiBTVFJJTkdfQ09OVEFJTlMsXG4gICAgICB2YXJpYW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFx8JywgZW5kOiAnXFxcXHwnLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFw8JywgZW5kOiAnXFxcXD4nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxd1xcXFxzK3EnLCBlbmQ6ICdxJyxcbiAgICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICd7XFxcXHcrfScsXG4gICAgICAgICAgY29udGFpbnM6IFtdLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdcXC0/XFxcXHcrXFxcXHMqXFxcXD1cXFxcPicsXG4gICAgICAgICAgY29udGFpbnM6IFtdLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgYmVnaW46ICcoXFxcXGIwWzAtN19dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoXFxcXGJbMS05XVswLTlfXSooXFxcXC5bMC05X10rKT8pfFswX11cXFxcYicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHsgLy8gcmVnZXhwIGNvbnRhaW5lclxuICAgICAgYmVnaW46ICcoXFxcXC9cXFxcL3wnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIoc3BsaXR8cmV0dXJufHByaW50fHJldmVyc2V8Z3JlcClcXFxcYilcXFxccyonLFxuICAgICAga2V5d29yZHM6ICdzcGxpdCByZXR1cm4gcHJpbnQgcmV2ZXJzZSBncmVwJyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgIGJlZ2luOiAnKHN8dHJ8eSkvKFxcXFxcXFxcLnxbXi9dKSovKFxcXFxcXFxcLnxbXi9dKSovW2Etel0qJyxcbiAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgIGJlZ2luOiAnKG18cXIpPy8nLCBlbmQ6ICcvW2Etel0qJyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwIC8vIGFsbG93cyBlbXB0eSBcIi8vXCIgd2hpY2ggaXMgYSBjb21tb24gY29tbWVudCBkZWxpbWl0ZXIgaW4gb3RoZXIgbGFuZ3VhZ2VzXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdzdWInLCBlbmQ6ICcoXFxcXHMqXFxcXCguKj9cXFxcKSk/Wzt7XScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICByZWxldmFuY2U6IDUsXG4gICAgICBjb250YWluczogW2hsanMuVElUTEVfTU9ERV1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnLVxcXFx3XFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogXCJeX19EQVRBX18kXCIsXG4gICAgICBlbmQ6IFwiXl9fRU5EX18kXCIsXG4gICAgICBzdWJMYW5ndWFnZTogJ21vam9saWNpb3VzJyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBcIl5AQC4qXCIsXG4gICAgICAgICAgICBlbmQ6IFwiJFwiLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBcImNvbW1lbnRcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IFBFUkxfREVGQVVMVF9DT05UQUlOUztcbiAgTUVUSE9ELmNvbnRhaW5zID0gUEVSTF9ERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwbCcsICdwbSddLFxuICAgIGxleGVtZXM6IC9bXFx3XFwuXSsvLFxuICAgIGtleXdvcmRzOiBQRVJMX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBQRVJMX0RFRkFVTFRfQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15fXyhFTkR8REFUQSlfXyQnXG4gICAgICB9LFxuICAgIC8vIG1vam9saWNpb3VzIGxpbmVcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFwiXlxcXFxzKiV7MSwyfT17MCwyfVwiLCBlbmQ6ICckJyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdwZXJsJ1xuICAgICAgfSxcbiAgICAvLyBtb2pvbGljaW91cyBibG9ja1xuICAgICAge1xuICAgICAgICBiZWdpbjogXCI8JXsxLDJ9PXswLDJ9XCIsXG4gICAgICAgIGVuZDogXCI9ezAsMX0lPlwiLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3BlcmwnLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsIHJlbGV2YW5jZTogMCxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1skXVthLWZBLUYwLTldKydcbiAgICAgIH0sXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ3B1YmxpYyBwcml2YXRlIHByb3BlcnR5IGNvbnRpbnVlIGV4aXQgZXh0ZXJuIG5ldyB0cnkgY2F0Y2ggJyArXG4gICAgICAgICdlYWNoaW4gbm90IGFic3RyYWN0IGZpbmFsIHNlbGVjdCBjYXNlIGRlZmF1bHQgY29uc3QgbG9jYWwgZ2xvYmFsIGZpZWxkICcgK1xuICAgICAgICAnZW5kIGlmIHRoZW4gZWxzZSBlbHNlaWYgZW5kaWYgd2hpbGUgd2VuZCByZXBlYXQgdW50aWwgZm9yZXZlciBmb3IgJyArXG4gICAgICAgICd0byBzdGVwIG5leHQgcmV0dXJuIG1vZHVsZSBpbmxpbmUgdGhyb3cgaW1wb3J0JyxcblxuICAgICAgYnVpbHRfaW46ICdEZWJ1Z0xvZyBEZWJ1Z1N0b3AgRXJyb3IgUHJpbnQgQUNvcyBBQ29zciBBU2luIEFTaW5yIEFUYW4gQVRhbjIgQVRhbjJyIEFUYW5yIEFicyBBYnMgQ2VpbCAnICtcbiAgICAgICAgJ0NsYW1wIENsYW1wIENvcyBDb3NyIEV4cCBGbG9vciBMb2cgTWF4IE1heCBNaW4gTWluIFBvdyBTZ24gU2duIFNpbiBTaW5yIFNxcnQgVGFuIFRhbnIgU2VlZCBQSSBIQUxGUEkgVFdPUEknLFxuXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBudWxsIGFuZCBvciBzaGwgc2hyIG1vZCdcbiAgICB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJyNyZW0nLCAnI2VuZCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICBcIidcIixcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIG1ldGhvZCcsIGVuZDogJ1soPTpdfCQnLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKHNlbGZ8c3VwZXIpXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdcXFxccyojJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsc2VpZiBlbmRpZiBlbmQgdGhlbid9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqc3RyaWN0XFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnYWxpYXMnLCBlbmQ6ICc9JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgTlVNQkVSXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgIC8vIE1vb25zY3JpcHQga2V5d29yZHNcbiAgICAgICdpZiB0aGVuIG5vdCBmb3IgaW4gd2hpbGUgZG8gcmV0dXJuIGVsc2UgZWxzZWlmIGJyZWFrIGNvbnRpbnVlIHN3aXRjaCBhbmQgb3IgJyArXG4gICAgICAndW5sZXNzIHdoZW4gY2xhc3MgZXh0ZW5kcyBzdXBlciBsb2NhbCBpbXBvcnQgZXhwb3J0IGZyb20gdXNpbmcnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBuaWwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ19HIF9WRVJTSU9OIGFzc2VydCBjb2xsZWN0Z2FyYmFnZSBkb2ZpbGUgZXJyb3IgZ2V0ZmVudiBnZXRtZXRhdGFibGUgaXBhaXJzIGxvYWQgJyArXG4gICAgICAnbG9hZGZpbGUgbG9hZHN0cmluZyBtb2R1bGUgbmV4dCBwYWlycyBwY2FsbCBwcmludCByYXdlcXVhbCByYXdnZXQgcmF3c2V0IHJlcXVpcmUgJyArXG4gICAgICAnc2VsZWN0IHNldGZlbnYgc2V0bWV0YXRhYmxlIHRvbnVtYmVyIHRvc3RyaW5nIHR5cGUgdW5wYWNrIHhwY2FsbCBjb3JvdXRpbmUgZGVidWcgJyArXG4gICAgICAnaW8gbWF0aCBvcyBwYWNrYWdlIHN0cmluZyB0YWJsZSdcbiAgfTtcbiAgdmFyIEpTX0lERU5UX1JFID0gJ1tBLVphLXokX11bMC05QS1aYS16JF9dKic7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC8jXFx7LywgZW5kOiAvfS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTXG4gIH07XG4gIHZhciBFWFBSRVNTSU9OUyA9IFtcbiAgICBobGpzLmluaGVyaXQoaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge3N0YXJ0czoge2VuZDogJyhcXFxccyovKT8nLCByZWxldmFuY2U6IDB9fSksIC8vIGEgbnVtYmVyIHRyaWVzIHRvIGVhdCB0aGUgZm9sbG93aW5nIHNsYXNoIHRvIHByZXZlbnQgdHJlYXRpbmcgaXQgYXMgYSByZWdleHBcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJy8sIGVuZDogLycvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgIGJlZ2luOiAnQF9fJyArIGhsanMuSURFTlRfUkVcbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnQCcgKyBobGpzLklERU5UX1JFIC8vIHJlbGV2YW5jZSBib29zdGVyIG9uIHBhciB3aXRoIENvZmZlZVNjcmlwdFxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFxcXFxcXFwnICsgaGxqcy5JREVOVF9SRSAvLyBpbnN0XFxtZXRob2RcbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gRVhQUkVTU0lPTlM7XG5cbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBKU19JREVOVF9SRX0pO1xuICB2YXIgUEFSQU1TX1JFID0gJyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCWy09XT4nO1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKFteXFxcXChdJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgLyogV2UgbmVlZCBhbm90aGVyIGNvbnRhaW5lZCBuYW1lbGVzcyBtb2RlIHRvIG5vdCBoYXZlIGV2ZXJ5IG5lc3RlZFxuICAgIHBhaXIgb2YgcGFyZW5zIHRvIGJlIGNhbGxlZCBcInBhcmFtc1wiICovXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICBjb250YWluczogWydzZWxmJ10uY29uY2F0KEVYUFJFU1NJT05TKVxuICAgIH1dXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21vb24nXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05TLmNvbmNhdChbXG4gICAgICBobGpzLkNPTU1FTlQoJy0tJywgJyQnKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLCAgLy8gZnVuY3Rpb246IC0+ID0+XG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKicgKyBKU19JREVOVF9SRSArICdcXFxccyo9XFxcXHMqJyArIFBBUkFNU19SRSwgZW5kOiAnWy09XT4nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtUSVRMRSwgUEFSQU1TXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9bXFwoLDo9XVxccyovLCAvLyBhbm9ueW1vdXMgZnVuY3Rpb24gc3RhcnRcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiBQQVJBTVNfUkUsIGVuZDogJ1stPV0+JyxcbiAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtQQVJBTVNdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcycsXG4gICAgICAgIGVuZDogJyQnLFxuICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcycsXG4gICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bOj1cIlxcW1xcXV0vLFxuICAgICAgICAgICAgY29udGFpbnM6IFtUSVRMRV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFRJVExFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLCAgICAvLyB0YWJsZVxuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6XG4gICAgICAgICAgJ2J1aWxkIGNyZWF0ZSBpbmRleCBkZWxldGUgZHJvcCBleHBsYWluIGluZmVyfDEwIGluc2VydCBtZXJnZSBwcmVwYXJlIHNlbGVjdCB1cGRhdGUgdXBzZXJ0fDEwJyxcbiAgICAgICAgZW5kOiAvOy8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIC8vIFRha2VuIGZyb20gaHR0cDovL2RldmVsb3Blci5jb3VjaGJhc2UuY29tL2RvY3VtZW50YXRpb24vc2VydmVyL2N1cnJlbnQvbjFxbC9uMXFsLWxhbmd1YWdlLXJlZmVyZW5jZS9yZXNlcnZlZHdvcmRzLmh0bWxcbiAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgJ2FsbCBhbHRlciBhbmFseXplIGFuZCBhbnkgYXJyYXkgYXMgYXNjIGJlZ2luIGJldHdlZW4gYmluYXJ5IGJvb2xlYW4gYnJlYWsgYnVja2V0IGJ1aWxkIGJ5IGNhbGwgJyArXG4gICAgICAgICAgICAnY2FzZSBjYXN0IGNsdXN0ZXIgY29sbGF0ZSBjb2xsZWN0aW9uIGNvbW1pdCBjb25uZWN0IGNvbnRpbnVlIGNvcnJlbGF0ZSBjb3ZlciBjcmVhdGUgZGF0YWJhc2UgJyArXG4gICAgICAgICAgICAnZGF0YXNldCBkYXRhc3RvcmUgZGVjbGFyZSBkZWNyZW1lbnQgZGVsZXRlIGRlcml2ZWQgZGVzYyBkZXNjcmliZSBkaXN0aW5jdCBkbyBkcm9wIGVhY2ggZWxlbWVudCAnICtcbiAgICAgICAgICAgICdlbHNlIGVuZCBldmVyeSBleGNlcHQgZXhjbHVkZSBleGVjdXRlIGV4aXN0cyBleHBsYWluIGZldGNoIGZpcnN0IGZsYXR0ZW4gZm9yIGZvcmNlIGZyb20gJyArXG4gICAgICAgICAgICAnZnVuY3Rpb24gZ3JhbnQgZ3JvdXAgZ3NpIGhhdmluZyBpZiBpZ25vcmUgaWxpa2UgaW4gaW5jbHVkZSBpbmNyZW1lbnQgaW5kZXggaW5mZXIgaW5saW5lIGlubmVyICcgK1xuICAgICAgICAgICAgJ2luc2VydCBpbnRlcnNlY3QgaW50byBpcyBqb2luIGtleSBrZXlzIGtleXNwYWNlIGtub3duIGxhc3QgbGVmdCBsZXQgbGV0dGluZyBsaWtlIGxpbWl0IGxzbSBtYXAgJyArXG4gICAgICAgICAgICAnbWFwcGluZyBtYXRjaGVkIG1hdGVyaWFsaXplZCBtZXJnZSBtaW51cyBuYW1lc3BhY2UgbmVzdCBub3QgbnVtYmVyIG9iamVjdCBvZmZzZXQgb24gJyArXG4gICAgICAgICAgICAnb3B0aW9uIG9yIG9yZGVyIG91dGVyIG92ZXIgcGFyc2UgcGFydGl0aW9uIHBhc3N3b3JkIHBhdGggcG9vbCBwcmVwYXJlIHByaW1hcnkgcHJpdmF0ZSBwcml2aWxlZ2UgJyArXG4gICAgICAgICAgICAncHJvY2VkdXJlIHB1YmxpYyByYXcgcmVhbG0gcmVkdWNlIHJlbmFtZSByZXR1cm4gcmV0dXJuaW5nIHJldm9rZSByaWdodCByb2xlIHJvbGxiYWNrIHNhdGlzZmllcyAnICtcbiAgICAgICAgICAgICdzY2hlbWEgc2VsZWN0IHNlbGYgc2VtaSBzZXQgc2hvdyBzb21lIHN0YXJ0IHN0YXRpc3RpY3Mgc3RyaW5nIHN5c3RlbSB0aGVuIHRvIHRyYW5zYWN0aW9uIHRyaWdnZXIgJyArXG4gICAgICAgICAgICAndHJ1bmNhdGUgdW5kZXIgdW5pb24gdW5pcXVlIHVua25vd24gdW5uZXN0IHVuc2V0IHVwZGF0ZSB1cHNlcnQgdXNlIHVzZXIgdXNpbmcgdmFsaWRhdGUgdmFsdWUgJyArXG4gICAgICAgICAgICAndmFsdWVkIHZhbHVlcyB2aWEgdmlldyB3aGVuIHdoZXJlIHdoaWxlIHdpdGggd2l0aGluIHdvcmsgeG9yJyxcbiAgICAgICAgICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly9kZXZlbG9wZXIuY291Y2hiYXNlLmNvbS9kb2N1bWVudGF0aW9uL3NlcnZlci80LjUvbjFxbC9uMXFsLWxhbmd1YWdlLXJlZmVyZW5jZS9saXRlcmFscy5odG1sXG4gICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICd0cnVlIGZhbHNlIG51bGwgbWlzc2luZ3w1JyxcbiAgICAgICAgICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly9kZXZlbG9wZXIuY291Y2hiYXNlLmNvbS9kb2N1bWVudGF0aW9uL3NlcnZlci80LjUvbjFxbC9uMXFsLWxhbmd1YWdlLXJlZmVyZW5jZS9mdW5jdGlvbnMuaHRtbFxuICAgICAgICAgIGJ1aWx0X2luOlxuICAgICAgICAgICAgJ2FycmF5X2FnZyBhcnJheV9hcHBlbmQgYXJyYXlfY29uY2F0IGFycmF5X2NvbnRhaW5zIGFycmF5X2NvdW50IGFycmF5X2Rpc3RpbmN0IGFycmF5X2lmbnVsbCBhcnJheV9sZW5ndGggJyArXG4gICAgICAgICAgICAnYXJyYXlfbWF4IGFycmF5X21pbiBhcnJheV9wb3NpdGlvbiBhcnJheV9wcmVwZW5kIGFycmF5X3B1dCBhcnJheV9yYW5nZSBhcnJheV9yZW1vdmUgYXJyYXlfcmVwZWF0IGFycmF5X3JlcGxhY2UgJyArXG4gICAgICAgICAgICAnYXJyYXlfcmV2ZXJzZSBhcnJheV9zb3J0IGFycmF5X3N1bSBhdmcgY291bnQgbWF4IG1pbiBzdW0gZ3JlYXRlc3QgbGVhc3QgaWZtaXNzaW5nIGlmbWlzc2luZ29ybnVsbCBpZm51bGwgJyArXG4gICAgICAgICAgICAnbWlzc2luZ2lmIG51bGxpZiBpZmluZiBpZm5hbiBpZm5hbm9yaW5mIG5hbmluZiBuZWdpbmZpZiBwb3NpbmZpZiBjbG9ja19taWxsaXMgY2xvY2tfc3RyIGRhdGVfYWRkX21pbGxpcyAnICtcbiAgICAgICAgICAgICdkYXRlX2FkZF9zdHIgZGF0ZV9kaWZmX21pbGxpcyBkYXRlX2RpZmZfc3RyIGRhdGVfcGFydF9taWxsaXMgZGF0ZV9wYXJ0X3N0ciBkYXRlX3RydW5jX21pbGxpcyBkYXRlX3RydW5jX3N0ciAnICtcbiAgICAgICAgICAgICdkdXJhdGlvbl90b19zdHIgbWlsbGlzIHN0cl90b19taWxsaXMgbWlsbGlzX3RvX3N0ciBtaWxsaXNfdG9fdXRjIG1pbGxpc190b196b25lX25hbWUgbm93X21pbGxpcyBub3dfc3RyICcgK1xuICAgICAgICAgICAgJ3N0cl90b19kdXJhdGlvbiBzdHJfdG9fdXRjIHN0cl90b196b25lX25hbWUgZGVjb2RlX2pzb24gZW5jb2RlX2pzb24gZW5jb2RlZF9zaXplIHBvbHlfbGVuZ3RoIGJhc2U2NCBiYXNlNjRfZW5jb2RlICcgK1xuICAgICAgICAgICAgJ2Jhc2U2NF9kZWNvZGUgbWV0YSB1dWlkIGFicyBhY29zIGFzaW4gYXRhbiBhdGFuMiBjZWlsIGNvcyBkZWdyZWVzIGUgZXhwIGxuIGxvZyBmbG9vciBwaSBwb3dlciByYWRpYW5zIHJhbmRvbSAnICtcbiAgICAgICAgICAgICdyb3VuZCBzaWduIHNpbiBzcXJ0IHRhbiB0cnVuYyBvYmplY3RfbGVuZ3RoIG9iamVjdF9uYW1lcyBvYmplY3RfcGFpcnMgb2JqZWN0X2lubmVyX3BhaXJzIG9iamVjdF92YWx1ZXMgJyArXG4gICAgICAgICAgICAnb2JqZWN0X2lubmVyX3ZhbHVlcyBvYmplY3RfYWRkIG9iamVjdF9wdXQgb2JqZWN0X3JlbW92ZSBvYmplY3RfdW53cmFwIHJlZ2V4cF9jb250YWlucyByZWdleHBfbGlrZSByZWdleHBfcG9zaXRpb24gJyArXG4gICAgICAgICAgICAncmVnZXhwX3JlcGxhY2UgY29udGFpbnMgaW5pdGNhcCBsZW5ndGggbG93ZXIgbHRyaW0gcG9zaXRpb24gcmVwZWF0IHJlcGxhY2UgcnRyaW0gc3BsaXQgc3Vic3RyIHRpdGxlIHRyaW0gdXBwZXIgJyArXG4gICAgICAgICAgICAnaXNhcnJheSBpc2F0b20gaXNib29sZWFuIGlzbnVtYmVyIGlzb2JqZWN0IGlzc3RyaW5nIHR5cGUgdG9hcnJheSB0b2F0b20gdG9ib29sZWFuIHRvbnVtYmVyIHRvb2JqZWN0IHRvc3RyaW5nJ1xuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgICAgICByZWxldmFuY2U6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUiA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1xcJFxcZCsvfSxcbiAgICAgIHtiZWdpbjogL1xcJFxcey8sIGVuZDogL30vfSxcbiAgICAgIHtiZWdpbjogJ1tcXFxcJFxcXFxAXScgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkV9XG4gICAgXVxuICB9O1xuICB2YXIgREVGQVVMVCA9IHtcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICBsZXhlbWVzOiAnW2Etei9fXSsnLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnb24gb2ZmIHllcyBubyB0cnVlIGZhbHNlIG5vbmUgYmxvY2tlZCBkZWJ1ZyBpbmZvIG5vdGljZSB3YXJuIGVycm9yIGNyaXQgJyArXG4gICAgICAgICdzZWxlY3QgYnJlYWsgbGFzdCBwZXJtYW5lbnQgcmVkaXJlY3Qga3F1ZXVlIHJ0c2lnIGVwb2xsIHBvbGwgL2Rldi9wb2xsJ1xuICAgIH0sXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGlsbGVnYWw6ICc9PicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL1wiLywgZW5kOiAvXCIvfSxcbiAgICAgICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyB0aGlzIHN3YWxsb3dzIGVudGlyZSBVUkxzIHRvIGF2b2lkIGRldGVjdGluZyBudW1iZXJzIHdpdGhpblxuICAgICAge1xuICAgICAgICBiZWdpbjogJyhbYS16XSspOi8nLCBlbmQ6ICdcXFxccycsIGVuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1ZBUl1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogXCJcXFxcc1xcXFxeXCIsIGVuZDogXCJcXFxcc3x7fDtcIiwgcmV0dXJuRW5kOiB0cnVlfSxcbiAgICAgICAgICAvLyByZWdleHAgbG9jYXRpb25zICh+LCB+KilcbiAgICAgICAgICB7YmVnaW46IFwiflxcXFwqP1xcXFxzK1wiLCBlbmQ6IFwiXFxcXHN8e3w7XCIsIHJldHVybkVuZDogdHJ1ZX0sXG4gICAgICAgICAgLy8gKi5leGFtcGxlLmNvbVxuICAgICAgICAgIHtiZWdpbjogXCJcXFxcKihcXFxcLlthLXpcXFxcLV0rKStcIn0sXG4gICAgICAgICAgLy8gc3ViLmV4YW1wbGUuKlxuICAgICAgICAgIHtiZWdpbjogXCIoW2EtelxcXFwtXStcXFxcLikrXFxcXCpcIn1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIElQXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJcXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9KDpcXFxcZHsxLDV9KT9cXFxcYidcbiAgICAgIH0sXG4gICAgICAvLyB1bml0c1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrW2tLbU1nR2RzaGR3eV0qXFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBWQVJcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ25naW54Y29uZiddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzK3snLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZW5kOiAneycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMnLCBlbmQ6ICc7fHsnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgICAgIHN0YXJ0czogREVGQVVMVFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSxcbiAgICBpbGxlZ2FsOiAnW15cXFxcc1xcXFx9XSdcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyduaW0nXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2FkZHIgYW5kIGFzIGFzbSBiaW5kIGJsb2NrIGJyZWFrIGNhc2UgY2FzdCBjb25zdCBjb250aW51ZSBjb252ZXJ0ZXIgJyArXG4gICAgICAgICdkaXNjYXJkIGRpc3RpbmN0IGRpdiBkbyBlbGlmIGVsc2UgZW5kIGVudW0gZXhjZXB0IGV4cG9ydCBmaW5hbGx5ICcgK1xuICAgICAgICAnZm9yIGZyb20gZ2VuZXJpYyBpZiBpbXBvcnQgaW4gaW5jbHVkZSBpbnRlcmZhY2UgaXMgaXNub3QgaXRlcmF0b3IgJyArXG4gICAgICAgICdsZXQgbWFjcm8gbWV0aG9kIG1peGluIG1vZCBuaWwgbm90IG5vdGluIG9iamVjdCBvZiBvciBvdXQgcHJvYyBwdHIgJyArXG4gICAgICAgICdyYWlzZSByZWYgcmV0dXJuIHNobCBzaHIgc3RhdGljIHRlbXBsYXRlIHRyeSB0dXBsZSB0eXBlIHVzaW5nIHZhciAnICtcbiAgICAgICAgJ3doZW4gd2hpbGUgd2l0aCB3aXRob3V0IHhvciB5aWVsZCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnc2hhcmVkIGd1YXJkZWQgc3RkaW4gc3Rkb3V0IHN0ZGVyciByZXN1bHQgdHJ1ZSBmYWxzZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2ludCBpbnQ4IGludDE2IGludDMyIGludDY0IHVpbnQgdWludDggdWludDE2IHVpbnQzMiB1aW50NjQgZmxvYXQgJyArXG4gICAgICAgICdmbG9hdDMyIGZsb2F0NjQgYm9vbCBjaGFyIHN0cmluZyBjc3RyaW5nIHBvaW50ZXIgZXhwciBzdG10IHZvaWQgJyArXG4gICAgICAgICdhdXRvIGFueSByYW5nZSBhcnJheSBvcGVuYXJyYXkgdmFyYXJncyBzZXEgc2V0IGNsb25nIGN1bG9uZyBjY2hhciAnICtcbiAgICAgICAgJ2NzY2hhciBjc2hvcnQgY2ludCBjc2l6ZSBjbG9uZ2xvbmcgY2Zsb2F0IGNkb3VibGUgY2xvbmdkb3VibGUgJyArXG4gICAgICAgICdjdWNoYXIgY3VzaG9ydCBjdWludCBjdWxvbmdsb25nIGNzdHJpbmdhcnJheSBzZW1pc3RhdGljJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFsge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgLy8gQWN0dWFsbHkgcHJhZ21hXG4gICAgICAgIGJlZ2luOiAve1xcLi8sXG4gICAgICAgIGVuZDogL1xcLn0vLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LCB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvW2EtekEtWl1cXHcqXCIvLFxuICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAvXCJcIi99XVxuICAgICAgfSwge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogLyhbYS16QS1aXVxcdyopP1wiXCJcIi8sXG4gICAgICAgIGVuZDogL1wiXCJcIi9cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46IC9cXGJbQS1aXVxcdytcXGIvLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL1xcYigwW3hYXVswLTlhLWZBLUZdW18wLTlhLWZBLUZdKikoJz9baUl1VV0oOHwxNnwzMnw2NCkpPy99LFxuICAgICAgICAgIHtiZWdpbjogL1xcYigwb1swLTddW18wLTddKikoJz9baUl1VWZGXSg4fDE2fDMyfDY0KSk/L30sXG4gICAgICAgICAge2JlZ2luOiAvXFxiKDAoYnxCKVswMV1bXzAxXSopKCc/W2lJdVVmRl0oOHwxNnwzMnw2NCkpPy99LFxuICAgICAgICAgIHtiZWdpbjogL1xcYihcXGRbX1xcZF0qKSgnP1tpSXVVZkZdKDh8MTZ8MzJ8NjQpKT8vfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5JWF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ3JlYyB3aXRoIGxldCBpbiBpbmhlcml0IGFzc2VydCBpZiBlbHNlIHRoZW4nLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBvciBhbmQgbnVsbCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnaW1wb3J0IGFib3J0IGJhc2VOYW1lT2YgZGlyT2YgaXNOdWxsIGJ1aWx0aW5zIG1hcCByZW1vdmVBdHRycyB0aHJvdyAnICtcbiAgICAgICd0b1N0cmluZyBkZXJpdmF0aW9uJ1xuICB9O1xuICB2YXIgQU5USVFVT1RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcJFxcey8sXG4gICAgZW5kOiAvfS8sXG4gICAga2V5d29yZHM6IE5JWF9LRVlXT1JEU1xuICB9O1xuICB2YXIgQVRUUlMgPSB7XG4gICAgYmVnaW46IC9bYS16QS1aMC05LV9dKyhcXHMqPSkvLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgIGJlZ2luOiAvXFxTKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW0FOVElRVU9URV0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogXCInJ1wiLCBlbmQ6IFwiJydcIn0sXG4gICAgICB7YmVnaW46ICdcIicsIGVuZDogJ1wiJ31cbiAgICBdXG4gIH07XG4gIHZhciBFWFBSRVNTSU9OUyA9IFtcbiAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBTVFJJTkcsXG4gICAgQVRUUlNcbiAgXTtcbiAgQU5USVFVT1RFLmNvbnRhaW5zID0gRVhQUkVTU0lPTlM7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogW1wibml4b3NcIl0sXG4gICAga2V5d29yZHM6IE5JWF9LRVlXT1JEUyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDT05TVEFOVFMgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkKEFETUlOVE9PTFN8QVBQREFUQXxDREJVUk5fQVJFQXxDTURMSU5FfENPTU1PTkZJTEVTMzJ8Q09NTU9ORklMRVM2NHxDT01NT05GSUxFU3xDT09LSUVTfERFU0tUT1B8RE9DVU1FTlRTfEVYRURJUnxFWEVGSUxFfEVYRVBBVEh8RkFWT1JJVEVTfEZPTlRTfEhJU1RPUll8SFdORFBBUkVOVHxJTlNURElSfElOVEVSTkVUX0NBQ0hFfExBTkdVQUdFfExPQ0FMQVBQREFUQXxNVVNJQ3xORVRIT09EfE9VVERJUnxQSUNUVVJFU3xQTFVHSU5TRElSfFBSSU5USE9PRHxQUk9GSUxFfFBST0dSQU1GSUxFUzMyfFBST0dSQU1GSUxFUzY0fFBST0dSQU1GSUxFU3xRVUlDS0xBVU5DSHxSRUNFTlR8UkVTT1VSQ0VTX0xPQ0FMSVpFRHxSRVNPVVJDRVN8U0VORFRPfFNNUFJPR1JBTVN8U01TVEFSVFVQfFNUQVJUTUVOVXxTWVNESVJ8VEVNUHxURU1QTEFURVN8VklERU9TfFdJTkRJUikvXG4gIH07XG5cbiAgdmFyIERFRklORVMgPSB7XG4gICAgLy8gJHtkZWZpbmVzfVxuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJCt7W1xcd1xcLjotXSt9L1xuICB9O1xuXG4gIHZhciBWQVJJQUJMRVMgPSB7XG4gICAgLy8gJHZhcmlhYmxlc1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJCtcXHcrLyxcbiAgICBpbGxlZ2FsOiAvXFwoXFwpe30vXG4gIH07XG5cbiAgdmFyIExBTkdVQUdFUyA9IHtcbiAgICAvLyAkKGxhbmd1YWdlX3N0cmluZ3MpXG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkK1xcKFtcXHdcXF5cXC46LV0rXFwpL1xuICB9O1xuXG4gIHZhciBQQVJBTUVURVJTID0ge1xuICAgIC8vIGNvbW1hbmQgcGFyYW1ldGVyc1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICcoQVJDSElWRXxGSUxFX0FUVFJJQlVURV9BUkNISVZFfEZJTEVfQVRUUklCVVRFX05PUk1BTHxGSUxFX0FUVFJJQlVURV9PRkZMSU5FfEZJTEVfQVRUUklCVVRFX1JFQURPTkxZfEZJTEVfQVRUUklCVVRFX1NZU1RFTXxGSUxFX0FUVFJJQlVURV9URU1QT1JBUll8SEtDUnxIS0NVfEhLRER8SEtFWV9DTEFTU0VTX1JPT1R8SEtFWV9DVVJSRU5UX0NPTkZJR3xIS0VZX0NVUlJFTlRfVVNFUnxIS0VZX0RZTl9EQVRBfEhLRVlfTE9DQUxfTUFDSElORXxIS0VZX1BFUkZPUk1BTkNFX0RBVEF8SEtFWV9VU0VSU3xIS0xNfEhLUER8SEtVfElEQUJPUlR8SURDQU5DRUx8SURJR05PUkV8SUROT3xJRE9LfElEUkVUUll8SURZRVN8TUJfQUJPUlRSRVRSWUlHTk9SRXxNQl9ERUZCVVRUT04xfE1CX0RFRkJVVFRPTjJ8TUJfREVGQlVUVE9OM3xNQl9ERUZCVVRUT040fE1CX0lDT05FWENMQU1BVElPTnxNQl9JQ09OSU5GT1JNQVRJT058TUJfSUNPTlFVRVNUSU9OfE1CX0lDT05TVE9QfE1CX09LfE1CX09LQ0FOQ0VMfE1CX1JFVFJZQ0FOQ0VMfE1CX1JJR0hUfE1CX1JUTFJFQURJTkd8TUJfU0VURk9SRUdST1VORHxNQl9UT1BNT1NUfE1CX1VTRVJJQ09OfE1CX1lFU05PfE5PUk1BTHxPRkZMSU5FfFJFQURPTkxZfFNIQ1RYfFNIRUxMX0NPTlRFWFR8U1lTVEVNfFRFTVBPUkFSWSknXG4gIH07XG5cbiAgdmFyIENPTVBJTEVSID0ge1xuICAgIC8vICFjb21waWxlcl9mbGFnc1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIGJlZ2luOiAvXFwhKGFkZGluY2x1ZGVkaXJ8YWRkcGx1Z2luZGlyfGFwcGVuZGZpbGV8Y2R8ZGVmaW5lfGRlbGZpbGV8ZWNob3xlbHNlfGVuZGlmfGVycm9yfGV4ZWN1dGV8ZmluYWxpemV8Z2V0ZGxsdmVyc2lvbnxnZXR0bGJ2ZXJzaW9ufGlmfGlmZGVmfGlmbWFjcm9kZWZ8aWZtYWNyb25kZWZ8aWZuZGVmfGluY2x1ZGV8aW5zZXJ0bWFjcm98bWFjcm98bWFjcm9lbmR8bWFrZW5zaXN8cGFja2hkcnxzZWFyY2hwYXJzZXxzZWFyY2hyZXBsYWNlfHN5c3RlbXx0ZW1wZmlsZXx1bmRlZnx2ZXJib3NlfHdhcm5pbmcpL1xuICB9O1xuXG4gIHZhciBNRVRBQ0hBUlMgPSB7XG4gICAgLy8gJFxcbiwgJFxcciwgJFxcdCwgJCRcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogL1xcJChcXFxcW25ydF18XFwkKS9cbiAgfTtcblxuICB2YXIgUExVR0lOUyA9IHtcbiAgICAvLyBwbHVnOjppbnNcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgYmVnaW46IC9cXHcrXFw6XFw6XFx3Ky9cbiAgfTtcblxuICAgIHZhciBTVFJJTkcgPSB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCdcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgTUVUQUNIQVJTLFxuICAgICAgICBDT05TVEFOVFMsXG4gICAgICAgIERFRklORVMsXG4gICAgICAgIFZBUklBQkxFUyxcbiAgICAgICAgTEFOR1VBR0VTXG4gICAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICdBYm9ydCBBZGRCcmFuZGluZ0ltYWdlIEFkZFNpemUgQWxsb3dSb290RGlySW5zdGFsbCBBbGxvd1NraXBGaWxlcyBBdXRvQ2xvc2VXaW5kb3cgQkdGb250IEJHR3JhZGllbnQgQnJhbmRpbmdUZXh0IEJyaW5nVG9Gcm9udCBDYWxsIENhbGxJbnN0RExMIENhcHRpb24gQ2hhbmdlVUkgQ2hlY2tCaXRtYXAgQ2xlYXJFcnJvcnMgQ29tcGxldGVkVGV4dCBDb21wb25lbnRUZXh0IENvcHlGaWxlcyBDUkNDaGVjayBDcmVhdGVEaXJlY3RvcnkgQ3JlYXRlRm9udCBDcmVhdGVTaG9ydEN1dCBEZWxldGUgRGVsZXRlSU5JU2VjIERlbGV0ZUlOSVN0ciBEZWxldGVSZWdLZXkgRGVsZXRlUmVnVmFsdWUgRGV0YWlsUHJpbnQgRGV0YWlsc0J1dHRvblRleHQgRGlyVGV4dCBEaXJWYXIgRGlyVmVyaWZ5IEVuYWJsZVdpbmRvdyBFbnVtUmVnS2V5IEVudW1SZWdWYWx1ZSBFeGNoIEV4ZWMgRXhlY1NoZWxsIEV4ZWNTaGVsbFdhaXQgRXhlY1dhaXQgRXhwYW5kRW52U3RyaW5ncyBGaWxlIEZpbGVCdWZTaXplIEZpbGVDbG9zZSBGaWxlRXJyb3JUZXh0IEZpbGVPcGVuIEZpbGVSZWFkIEZpbGVSZWFkQnl0ZSBGaWxlUmVhZFVURjE2TEUgRmlsZVJlYWRXb3JkIEZpbGVTZWVrIEZpbGVXcml0ZSBGaWxlV3JpdGVCeXRlIEZpbGVXcml0ZVVURjE2TEUgRmlsZVdyaXRlV29yZCBGaW5kQ2xvc2UgRmluZEZpcnN0IEZpbmROZXh0IEZpbmRXaW5kb3cgRmx1c2hJTkkgRnVuY3Rpb25FbmQgR2V0Q3VySW5zdFR5cGUgR2V0Q3VycmVudEFkZHJlc3MgR2V0RGxnSXRlbSBHZXRETExWZXJzaW9uIEdldERMTFZlcnNpb25Mb2NhbCBHZXRFcnJvckxldmVsIEdldEZpbGVUaW1lIEdldEZpbGVUaW1lTG9jYWwgR2V0RnVsbFBhdGhOYW1lIEdldEZ1bmN0aW9uQWRkcmVzcyBHZXRJbnN0RGlyRXJyb3IgR2V0TGFiZWxBZGRyZXNzIEdldFRlbXBGaWxlTmFtZSBHb3RvIEhpZGVXaW5kb3cgSWNvbiBJZkFib3J0IElmRXJyb3JzIElmRmlsZUV4aXN0cyBJZlJlYm9vdEZsYWcgSWZTaWxlbnQgSW5pdFBsdWdpbnNEaXIgSW5zdGFsbEJ1dHRvblRleHQgSW5zdGFsbENvbG9ycyBJbnN0YWxsRGlyIEluc3RhbGxEaXJSZWdLZXkgSW5zdFByb2dyZXNzRmxhZ3MgSW5zdFR5cGUgSW5zdFR5cGVHZXRUZXh0IEluc3RUeXBlU2V0VGV4dCBJbnQ2NENtcCBJbnQ2NENtcFUgSW50NjRGbXQgSW50Q21wIEludENtcFUgSW50Rm10IEludE9wIEludFB0ckNtcCBJbnRQdHJDbXBVIEludFB0ck9wIElzV2luZG93IExhbmdTdHJpbmcgTGljZW5zZUJrQ29sb3IgTGljZW5zZURhdGEgTGljZW5zZUZvcmNlU2VsZWN0aW9uIExpY2Vuc2VMYW5nU3RyaW5nIExpY2Vuc2VUZXh0IExvYWRMYW5ndWFnZUZpbGUgTG9ja1dpbmRvdyBMb2dTZXQgTG9nVGV4dCBNYW5pZmVzdERQSUF3YXJlIE1hbmlmZXN0U3VwcG9ydGVkT1MgTWVzc2FnZUJveCBNaXNjQnV0dG9uVGV4dCBOYW1lIE5vcCBPdXRGaWxlIFBhZ2UgUGFnZUNhbGxiYWNrcyBQYWdlRXhFbmQgUG9wIFB1c2ggUXVpdCBSZWFkRW52U3RyIFJlYWRJTklTdHIgUmVhZFJlZ0RXT1JEIFJlYWRSZWdTdHIgUmVib290IFJlZ0RMTCBSZW5hbWUgUmVxdWVzdEV4ZWN1dGlvbkxldmVsIFJlc2VydmVGaWxlIFJldHVybiBSTURpciBTZWFyY2hQYXRoIFNlY3Rpb25FbmQgU2VjdGlvbkdldEZsYWdzIFNlY3Rpb25HZXRJbnN0VHlwZXMgU2VjdGlvbkdldFNpemUgU2VjdGlvbkdldFRleHQgU2VjdGlvbkdyb3VwRW5kIFNlY3Rpb25JbiBTZWN0aW9uU2V0RmxhZ3MgU2VjdGlvblNldEluc3RUeXBlcyBTZWN0aW9uU2V0U2l6ZSBTZWN0aW9uU2V0VGV4dCBTZW5kTWVzc2FnZSBTZXRBdXRvQ2xvc2UgU2V0QnJhbmRpbmdJbWFnZSBTZXRDb21wcmVzcyBTZXRDb21wcmVzc29yIFNldENvbXByZXNzb3JEaWN0U2l6ZSBTZXRDdGxDb2xvcnMgU2V0Q3VySW5zdFR5cGUgU2V0RGF0YWJsb2NrT3B0aW1pemUgU2V0RGF0ZVNhdmUgU2V0RGV0YWlsc1ByaW50IFNldERldGFpbHNWaWV3IFNldEVycm9yTGV2ZWwgU2V0RXJyb3JzIFNldEZpbGVBdHRyaWJ1dGVzIFNldEZvbnQgU2V0T3V0UGF0aCBTZXRPdmVyd3JpdGUgU2V0UmVib290RmxhZyBTZXRSZWdWaWV3IFNldFNoZWxsVmFyQ29udGV4dCBTZXRTaWxlbnQgU2hvd0luc3REZXRhaWxzIFNob3dVbmluc3REZXRhaWxzIFNob3dXaW5kb3cgU2lsZW50SW5zdGFsbCBTaWxlbnRVbkluc3RhbGwgU2xlZXAgU3BhY2VUZXh0cyBTdHJDbXAgU3RyQ21wUyBTdHJDcHkgU3RyTGVuIFN1YkNhcHRpb24gVW5pY29kZSBVbmluc3RhbGxCdXR0b25UZXh0IFVuaW5zdGFsbENhcHRpb24gVW5pbnN0YWxsSWNvbiBVbmluc3RhbGxTdWJDYXB0aW9uIFVuaW5zdGFsbFRleHQgVW5pbnN0UGFnZSBVblJlZ0RMTCBWYXIgVklBZGRWZXJzaW9uS2V5IFZJRmlsZVZlcnNpb24gVklQcm9kdWN0VmVyc2lvbiBXaW5kb3dJY29uIFdyaXRlSU5JU3RyIFdyaXRlUmVnQmluIFdyaXRlUmVnRFdPUkQgV3JpdGVSZWdFeHBhbmRTdHIgV3JpdGVSZWdNdWx0aVN0ciBXcml0ZVJlZ05vbmUgV3JpdGVSZWdTdHIgV3JpdGVVbmluc3RhbGxlciBYUFN0eWxlJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAnYWRtaW4gYWxsIGF1dG8gYm90aCBib3R0b20gYnppcDIgY29sb3JlZCBjb21wb25lbnRzIGN1cnJlbnQgY3VzdG9tIGRpcmVjdG9yeSBmYWxzZSBmb3JjZSBoaWRlIGhpZ2hlc3QgaWZkaWZmIGlmbmV3ZXIgaW5zdGZpbGVzIGxhc3R1c2VkIGxlYXZlIGxlZnQgbGljZW5zZSBsaXN0b25seSBsem1hIG5ldmVyc2hvdyBub25lIG5vcm1hbCBub3RzZXQgb2ZmIG9uIG9wZW4gcHJpbnQgcmlnaHQgc2hvdyBzaWxlbnQgc2lsZW50bG9nIHNtb290aCB0ZXh0b25seSB0b3AgdHJ1ZSB0cnkgdW4uY29tcG9uZW50cyB1bi5jdXN0b20gdW4uZGlyZWN0b3J5IHVuLmluc3RmaWxlcyB1bi5saWNlbnNlIHVuaW5zdENvbmZpcm0gdXNlciBXaW4xMCBXaW43IFdpbjggV2luVmlzdGEgemxpYidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnRnVuY3Rpb24gUGFnZUV4IFNlY3Rpb24gU2VjdGlvbkdyb3VwJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBDT01QSUxFUixcbiAgICAgIERFRklORVMsXG4gICAgICBWQVJJQUJMRVMsXG4gICAgICBMQU5HVUFHRVMsXG4gICAgICBQQVJBTUVURVJTLFxuICAgICAgUExVR0lOUyxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQVBJX0NMQVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKEFWfENBfENGfENHfENJfENMfENNfENOfENUfE1LfE1QfE1US3xNVEx8TlN8U0NOfFNLfFVJfFdLfFhDKVxcXFx3KycsXG4gIH07XG4gIHZhciBPQkpDX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaW50IGZsb2F0IHdoaWxlIGNoYXIgZXhwb3J0IHNpemVvZiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBmb3IgdW5pb24gJyArXG4gICAgICAndW5zaWduZWQgbG9uZyB2b2xhdGlsZSBzdGF0aWMgYm9vbCBtdXRhYmxlIGlmIGRvIHJldHVybiBnb3RvIHZvaWQgJyArXG4gICAgICAnZW51bSBlbHNlIGJyZWFrIGV4dGVybiBhc20gY2FzZSBzaG9ydCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCAnICtcbiAgICAgICdzaWduZWQgdHlwZW5hbWUgdGhpcyBzd2l0Y2ggY29udGludWUgd2NoYXJfdCBpbmxpbmUgcmVhZG9ubHkgYXNzaWduICcgK1xuICAgICAgJ3JlYWR3cml0ZSBzZWxmIEBzeW5jaHJvbml6ZWQgaWQgdHlwZW9mICcgK1xuICAgICAgJ25vbmF0b21pYyBzdXBlciB1bmljaGFyIElCT3V0bGV0IElCQWN0aW9uIHN0cm9uZyB3ZWFrIGNvcHkgJyArXG4gICAgICAnaW4gb3V0IGlub3V0IGJ5Y29weSBieXJlZiBvbmV3YXkgX19zdHJvbmcgX193ZWFrIF9fYmxvY2sgX19hdXRvcmVsZWFzaW5nICcgK1xuICAgICAgJ0Bwcml2YXRlIEBwcm90ZWN0ZWQgQHB1YmxpYyBAdHJ5IEBwcm9wZXJ0eSBAZW5kIEB0aHJvdyBAY2F0Y2ggQGZpbmFsbHkgJyArXG4gICAgICAnQGF1dG9yZWxlYXNlcG9vbCBAc3ludGhlc2l6ZSBAZHluYW1pYyBAc2VsZWN0b3IgQG9wdGlvbmFsIEByZXF1aXJlZCAnICtcbiAgICAgICdAZW5jb2RlIEBwYWNrYWdlIEBpbXBvcnQgQGRlZnMgQGNvbXBhdGliaWxpdHlfYWxpYXMgJyArXG4gICAgICAnX19icmlkZ2UgX19icmlkZ2VfdHJhbnNmZXIgX19icmlkZ2VfcmV0YWluZWQgX19icmlkZ2VfcmV0YWluICcgK1xuICAgICAgJ19fY292YXJpYW50IF9fY29udHJhdmFyaWFudCBfX2tpbmRvZiAnICtcbiAgICAgICdfTm9ubnVsbCBfTnVsbGFibGUgX051bGxfdW5zcGVjaWZpZWQgJyArXG4gICAgICAnX19GVU5DVElPTl9fIF9fUFJFVFRZX0ZVTkNUSU9OX18gX19hdHRyaWJ1dGVfXyAnICtcbiAgICAgICdnZXR0ZXIgc2V0dGVyIHJldGFpbiB1bnNhZmVfdW5yZXRhaW5lZCAnICtcbiAgICAgICdub25udWxsIG51bGxhYmxlIG51bGxfdW5zcGVjaWZpZWQgbnVsbF9yZXNldHRhYmxlIGNsYXNzIGluc3RhbmNldHlwZSAnICtcbiAgICAgICdOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSIE5TX1VOQVZBSUxBQkxFIE5TX1JFUVVJUkVTX1NVUEVSICcgK1xuICAgICAgJ05TX1JFVFVSTlNfSU5ORVJfUE9JTlRFUiBOU19JTkxJTkUgTlNfQVZBSUxBQkxFIE5TX0RFUFJFQ0FURUQgJyArXG4gICAgICAnTlNfRU5VTSBOU19PUFRJT05TIE5TX1NXSUZUX1VOQVZBSUxBQkxFICcgK1xuICAgICAgJ05TX0FTU1VNRV9OT05OVUxMX0JFR0lOIE5TX0FTU1VNRV9OT05OVUxMX0VORCAnICtcbiAgICAgICdOU19SRUZJTkVEX0ZPUl9TV0lGVCBOU19TV0lGVF9OQU1FIE5TX1NXSUZUX05PVEhST1cgJyArXG4gICAgICAnTlNfRFVSSU5HIE5TX0hBTkRMRVIgTlNfRU5ESEFORExFUiBOU19WQUxVRVJFVFVSTiBOU19WT0lEUkVUVVJOJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ2ZhbHNlIHRydWUgRkFMU0UgVFJVRSBuaWwgWUVTIE5PIE5VTEwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0JPT0wgZGlzcGF0Y2hfb25jZV90IGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hfc3luYyBkaXNwYXRjaF9hc3luYyBkaXNwYXRjaF9vbmNlJ1xuICB9O1xuICB2YXIgTEVYRU1FUyA9IC9bYS16QS1aQF1bYS16QS1aMC05X10qLztcbiAgdmFyIENMQVNTX0tFWVdPUkRTID0gJ0BpbnRlcmZhY2UgQGNsYXNzIEBwcm90b2NvbCBAaW1wbGVtZW50YXRpb24nO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbW0nLCAnb2JqYycsICdvYmotYyddLFxuICAgIGtleXdvcmRzOiBPQkpDX0tFWVdPUkRTLFxuICAgIGxleGVtZXM6IExFWEVNRVMsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgQVBJX0NMQVNTLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdAXCInLCBlbmQ6ICdcIicsXG4gICAgICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1teXFxcXFxcXFxdXFwnJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdbXlxcXFxcXFxcXVteXFwnXSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICB7IGJlZ2luOiAnXFxcIicsIGVuZDogJ1xcXCInIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46ICc8JywgZW5kOiAnPicgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbjogJygnICsgQ0xBU1NfS0VZV09SRFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKVxcXFxiJywgZW5kOiAnKHt8JCknLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogQ0xBU1NfS0VZV09SRFMsIGxleGVtZXM6IExFWEVNRVMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLicraGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvKiBtaXNzaW5nIHN1cHBvcnQgZm9yIGhlcmVkb2MtbGlrZSBzdHJpbmcgKE9DYW1sIDQuMC4yKykgKi9cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21sJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhbmQgYXMgYXNzZXJ0IGFzciBiZWdpbiBjbGFzcyBjb25zdHJhaW50IGRvIGRvbmUgZG93bnRvIGVsc2UgZW5kICcgK1xuICAgICAgICAnZXhjZXB0aW9uIGV4dGVybmFsIGZvciBmdW4gZnVuY3Rpb24gZnVuY3RvciBpZiBpbiBpbmNsdWRlICcgK1xuICAgICAgICAnaW5oZXJpdCEgaW5oZXJpdCBpbml0aWFsaXplciBsYW5kIGxhenkgbGV0IGxvciBsc2wgbHNyIGx4b3IgbWF0Y2ggbWV0aG9kIXwxMCBtZXRob2QgJyArXG4gICAgICAgICdtb2QgbW9kdWxlIG11dGFibGUgbmV3IG9iamVjdCBvZiBvcGVuISBvcGVuIG9yIHByaXZhdGUgcmVjIHNpZyBzdHJ1Y3QgJyArXG4gICAgICAgICd0aGVuIHRvIHRyeSB0eXBlIHZhbCEgdmFsIHZpcnR1YWwgd2hlbiB3aGlsZSB3aXRoICcgK1xuICAgICAgICAvKiBjYW1scDQgKi9cbiAgICAgICAgJ3BhcnNlciB2YWx1ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLyogYnVpbHQtaW4gdHlwZXMgKi9cbiAgICAgICAgJ2FycmF5IGJvb2wgYnl0ZXMgY2hhciBleG58NSBmbG9hdCBpbnQgaW50MzIgaW50NjQgbGlzdCBsYXp5X3R8NSBuYXRpdmVpbnR8NSBzdHJpbmcgdW5pdCAnICtcbiAgICAgICAgLyogKHNvbWUpIHR5cGVzIGluIFBlcnZhc2l2ZXMgKi9cbiAgICAgICAgJ2luX2NoYW5uZWwgb3V0X2NoYW5uZWwgcmVmJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogL1xcL1xcL3w+Pi8sXG4gICAgbGV4ZW1lczogJ1thLXpfXVxcXFx3KiE/JyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46ICdcXFxcWyhcXFxcfFxcXFx8KT9cXFxcXXxcXFxcKFxcXFwpJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnXFxcXChcXFxcKicsXG4gICAgICAgICdcXFxcKlxcXFwpJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgeyAvKiB0eXBlIHZhcmlhYmxlICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFwnW0EtWmEtel9dKD8hXFwnKVtcXFxcd1xcJ10qJ1xuICAgICAgICAvKiB0aGUgZ3JhbW1hciBpcyBhbWJpZ3VvdXMgb24gaG93ICdhJ2Igc2hvdWxkIGJlIGludGVycHJldGVkIGJ1dCBub3QgdGhlIGNvbXBpbGVyICovXG4gICAgICB9LFxuICAgICAgeyAvKiBwb2x5bW9ycGhpYyB2YXJpYW50ICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJ2BbQS1aXVtcXFxcd1xcJ10qJ1xuICAgICAgfSxcbiAgICAgIHsgLyogbW9kdWxlIG9yIGNvbnN0cnVjdG9yICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHdcXCddKicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLyogZG9uJ3QgY29sb3IgaWRlbnRpZmllcnMsIGJ1dCBzYWZlbHkgY2F0Y2ggYWxsIGlkZW50aWZpZXJzIHdpdGggJyovXG4gICAgICAgIGJlZ2luOiAnW2Etel9dXFxcXHcqXFwnW1xcXFx3XFwnXSonLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnc3RyaW5nJywgcmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgJ1xcXFxiKDBbeFhdW2EtZkEtRjAtOV9dK1tMbG5dP3wnICtcbiAgICAgICAgICAnMFtvT11bMC03X10rW0xsbl0/fCcgK1xuICAgICAgICAgICcwW2JCXVswMV9dK1tMbG5dP3wnICtcbiAgICAgICAgICAnWzAtOV1bMC05X10qKFtMbG5dfChcXFxcLlswLTlfXSopPyhbZUVdWy0rXT9bMC05X10rKT8pPyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvWy09XT4vIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9XG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXHR2YXIgU1BFQ0lBTF9WQVJTID0ge1xuXHRcdGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuXHRcdGJlZ2luOiAnXFxcXCQoZlthc25dfHR8dnBbcnRkXXxjaGlsZHJlbiknXG5cdH0sXG5cdExJVEVSQUxTID0ge1xuXHRcdGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuXHRcdGJlZ2luOiAnZmFsc2V8dHJ1ZXxQSXx1bmRlZidcblx0fSxcblx0TlVNQkVSUyA9IHtcblx0XHRjbGFzc05hbWU6ICdudW1iZXInLFxuXHRcdGJlZ2luOiAnXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCspPyhlLT9cXFxcZCspPycsIC8vYWRkcyAxZTUsIDFlLTEwXG5cdFx0cmVsZXZhbmNlOiAwXG5cdH0sXG5cdFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLHtpbGxlZ2FsOiBudWxsfSksXG5cdFBSRVBSTyA9IHtcblx0XHRjbGFzc05hbWU6ICdtZXRhJyxcblx0XHRrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaW5jbHVkZSB1c2UnfSxcblx0XHRiZWdpbjogJ2luY2x1ZGV8dXNlIDwnLFxuXHRcdGVuZDogJz4nXG5cdH0sXG5cdFBBUkFNUyA9IHtcblx0XHRjbGFzc05hbWU6ICdwYXJhbXMnLFxuXHRcdGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG5cdFx0Y29udGFpbnM6IFsnc2VsZicsIE5VTUJFUlMsIFNUUklORywgU1BFQ0lBTF9WQVJTLCBMSVRFUkFMU11cblx0fSxcblx0TU9ESUZJRVJTID0ge1xuXHRcdGJlZ2luOiAnWyohIyVdJyxcblx0XHRyZWxldmFuY2U6IDBcblx0fSxcblx0RlVOQ1RJT05TID0ge1xuXHRcdGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcblx0XHRiZWdpbktleXdvcmRzOiAnbW9kdWxlIGZ1bmN0aW9uJyxcblx0XHRlbmQ6ICdcXFxcPXxcXFxceycsXG5cdFx0Y29udGFpbnM6IFtQQVJBTVMsIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuXHR9O1xuXG5cdHJldHVybiB7XG5cdFx0YWxpYXNlczogWydzY2FkJ10sXG5cdFx0a2V5d29yZHM6IHtcblx0XHRcdGtleXdvcmQ6ICdmdW5jdGlvbiBtb2R1bGUgaW5jbHVkZSB1c2UgZm9yIGludGVyc2VjdGlvbl9mb3IgaWYgZWxzZSBcXFxcJScsXG5cdFx0XHRsaXRlcmFsOiAnZmFsc2UgdHJ1ZSBQSSB1bmRlZicsXG5cdFx0XHRidWlsdF9pbjogJ2NpcmNsZSBzcXVhcmUgcG9seWdvbiB0ZXh0IHNwaGVyZSBjdWJlIGN5bGluZGVyIHBvbHloZWRyb24gdHJhbnNsYXRlIHJvdGF0ZSBzY2FsZSByZXNpemUgbWlycm9yIG11bHRtYXRyaXggY29sb3Igb2Zmc2V0IGh1bGwgbWlua293c2tpIHVuaW9uIGRpZmZlcmVuY2UgaW50ZXJzZWN0aW9uIGFicyBzaWduIHNpbiBjb3MgdGFuIGFjb3MgYXNpbiBhdGFuIGF0YW4yIGZsb29yIHJvdW5kIGNlaWwgbG4gbG9nIHBvdyBzcXJ0IGV4cCByYW5kcyBtaW4gbWF4IGNvbmNhdCBsb29rdXAgc3RyIGNociBzZWFyY2ggdmVyc2lvbiB2ZXJzaW9uX251bSBub3JtIGNyb3NzIHBhcmVudF9tb2R1bGUgZWNobyBpbXBvcnQgaW1wb3J0X2R4ZiBkeGZfbGluZWFyX2V4dHJ1ZGUgbGluZWFyX2V4dHJ1ZGUgcm90YXRlX2V4dHJ1ZGUgc3VyZmFjZSBwcm9qZWN0aW9uIHJlbmRlciBjaGlsZHJlbiBkeGZfY3Jvc3MgZHhmX2RpbSBsZXQgYXNzaWduJ1xuXHRcdH0sXG5cdFx0Y29udGFpbnM6IFtcblx0XHRcdGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcblx0XHRcdGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG5cdFx0XHROVU1CRVJTLFxuXHRcdFx0UFJFUFJPLFxuXHRcdFx0U1RSSU5HLFxuXHRcdFx0U1BFQ0lBTF9WQVJTLFxuXHRcdFx0TU9ESUZJRVJTLFxuXHRcdFx0RlVOQ1RJT05TXG5cdFx0XVxuXHR9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgT1hZR0VORV9LRVlXT1JEUyA9ICdhYnN0cmFjdCBhZGQgYW5kIGFycmF5IGFzIGFzYyBhc3BlY3QgYXNzZW1ibHkgYXN5bmMgYmVnaW4gYnJlYWsgYmxvY2sgYnkgY2FzZSBjbGFzcyBjb25jYXQgY29uc3QgY29weSBjb25zdHJ1Y3RvciBjb250aW51ZSAnK1xuICAgICdjcmVhdGUgZGVmYXVsdCBkZWxlZ2F0ZSBkZXNjIGRpc3RpbmN0IGRpdiBkbyBkb3dudG8gZHluYW1pYyBlYWNoIGVsc2UgZW1wdHkgZW5kIGVuc3VyZSBlbnVtIGVxdWFscyBldmVudCBleGNlcHQgZXhpdCBleHRlbnNpb24gZXh0ZXJuYWwgZmFsc2UgJytcbiAgICAnZmluYWwgZmluYWxpemUgZmluYWxpemVyIGZpbmFsbHkgZmxhZ3MgZm9yIGZvcndhcmQgZnJvbSBmdW5jdGlvbiBmdXR1cmUgZ2xvYmFsIGdyb3VwIGhhcyBpZiBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRzIGltcGxpZXMgaW4gaW5kZXggaW5oZXJpdGVkICcrXG4gICAgJ2lubGluZSBpbnRlcmZhY2UgaW50byBpbnZhcmlhbnRzIGlzIGl0ZXJhdG9yIGpvaW4gbG9ja2VkIGxvY2tpbmcgbG9vcCBtYXRjaGluZyBtZXRob2QgbW9kIG1vZHVsZSBuYW1lc3BhY2UgbmVzdGVkIG5ldyBuaWwgbm90IG5vdGlmeSBudWxsYWJsZSBvZiAnK1xuICAgICdvbGQgb24gb3BlcmF0b3Igb3Igb3JkZXIgb3V0IG92ZXJyaWRlIHBhcmFsbGVsIHBhcmFtcyBwYXJ0aWFsIHBpbm5lZCBwcml2YXRlIHByb2NlZHVyZSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVibGljIHF1ZXJ5YWJsZSByYWlzZSByZWFkIHJlYWRvbmx5ICcrXG4gICAgJ3JlY29yZCByZWludHJvZHVjZSByZW1vdmUgcmVwZWF0IHJlcXVpcmUgcmVzdWx0IHJldmVyc2Ugc2VhbGVkIHNlbGVjdCBzZWxmIHNlcXVlbmNlIHNldCBzaGwgc2hyIHNraXAgc3RhdGljIHN0ZXAgc29mdCB0YWtlIHRoZW4gdG8gdHJ1ZSB0cnkgdHVwbGUgJytcbiAgICAndHlwZSB1bmlvbiB1bml0IHVuc2FmZSB1bnRpbCB1c2VzIHVzaW5nIHZhciB2aXJ0dWFsIHJhaXNlcyB2b2xhdGlsZSB3aGVyZSB3aGlsZSB3aXRoIHdyaXRlIHhvciB5aWVsZCBhd2FpdCBtYXBwZWQgZGVwcmVjYXRlZCBzdGRjYWxsIGNkZWNsIHBhc2NhbCAnK1xuICAgICdyZWdpc3RlciBzYWZlY2FsbCBvdmVybG9hZCBsaWJyYXJ5IHBsYXRmb3JtIHJlZmVyZW5jZSBwYWNrZWQgc3RyaWN0IHB1Ymxpc2hlZCBhdXRvcmVsZWFzZXBvb2wgc2VsZWN0b3Igc3Ryb25nIHdlYWsgdW5yZXRhaW5lZCc7XG4gIHZhciBDVVJMWV9DT01NRU5UID0gIGhsanMuQ09NTUVOVChcbiAgICAneycsXG4gICAgJ30nLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIFBBUkVOX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJ1xcXFwoXFxcXConLFxuICAgICdcXFxcKlxcXFwpJyxcbiAgICB7XG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfVxuICApO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJ31dXG4gIH07XG4gIHZhciBDSEFSX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCBiZWdpbjogJygjXFxcXGQrKSsnXG4gIH07XG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIGNvbnN0cnVjdG9yIGRlc3RydWN0b3IgcHJvY2VkdXJlIG1ldGhvZCcsIGVuZDogJ1s6O10nLFxuICAgIGtleXdvcmRzOiAnZnVuY3Rpb24gY29uc3RydWN0b3J8MTAgZGVzdHJ1Y3RvcnwxMCBwcm9jZWR1cmV8MTAgbWV0aG9kfDEwJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICBrZXl3b3JkczogT1hZR0VORV9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtTVFJJTkcsIENIQVJfU1RSSU5HXVxuICAgICAgfSxcbiAgICAgIENVUkxZX0NPTU1FTlQsIFBBUkVOX0NPTU1FTlRcbiAgICBdXG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiAvXFwuP1xcdysvLFxuICAgIGtleXdvcmRzOiBPWFlHRU5FX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICcoXCJ8XFxcXCRbRy1aZy16XXxcXFxcL1xcXFwqfDwvfD0+fC0+KScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIENVUkxZX0NPTU1FTlQsIFBBUkVOX0NPTU1FTlQsIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIFNUUklORywgQ0hBUl9TVFJJTkcsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgRlVOQ1RJT04sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICc9XFxcXGJjbGFzc1xcXFxiJywgZW5kOiAnZW5kOycsXG4gICAgICAgIGtleXdvcmRzOiBPWFlHRU5FX0tFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFNUUklORywgQ0hBUl9TVFJJTkcsXG4gICAgICAgICAgQ1VSTFlfQ09NTUVOVCwgUEFSRU5fQ09NTUVOVCwgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIEZVTkNUSU9OXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ1VSTFlfU1VCQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAneycsXG4gICAgJ30nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgIH1cbiAgKTtcbiAgcmV0dXJuIHtcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdeIycsICckJyksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdcXFxcXnJlbXsnLFxuICAgICAgICAnfScsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBDVVJMWV9TVUJDT01NRU5UXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeQCg/OkJBU0V8VVNFfENMQVNTfE9QVElPTlMpJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdAW1xcXFx3XFxcXC1dK1xcXFxbW1xcXFx3XjtcXFxcLV0qXFxcXF0oPzpcXFxcW1tcXFxcd147XFxcXC1dKlxcXFxdKT8oPzouKikkJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFwkXFxcXHs/W1xcXFx3XFxcXC1cXFxcLlxcXFw6XStcXFxcfT8nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcXltcXFxcd1xcXFwtXFxcXC5cXFxcOl0rJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcXiNbMC05YS1mQS1GXSsnXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE1BQ1JPID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJFtcXHdcXGQjQF1bXFx3XFxkX10qL1xuICB9O1xuICB2YXIgVEFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvPCg/IVxcLykvLCBlbmQ6IC8+L1xuICB9O1xuICB2YXIgUVVPVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cIi8sIGVuZDogL1wiL1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwZi5jb25mJ10sXG4gICAgbGV4ZW1lczogL1thLXowLTlfPD4tXSsvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBidWlsdF9pbjogLyogYmxvY2sgbWF0Y2ggcGFzcyBhcmUgXCJhY3Rpb25zXCIgaW4gcGYuY29uZig1KSwgdGhlIHJlc3QgYXJlXG4gICAgICAgICAgICAgICAgICogbGV4aWNhbGx5IHNpbWlsYXIgdG9wLWxldmVsIGNvbW1hbmRzLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAnYmxvY2sgbWF0Y2ggcGFzcyBsb2FkIGFuY2hvcnw1IGFudGlzcG9vZnwxMCBzZXQgdGFibGUnLFxuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2luIG91dCBsb2cgcXVpY2sgb24gcmRvbWFpbiBpbmV0IGluZXQ2IHByb3RvIGZyb20gcG9ydCBvcyB0byByb3V0ZScgK1xuICAgICAgICAnYWxsb3ctb3B0cyBkaXZlcnQtcGFja2V0IGRpdmVydC1yZXBseSBkaXZlcnQtdG8gZmxhZ3MgZ3JvdXAgaWNtcC10eXBlJyArXG4gICAgICAgICdpY21wNi10eXBlIGxhYmVsIG9uY2UgcHJvYmFiaWxpdHkgcmVjaWV2ZWQtb24gcnRhYmxlIHByaW8gcXVldWUnICtcbiAgICAgICAgJ3RvcyB0YWcgdGFnZ2VkIHVzZXIga2VlcCBmcmFnbWVudCBmb3Igb3MgZHJvcCcgK1xuICAgICAgICAnYWYtdG98MTAgYmluYXQtdG98MTAgbmF0LXRvfDEwIHJkci10b3wxMCBiaXRtYXNrIGxlYXN0LXN0YXRzIHJhbmRvbSByb3VuZC1yb2JpbicgK1xuICAgICAgICAnc291cmNlLWhhc2ggc3RhdGljLXBvcnQnICtcbiAgICAgICAgJ2R1cC10byByZXBseS10byByb3V0ZS10bycgK1xuICAgICAgICAncGFyZW50IGJhbmR3aWR0aCBkZWZhdWx0IG1pbiBtYXggcWxpbWl0JyArXG4gICAgICAgICdibG9jay1wb2xpY3kgZGVidWcgZmluZ2VycHJpbnRzIGhvc3RpZCBsaW1pdCBsb2dpbnRlcmZhY2Ugb3B0aW1pemF0aW9uJyArXG4gICAgICAgICdyZWFzc2VtYmxlIHJ1bGVzZXQtb3B0aW1pemF0aW9uIGJhc2ljIG5vbmUgcHJvZmlsZSBza2lwIHN0YXRlLWRlZmF1bHRzJyArXG4gICAgICAgICdzdGF0ZS1wb2xpY3kgdGltZW91dCcgK1xuICAgICAgICAnY29uc3QgY291bnRlcnMgcGVyc2lzdCcgK1xuICAgICAgICAnbm8gbW9kdWxhdGUgc3lucHJveHkgc3RhdGV8NSBmbG9hdGluZyBpZi1ib3VuZCBuby1zeW5jIHBmbG93fDEwIHNsb3BweScgK1xuICAgICAgICAnc291cmNlLXRyYWNrIGdsb2JhbCBydWxlIG1heC1zcmMtbm9kZXMgbWF4LXNyYy1zdGF0ZXMgbWF4LXNyYy1jb25uJyArXG4gICAgICAgICdtYXgtc3JjLWNvbm4tcmF0ZSBvdmVybG9hZCBmbHVzaCcgK1xuICAgICAgICAnc2NydWJ8NSBtYXgtbXNzIG1pbi10dGwgbm8tZGZ8MTAgcmFuZG9tLWlkJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdhbGwgYW55IG5vLXJvdXRlIHNlbGYgdXJwZi1mYWlsZWQgZWdyZXNzfDUgdW5rbm93bidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBNQUNSTyxcbiAgICAgIFRBQkxFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuICB2YXIgVU5RVU9URURfSURFTlQgPSAnW2EtekEtWl9dW2EtekEtWl8wLTkkXSonO1xuICB2YXIgRE9MTEFSX1NUUklORyA9ICdcXFxcJChbYS16QS1aX10/fFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcXCQnO1xuICB2YXIgTEFCRUwgPSAnPDxcXFxccyonICsgVU5RVU9URURfSURFTlQgKyAnXFxcXHMqPj4nO1xuXG4gIHZhciBTUUxfS1cgPVxuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL3NxbC1rZXl3b3Jkcy1hcHBlbmRpeC5odG1sXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvc3FsLWNvbW1hbmRzLmh0bWxcbiAgICAvLyBTUUwgY29tbWFuZHMgKHN0YXJ0aW5nIHdvcmRzKVxuICAgICdBQk9SVCBBTFRFUiBBTkFMWVpFIEJFR0lOIENBTEwgQ0hFQ0tQT0lOVHwxMCBDTE9TRSBDTFVTVEVSIENPTU1FTlQgQ09NTUlUIENPUFkgQ1JFQVRFIERFQUxMT0NBVEUgREVDTEFSRSAnICtcbiAgICAnREVMRVRFIERJU0NBUkQgRE8gRFJPUCBFTkQgRVhFQ1VURSBFWFBMQUlOIEZFVENIIEdSQU5UIElNUE9SVCBJTlNFUlQgTElTVEVOIExPQUQgTE9DSyBNT1ZFIE5PVElGWSAnICtcbiAgICAnUFJFUEFSRSBSRUFTU0lHTnwxMCBSRUZSRVNIIFJFSU5ERVggUkVMRUFTRSBSRVNFVCBSRVZPS0UgUk9MTEJBQ0sgU0FWRVBPSU5UIFNFQ1VSSVRZIFNFTEVDVCBTRVQgU0hPVyAnICtcbiAgICAnU1RBUlQgVFJVTkNBVEUgVU5MSVNURU58MTAgVVBEQVRFIFZBQ1VVTXwxMCBWQUxVRVMgJyArXG4gICAgLy8gU1FMIGNvbW1hbmRzIChvdGhlcnMpXG4gICAgJ0FHR1JFR0FURSBDT0xMQVRJT04gQ09OVkVSU0lPTnwxMCBEQVRBQkFTRSBERUZBVUxUIFBSSVZJTEVHRVMgRE9NQUlOIFRSSUdHRVIgRVhURU5TSU9OIEZPUkVJR04gJyArXG4gICAgJ1dSQVBQRVJ8MTAgVEFCTEUgRlVOQ1RJT04gR1JPVVAgTEFOR1VBR0UgTEFSR0UgT0JKRUNUIE1BVEVSSUFMSVpFRCBWSUVXIE9QRVJBVE9SIENMQVNTICcgK1xuICAgICdGQU1JTFkgUE9MSUNZIFBVQkxJQ0FUSU9OfDEwIFJPTEUgUlVMRSBTQ0hFTUEgU0VRVUVOQ0UgU0VSVkVSIFNUQVRJU1RJQ1MgU1VCU0NSSVBUSU9OIFNZU1RFTSAnICtcbiAgICAnVEFCTEVTUEFDRSBDT05GSUdVUkFUSU9OIERJQ1RJT05BUlkgUEFSU0VSIFRFTVBMQVRFIFRZUEUgVVNFUiBNQVBQSU5HIFBSRVBBUkVEIEFDQ0VTUyAnICtcbiAgICAnTUVUSE9EIENBU1QgQVMgVFJBTlNGT1JNIFRSQU5TQUNUSU9OIE9XTkVEIFRPIElOVE8gU0VTU0lPTiBBVVRIT1JJWkFUSU9OICcgK1xuICAgICdJTkRFWCBQUk9DRURVUkUgQVNTRVJUSU9OICcgK1xuICAgIC8vIGFkZGl0aW9uYWwgcmVzZXJ2ZWQga2V5IHdvcmRzXG4gICAgJ0FMTCBBTkFMWVNFIEFORCBBTlkgQVJSQVkgQVNDIEFTWU1NRVRSSUN8MTAgQk9USCBDQVNFIENIRUNLICcgK1xuICAgICdDT0xMQVRFIENPTFVNTiBDT05DVVJSRU5UTFl8MTAgQ09OU1RSQUlOVCBDUk9TUyAnICtcbiAgICAnREVGRVJSQUJMRSBSQU5HRSAnICtcbiAgICAnREVTQyBESVNUSU5DVCBFTFNFIEVYQ0VQVCBGT1IgRlJFRVpFfDEwIEZST00gRlVMTCBIQVZJTkcgJyArXG4gICAgJ0lMSUtFIElOIElOSVRJQUxMWSBJTk5FUiBJTlRFUlNFQ1QgSVMgSVNOVUxMIEpPSU4gTEFURVJBTCBMRUFESU5HIExJS0UgTElNSVQgJyArXG4gICAgJ05BVFVSQUwgTk9UIE5PVE5VTEwgTlVMTCBPRkZTRVQgT04gT05MWSBPUiBPUkRFUiBPVVRFUiBPVkVSTEFQUyBQTEFDSU5HIFBSSU1BUlkgJyArXG4gICAgJ1JFRkVSRU5DRVMgUkVUVVJOSU5HIFNJTUlMQVIgU09NRSBTWU1NRVRSSUMgVEFCTEVTQU1QTEUgVEhFTiAnICtcbiAgICAnVFJBSUxJTkcgVU5JT04gVU5JUVVFIFVTSU5HIFZBUklBRElDfDEwIFZFUkJPU0UgV0hFTiBXSEVSRSBXSU5ET1cgV0lUSCAnICtcbiAgICAvLyBzb21lIG9mIG5vbi1yZXNlcnZlZCAod2hpY2ggYXJlIHVzZWQgaW4gY2xhdXNlcyBvciBhcyBQTC9wZ1NRTCBrZXl3b3JkKVxuICAgICdCWSBSRVRVUk5TIElOT1VUIE9VVCBTRVRPRnwxMCBJRiBTVFJJQ1QgQ1VSUkVOVCBDT05USU5VRSBPV05FUiBMT0NBVElPTiBPVkVSIFBBUlRJVElPTiBXSVRISU4gJyArXG4gICAgJ0JFVFdFRU4gRVNDQVBFIEVYVEVSTkFMIElOVk9LRVIgREVGSU5FUiBXT1JLIFJFTkFNRSBWRVJTSU9OIENPTk5FQ1RJT04gQ09OTkVDVCAnICtcbiAgICAnVEFCTEVTIFRFTVAgVEVNUE9SQVJZIEZVTkNUSU9OUyBTRVFVRU5DRVMgVFlQRVMgU0NIRU1BUyBPUFRJT04gQ0FTQ0FERSBSRVNUUklDVCBBREQgQURNSU4gJyArXG4gICAgJ0VYSVNUUyBWQUxJRCBWQUxJREFURSBFTkFCTEUgRElTQUJMRSBSRVBMSUNBfDEwIEFMV0FZUyBQQVNTSU5HIENPTFVNTlMgUEFUSCAnICtcbiAgICAnUkVGIFZBTFVFIE9WRVJSSURJTkcgSU1NVVRBQkxFIFNUQUJMRSBWT0xBVElMRSBCRUZPUkUgQUZURVIgRUFDSCBST1cgUFJPQ0VEVVJBTCAnICtcbiAgICAnUk9VVElORSBOTyBIQU5ETEVSIFZBTElEQVRPUiBPUFRJT05TIFNUT1JBR0UgT0lEU3wxMCBXSVRIT1VUIElOSEVSSVQgREVQRU5EUyBDQUxMRUQgJyArXG4gICAgJ0lOUFVUIExFQUtQUk9PRnwxMCBDT1NUIFJPV1MgTk9XQUlUIFNFQVJDSCBVTlRJTCBFTkNSWVBURUR8MTAgUEFTU1dPUkQgQ09ORkxJQ1R8MTAgJyArXG4gICAgJ0lOU1RFQUQgSU5IRVJJVFMgQ0hBUkFDVEVSSVNUSUNTIFdSSVRFIENVUlNPUiBBTFNPIFNUQVRFTUVOVCBTSEFSRSBFWENMVVNJVkUgSU5MSU5FICcgK1xuICAgICdJU09MQVRJT04gUkVQRUFUQUJMRSBSRUFEIENPTU1JVFRFRCBTRVJJQUxJWkFCTEUgVU5DT01NSVRURUQgTE9DQUwgR0xPQkFMIFNRTCBQUk9DRURVUkVTICcgK1xuICAgICdSRUNVUlNJVkUgU05BUFNIT1QgUk9MTFVQIENVQkUgVFJVU1RFRHwxMCBJTkNMVURFIEZPTExPV0lORyBQUkVDRURJTkcgVU5CT1VOREVEIFJBTkdFIEdST1VQUyAnICtcbiAgICAnVU5FTkNSWVBURUR8MTAgU1lTSUQgRk9STUFUIERFTElNSVRFUiBIRUFERVIgUVVPVEUgRU5DT0RJTkcgRklMVEVSIE9GRiAnICtcbiAgICAvLyBzb21lIHBhcmFtZXRlcnMgb2YgVkFDVVVNL0FOQUxZWkUvRVhQTEFJTlxuICAgICdGT1JDRV9RVU9URSBGT1JDRV9OT1RfTlVMTCBGT1JDRV9OVUxMIENPU1RTIEJVRkZFUlMgVElNSU5HIFNVTU1BUlkgRElTQUJMRV9QQUdFX1NLSVBQSU5HICcgK1xuICAgIC8vXG4gICAgJ1JFU1RBUlQgQ1lDTEUgR0VORVJBVEVEIElERU5USVRZIERFRkVSUkVEIElNTUVESUFURSBMRVZFTCBMT0dHRUQgVU5MT0dHRUQgJyArXG4gICAgJ09GIE5PVEhJTkcgTk9ORSBFWENMVURFIEFUVFJJQlVURSAnICtcbiAgICAvLyBmcm9tIEdSQU5UIChub3Qga2V5d29yZHMgYWN0dWFsbHkpXG4gICAgJ1VTQUdFIFJPVVRJTkVTICcgK1xuICAgIC8vIGFjdHVhbGx5IGxpdGVyYWxzLCBidXQgbG9vayBiZXR0ZXIgdGhpcyB3YXkgKGR1ZSB0byBJUyBUUlVFLCBJUyBGQUxTRSwgSVNOVUxMIGV0YylcbiAgICAnVFJVRSBGQUxTRSBOQU4gSU5GSU5JVFkgJztcblxuICB2YXIgUk9MRV9BVFRSUyA9IC8vIG9ubHkgdGhvc2Ugbm90IGluIGtleXdyb2RzIGFscmVhZHlcbiAgICAnU1VQRVJVU0VSIE5PU1VQRVJVU0VSIENSRUFURURCIE5PQ1JFQVRFREIgQ1JFQVRFUk9MRSBOT0NSRUFURVJPTEUgSU5IRVJJVCBOT0lOSEVSSVQgJyArXG4gICAgJ0xPR0lOIE5PTE9HSU4gUkVQTElDQVRJT04gTk9SRVBMSUNBVElPTiBCWVBBU1NSTFMgTk9CWVBBU1NSTFMgJztcblxuICB2YXIgUExQR1NRTF9LVyA9XG4gICAgJ0FMSUFTIEJFR0lOIENPTlNUQU5UIERFQ0xBUkUgRU5EIEVYQ0VQVElPTiBSRVRVUk4gUEVSRk9STXwxMCBSQUlTRSBHRVQgRElBR05PU1RJQ1MgJyArXG4gICAgJ1NUQUNLRUR8MTAgRk9SRUFDSCBMT09QIEVMU0lGIEVYSVQgV0hJTEUgUkVWRVJTRSBTTElDRSBERUJVRyBMT0cgSU5GTyBOT1RJQ0UgV0FSTklORyBBU1NFUlQgJyArXG4gICAgJ09QRU4gJztcblxuICB2YXIgVFlQRVMgPVxuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2RhdGF0eXBlLmh0bWxcbiAgICAnQklHSU5UIElOVDggQklHU0VSSUFMIFNFUklBTDggQklUIFZBUllJTkcgVkFSQklUIEJPT0xFQU4gQk9PTCBCT1ggQllURUEgQ0hBUkFDVEVSIENIQVIgVkFSQ0hBUiAnICtcbiAgICAnQ0lEUiBDSVJDTEUgREFURSBET1VCTEUgUFJFQ0lTSU9OIEZMT0FUOCBGTE9BVCBJTkVUIElOVEVHRVIgSU5UIElOVDQgSU5URVJWQUwgSlNPTiBKU09OQiBMSU5FIExTRUd8MTAgJyArXG4gICAgJ01BQ0FERFIgTUFDQUREUjggTU9ORVkgTlVNRVJJQyBERUMgREVDSU1BTCBQQVRIIFBPSU5UIFBPTFlHT04gUkVBTCBGTE9BVDQgU01BTExJTlQgSU5UMiAnICtcbiAgICAnU01BTExTRVJJQUx8MTAgU0VSSUFMMnwxMCBTRVJJQUx8MTAgU0VSSUFMNHwxMCBURVhUIFRJTUUgWk9ORSBUSU1FVFp8MTAgVElNRVNUQU1QIFRJTUVTVEFNUFRafDEwIFRTUVVFUll8MTAgVFNWRUNUT1J8MTAgJyArXG4gICAgJ1RYSURfU05BUFNIT1R8MTAgVVVJRCBYTUwgTkFUSU9OQUwgTkNIQVIgJyArXG4gICAgJ0lOVDRSQU5HRXwxMCBJTlQ4UkFOR0V8MTAgTlVNUkFOR0V8MTAgVFNSQU5HRXwxMCBUU1RaUkFOR0V8MTAgREFURVJBTkdFfDEwICcgK1xuICAgIC8vIHBzZXVkb3R5cGVzXG4gICAgJ0FOWUVMRU1FTlQgQU5ZQVJSQVkgQU5ZTk9OQVJSQVkgQU5ZRU5VTSBBTllSQU5HRSBDU1RSSU5HIElOVEVSTkFMICcgK1xuICAgICdSRUNPUkQgUEdfRERMX0NPTU1BTkQgVk9JRCBVTktOT1dOIE9QQVFVRSBSRUZDVVJTT1IgJyArXG4gICAgLy8gc3BlYy4gdHlwZVxuICAgICdOQU1FICcgK1xuICAgIC8vIE9JRC10eXBlc1xuICAgICdPSUQgUkVHUFJPQ3wxMCBSRUdQUk9DRURVUkV8MTAgUkVHT1BFUnwxMCBSRUdPUEVSQVRPUnwxMCBSRUdDTEFTU3wxMCBSRUdUWVBFfDEwIFJFR1JPTEV8MTAgJyArXG4gICAgJ1JFR05BTUVTUEFDRXwxMCBSRUdDT05GSUd8MTAgUkVHRElDVElPTkFSWXwxMCAnOy8vICtcbiAgICAvLyBzb21lIHR5cGVzIGZyb20gc3RhbmRhcmQgZXh0ZW5zaW9uc1xuICAgICdIU1RPUkV8MTAgTE8gTFRSRUV8MTAgJztcblxuICB2YXIgVFlQRVNfUkUgPVxuICAgIFRZUEVTLnRyaW0oKVxuICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgIC5tYXAoIGZ1bmN0aW9uKHZhbCkgeyByZXR1cm4gdmFsLnNwbGl0KCd8JylbMF07IH0gKVxuICAgICAgICAgLmpvaW4oJ3wnKTtcblxuICB2YXIgU1FMX0JJID1cbiAgICAnQ1VSUkVOVF9USU1FIENVUlJFTlRfVElNRVNUQU1QIENVUlJFTlRfVVNFUiBDVVJSRU5UX0NBVEFMT0d8MTAgQ1VSUkVOVF9EQVRFIExPQ0FMVElNRSBMT0NBTFRJTUVTVEFNUCAnICtcbiAgICAnQ1VSUkVOVF9ST0xFfDEwIENVUlJFTlRfU0NIRU1BfDEwIFNFU1NJT05fVVNFUiBQVUJMSUMgJztcblxuICB2YXIgUExQR1NRTF9CSSA9XG4gICAgJ0ZPVU5EIE5FVyBPTEQgVEdfTkFNRXwxMCBUR19XSEVOfDEwIFRHX0xFVkVMfDEwIFRHX09QfDEwIFRHX1JFTElEfDEwIFRHX1JFTE5BTUV8MTAgJyArXG4gICAgJ1RHX1RBQkxFX05BTUV8MTAgVEdfVEFCTEVfU0NIRU1BfDEwIFRHX05BUkdTfDEwIFRHX0FSR1Z8MTAgVEdfRVZFTlR8MTAgVEdfVEFHfDEwICcgK1xuICAgIC8vIGdldCBkaWFnbm9zdGljc1xuICAgICdST1dfQ09VTlQgUkVTVUxUX09JRHwxMCBQR19DT05URVhUfDEwIFJFVFVSTkVEX1NRTFNUQVRFIENPTFVNTl9OQU1FIENPTlNUUkFJTlRfTkFNRSAnICtcbiAgICAnUEdfREFUQVRZUEVfTkFNRXwxMCBNRVNTQUdFX1RFWFQgVEFCTEVfTkFNRSBTQ0hFTUFfTkFNRSBQR19FWENFUFRJT05fREVUQUlMfDEwICcgK1xuICAgICdQR19FWENFUFRJT05fSElOVHwxMCBQR19FWENFUFRJT05fQ09OVEVYVHwxMCAnO1xuXG4gIHZhciBQTFBHU1FMX0VYQ0VQVElPTlMgPVxuICAgIC8vIGV4Y2VwdGlvbnMgaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy9jdXJyZW50L3N0YXRpYy9lcnJjb2Rlcy1hcHBlbmRpeC5odG1sXG4gICAgJ1NRTFNUQVRFIFNRTEVSUk18MTAgJyArXG4gICAgJ1NVQ0NFU1NGVUxfQ09NUExFVElPTiBXQVJOSU5HIERZTkFNSUNfUkVTVUxUX1NFVFNfUkVUVVJORUQgSU1QTElDSVRfWkVST19CSVRfUEFERElORyAnICtcbiAgICAnTlVMTF9WQUxVRV9FTElNSU5BVEVEX0lOX1NFVF9GVU5DVElPTiBQUklWSUxFR0VfTk9UX0dSQU5URUQgUFJJVklMRUdFX05PVF9SRVZPS0VEICcgK1xuICAgICdTVFJJTkdfREFUQV9SSUdIVF9UUlVOQ0FUSU9OIERFUFJFQ0FURURfRkVBVFVSRSBOT19EQVRBIE5PX0FERElUSU9OQUxfRFlOQU1JQ19SRVNVTFRfU0VUU19SRVRVUk5FRCAnICtcbiAgICAnU1FMX1NUQVRFTUVOVF9OT1RfWUVUX0NPTVBMRVRFIENPTk5FQ1RJT05fRVhDRVBUSU9OIENPTk5FQ1RJT05fRE9FU19OT1RfRVhJU1QgQ09OTkVDVElPTl9GQUlMVVJFICcgK1xuICAgICdTUUxDTElFTlRfVU5BQkxFX1RPX0VTVEFCTElTSF9TUUxDT05ORUNUSU9OIFNRTFNFUlZFUl9SRUpFQ1RFRF9FU1RBQkxJU0hNRU5UX09GX1NRTENPTk5FQ1RJT04gJyArXG4gICAgJ1RSQU5TQUNUSU9OX1JFU09MVVRJT05fVU5LTk9XTiBQUk9UT0NPTF9WSU9MQVRJT04gVFJJR0dFUkVEX0FDVElPTl9FWENFUFRJT04gRkVBVFVSRV9OT1RfU1VQUE9SVEVEICcgK1xuICAgICdJTlZBTElEX1RSQU5TQUNUSU9OX0lOSVRJQVRJT04gTE9DQVRPUl9FWENFUFRJT04gSU5WQUxJRF9MT0NBVE9SX1NQRUNJRklDQVRJT04gSU5WQUxJRF9HUkFOVE9SICcgK1xuICAgICdJTlZBTElEX0dSQU5UX09QRVJBVElPTiBJTlZBTElEX1JPTEVfU1BFQ0lGSUNBVElPTiBESUFHTk9TVElDU19FWENFUFRJT04gJyArXG4gICAgJ1NUQUNLRURfRElBR05PU1RJQ1NfQUNDRVNTRURfV0lUSE9VVF9BQ1RJVkVfSEFORExFUiBDQVNFX05PVF9GT1VORCBDQVJESU5BTElUWV9WSU9MQVRJT04gJyArXG4gICAgJ0RBVEFfRVhDRVBUSU9OIEFSUkFZX1NVQlNDUklQVF9FUlJPUiBDSEFSQUNURVJfTk9UX0lOX1JFUEVSVE9JUkUgREFURVRJTUVfRklFTERfT1ZFUkZMT1cgJyArXG4gICAgJ0RJVklTSU9OX0JZX1pFUk8gRVJST1JfSU5fQVNTSUdOTUVOVCBFU0NBUEVfQ0hBUkFDVEVSX0NPTkZMSUNUIElORElDQVRPUl9PVkVSRkxPVyAnICtcbiAgICAnSU5URVJWQUxfRklFTERfT1ZFUkZMT1cgSU5WQUxJRF9BUkdVTUVOVF9GT1JfTE9HQVJJVEhNIElOVkFMSURfQVJHVU1FTlRfRk9SX05USUxFX0ZVTkNUSU9OICcgK1xuICAgICdJTlZBTElEX0FSR1VNRU5UX0ZPUl9OVEhfVkFMVUVfRlVOQ1RJT04gSU5WQUxJRF9BUkdVTUVOVF9GT1JfUE9XRVJfRlVOQ1RJT04gJyArXG4gICAgJ0lOVkFMSURfQVJHVU1FTlRfRk9SX1dJRFRIX0JVQ0tFVF9GVU5DVElPTiBJTlZBTElEX0NIQVJBQ1RFUl9WQUxVRV9GT1JfQ0FTVCAnICtcbiAgICAnSU5WQUxJRF9EQVRFVElNRV9GT1JNQVQgSU5WQUxJRF9FU0NBUEVfQ0hBUkFDVEVSIElOVkFMSURfRVNDQVBFX09DVEVUIElOVkFMSURfRVNDQVBFX1NFUVVFTkNFICcgK1xuICAgICdOT05TVEFOREFSRF9VU0VfT0ZfRVNDQVBFX0NIQVJBQ1RFUiBJTlZBTElEX0lORElDQVRPUl9QQVJBTUVURVJfVkFMVUUgSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUgJyArXG4gICAgJ0lOVkFMSURfUkVHVUxBUl9FWFBSRVNTSU9OIElOVkFMSURfUk9XX0NPVU5UX0lOX0xJTUlUX0NMQVVTRSAnICtcbiAgICAnSU5WQUxJRF9ST1dfQ09VTlRfSU5fUkVTVUxUX09GRlNFVF9DTEFVU0UgSU5WQUxJRF9UQUJMRVNBTVBMRV9BUkdVTUVOVCBJTlZBTElEX1RBQkxFU0FNUExFX1JFUEVBVCAnICtcbiAgICAnSU5WQUxJRF9USU1FX1pPTkVfRElTUExBQ0VNRU5UX1ZBTFVFIElOVkFMSURfVVNFX09GX0VTQ0FQRV9DSEFSQUNURVIgTU9TVF9TUEVDSUZJQ19UWVBFX01JU01BVENIICcgK1xuICAgICdOVUxMX1ZBTFVFX05PVF9BTExPV0VEIE5VTExfVkFMVUVfTk9fSU5ESUNBVE9SX1BBUkFNRVRFUiBOVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSAnICtcbiAgICAnU0VRVUVOQ0VfR0VORVJBVE9SX0xJTUlUX0VYQ0VFREVEIFNUUklOR19EQVRBX0xFTkdUSF9NSVNNQVRDSCBTVFJJTkdfREFUQV9SSUdIVF9UUlVOQ0FUSU9OICcgK1xuICAgICdTVUJTVFJJTkdfRVJST1IgVFJJTV9FUlJPUiBVTlRFUk1JTkFURURfQ19TVFJJTkcgWkVST19MRU5HVEhfQ0hBUkFDVEVSX1NUUklORyAnICtcbiAgICAnRkxPQVRJTkdfUE9JTlRfRVhDRVBUSU9OIElOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiBJTlZBTElEX0JJTkFSWV9SRVBSRVNFTlRBVElPTiAnICtcbiAgICAnQkFEX0NPUFlfRklMRV9GT1JNQVQgVU5UUkFOU0xBVEFCTEVfQ0hBUkFDVEVSIE5PVF9BTl9YTUxfRE9DVU1FTlQgSU5WQUxJRF9YTUxfRE9DVU1FTlQgJyArXG4gICAgJ0lOVkFMSURfWE1MX0NPTlRFTlQgSU5WQUxJRF9YTUxfQ09NTUVOVCBJTlZBTElEX1hNTF9QUk9DRVNTSU5HX0lOU1RSVUNUSU9OICcgK1xuICAgICdJTlRFR1JJVFlfQ09OU1RSQUlOVF9WSU9MQVRJT04gUkVTVFJJQ1RfVklPTEFUSU9OIE5PVF9OVUxMX1ZJT0xBVElPTiBGT1JFSUdOX0tFWV9WSU9MQVRJT04gJyArXG4gICAgJ1VOSVFVRV9WSU9MQVRJT04gQ0hFQ0tfVklPTEFUSU9OIEVYQ0xVU0lPTl9WSU9MQVRJT04gSU5WQUxJRF9DVVJTT1JfU1RBVEUgJyArXG4gICAgJ0lOVkFMSURfVFJBTlNBQ1RJT05fU1RBVEUgQUNUSVZFX1NRTF9UUkFOU0FDVElPTiBCUkFOQ0hfVFJBTlNBQ1RJT05fQUxSRUFEWV9BQ1RJVkUgJyArXG4gICAgJ0hFTERfQ1VSU09SX1JFUVVJUkVTX1NBTUVfSVNPTEFUSU9OX0xFVkVMIElOQVBQUk9QUklBVEVfQUNDRVNTX01PREVfRk9SX0JSQU5DSF9UUkFOU0FDVElPTiAnICtcbiAgICAnSU5BUFBST1BSSUFURV9JU09MQVRJT05fTEVWRUxfRk9SX0JSQU5DSF9UUkFOU0FDVElPTiAnICtcbiAgICAnTk9fQUNUSVZFX1NRTF9UUkFOU0FDVElPTl9GT1JfQlJBTkNIX1RSQU5TQUNUSU9OIFJFQURfT05MWV9TUUxfVFJBTlNBQ1RJT04gJyArXG4gICAgJ1NDSEVNQV9BTkRfREFUQV9TVEFURU1FTlRfTUlYSU5HX05PVF9TVVBQT1JURUQgTk9fQUNUSVZFX1NRTF9UUkFOU0FDVElPTiAnICtcbiAgICAnSU5fRkFJTEVEX1NRTF9UUkFOU0FDVElPTiBJRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCBJTlZBTElEX1NRTF9TVEFURU1FTlRfTkFNRSAnICtcbiAgICAnVFJJR0dFUkVEX0RBVEFfQ0hBTkdFX1ZJT0xBVElPTiBJTlZBTElEX0FVVEhPUklaQVRJT05fU1BFQ0lGSUNBVElPTiBJTlZBTElEX1BBU1NXT1JEICcgK1xuICAgICdERVBFTkRFTlRfUFJJVklMRUdFX0RFU0NSSVBUT1JTX1NUSUxMX0VYSVNUIERFUEVOREVOVF9PQkpFQ1RTX1NUSUxMX0VYSVNUICcgK1xuICAgICdJTlZBTElEX1RSQU5TQUNUSU9OX1RFUk1JTkFUSU9OIFNRTF9ST1VUSU5FX0VYQ0VQVElPTiBGVU5DVElPTl9FWEVDVVRFRF9OT19SRVRVUk5fU1RBVEVNRU5UICcgK1xuICAgICdNT0RJRllJTkdfU1FMX0RBVEFfTk9UX1BFUk1JVFRFRCBQUk9ISUJJVEVEX1NRTF9TVEFURU1FTlRfQVRURU1QVEVEICcgK1xuICAgICdSRUFESU5HX1NRTF9EQVRBX05PVF9QRVJNSVRURUQgSU5WQUxJRF9DVVJTT1JfTkFNRSBFWFRFUk5BTF9ST1VUSU5FX0VYQ0VQVElPTiAnICtcbiAgICAnQ09OVEFJTklOR19TUUxfTk9UX1BFUk1JVFRFRCBNT0RJRllJTkdfU1FMX0RBVEFfTk9UX1BFUk1JVFRFRCAnICtcbiAgICAnUFJPSElCSVRFRF9TUUxfU1RBVEVNRU5UX0FUVEVNUFRFRCBSRUFESU5HX1NRTF9EQVRBX05PVF9QRVJNSVRURUQgJyArXG4gICAgJ0VYVEVSTkFMX1JPVVRJTkVfSU5WT0NBVElPTl9FWENFUFRJT04gSU5WQUxJRF9TUUxTVEFURV9SRVRVUk5FRCBOVUxMX1ZBTFVFX05PVF9BTExPV0VEICcgK1xuICAgICdUUklHR0VSX1BST1RPQ09MX1ZJT0xBVEVEIFNSRl9QUk9UT0NPTF9WSU9MQVRFRCBFVkVOVF9UUklHR0VSX1BST1RPQ09MX1ZJT0xBVEVEICcgK1xuICAgICdTQVZFUE9JTlRfRVhDRVBUSU9OIElOVkFMSURfU0FWRVBPSU5UX1NQRUNJRklDQVRJT04gSU5WQUxJRF9DQVRBTE9HX05BTUUgJyArXG4gICAgJ0lOVkFMSURfU0NIRU1BX05BTUUgVFJBTlNBQ1RJT05fUk9MTEJBQ0sgVFJBTlNBQ1RJT05fSU5URUdSSVRZX0NPTlNUUkFJTlRfVklPTEFUSU9OICcgK1xuICAgICdTRVJJQUxJWkFUSU9OX0ZBSUxVUkUgU1RBVEVNRU5UX0NPTVBMRVRJT05fVU5LTk9XTiBERUFETE9DS19ERVRFQ1RFRCAnICtcbiAgICAnU1lOVEFYX0VSUk9SX09SX0FDQ0VTU19SVUxFX1ZJT0xBVElPTiBTWU5UQVhfRVJST1IgSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSBDQU5OT1RfQ09FUkNFICcgK1xuICAgICdHUk9VUElOR19FUlJPUiBXSU5ET1dJTkdfRVJST1IgSU5WQUxJRF9SRUNVUlNJT04gSU5WQUxJRF9GT1JFSUdOX0tFWSBJTlZBTElEX05BTUUgJyArXG4gICAgJ05BTUVfVE9PX0xPTkcgUkVTRVJWRURfTkFNRSBEQVRBVFlQRV9NSVNNQVRDSCBJTkRFVEVSTUlOQVRFX0RBVEFUWVBFIENPTExBVElPTl9NSVNNQVRDSCAnICtcbiAgICAnSU5ERVRFUk1JTkFURV9DT0xMQVRJT04gV1JPTkdfT0JKRUNUX1RZUEUgR0VORVJBVEVEX0FMV0FZUyBVTkRFRklORURfQ09MVU1OICcgK1xuICAgICdVTkRFRklORURfRlVOQ1RJT04gVU5ERUZJTkVEX1RBQkxFIFVOREVGSU5FRF9QQVJBTUVURVIgVU5ERUZJTkVEX09CSkVDVCAnICtcbiAgICAnRFVQTElDQVRFX0NPTFVNTiBEVVBMSUNBVEVfQ1VSU09SIERVUExJQ0FURV9EQVRBQkFTRSBEVVBMSUNBVEVfRlVOQ1RJT04gJyArXG4gICAgJ0RVUExJQ0FURV9QUkVQQVJFRF9TVEFURU1FTlQgRFVQTElDQVRFX1NDSEVNQSBEVVBMSUNBVEVfVEFCTEUgRFVQTElDQVRFX0FMSUFTICcgK1xuICAgICdEVVBMSUNBVEVfT0JKRUNUIEFNQklHVU9VU19DT0xVTU4gQU1CSUdVT1VTX0ZVTkNUSU9OIEFNQklHVU9VU19QQVJBTUVURVIgQU1CSUdVT1VTX0FMSUFTICcgK1xuICAgICdJTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UgSU5WQUxJRF9DT0xVTU5fREVGSU5JVElPTiBJTlZBTElEX0NVUlNPUl9ERUZJTklUSU9OICcgK1xuICAgICdJTlZBTElEX0RBVEFCQVNFX0RFRklOSVRJT04gSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9OICcgK1xuICAgICdJTlZBTElEX1BSRVBBUkVEX1NUQVRFTUVOVF9ERUZJTklUSU9OIElOVkFMSURfU0NIRU1BX0RFRklOSVRJT04gSU5WQUxJRF9UQUJMRV9ERUZJTklUSU9OICcgK1xuICAgICdJTlZBTElEX09CSkVDVF9ERUZJTklUSU9OIFdJVEhfQ0hFQ0tfT1BUSU9OX1ZJT0xBVElPTiBJTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTIERJU0tfRlVMTCAnICtcbiAgICAnT1VUX09GX01FTU9SWSBUT09fTUFOWV9DT05ORUNUSU9OUyBDT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEIFBST0dSQU1fTElNSVRfRVhDRUVERUQgJyArXG4gICAgJ1NUQVRFTUVOVF9UT09fQ09NUExFWCBUT09fTUFOWV9DT0xVTU5TIFRPT19NQU5ZX0FSR1VNRU5UUyBPQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSAnICtcbiAgICAnT0JKRUNUX0lOX1VTRSBDQU5UX0NIQU5HRV9SVU5USU1FX1BBUkFNIExPQ0tfTk9UX0FWQUlMQUJMRSBPUEVSQVRPUl9JTlRFUlZFTlRJT04gJyArXG4gICAgJ1FVRVJZX0NBTkNFTEVEIEFETUlOX1NIVVRET1dOIENSQVNIX1NIVVRET1dOIENBTk5PVF9DT05ORUNUX05PVyBEQVRBQkFTRV9EUk9QUEVEICcgK1xuICAgICdTWVNURU1fRVJST1IgSU9fRVJST1IgVU5ERUZJTkVEX0ZJTEUgRFVQTElDQVRFX0ZJTEUgU05BUFNIT1RfVE9PX09MRCBDT05GSUdfRklMRV9FUlJPUiAnICtcbiAgICAnTE9DS19GSUxFX0VYSVNUUyBGRFdfRVJST1IgRkRXX0NPTFVNTl9OQU1FX05PVF9GT1VORCBGRFdfRFlOQU1JQ19QQVJBTUVURVJfVkFMVUVfTkVFREVEICcgK1xuICAgICdGRFdfRlVOQ1RJT05fU0VRVUVOQ0VfRVJST1IgRkRXX0lOQ09OU0lTVEVOVF9ERVNDUklQVE9SX0lORk9STUFUSU9OICcgK1xuICAgICdGRFdfSU5WQUxJRF9BVFRSSUJVVEVfVkFMVUUgRkRXX0lOVkFMSURfQ09MVU1OX05BTUUgRkRXX0lOVkFMSURfQ09MVU1OX05VTUJFUiAnICtcbiAgICAnRkRXX0lOVkFMSURfREFUQV9UWVBFIEZEV19JTlZBTElEX0RBVEFfVFlQRV9ERVNDUklQVE9SUyAnICtcbiAgICAnRkRXX0lOVkFMSURfREVTQ1JJUFRPUl9GSUVMRF9JREVOVElGSUVSIEZEV19JTlZBTElEX0hBTkRMRSBGRFdfSU5WQUxJRF9PUFRJT05fSU5ERVggJyArXG4gICAgJ0ZEV19JTlZBTElEX09QVElPTl9OQU1FIEZEV19JTlZBTElEX1NUUklOR19MRU5HVEhfT1JfQlVGRkVSX0xFTkdUSCAnICtcbiAgICAnRkRXX0lOVkFMSURfU1RSSU5HX0ZPUk1BVCBGRFdfSU5WQUxJRF9VU0VfT0ZfTlVMTF9QT0lOVEVSIEZEV19UT09fTUFOWV9IQU5ETEVTICcgK1xuICAgICdGRFdfT1VUX09GX01FTU9SWSBGRFdfTk9fU0NIRU1BUyBGRFdfT1BUSU9OX05BTUVfTk9UX0ZPVU5EIEZEV19SRVBMWV9IQU5ETEUgJyArXG4gICAgJ0ZEV19TQ0hFTUFfTk9UX0ZPVU5EIEZEV19UQUJMRV9OT1RfRk9VTkQgRkRXX1VOQUJMRV9UT19DUkVBVEVfRVhFQ1VUSU9OICcgK1xuICAgICdGRFdfVU5BQkxFX1RPX0NSRUFURV9SRVBMWSBGRFdfVU5BQkxFX1RPX0VTVEFCTElTSF9DT05ORUNUSU9OIFBMUEdTUUxfRVJST1IgJyArXG4gICAgJ1JBSVNFX0VYQ0VQVElPTiBOT19EQVRBX0ZPVU5EIFRPT19NQU5ZX1JPV1MgQVNTRVJUX0ZBSUxVUkUgSU5URVJOQUxfRVJST1IgREFUQV9DT1JSVVBURUQgJyArXG4gICAgJ0lOREVYX0NPUlJVUFRFRCAnO1xuXG4gIHZhciBGVU5DVElPTlMgPVxuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1hZ2dyZWdhdGUuaHRtbFxuICAgICdBUlJBWV9BR0cgQVZHIEJJVF9BTkQgQklUX09SIEJPT0xfQU5EIEJPT0xfT1IgQ09VTlQgRVZFUlkgSlNPTl9BR0cgSlNPTkJfQUdHIEpTT05fT0JKRUNUX0FHRyAnICtcbiAgICAnSlNPTkJfT0JKRUNUX0FHRyBNQVggTUlOIE1PREUgU1RSSU5HX0FHRyBTVU0gWE1MQUdHICcgK1xuICAgICdDT1JSIENPVkFSX1BPUCBDT1ZBUl9TQU1QIFJFR1JfQVZHWCBSRUdSX0FWR1kgUkVHUl9DT1VOVCBSRUdSX0lOVEVSQ0VQVCBSRUdSX1IyIFJFR1JfU0xPUEUgJyArXG4gICAgJ1JFR1JfU1hYIFJFR1JfU1hZIFJFR1JfU1lZIFNURERFViBTVERERVZfUE9QIFNURERFVl9TQU1QIFZBUklBTkNFIFZBUl9QT1AgVkFSX1NBTVAgJyArXG4gICAgJ1BFUkNFTlRJTEVfQ09OVCBQRVJDRU5USUxFX0RJU0MgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXdpbmRvdy5odG1sXG4gICAgJ1JPV19OVU1CRVIgUkFOSyBERU5TRV9SQU5LIFBFUkNFTlRfUkFOSyBDVU1FX0RJU1QgTlRJTEUgTEFHIExFQUQgRklSU1RfVkFMVUUgTEFTVF9WQUxVRSBOVEhfVkFMVUUgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWNvbXBhcmlzb24uaHRtbFxuICAgICdOVU1fTk9OTlVMTFMgTlVNX05VTExTICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1tYXRoLmh0bWxcbiAgICAnQUJTIENCUlQgQ0VJTCBDRUlMSU5HIERFR1JFRVMgRElWIEVYUCBGTE9PUiBMTiBMT0cgTU9EIFBJIFBPV0VSIFJBRElBTlMgUk9VTkQgU0NBTEUgU0lHTiBTUVJUICcgK1xuICAgICdUUlVOQyBXSURUSF9CVUNLRVQgJyArXG4gICAgJ1JBTkRPTSBTRVRTRUVEICcgK1xuICAgICdBQ09TIEFDT1NEIEFTSU4gQVNJTkQgQVRBTiBBVEFORCBBVEFOMiBBVEFOMkQgQ09TIENPU0QgQ09UIENPVEQgU0lOIFNJTkQgVEFOIFRBTkQgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXN0cmluZy5odG1sXG4gICAgJ0JJVF9MRU5HVEggQ0hBUl9MRU5HVEggQ0hBUkFDVEVSX0xFTkdUSCBMT1dFUiBPQ1RFVF9MRU5HVEggT1ZFUkxBWSBQT1NJVElPTiBTVUJTVFJJTkcgVFJFQVQgVFJJTSBVUFBFUiAnICtcbiAgICAnQVNDSUkgQlRSSU0gQ0hSIENPTkNBVCBDT05DQVRfV1MgQ09OVkVSVCBDT05WRVJUX0ZST00gQ09OVkVSVF9UTyBERUNPREUgRU5DT0RFIElOSVRDQVAnICtcbiAgICAnTEVGVCBMRU5HVEggTFBBRCBMVFJJTSBNRDUgUEFSU0VfSURFTlQgUEdfQ0xJRU5UX0VOQ09ESU5HIFFVT1RFX0lERU5UfDEwIFFVT1RFX0xJVEVSQUx8MTAgJyArXG4gICAgJ1FVT1RFX05VTExBQkxFfDEwIFJFR0VYUF9NQVRDSCBSRUdFWFBfTUFUQ0hFUyBSRUdFWFBfUkVQTEFDRSBSRUdFWFBfU1BMSVRfVE9fQVJSQVkgJyArXG4gICAgJ1JFR0VYUF9TUExJVF9UT19UQUJMRSBSRVBFQVQgUkVQTEFDRSBSRVZFUlNFIFJJR0hUIFJQQUQgUlRSSU0gU1BMSVRfUEFSVCBTVFJQT1MgU1VCU1RSICcgK1xuICAgICdUT19BU0NJSSBUT19IRVggVFJBTlNMQVRFICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1iaW5hcnlzdHJpbmcuaHRtbFxuICAgICdPQ1RFVF9MRU5HVEggR0VUX0JJVCBHRVRfQllURSBTRVRfQklUIFNFVF9CWVRFICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1mb3JtYXR0aW5nLmh0bWxcbiAgICAnVE9fQ0hBUiBUT19EQVRFIFRPX05VTUJFUiBUT19USU1FU1RBTVAgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWRhdGV0aW1lLmh0bWxcbiAgICAnQUdFIENMT0NLX1RJTUVTVEFNUHwxMCBEQVRFX1BBUlQgREFURV9UUlVOQyBJU0ZJTklURSBKVVNUSUZZX0RBWVMgSlVTVElGWV9IT1VSUyBKVVNUSUZZX0lOVEVSVkFMICcgK1xuICAgICdNQUtFX0RBVEUgTUFLRV9JTlRFUlZBTHwxMCBNQUtFX1RJTUUgTUFLRV9USU1FU1RBTVB8MTAgTUFLRV9USU1FU1RBTVBUWnwxMCBOT1cgU1RBVEVNRU5UX1RJTUVTVEFNUHwxMCAnICtcbiAgICAnVElNRU9GREFZIFRSQU5TQUNUSU9OX1RJTUVTVEFNUHwxMCAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtZW51bS5odG1sXG4gICAgJ0VOVU1fRklSU1QgRU5VTV9MQVNUIEVOVU1fUkFOR0UgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWdlb21ldHJ5Lmh0bWxcbiAgICAnQVJFQSBDRU5URVIgRElBTUVURVIgSEVJR0hUIElTQ0xPU0VEIElTT1BFTiBOUE9JTlRTIFBDTE9TRSBQT1BFTiBSQURJVVMgV0lEVEggJyArXG4gICAgJ0JPWCBCT1VORF9CT1ggQ0lSQ0xFIExJTkUgTFNFRyBQQVRIIFBPTFlHT04gJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLW5ldC5odG1sXG4gICAgJ0FCQlJFViBCUk9BRENBU1QgSE9TVCBIT1NUTUFTSyBNQVNLTEVOIE5FVE1BU0sgTkVUV09SSyBTRVRfTUFTS0xFTiBURVhUIElORVRfU0FNRV9GQU1JTFknICtcbiAgICAnSU5FVF9NRVJHRSBNQUNBRERSOF9TRVQ3QklUICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy10ZXh0c2VhcmNoLmh0bWxcbiAgICAnQVJSQVlfVE9fVFNWRUNUT1IgR0VUX0NVUlJFTlRfVFNfQ09ORklHIE5VTU5PREUgUExBSU5UT19UU1FVRVJZIFBIUkFTRVRPX1RTUVVFUlkgV0VCU0VBUkNIX1RPX1RTUVVFUlkgJyArXG4gICAgJ1FVRVJZVFJFRSBTRVRXRUlHSFQgU1RSSVAgVE9fVFNRVUVSWSBUT19UU1ZFQ1RPUiBKU09OX1RPX1RTVkVDVE9SIEpTT05CX1RPX1RTVkVDVE9SIFRTX0RFTEVURSAnICtcbiAgICAnVFNfRklMVEVSIFRTX0hFQURMSU5FIFRTX1JBTksgVFNfUkFOS19DRCBUU19SRVdSSVRFIFRTUVVFUllfUEhSQVNFIFRTVkVDVE9SX1RPX0FSUkFZICcgK1xuICAgICdUU1ZFQ1RPUl9VUERBVEVfVFJJR0dFUiBUU1ZFQ1RPUl9VUERBVEVfVFJJR0dFUl9DT0xVTU4gJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXhtbC5odG1sXG4gICAgJ1hNTENPTU1FTlQgWE1MQ09OQ0FUIFhNTEVMRU1FTlQgWE1MRk9SRVNUIFhNTFBJIFhNTFJPT1QgJyArXG4gICAgJ1hNTEVYSVNUUyBYTUxfSVNfV0VMTF9GT1JNRUQgWE1MX0lTX1dFTExfRk9STUVEX0RPQ1VNRU5UIFhNTF9JU19XRUxMX0ZPUk1FRF9DT05URU5UICcgK1xuICAgICdYUEFUSCBYUEFUSF9FWElTVFMgWE1MVEFCTEUgWE1MTkFNRVNQQUNFUyAnICtcbiAgICAnVEFCTEVfVE9fWE1MIFRBQkxFX1RPX1hNTFNDSEVNQSBUQUJMRV9UT19YTUxfQU5EX1hNTFNDSEVNQSAnICtcbiAgICAnUVVFUllfVE9fWE1MIFFVRVJZX1RPX1hNTFNDSEVNQSBRVUVSWV9UT19YTUxfQU5EX1hNTFNDSEVNQSAnICtcbiAgICAnQ1VSU09SX1RPX1hNTCBDVVJTT1JfVE9fWE1MU0NIRU1BICcgK1xuICAgICdTQ0hFTUFfVE9fWE1MIFNDSEVNQV9UT19YTUxTQ0hFTUEgU0NIRU1BX1RPX1hNTF9BTkRfWE1MU0NIRU1BICcgK1xuICAgICdEQVRBQkFTRV9UT19YTUwgREFUQUJBU0VfVE9fWE1MU0NIRU1BIERBVEFCQVNFX1RPX1hNTF9BTkRfWE1MU0NIRU1BICcgK1xuICAgICdYTUxBVFRSSUJVVEVTICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1qc29uLmh0bWxcbiAgICAnVE9fSlNPTiBUT19KU09OQiBBUlJBWV9UT19KU09OIFJPV19UT19KU09OIEpTT05fQlVJTERfQVJSQVkgSlNPTkJfQlVJTERfQVJSQVkgSlNPTl9CVUlMRF9PQkpFQ1QgJyArXG4gICAgJ0pTT05CX0JVSUxEX09CSkVDVCBKU09OX09CSkVDVCBKU09OQl9PQkpFQ1QgSlNPTl9BUlJBWV9MRU5HVEggSlNPTkJfQVJSQVlfTEVOR1RIIEpTT05fRUFDSCAnICtcbiAgICAnSlNPTkJfRUFDSCBKU09OX0VBQ0hfVEVYVCBKU09OQl9FQUNIX1RFWFQgSlNPTl9FWFRSQUNUX1BBVEggSlNPTkJfRVhUUkFDVF9QQVRIICcgK1xuICAgICdKU09OX09CSkVDVF9LRVlTIEpTT05CX09CSkVDVF9LRVlTIEpTT05fUE9QVUxBVEVfUkVDT1JEIEpTT05CX1BPUFVMQVRFX1JFQ09SRCBKU09OX1BPUFVMQVRFX1JFQ09SRFNFVCAnICtcbiAgICAnSlNPTkJfUE9QVUxBVEVfUkVDT1JEU0VUIEpTT05fQVJSQVlfRUxFTUVOVFMgSlNPTkJfQVJSQVlfRUxFTUVOVFMgSlNPTl9BUlJBWV9FTEVNRU5UU19URVhUICcgK1xuICAgICdKU09OQl9BUlJBWV9FTEVNRU5UU19URVhUIEpTT05fVFlQRU9GIEpTT05CX1RZUEVPRiBKU09OX1RPX1JFQ09SRCBKU09OQl9UT19SRUNPUkQgSlNPTl9UT19SRUNPUkRTRVQgJyArXG4gICAgJ0pTT05CX1RPX1JFQ09SRFNFVCBKU09OX1NUUklQX05VTExTIEpTT05CX1NUUklQX05VTExTIEpTT05CX1NFVCBKU09OQl9JTlNFUlQgSlNPTkJfUFJFVFRZICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1zZXF1ZW5jZS5odG1sXG4gICAgJ0NVUlJWQUwgTEFTVFZBTCBORVhUVkFMIFNFVFZBTCAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtY29uZGl0aW9uYWwuaHRtbFxuICAgICdDT0FMRVNDRSBOVUxMSUYgR1JFQVRFU1QgTEVBU1QgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWFycmF5Lmh0bWxcbiAgICAnQVJSQVlfQVBQRU5EIEFSUkFZX0NBVCBBUlJBWV9ORElNUyBBUlJBWV9ESU1TIEFSUkFZX0ZJTEwgQVJSQVlfTEVOR1RIIEFSUkFZX0xPV0VSIEFSUkFZX1BPU0lUSU9OICcgK1xuICAgICdBUlJBWV9QT1NJVElPTlMgQVJSQVlfUFJFUEVORCBBUlJBWV9SRU1PVkUgQVJSQVlfUkVQTEFDRSBBUlJBWV9UT19TVFJJTkcgQVJSQVlfVVBQRVIgQ0FSRElOQUxJVFkgJyArXG4gICAgJ1NUUklOR19UT19BUlJBWSBVTk5FU1QgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXJhbmdlLmh0bWxcbiAgICAnSVNFTVBUWSBMT1dFUl9JTkMgVVBQRVJfSU5DIExPV0VSX0lORiBVUFBFUl9JTkYgUkFOR0VfTUVSR0UgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXNyZi5odG1sXG4gICAgJ0dFTkVSQVRFX1NFUklFUyBHRU5FUkFURV9TVUJTQ1JJUFRTICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1pbmZvLmh0bWxcbiAgICAnQ1VSUkVOVF9EQVRBQkFTRSBDVVJSRU5UX1FVRVJZIENVUlJFTlRfU0NIRU1BfDEwIENVUlJFTlRfU0NIRU1BU3wxMCBJTkVUX0NMSUVOVF9BRERSIElORVRfQ0xJRU5UX1BPUlQgJyArXG4gICAgJ0lORVRfU0VSVkVSX0FERFIgSU5FVF9TRVJWRVJfUE9SVCBST1dfU0VDVVJJVFlfQUNUSVZFIEZPUk1BVF9UWVBFICcgK1xuICAgICdUT19SRUdDTEFTUyBUT19SRUdQUk9DIFRPX1JFR1BST0NFRFVSRSBUT19SRUdPUEVSIFRPX1JFR09QRVJBVE9SIFRPX1JFR1RZUEUgVE9fUkVHTkFNRVNQQUNFIFRPX1JFR1JPTEUgJyArXG4gICAgJ0NPTF9ERVNDUklQVElPTiBPQkpfREVTQ1JJUFRJT04gU0hPQkpfREVTQ1JJUFRJT04gJyArXG4gICAgJ1RYSURfQ1VSUkVOVCBUWElEX0NVUlJFTlRfSUZfQVNTSUdORUQgVFhJRF9DVVJSRU5UX1NOQVBTSE9UIFRYSURfU05BUFNIT1RfWElQIFRYSURfU05BUFNIT1RfWE1BWCAnICtcbiAgICAnVFhJRF9TTkFQU0hPVF9YTUlOIFRYSURfVklTSUJMRV9JTl9TTkFQU0hPVCBUWElEX1NUQVRVUyAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtYWRtaW4uaHRtbFxuICAgICdDVVJSRU5UX1NFVFRJTkcgU0VUX0NPTkZJRyBCUklOX1NVTU1BUklaRV9ORVdfVkFMVUVTIEJSSU5fU1VNTUFSSVpFX1JBTkdFIEJSSU5fREVTVU1NQVJJWkVfUkFOR0UgJyArXG4gICAgJ0dJTl9DTEVBTl9QRU5ESU5HX0xJU1QgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXRyaWdnZXIuaHRtbFxuICAgICdTVVBQUkVTU19SRURVTkRBTlRfVVBEQVRFU19UUklHR0VSICcgK1xuICAgIC8vIGlodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzL2RldmVsL3N0YXRpYy9sby1mdW5jcy5odG1sXG4gICAgJ0xPX0ZST01fQllURUEgTE9fUFVUIExPX0dFVCBMT19DUkVBVCBMT19DUkVBVEUgTE9fVU5MSU5LIExPX0lNUE9SVCBMT19FWFBPUlQgTE9SRUFEIExPV1JJVEUgJyArXG4gICAgLy9cbiAgICAnR1JPVVBJTkcgQ0FTVCAnO1xuXG4gICAgdmFyIEZVTkNUSU9OU19SRSA9XG4gICAgICBGVU5DVElPTlMudHJpbSgpXG4gICAgICAgICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAgICAgICAgLm1hcCggZnVuY3Rpb24odmFsKSB7IHJldHVybiB2YWwuc3BsaXQoJ3wnKVswXTsgfSApXG4gICAgICAgICAgICAgICAuam9pbignfCcpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWxpYXNlczogWydwb3N0Z3JlcycsJ3Bvc3RncmVzcWwnXSxcbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgU1FMX0tXICsgUExQR1NRTF9LVyArIFJPTEVfQVRUUlMsXG4gICAgICAgICAgYnVpbHRfaW46XG4gICAgICAgICAgICBTUUxfQkkgKyBQTFBHU1FMX0JJICsgUExQR1NRTF9FWENFUFRJT05TLFxuICAgICAgICB9LFxuICAgICAgICAvLyBGb3JiaWQgc29tZSBjdW5zdHJ1Y3RzIGZyb20gb3RoZXIgbGFuZ3VhZ2VzIHRvIGltcHJvdmUgYXV0b2RldGVjdC4gSW4gZmFjdFxuICAgICAgICAvLyBcIlthLXpdOlwiIGlzIGxlZ2FsIChhcyBwYXJ0IG9mIGFycmF5IHNsaWNlKSwgYnV0IGltcHJvYmFiYWwuXG4gICAgICAgIGlsbGVnYWw6IC86PT18XFxXXFxzKlxcKFxcKnwoXnxcXHMpXFwkW2Etel18e3t8W2Etel06XFxzKiR8XFwuXFwuXFwufFRPOnxETzovLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIC8vIHNwZWNpYWwgaGFuZGxpbmcgb2Ygc29tZSB3b3Jkcywgd2hpY2ggYXJlIHJlc2VydmVkIG9ubHkgaW4gc29tZSBjb250ZXh0c1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlRFWFRcXHMqU0VBUkNIXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKFBSSU1BUll8Rk9SRUlHTnxGT1IoXFxzK05PKT8pXFxzK0tFWVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlBBUkFMTEVMXFxzKyhVTlNBRkV8UkVTVFJJQ1RFRHxTQUZFKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNUT1JBR0VcXHMrKFBMQUlOfEVYVEVSTkFMfEVYVEVOREVEfE1BSU4pXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiTUFUQ0hcXHMrKEZVTEx8UEFSVElBTHxTSU1QTEUpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiTlVMTFNcXHMrKEZJUlNUfExBU1QpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiRVZFTlRcXHMrVFJJR0dFUlxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihNQVBQSU5HfE9SKVxccytSRVBMQUNFXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKEZST018VE8pXFxzKyhQUk9HUkFNfFNURElOfFNURE9VVClcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoU0hBUkV8RVhDTFVTSVZFKVxccytNT0RFXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKExFRlR8UklHSFQpXFxzKyhPVVRFUlxccyspP0pPSU5cXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoRkVUQ0h8TU9WRSlcXHMrKE5FWFR8UFJJT1J8RklSU1R8TEFTVHxBQlNPTFVURXxSRUxBVElWRXxGT1JXQVJEfEJBQ0tXQVJEKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlBSRVNFUlZFXFxzK1JPV1NcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJESVNDQVJEXFxzK1BMQU5TXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiUkVGRVJFTkNJTkdcXHMrKE9MRHxORVcpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiU0tJUFxccytMT0NLRURcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJHUk9VUElOR1xccytTRVRTXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKEJJTkFSWXxJTlNFTlNJVElWRXxTQ1JPTEx8Tk9cXHMrU0NST0xMKVxccysoQ1VSU09SfEZPUilcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoV0lUSHxXSVRIT1VUKVxccytIT0xEXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiV0lUSFxccysoQ0FTQ0FERUR8TE9DQUwpXFxzK0NIRUNLXFxzK09QVElPTlxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkVYQ0xVREVcXHMrKFRJRVN8Tk9cXHMrT1RIRVJTKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkZPUk1BVFxccysoVEVYVHxYTUx8SlNPTnxZQU1MKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNFVFxccysoKFNFU1NJT058TE9DQUwpXFxzKyk/TkFNRVNcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJJU1xccysoTk9UXFxzKyk/VU5LTk9XTlxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNFQ1VSSVRZXFxzK0xBQkVMXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiU1RBTkRBTE9ORVxccysoWUVTfE5PfE5PXFxzK1ZBTFVFKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYldJVEhcXHMrKE5PXFxzKyk/REFUQVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihGT1JFSUdOfFNFVClcXHMrREFUQVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNFVFxccysoQ0FUQUxPR3xDT05TVFJBSU5UUylcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoV0lUSHxGT1IpXFxzK09SRElOQUxJVFlcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJJU1xccysoTk9UXFxzKyk/RE9DVU1FTlRcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJYTUxcXHMrT1BUSU9OXFxzKyhET0NVTUVOVHxDT05URU5UKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihTVFJJUHxQUkVTRVJWRSlcXHMrV0hJVEVTUEFDRVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYk5PXFxzKyhBQ1RJT058TUFYVkFMVUV8TUlOVkFMVUUpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiUEFSVElUSU9OXFxzK0JZXFxzKyhSQU5HRXxMSVNUfEhBU0gpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiQVRcXHMrVElNRVxccytaT05FXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiR1JBTlRFRFxccytCWVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlJFVFVSTlxccysoUVVFUll8TkVYVClcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoQVRUQUNIfERFVEFDSClcXHMrUEFSVElUSU9OXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiRk9SQ0VcXHMrUk9XXFxzK0xFVkVMXFxzK1NFQ1VSSVRZXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKElOQ0xVRElOR3xFWENMVURJTkcpXFxzKyhDT01NRU5UU3xDT05TVFJBSU5UU3xERUZBVUxUU3xJREVOVElUWXxJTkRFWEVTfFNUQVRJU1RJQ1N8U1RPUkFHRXxBTEwpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiQVNcXHMrKEFTU0lHTk1FTlR8SU1QTElDSVR8UEVSTUlTU0lWRXxSRVNUUklDVElWRXxFTlVNfFJBTkdFKVxcYi8gfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gZnVuY3Rpb25zIG5hbWVkIGFzIGtleXdvcmRzLCBmb2xsb3dlZCBieSAnKCdcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYihGT1JNQVR8RkFNSUxZfFZFUlNJT04pXFxzKlxcKC8sXG4gICAgICAgICAgICAvL2tleXdvcmRzOiB7IGJ1aWx0X2luOiAnRk9STUFUIEZBTUlMWSBWRVJTSU9OJyB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBJTkNMVURFICggLi4uICkgaW4gaW5kZXhfcGFyYW1ldGVycyBpbiBDUkVBVEUgVEFCTEVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYklOQ0xVREVcXHMqXFwoLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiAnSU5DTFVERSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIG5vdCBoaWdobGlnaHQgUkFOR0UgaWYgbm90IGluIGZyYW1lX2NsYXVzZSAobm90IDEwMCUgY29ycmVjdCwgYnV0IHNlZW1zIHNhdGlzZmFjdG9yeSlcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYlJBTkdFKD8hXFxzKihCRVRXRUVOfFVOQk9VTkRFRHxDVVJSRU5UfFstMC05XSspKS9cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIGRpc2FibGUgaGlnaGxpZ2h0aW5nIGluIGNvbW1hbmRzIENSRUFURSBBR0dSRUdBVEUvQ09MTEFUSU9OL0RBVEFCQVNFL09QRVJUT1IvVEVYVCBTRUFSQ0ggLi4uL1RZUEVcbiAgICAgICAgICAvLyBhbmQgaW4gUEwvcGdTUUwgUkFJU0UgLi4uIFVTSU5HXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGIoVkVSU0lPTnxPV05FUnxURU1QTEFURXxUQUJMRVNQQUNFfENPTk5FQ1RJT05cXHMrTElNSVR8UFJPQ0VEVVJFfFJFU1RSSUNUfEpPSU58UEFSU0VSfENPUFl8U1RBUlR8RU5EfENPTExBVElPTnxJTlBVVHxBTkFMWVpFfFNUT1JBR0V8TElLRXxERUZBVUxUfERFTElNSVRFUnxFTkNPRElOR3xDT0xVTU58Q09OU1RSQUlOVHxUQUJMRXxTQ0hFTUEpXFxzKj0vXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBQR19zbXRoOyBIQVNfc29tZV9QUklWSUxFR0VcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvL2NsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFxiKFBHX1xcdys/fEhBU19bQS1aX10rX1BSSVZJTEVHRSlcXGIvLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gZXh0cmFjdFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFxiRVhUUkFDVFxccypcXCgvLFxuICAgICAgICAgICAgZW5kOiAvXFxiRlJPTVxcYi8sXG4gICAgICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICAvL2J1aWx0X2luOiAnRVhUUkFDVCcsXG4gICAgICAgICAgICAgIHR5cGU6ICAgICAnQ0VOVFVSWSBEQVkgREVDQURFIERPVyBET1kgRVBPQ0ggSE9VUiBJU09ET1cgSVNPWUVBUiBNSUNST1NFQ09ORFMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnTUlMTEVOTklVTSBNSUxMSVNFQ09ORFMgTUlOVVRFIE1PTlRIIFFVQVJURVIgU0VDT05EIFRJTUVaT05FIFRJTUVaT05FX0hPVVIgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnVElNRVpPTkVfTUlOVVRFIFdFRUsgWUVBUidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIHhtbGVsZW1lbnQsIHhtbHBpIC0gc3BlY2lhbCBOQU1FXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGIoWE1MRUxFTUVOVHxYTUxQSSlcXHMqXFwoXFxzKk5BTUUvLFxuICAgICAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgICAgLy9idWlsdF9pbjogJ1hNTEVMRU1FTlQgWE1MUEknLFxuICAgICAgICAgICAgICBrZXl3b3JkOiAgJ05BTUUnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyB4bWxwYXJzZSwgeG1sc2VyaWFsaXplXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGIoWE1MUEFSU0V8WE1MU0VSSUFMSVpFKVxccypcXChcXHMqKERPQ1VNRU5UfENPTlRFTlQpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIC8vYnVpbHRfaW46ICdYTUxQQVJTRSBYTUxTRVJJQUxJWkUnLFxuICAgICAgICAgICAgICBrZXl3b3JkOiAgJ0RPQ1VNRU5UIENPTlRFTlQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBTZXF1ZW5jZXMuIFdlIGFjdHVhbGx5IHNraXAgZXZlcnl0aGluZyBiZXR3ZWVuIENBQ0hFfElOQ1JFTUVOVHxNQVhWQUxVRXxNSU5WQUxVRSBhbmRcbiAgICAgICAgICAvLyBuZWFyZXN0IGZvbGxvd2luZyBudW1lcmljIGNvbnN0YW50LiBXaXRob3V0IHdpdGggdHJpY2sgd2UgZmluZCBhIGxvdCBvZiBcImtleXdvcmRzXCJcbiAgICAgICAgICAvLyBpbiAnYXZyYXNtJyBhdXRvZGV0ZWN0aW9uIHRlc3QuLi5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnQ0FDSEUgSU5DUkVNRU5UIE1BWFZBTFVFIE1JTlZBTFVFJyxcbiAgICAgICAgICAgIGVuZDogaGxqcy5DX05VTUJFUl9SRSxcbiAgICAgICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGtleXdvcmRzOiAnQlkgQ0FDSEUgSU5DUkVNRU5UIE1BWFZBTFVFIE1JTlZBTFVFJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gV0lUSHxXSVRIT1VUIFRJTUUgWk9ORSBhcyBwYXJ0IG9mIGRhdGF0eXBlXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogL1xcYihXSVRIfFdJVEhPVVQpXFxzK1RJTUVcXHMrWk9ORVxcYi9cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIElOVEVSVkFMIG9wdGlvbmFsIGZpZWxkc1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46IC9cXGJJTlRFUlZBTFxccysoWUVBUnxNT05USHxEQVl8SE9VUnxNSU5VVEV8U0VDT05EKShcXHMrVE9cXHMrKE1PTlRIfEhPVVJ8TUlOVVRFfFNFQ09ORCkpP1xcYi9cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIFBzZXVkby10eXBlcyB3aGljaCBhbGxvd2VkIG9ubHkgYXMgcmV0dXJuIHR5cGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYlJFVFVSTlNcXHMrKExBTkdVQUdFX0hBTkRMRVJ8VFJJR0dFUnxFVkVOVF9UUklHR0VSfEZEV19IQU5ETEVSfElOREVYX0FNX0hBTkRMRVJ8VFNNX0hBTkRMRVIpXFxiLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIGtleXdvcmQ6ICdSRVRVUk5TJyxcbiAgICAgICAgICAgICAgdHlwZTogJ0xBTkdVQUdFX0hBTkRMRVIgVFJJR0dFUiBFVkVOVF9UUklHR0VSIEZEV19IQU5ETEVSIElOREVYX0FNX0hBTkRMRVIgVFNNX0hBTkRMRVInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBLbm93biBmdW5jdGlvbnMgLSBvbmx5IHdoZW4gZm9sbG93ZWQgYnkgJygnXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYignICsgRlVOQ1RJT05TX1JFICsgJylcXFxccypcXFxcKCdcbiAgICAgICAgICAgIC8va2V5d29yZHM6IHsgYnVpbHRfaW46IEZVTkNUSU9OUyB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBUeXBlc1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXC4oJyArIFRZUEVTX1JFICsgJylcXFxcYicgLy8gcHJldmVudCBoaWdobGlnaHQgYXMgdHlwZSwgc2F5LCAnb2lkJyBpbiAncGdjbGFzcy5vaWQnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBUWVBFU19SRSArICcpXFxcXHMrUEFUSFxcXFxiJywgLy8gaW4gWE1MVEFCTEVcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIGtleXdvcmQ6ICdQQVRIJywgLy8gaG9wZWZ1bGx5IG5vIG9uZSB3b3VsZCB1c2UgUEFUSCB0eXBlIGluIFhNTFRBQkxFLi4uXG4gICAgICAgICAgICAgIHR5cGU6IFRZUEVTLnJlcGxhY2UoJ1BBVEggJywnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYignICsgVFlQRVNfUkUgKyAnKVxcXFxiJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gU3RyaW5ncywgc2VlIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL3NxbC1zeW50YXgtbGV4aWNhbC5odG1sI1NRTC1TWU5UQVgtQ09OU1RBTlRTXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJ31dXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICcoZXxFfHUmfFUmKVxcJycsIGVuZDogJ1xcJycsXG4gICAgICAgICAgICBjb250YWluczogW3tiZWdpbjogJ1xcXFxcXFxcLid9XSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBET0xMQVJfU1RSSU5HLFxuICAgICAgICAgICAgZW5kU2FtZUFzQmVnaW46IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgd2Ugd2FudCB0aGVtIGFsbCBleGNlcHQgU1FMOyBsaXN0ZWQgYXJlIHRob3NlIHdpdGgga25vd24gaW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgICAgICAgLy8gYW5kIFhNTCArIEpTT04ganVzdCBpbiBjYXNlXG4gICAgICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6IFsncGdzcWwnLCdwZXJsJywncHl0aG9uJywndGNsJywncicsJ2x1YScsJ2phdmEnLCdwaHAnLCdydWJ5JywnYmFzaCcsJ3NjaGVtZScsJ3htbCcsJ2pzb24nXSxcbiAgICAgICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBpZGVudGlmaWVycyBpbiBxdW90ZXNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgY29udGFpbnM6IFt7YmVnaW46ICdcIlwiJ31dXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIC8vIGNvbW1lbnRzXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBDT01NRU5UX01PREUsXG4gICAgICAgICAgLy8gUEwvcGdTUUwgc3RhZmZcbiAgICAgICAgICAvLyAlUk9XVFlQRSwgJVRZUEUsICRuXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICB7YmVnaW46ICclKFJPVyk/VFlQRScsIHJlbGV2YW5jZTogMTB9LCAvLyAlVFlQRSwgJVJPV1RZUEVcbiAgICAgICAgICAgICAge2JlZ2luOiAnXFxcXCRcXFxcZCsnfSwgICAgICAgICAgICAgICAgICAgIC8vICRuXG4gICAgICAgICAgICAgIHtiZWdpbjogJ14jXFxcXHcnLCBlbmQ6ICckJ30gICAgICAgICAgICAgLy8gI2NvbXBpbGVyIG9wdGlvblxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gPDxsYWJlbGVzPj5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46IExBQkVMLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGJlZ2luOiAnXFxcXCQrW2EtekEtWl9cXHg3Zi1cXHhmZl1bYS16QS1aMC05X1xceDdmLVxceGZmXSonXG4gIH07XG4gIHZhciBQUkVQUk9DRVNTT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAvPFxcPyhwaHApP3xcXD8+L1xuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFBSRVBST0NFU1NPUl0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdiXCInLCBlbmQ6ICdcIidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYlxcJycsIGVuZDogJ1xcJydcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSlcbiAgICBdXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7dmFyaWFudHM6IFtobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgaGxqcy5DX05VTUJFUl9NT0RFXX07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwaHAnLCAncGhwMycsICdwaHA0JywgJ3BocDUnLCAncGhwNicsICdwaHA3J10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhbmQgaW5jbHVkZV9vbmNlIGxpc3QgYWJzdHJhY3QgZ2xvYmFsIHByaXZhdGUgZWNobyBpbnRlcmZhY2UgYXMgc3RhdGljIGVuZHN3aXRjaCAnICtcbiAgICAgICdhcnJheSBudWxsIGlmIGVuZHdoaWxlIG9yIGNvbnN0IGZvciBlbmRmb3JlYWNoIHNlbGYgdmFyIHdoaWxlIGlzc2V0IHB1YmxpYyAnICtcbiAgICAgICdwcm90ZWN0ZWQgZXhpdCBmb3JlYWNoIHRocm93IGVsc2VpZiBpbmNsdWRlIF9fRklMRV9fIGVtcHR5IHJlcXVpcmVfb25jZSBkbyB4b3IgJyArXG4gICAgICAncmV0dXJuIHBhcmVudCBjbG9uZSB1c2UgX19DTEFTU19fIF9fTElORV9fIGVsc2UgYnJlYWsgcHJpbnQgZXZhbCBuZXcgJyArXG4gICAgICAnY2F0Y2ggX19NRVRIT0RfXyBjYXNlIGV4Y2VwdGlvbiBkZWZhdWx0IGRpZSByZXF1aXJlIF9fRlVOQ1RJT05fXyAnICtcbiAgICAgICdlbmRkZWNsYXJlIGZpbmFsIHRyeSBzd2l0Y2ggY29udGludWUgZW5kZm9yIGVuZGlmIGRlY2xhcmUgdW5zZXQgdHJ1ZSBmYWxzZSAnICtcbiAgICAgICd0cmFpdCBnb3RvIGluc3RhbmNlb2YgaW5zdGVhZG9mIF9fRElSX18gX19OQU1FU1BBQ0VfXyAnICtcbiAgICAgICd5aWVsZCBmaW5hbGx5JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnLy8nLCAnJCcsIHtjb250YWluczogW1BSRVBST0NFU1NPUl19KSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKicsXG4gICAgICAgICdcXFxcKi8nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ19faGFsdF9jb21waWxlci4rPzsnLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgIGtleXdvcmRzOiAnX19oYWx0X2NvbXBpbGVyJyxcbiAgICAgICAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC88PDxbJ1wiXT9cXHcrWydcIl0/JC8sIGVuZDogL15cXHcrOz8kLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge2JlZ2luOiAvXFwkXFx3Ky99LFxuICAgICAgICAgICAgICB7YmVnaW46IC9cXHtcXCQvLCBlbmQ6IC9cXH0vfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsIGJlZ2luOiAvXFwkdGhpc1xcYi9cbiAgICAgIH0sXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIHtcbiAgICAgICAgLy8gc3dhbGxvdyBjb21wb3NlZCBpZGVudGlmaWVycyB0byBhdm9pZCBwYXJzaW5nIHRoZW0gYXMga2V5d29yZHNcbiAgICAgICAgYmVnaW46IC8oOjp8LT4pK1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWjAtOV9cXHg3Zi1cXHhmZl0qL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9bO3tdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFwkfFxcXFxbfCUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsIGVuZDogJ3snLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvWzpcXChcXCRcIl0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25hbWVzcGFjZScsIGVuZDogJzsnLFxuICAgICAgICBpbGxlZ2FsOiAvW1xcLiddLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd1c2UnLCBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnPT4nIC8vIE5vIG1hcmt1cCwganVzdCBhIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9LFxuICAgICAgU1RSSU5HLFxuICAgICAgTlVNQkVSXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBkaXNhYmxlQXV0b2RldGVjdDogdHJ1ZVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhY3RvciBhZGRyZXNzb2YgYW5kIGFzIGJlIGJyZWFrIGNsYXNzIGNvbXBpbGVfZXJyb3IgY29tcGlsZV9pbnRyaW5zaWMgJyArXG4gICAgICAnY29uc3VtZSBjb250aW51ZSBkZWxlZ2F0ZSBkaWdlc3RvZiBkbyBlbHNlIGVsc2VpZiBlbWJlZCBlbmQgZXJyb3IgJyArXG4gICAgICAnZm9yIGZ1biBpZiBpZmRlZiBpbiBpbnRlcmZhY2UgaXMgaXNudCBsYW1iZGEgbGV0IG1hdGNoIG5ldyBub3Qgb2JqZWN0ICcgK1xuICAgICAgJ29yIHByaW1pdGl2ZSByZWNvdmVyIHJlcGVhdCByZXR1cm4gc3RydWN0IHRoZW4gdHJhaXQgdHJ5IHR5cGUgdW50aWwgJyArXG4gICAgICAndXNlIHZhciB3aGVyZSB3aGlsZSB3aXRoIHhvcicsXG4gICAgbWV0YTpcbiAgICAgICdpc28gdmFsIHRhZyB0cm4gYm94IHJlZicsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0aGlzIGZhbHNlIHRydWUnXG4gIH07XG5cbiAgdmFyIFRSSVBMRV9RVU9URV9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJyxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG5cbiAgdmFyIFFVT1RFX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgfTtcblxuICB2YXIgU0lOR0xFX1FVT1RFX0NIQVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFRZUEVfTkFNRSA9IHtcbiAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICBiZWdpbjogJ1xcXFxiXz9bQS1aXVtcXFxcd10qJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgUFJJTUVEX05BTUUgPSB7XG4gICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFwnJywgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIE5VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XSt8XFxcXGIwW2JCXVswMV0rfChcXFxcYlxcXFxkKyhfXFxcXGQrKT8oXFxcXC5cXFxcZCopP3xcXFxcLlxcXFxkKykoW2VFXVstK10/XFxcXGQrKT8pJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvKipcbiAgICogVGhlIGBGVU5DVElPTmAgYW5kIGBDTEFTU2AgbW9kZXMgd2VyZSBpbnRlbnRpb25hbGx5IHJlbW92ZWQgdG8gc2ltcGxpZnlcbiAgICogaGlnaGxpZ2h0aW5nIGFuZCBmaXggY2FzZXMgbGlrZVxuICAgKiBgYGBcbiAgICogaW50ZXJmYWNlIEl0ZXJhdG9yW0E6IEFdXG4gICAqICAgZnVuIGhhc19uZXh0KCk6IEJvb2xcbiAgICogICBmdW4gbmV4dCgpOiBBP1xuICAgKiBgYGBcbiAgICogd2hlcmUgaXQgaXMgdmFsaWQgdG8gaGF2ZSBhIGZ1bmN0aW9uIGhlYWQgd2l0aG91dCBhIGJvZHlcbiAgICovXG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFRZUEVfTkFNRSxcbiAgICAgIFRSSVBMRV9RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIFFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgU0lOR0xFX1FVT1RFX0NIQVJfTU9ERSxcbiAgICAgIFBSSU1FRF9OQU1FLFxuICAgICAgTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpe1xuICB2YXIgQkFDS1RJQ0tfRVNDQVBFID0ge1xuICAgIGJlZ2luOiBcImBbXFxcXHNcXFxcU11cIixcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiBcInZhcmlhYmxlXCIsXG4gICAgdmFyaWFudHM6IFt7IGJlZ2luOiAvXFwkW1xcd1xcZF1bXFx3XFxkXzpdKi8gfV0sXG4gIH07XG4gIHZhciBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogXCJsaXRlcmFsXCIsXG4gICAgYmVnaW46IC9cXCQobnVsbHx0cnVlfGZhbHNlKVxcYi8sXG4gIH07XG4gIHZhciBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiBcInN0cmluZ1wiLFxuICAgIHZhcmlhbnRzOiBbeyBiZWdpbjogL1wiLywgZW5kOiAvXCIvIH0sIHsgYmVnaW46IC9AXCIvLCBlbmQ6IC9eXCJALyB9XSxcbiAgICBjb250YWluczogW1xuICAgICAgQkFDS1RJQ0tfRVNDQVBFLFxuICAgICAgVkFSLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IFwidmFyaWFibGVcIixcbiAgICAgICAgYmVnaW46IC9cXCRbQS16XS8sXG4gICAgICAgIGVuZDogL1teQS16XS8sXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG4gIHZhciBBUE9TX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6IFwic3RyaW5nXCIsXG4gICAgdmFyaWFudHM6IFt7IGJlZ2luOiAvJy8sIGVuZDogLycvIH0sIHsgYmVnaW46IC9AJy8sIGVuZDogL14nQC8gfV0sXG4gIH07XG5cbiAgdmFyIFBTX0hFTFBUQUdTID0ge1xuICAgIGNsYXNzTmFtZTogXCJkb2N0YWdcIixcbiAgICB2YXJpYW50czogW1xuICAgICAgLyogbm8gcGFyYW1hdGVyIGhlbHAgdGFncyAqL1xuXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwuKHN5bm9wc2lzfGRlc2NyaXB0aW9ufGV4YW1wbGV8aW5wdXRzfG91dHB1dHN8bm90ZXN8bGlua3xjb21wb25lbnR8cm9sZXxmdW5jdGlvbmFsaXR5KS8sXG4gICAgICB9LFxuICAgICAgLyogb25lIHBhcmFtZXRlciBoZWxwIHRhZ3MgKi9cbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXC4ocGFyYW1ldGVyfGZvcndhcmRoZWxwdGFyZ2V0bmFtZXxmb3J3YXJkaGVscGNhdGVnb3J5fHJlbW90ZWhlbHBydW5zcGFjZXxleHRlcm5hbGhlbHApXFxzK1xcUysvLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICB2YXIgUFNfQ09NTUVOVCA9IGhsanMuaW5oZXJpdChobGpzLkNPTU1FTlQobnVsbCwgbnVsbCksIHtcbiAgICB2YXJpYW50czogW1xuICAgICAgLyogc2luZ2xlLWxpbmUgY29tbWVudCAqL1xuICAgICAgeyBiZWdpbjogLyMvLCBlbmQ6IC8kLyB9LFxuICAgICAgLyogbXVsdGktbGluZSBjb21tZW50ICovXG4gICAgICB7IGJlZ2luOiAvPCMvLCBlbmQ6IC8jPi8gfSxcbiAgICBdLFxuICAgIGNvbnRhaW5zOiBbUFNfSEVMUFRBR1NdLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFtcInBzXCIsIFwicHMxXCJdLFxuICAgIGxleGVtZXM6IC8tP1tBLXpcXC5cXC1dKy8sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgXCJpZiBlbHNlIGZvcmVhY2ggcmV0dXJuIGZ1bmN0aW9uIGRvIHdoaWxlIHVudGlsIGVsc2VpZiBiZWdpbiBmb3IgdHJhcCBkYXRhIGR5bmFtaWNwYXJhbSBlbmQgYnJlYWsgdGhyb3cgcGFyYW0gY29udGludWUgZmluYWxseSBpbiBzd2l0Y2ggZXhpdCBmaWx0ZXIgdHJ5IHByb2Nlc3MgY2F0Y2hcIiArXG4gICAgICAgIFwiVmFsaWRhdGVOb0NpcmNsZUluTm9kZVJlc291cmNlcyBWYWxpZGF0ZU5vZGVFeGNsdXNpdmVSZXNvdXJjZXMgVmFsaWRhdGVOb2RlTWFuYWdlciBWYWxpZGF0ZU5vZGVSZXNvdXJjZXMgVmFsaWRhdGVOb2RlUmVzb3VyY2VTb3VyY2UgVmFsaWRhdGVOb05hbWVOb2RlUmVzb3VyY2VzIFRocm93RXJyb3IgSXNIaWRkZW5SZXNvdXJjZVwiICtcbiAgICAgICAgXCJJc1BhdHRlcm5NYXRjaGVkIFwiLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIFwiQWRkLUNvbXB1dGVyIEFkZC1Db250ZW50IEFkZC1IaXN0b3J5IEFkZC1Kb2JUcmlnZ2VyIEFkZC1NZW1iZXIgQWRkLVBTU25hcGluIEFkZC1UeXBlIENoZWNrcG9pbnQtQ29tcHV0ZXIgQ2xlYXItQ29udGVudCBcIiArXG4gICAgICAgIFwiQ2xlYXItRXZlbnRMb2cgQ2xlYXItSGlzdG9yeSBDbGVhci1Ib3N0IENsZWFyLUl0ZW0gQ2xlYXItSXRlbVByb3BlcnR5IENsZWFyLVZhcmlhYmxlIENvbXBhcmUtT2JqZWN0IENvbXBsZXRlLVRyYW5zYWN0aW9uIENvbm5lY3QtUFNTZXNzaW9uIFwiICtcbiAgICAgICAgXCJDb25uZWN0LVdTTWFuIENvbnZlcnQtUGF0aCBDb252ZXJ0RnJvbS1Dc3YgQ29udmVydEZyb20tSnNvbiBDb252ZXJ0RnJvbS1TZWN1cmVTdHJpbmcgQ29udmVydEZyb20tU3RyaW5nRGF0YSBDb252ZXJ0VG8tQ3N2IENvbnZlcnRUby1IdG1sIFwiICtcbiAgICAgICAgXCJDb252ZXJ0VG8tSnNvbiBDb252ZXJ0VG8tU2VjdXJlU3RyaW5nIENvbnZlcnRUby1YbWwgQ29weS1JdGVtIENvcHktSXRlbVByb3BlcnR5IERlYnVnLVByb2Nlc3MgRGlzYWJsZS1Db21wdXRlclJlc3RvcmUgRGlzYWJsZS1Kb2JUcmlnZ2VyIFwiICtcbiAgICAgICAgXCJEaXNhYmxlLVBTQnJlYWtwb2ludCBEaXNhYmxlLVBTUmVtb3RpbmcgRGlzYWJsZS1QU1Nlc3Npb25Db25maWd1cmF0aW9uIERpc2FibGUtV1NNYW5DcmVkU1NQIERpc2Nvbm5lY3QtUFNTZXNzaW9uIERpc2Nvbm5lY3QtV1NNYW4gXCIgK1xuICAgICAgICBcIkRpc2FibGUtU2NoZWR1bGVkSm9iIEVuYWJsZS1Db21wdXRlclJlc3RvcmUgRW5hYmxlLUpvYlRyaWdnZXIgRW5hYmxlLVBTQnJlYWtwb2ludCBFbmFibGUtUFNSZW1vdGluZyBFbmFibGUtUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBcIiArXG4gICAgICAgIFwiRW5hYmxlLVNjaGVkdWxlZEpvYiBFbmFibGUtV1NNYW5DcmVkU1NQIEVudGVyLVBTU2Vzc2lvbiBFeGl0LVBTU2Vzc2lvbiBFeHBvcnQtQWxpYXMgRXhwb3J0LUNsaXhtbCBFeHBvcnQtQ29uc29sZSBFeHBvcnQtQ291bnRlciBFeHBvcnQtQ3N2IFwiICtcbiAgICAgICAgXCJFeHBvcnQtRm9ybWF0RGF0YSBFeHBvcnQtTW9kdWxlTWVtYmVyIEV4cG9ydC1QU1Nlc3Npb24gRm9yRWFjaC1PYmplY3QgRm9ybWF0LUN1c3RvbSBGb3JtYXQtTGlzdCBGb3JtYXQtVGFibGUgRm9ybWF0LVdpZGUgR2V0LUFjbCBHZXQtQWxpYXMgXCIgK1xuICAgICAgICBcIkdldC1BdXRoZW50aWNvZGVTaWduYXR1cmUgR2V0LUNoaWxkSXRlbSBHZXQtQ29tbWFuZCBHZXQtQ29tcHV0ZXJSZXN0b3JlUG9pbnQgR2V0LUNvbnRlbnQgR2V0LUNvbnRyb2xQYW5lbEl0ZW0gR2V0LUNvdW50ZXIgR2V0LUNyZWRlbnRpYWwgXCIgK1xuICAgICAgICBcIkdldC1DdWx0dXJlIEdldC1EYXRlIEdldC1FdmVudCBHZXQtRXZlbnRMb2cgR2V0LUV2ZW50U3Vic2NyaWJlciBHZXQtRXhlY3V0aW9uUG9saWN5IEdldC1Gb3JtYXREYXRhIEdldC1Ib3N0IEdldC1Ib3RGaXggR2V0LUhlbHAgR2V0LUhpc3RvcnkgXCIgK1xuICAgICAgICBcIkdldC1Jc2VTbmlwcGV0IEdldC1JdGVtIEdldC1JdGVtUHJvcGVydHkgR2V0LUpvYiBHZXQtSm9iVHJpZ2dlciBHZXQtTG9jYXRpb24gR2V0LU1lbWJlciBHZXQtTW9kdWxlIEdldC1QZnhDZXJ0aWZpY2F0ZSBHZXQtUHJvY2VzcyBcIiArXG4gICAgICAgIFwiR2V0LVBTQnJlYWtwb2ludCBHZXQtUFNDYWxsU3RhY2sgR2V0LVBTRHJpdmUgR2V0LVBTUHJvdmlkZXIgR2V0LVBTU2Vzc2lvbiBHZXQtUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBHZXQtUFNTbmFwaW4gR2V0LVJhbmRvbSBHZXQtU2NoZWR1bGVkSm9iIFwiICtcbiAgICAgICAgXCJHZXQtU2NoZWR1bGVkSm9iT3B0aW9uIEdldC1TZXJ2aWNlIEdldC1UcmFjZVNvdXJjZSBHZXQtVHJhbnNhY3Rpb24gR2V0LVR5cGVEYXRhIEdldC1VSUN1bHR1cmUgR2V0LVVuaXF1ZSBHZXQtVmFyaWFibGUgR2V0LVZlcmIgR2V0LVdpbkV2ZW50IFwiICtcbiAgICAgICAgXCJHZXQtV21pT2JqZWN0IEdldC1XU01hbkNyZWRTU1AgR2V0LVdTTWFuSW5zdGFuY2UgR3JvdXAtT2JqZWN0IEltcG9ydC1BbGlhcyBJbXBvcnQtQ2xpeG1sIEltcG9ydC1Db3VudGVyIEltcG9ydC1Dc3YgSW1wb3J0LUlzZVNuaXBwZXQgXCIgK1xuICAgICAgICBcIkltcG9ydC1Mb2NhbGl6ZWREYXRhIEltcG9ydC1QU1Nlc3Npb24gSW1wb3J0LU1vZHVsZSBJbnZva2UtQXNXb3JrZmxvdyBJbnZva2UtQ29tbWFuZCBJbnZva2UtRXhwcmVzc2lvbiBJbnZva2UtSGlzdG9yeSBJbnZva2UtSXRlbSBcIiArXG4gICAgICAgIFwiSW52b2tlLVJlc3RNZXRob2QgSW52b2tlLVdlYlJlcXVlc3QgSW52b2tlLVdtaU1ldGhvZCBJbnZva2UtV1NNYW5BY3Rpb24gSm9pbi1QYXRoIExpbWl0LUV2ZW50TG9nIE1lYXN1cmUtQ29tbWFuZCBNZWFzdXJlLU9iamVjdCBNb3ZlLUl0ZW0gXCIgK1xuICAgICAgICBcIk1vdmUtSXRlbVByb3BlcnR5IE5ldy1BbGlhcyBOZXctRXZlbnQgTmV3LUV2ZW50TG9nIE5ldy1Jc2VTbmlwcGV0IE5ldy1JdGVtIE5ldy1JdGVtUHJvcGVydHkgTmV3LUpvYlRyaWdnZXIgTmV3LU9iamVjdCBOZXctTW9kdWxlIFwiICtcbiAgICAgICAgXCJOZXctTW9kdWxlTWFuaWZlc3QgTmV3LVBTRHJpdmUgTmV3LVBTU2Vzc2lvbiBOZXctUFNTZXNzaW9uQ29uZmlndXJhdGlvbkZpbGUgTmV3LVBTU2Vzc2lvbk9wdGlvbiBOZXctUFNUcmFuc3BvcnRPcHRpb24gXCIgK1xuICAgICAgICBcIk5ldy1QU1dvcmtmbG93RXhlY3V0aW9uT3B0aW9uIE5ldy1QU1dvcmtmbG93U2Vzc2lvbiBOZXctU2NoZWR1bGVkSm9iT3B0aW9uIE5ldy1TZXJ2aWNlIE5ldy1UaW1lU3BhbiBOZXctVmFyaWFibGUgTmV3LVdlYlNlcnZpY2VQcm94eSBcIiArXG4gICAgICAgIFwiTmV3LVdpbkV2ZW50IE5ldy1XU01hbkluc3RhbmNlIE5ldy1XU01hblNlc3Npb25PcHRpb24gT3V0LURlZmF1bHQgT3V0LUZpbGUgT3V0LUdyaWRWaWV3IE91dC1Ib3N0IE91dC1OdWxsIE91dC1QcmludGVyIE91dC1TdHJpbmcgUG9wLUxvY2F0aW9uIFwiICtcbiAgICAgICAgXCJQdXNoLUxvY2F0aW9uIFJlYWQtSG9zdCBSZWNlaXZlLUpvYiBSZWdpc3Rlci1FbmdpbmVFdmVudCBSZWdpc3Rlci1PYmplY3RFdmVudCBSZWdpc3Rlci1QU1Nlc3Npb25Db25maWd1cmF0aW9uIFJlZ2lzdGVyLVNjaGVkdWxlZEpvYiBcIiArXG4gICAgICAgIFwiUmVnaXN0ZXItV21pRXZlbnQgUmVtb3ZlLUNvbXB1dGVyIFJlbW92ZS1FdmVudCBSZW1vdmUtRXZlbnRMb2cgUmVtb3ZlLUl0ZW0gUmVtb3ZlLUl0ZW1Qcm9wZXJ0eSBSZW1vdmUtSm9iIFJlbW92ZS1Kb2JUcmlnZ2VyIFJlbW92ZS1Nb2R1bGUgXCIgK1xuICAgICAgICBcIlJlbW92ZS1QU0JyZWFrcG9pbnQgUmVtb3ZlLVBTRHJpdmUgUmVtb3ZlLVBTU2Vzc2lvbiBSZW1vdmUtUFNTbmFwaW4gUmVtb3ZlLVR5cGVEYXRhIFJlbW92ZS1WYXJpYWJsZSBSZW1vdmUtV21pT2JqZWN0IFJlbW92ZS1XU01hbkluc3RhbmNlIFwiICtcbiAgICAgICAgXCJSZW5hbWUtQ29tcHV0ZXIgUmVuYW1lLUl0ZW0gUmVuYW1lLUl0ZW1Qcm9wZXJ0eSBSZXNldC1Db21wdXRlck1hY2hpbmVQYXNzd29yZCBSZXNvbHZlLVBhdGggUmVzdGFydC1Db21wdXRlciBSZXN0YXJ0LVNlcnZpY2UgUmVzdG9yZS1Db21wdXRlciBcIiArXG4gICAgICAgIFwiUmVzdW1lLUpvYiBSZXN1bWUtU2VydmljZSBTYXZlLUhlbHAgU2VsZWN0LU9iamVjdCBTZWxlY3QtU3RyaW5nIFNlbGVjdC1YbWwgU2VuZC1NYWlsTWVzc2FnZSBTZXQtQWNsIFNldC1BbGlhcyBTZXQtQXV0aGVudGljb2RlU2lnbmF0dXJlIFwiICtcbiAgICAgICAgXCJTZXQtQ29udGVudCBTZXQtRGF0ZSBTZXQtRXhlY3V0aW9uUG9saWN5IFNldC1JdGVtIFNldC1JdGVtUHJvcGVydHkgU2V0LUpvYlRyaWdnZXIgU2V0LUxvY2F0aW9uIFNldC1QU0JyZWFrcG9pbnQgU2V0LVBTRGVidWcgXCIgK1xuICAgICAgICBcIlNldC1QU1Nlc3Npb25Db25maWd1cmF0aW9uIFNldC1TY2hlZHVsZWRKb2IgU2V0LVNjaGVkdWxlZEpvYk9wdGlvbiBTZXQtU2VydmljZSBTZXQtU3RyaWN0TW9kZSBTZXQtVHJhY2VTb3VyY2UgU2V0LVZhcmlhYmxlIFNldC1XbWlJbnN0YW5jZSBcIiArXG4gICAgICAgIFwiU2V0LVdTTWFuSW5zdGFuY2UgU2V0LVdTTWFuUXVpY2tDb25maWcgU2hvdy1Db21tYW5kIFNob3ctQ29udHJvbFBhbmVsSXRlbSBTaG93LUV2ZW50TG9nIFNvcnQtT2JqZWN0IFNwbGl0LVBhdGggU3RhcnQtSm9iIFN0YXJ0LVByb2Nlc3MgXCIgK1xuICAgICAgICBcIlN0YXJ0LVNlcnZpY2UgU3RhcnQtU2xlZXAgU3RhcnQtVHJhbnNhY3Rpb24gU3RhcnQtVHJhbnNjcmlwdCBTdG9wLUNvbXB1dGVyIFN0b3AtSm9iIFN0b3AtUHJvY2VzcyBTdG9wLVNlcnZpY2UgU3RvcC1UcmFuc2NyaXB0IFN1c3BlbmQtSm9iIFwiICtcbiAgICAgICAgXCJTdXNwZW5kLVNlcnZpY2UgVGVlLU9iamVjdCBUZXN0LUNvbXB1dGVyU2VjdXJlQ2hhbm5lbCBUZXN0LUNvbm5lY3Rpb24gVGVzdC1Nb2R1bGVNYW5pZmVzdCBUZXN0LVBhdGggVGVzdC1QU1Nlc3Npb25Db25maWd1cmF0aW9uRmlsZSBcIiArXG4gICAgICAgIFwiVHJhY2UtQ29tbWFuZCBVbmJsb2NrLUZpbGUgVW5kby1UcmFuc2FjdGlvbiBVbnJlZ2lzdGVyLUV2ZW50IFVucmVnaXN0ZXItUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBVbnJlZ2lzdGVyLVNjaGVkdWxlZEpvYiBVcGRhdGUtRm9ybWF0RGF0YSBcIiArXG4gICAgICAgIFwiVXBkYXRlLUhlbHAgVXBkYXRlLUxpc3QgVXBkYXRlLVR5cGVEYXRhIFVzZS1UcmFuc2FjdGlvbiBXYWl0LUV2ZW50IFdhaXQtSm9iIFdhaXQtUHJvY2VzcyBXaGVyZS1PYmplY3QgV3JpdGUtRGVidWcgV3JpdGUtRXJyb3IgV3JpdGUtRXZlbnRMb2cgXCIgK1xuICAgICAgICBcIldyaXRlLUhvc3QgV3JpdGUtT3V0cHV0IFdyaXRlLVByb2dyZXNzIFdyaXRlLVZlcmJvc2UgV3JpdGUtV2FybmluZyBBZGQtTURUUGVyc2lzdGVudERyaXZlIERpc2FibGUtTURUTW9uaXRvclNlcnZpY2UgRW5hYmxlLU1EVE1vbml0b3JTZXJ2aWNlIFwiICtcbiAgICAgICAgXCJHZXQtTURURGVwbG95bWVudFNoYXJlU3RhdGlzdGljcyBHZXQtTURUTW9uaXRvckRhdGEgR2V0LU1EVE9wZXJhdGluZ1N5c3RlbUNhdGFsb2cgR2V0LU1EVFBlcnNpc3RlbnREcml2ZSBJbXBvcnQtTURUQXBwbGljYXRpb24gXCIgK1xuICAgICAgICBcIkltcG9ydC1NRFREcml2ZXIgSW1wb3J0LU1EVE9wZXJhdGluZ1N5c3RlbSBJbXBvcnQtTURUUGFja2FnZSBJbXBvcnQtTURUVGFza1NlcXVlbmNlIE5ldy1NRFREYXRhYmFzZSBSZW1vdmUtTURUTW9uaXRvckRhdGEgXCIgK1xuICAgICAgICBcIlJlbW92ZS1NRFRQZXJzaXN0ZW50RHJpdmUgUmVzdG9yZS1NRFRQZXJzaXN0ZW50RHJpdmUgU2V0LU1EVE1vbml0b3JEYXRhIFRlc3QtTURURGVwbG95bWVudFNoYXJlIFRlc3QtTURUTW9uaXRvckRhdGEgVXBkYXRlLU1EVERhdGFiYXNlU2NoZW1hIFwiICtcbiAgICAgICAgXCJVcGRhdGUtTURURGVwbG95bWVudFNoYXJlIFVwZGF0ZS1NRFRMaW5rZWREUyBVcGRhdGUtTURUTWVkaWEgQWRkLVZhbXRQcm9kdWN0S2V5IEV4cG9ydC1WYW10RGF0YSBGaW5kLVZhbXRNYW5hZ2VkTWFjaGluZSBcIiArXG4gICAgICAgIFwiR2V0LVZhbXRDb25maXJtYXRpb25JZCBHZXQtVmFtdFByb2R1Y3QgR2V0LVZhbXRQcm9kdWN0S2V5IEltcG9ydC1WYW10RGF0YSBJbml0aWFsaXplLVZhbXREYXRhIEluc3RhbGwtVmFtdENvbmZpcm1hdGlvbklkIFwiICtcbiAgICAgICAgXCJJbnN0YWxsLVZhbXRQcm9kdWN0QWN0aXZhdGlvbiBJbnN0YWxsLVZhbXRQcm9kdWN0S2V5IFVwZGF0ZS1WYW10UHJvZHVjdCBBZGQtQ0lEYXRhc3RvcmUgQWRkLUtleU1hbmFnZW1lbnRTZXJ2ZXIgQWRkLU5vZGVLZXlzIFwiICtcbiAgICAgICAgXCJBZGQtTnN4RHluYW1pY0NyaXRlcmlhIEFkZC1Oc3hEeW5hbWljTWVtYmVyU2V0IEFkZC1Oc3hFZGdlSW50ZXJmYWNlQWRkcmVzcyBBZGQtTnN4RmlyZXdhbGxFeGNsdXNpb25MaXN0TWVtYmVyIEFkZC1Oc3hGaXJld2FsbFJ1bGVNZW1iZXIgXCIgK1xuICAgICAgICBcIkFkZC1Oc3hJcFNldE1lbWJlciBBZGQtTnN4TGljZW5zZSBBZGQtTnN4TG9hZEJhbGFuY2VyUG9vbE1lbWJlciBBZGQtTnN4TG9hZEJhbGFuY2VyVmlwIEFkZC1Oc3hTZWNvbmRhcnlNYW5hZ2VyIEFkZC1Oc3hTZWN1cml0eUdyb3VwTWVtYmVyIFwiICtcbiAgICAgICAgXCJBZGQtTnN4U2VjdXJpdHlQb2xpY3lSdWxlIEFkZC1Oc3hTZWN1cml0eVBvbGljeVJ1bGVHcm91cCBBZGQtTnN4U2VjdXJpdHlQb2xpY3lSdWxlU2VydmljZSBBZGQtTnN4U2VydmljZUdyb3VwTWVtYmVyIFwiICtcbiAgICAgICAgXCJBZGQtTnN4VHJhbnNwb3J0Wm9uZU1lbWJlciBBZGQtUGFzc3Rocm91Z2hEZXZpY2UgQWRkLVZEU3dpdGNoUGh5c2ljYWxOZXR3b3JrQWRhcHRlciBBZGQtVkRTd2l0Y2hWTUhvc3QgQWRkLVZNSG9zdCBBZGQtVk1Ib3N0TnRwU2VydmVyIFwiICtcbiAgICAgICAgXCJBZGQtVmlydHVhbFN3aXRjaFBoeXNpY2FsTmV0d29ya0FkYXB0ZXIgQWRkLVhtbEVsZW1lbnQgQWRkLXZSQUN1c3RvbUZvcm0gQWRkLXZSQVByaW5jaXBhbFRvVGVuYW50Um9sZSBBZGQtdlJBUmVzZXJ2YXRpb25OZXR3b3JrIFwiICtcbiAgICAgICAgXCJBZGQtdlJBUmVzZXJ2YXRpb25TdG9yYWdlIENsZWFyLU5zeEVkZ2VJbnRlcmZhY2UgQ2xlYXItTnN4TWFuYWdlclRpbWVTZXR0aW5ncyBDb21wcmVzcy1BcmNoaXZlIENvbm5lY3QtQ0lTZXJ2ZXIgQ29ubmVjdC1DaXNTZXJ2ZXIgXCIgK1xuICAgICAgICBcIkNvbm5lY3QtSENYU2VydmVyIENvbm5lY3QtTklTZXJ2ZXIgQ29ubmVjdC1Oc3hMb2dpY2FsU3dpdGNoIENvbm5lY3QtTnN4U2VydmVyIENvbm5lY3QtTnN4dFNlcnZlciBDb25uZWN0LVNybVNlcnZlciBDb25uZWN0LVZJU2VydmVyIFwiICtcbiAgICAgICAgXCJDb25uZWN0LVZtYyBDb25uZWN0LXZSQVNlcnZlciBDb25uZWN0LXZSTklTZXJ2ZXIgQ29udmVydEZyb20tTWFya2Rvd24gQ29udmVydFRvLU1PRkluc3RhbmNlIENvcHktRGF0YXN0b3JlSXRlbSBDb3B5LUhhcmREaXNrIENvcHktTnN4RWRnZSBcIiArXG4gICAgICAgIFwiQ29weS1WRGlzayBDb3B5LVZNR3Vlc3RGaWxlIERlYnVnLVJ1bnNwYWNlIERpc2FibGUtTnN4RWRnZVNzaCBEaXNhYmxlLVJ1bnNwYWNlRGVidWcgRGlzYWJsZS12Uk5JRGF0YVNvdXJjZSBEaXNjb25uZWN0LUNJU2VydmVyIFwiICtcbiAgICAgICAgXCJEaXNjb25uZWN0LUNpc1NlcnZlciBEaXNjb25uZWN0LUhDWFNlcnZlciBEaXNjb25uZWN0LU5zeExvZ2ljYWxTd2l0Y2ggRGlzY29ubmVjdC1Oc3hTZXJ2ZXIgRGlzY29ubmVjdC1Oc3h0U2VydmVyIERpc2Nvbm5lY3QtU3JtU2VydmVyIFwiICtcbiAgICAgICAgXCJEaXNjb25uZWN0LVZJU2VydmVyIERpc2Nvbm5lY3QtVm1jIERpc2Nvbm5lY3QtdlJBU2VydmVyIERpc2Nvbm5lY3QtdlJOSVNlcnZlciBEaXNtb3VudC1Ub29scyBFbmFibGUtTnN4RWRnZVNzaCBFbmFibGUtUnVuc3BhY2VEZWJ1ZyBcIiArXG4gICAgICAgIFwiRW5hYmxlLXZSTklEYXRhU291cmNlIEV4cGFuZC1BcmNoaXZlIEV4cG9ydC1Oc3hPYmplY3QgRXhwb3J0LVNwYm1TdG9yYWdlUG9saWN5IEV4cG9ydC1WQXBwIEV4cG9ydC1WRFBvcnRHcm91cCBFeHBvcnQtVkRTd2l0Y2ggXCIgK1xuICAgICAgICBcIkV4cG9ydC1WTUhvc3RQcm9maWxlIEV4cG9ydC12UkFJY29uIEV4cG9ydC12UkFQYWNrYWdlIEZpbmQtQ29tbWFuZCBGaW5kLURzY1Jlc291cmNlIEZpbmQtTW9kdWxlIEZpbmQtTnN4V2hlcmVWTVVzZWQgRmluZC1QYWNrYWdlIFwiICtcbiAgICAgICAgXCJGaW5kLVBhY2thZ2VQcm92aWRlciBGaW5kLVJvbGVDYXBhYmlsaXR5IEZpbmQtU2NyaXB0IEZvcm1hdC1IZXggRm9ybWF0LVZNSG9zdERpc2tQYXJ0aXRpb24gRm9ybWF0LVhNTCBHZW5lcmF0ZS1WZXJzaW9uSW5mbyBcIiArXG4gICAgICAgIFwiR2V0LUFkdmFuY2VkU2V0dGluZyBHZXQtQWxhcm1BY3Rpb24gR2V0LUFsYXJtQWN0aW9uVHJpZ2dlciBHZXQtQWxhcm1EZWZpbml0aW9uIEdldC1Bbm5vdGF0aW9uIEdldC1DRERyaXZlIEdldC1DSUFjY2Vzc0NvbnRyb2xSdWxlIFwiICtcbiAgICAgICAgXCJHZXQtQ0lEYXRhc3RvcmUgR2V0LUNJTmV0d29ya0FkYXB0ZXIgR2V0LUNJUm9sZSBHZXQtQ0lVc2VyIEdldC1DSVZBcHAgR2V0LUNJVkFwcE5ldHdvcmsgR2V0LUNJVkFwcFN0YXJ0UnVsZSBHZXQtQ0lWQXBwVGVtcGxhdGUgR2V0LUNJVk0gXCIgK1xuICAgICAgICBcIkdldC1DSVZNVGVtcGxhdGUgR2V0LUNJVmlldyBHZXQtQ2F0YWxvZyBHZXQtQ2lzQ29tbWFuZCBHZXQtQ2lzU2VydmljZSBHZXQtQ2xvdWRDb21tYW5kIEdldC1DbHVzdGVyIEdldC1Db21wYXRpYmxlVmVyc2lvbkFkZHRpb25hUHJvcGVydGllc1N0ciBcIiArXG4gICAgICAgIFwiR2V0LUNvbXBsZXhSZXNvdXJjZVF1YWxpZmllciBHZXQtQ29uZmlndXJhdGlvbkVycm9yQ291bnQgR2V0LUNvbnRlbnRMaWJyYXJ5SXRlbSBHZXQtQ3VzdG9tQXR0cmlidXRlIEdldC1EU0NSZXNvdXJjZU1vZHVsZXMgR2V0LURhdGFjZW50ZXIgXCIgK1xuICAgICAgICBcIkdldC1EYXRhc3RvcmUgR2V0LURhdGFzdG9yZUNsdXN0ZXIgR2V0LURyc0NsdXN0ZXJHcm91cCBHZXQtRHJzUmVjb21tZW5kYXRpb24gR2V0LURyc1J1bGUgR2V0LURyc1ZNSG9zdFJ1bGUgR2V0LURzY1Jlc291cmNlIEdldC1FZGdlR2F0ZXdheSBcIiArXG4gICAgICAgIFwiR2V0LUVuY3J5cHRlZFBhc3N3b3JkIEdldC1FcnJvclJlcG9ydCBHZXQtRXN4Q2xpIEdldC1Fc3hUb3AgR2V0LUV4dGVybmFsTmV0d29yayBHZXQtRmlsZUhhc2ggR2V0LUZsb3BweURyaXZlIEdldC1Gb2xkZXIgR2V0LUhBUHJpbWFyeVZNSG9zdCBcIiArXG4gICAgICAgIFwiR2V0LUhDWEFwcGxpYW5jZSBHZXQtSENYQXBwbGlhbmNlQ29tcHV0ZSBHZXQtSENYQXBwbGlhbmNlRFZTIEdldC1IQ1hBcHBsaWFuY2VEYXRhc3RvcmUgR2V0LUhDWEFwcGxpYW5jZU5ldHdvcmsgR2V0LUhDWENvbnRhaW5lciBcIiArXG4gICAgICAgIFwiR2V0LUhDWERhdGFzdG9yZSBHZXQtSENYR2F0ZXdheSBHZXQtSENYSW50ZXJjb25uZWN0U3RhdHVzIEdldC1IQ1hKb2IgR2V0LUhDWE1pZ3JhdGlvbiBHZXQtSENYTmV0d29yayBHZXQtSENYTmV0d29ya0V4dGVuc2lvbiBcIiArXG4gICAgICAgIFwiR2V0LUhDWFJlcGxpY2F0aW9uIEdldC1IQ1hSZXBsaWNhdGlvblNuYXBzaG90IEdldC1IQ1hTZXJ2aWNlIEdldC1IQ1hTaXRlIEdldC1IQ1hTaXRlUGFpcmluZyBHZXQtSENYVk0gR2V0LUhhcmREaXNrIEdldC1JU2NzaUhiYVRhcmdldCBcIiArXG4gICAgICAgIFwiR2V0LUlubmVyTW9zdEVycm9yUmVjb3JkIEdldC1JbnN0YWxsUGF0aCBHZXQtSW5zdGFsbGVkTW9kdWxlIEdldC1JbnN0YWxsZWRTY3JpcHQgR2V0LUludmVudG9yeSBHZXQtSXRlbVByb3BlcnR5VmFsdWUgR2V0LUtleU1hbmFnZW1lbnRTZXJ2ZXIgXCIgK1xuICAgICAgICBcIkdldC1LbWlwQ2xpZW50Q2VydGlmaWNhdGUgR2V0LUttc0NsdXN0ZXIgR2V0LUxvZyBHZXQtTG9nVHlwZSBHZXQtTWFya2Rvd25PcHRpb24gR2V0LU1lZGlhIEdldC1Nb2ZJbnN0YW5jZU5hbWUgR2V0LU1vZkluc3RhbmNlVGV4dCBHZXQtTmV0d29ya0FkYXB0ZXIgR2V0LU5ldHdvcmtQb29sIFwiICtcbiAgICAgICAgXCJHZXQtTmZzVXNlciBHZXQtTmljVGVhbWluZ1BvbGljeSBHZXQtTnN4QXBwbGljYWJsZU1lbWJlciBHZXQtTnN4QXBwbGljYWJsZVNlY3VyaXR5QWN0aW9uIEdldC1Oc3hCYWNraW5nRFZTd2l0Y2ggR2V0LU5zeEJhY2tpbmdQb3J0R3JvdXAgR2V0LU5zeENsaURmd0FkZHJTZXQgXCIgK1xuICAgICAgICBcIkdldC1Oc3hDbGlEZndGaWx0ZXIgR2V0LU5zeENsaURmd1J1bGUgR2V0LU5zeENsdXN0ZXJTdGF0dXMgR2V0LU5zeENvbnRyb2xsZXIgR2V0LU5zeER5bmFtaWNDcml0ZXJpYSBHZXQtTnN4RHluYW1pY01lbWJlclNldCBHZXQtTnN4RWRnZSBHZXQtTnN4RWRnZUJncCBcIiArXG4gICAgICAgIFwiR2V0LU5zeEVkZ2VCZ3BOZWlnaGJvdXIgR2V0LU5zeEVkZ2VDZXJ0aWZpY2F0ZSBHZXQtTnN4RWRnZUNzciBHZXQtTnN4RWRnZUZpcmV3YWxsIEdldC1Oc3hFZGdlRmlyZXdhbGxSdWxlIEdldC1Oc3hFZGdlSW50ZXJmYWNlIEdldC1Oc3hFZGdlSW50ZXJmYWNlQWRkcmVzcyBcIiArXG4gICAgICAgIFwiR2V0LU5zeEVkZ2VOYXQgR2V0LU5zeEVkZ2VOYXRSdWxlIEdldC1Oc3hFZGdlT3NwZiBHZXQtTnN4RWRnZU9zcGZBcmVhIEdldC1Oc3hFZGdlT3NwZkludGVyZmFjZSBHZXQtTnN4RWRnZVByZWZpeCBHZXQtTnN4RWRnZVJlZGlzdHJpYnV0aW9uUnVsZSBHZXQtTnN4RWRnZVJvdXRpbmcgXCIgK1xuICAgICAgICBcIkdldC1Oc3hFZGdlU3RhdGljUm91dGUgR2V0LU5zeEVkZ2VTdWJJbnRlcmZhY2UgR2V0LU5zeEZpcmV3YWxsRXhjbHVzaW9uTGlzdE1lbWJlciBHZXQtTnN4RmlyZXdhbGxHbG9iYWxDb25maWd1cmF0aW9uIEdldC1Oc3hGaXJld2FsbFB1Ymxpc2hTdGF0dXMgR2V0LU5zeEZpcmV3YWxsUnVsZSBcIiArXG4gICAgICAgIFwiR2V0LU5zeEZpcmV3YWxsUnVsZU1lbWJlciBHZXQtTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gR2V0LU5zeEZpcmV3YWxsU2VjdGlvbiBHZXQtTnN4RmlyZXdhbGxUaHJlc2hvbGQgR2V0LU5zeElwUG9vbCBHZXQtTnN4SXBTZXQgR2V0LU5zeExpY2Vuc2UgR2V0LU5zeExvYWRCYWxhbmNlciBcIiArXG4gICAgICAgIFwiR2V0LU5zeExvYWRCYWxhbmNlckFwcGxpY2F0aW9uUHJvZmlsZSBHZXQtTnN4TG9hZEJhbGFuY2VyQXBwbGljYXRpb25SdWxlIEdldC1Oc3hMb2FkQmFsYW5jZXJNb25pdG9yIEdldC1Oc3hMb2FkQmFsYW5jZXJQb29sIEdldC1Oc3hMb2FkQmFsYW5jZXJQb29sTWVtYmVyIEdldC1Oc3hMb2FkQmFsYW5jZXJTdGF0cyBcIiArXG4gICAgICAgIFwiR2V0LU5zeExvYWRCYWxhbmNlclZpcCBHZXQtTnN4TG9naWNhbFJvdXRlciBHZXQtTnN4TG9naWNhbFJvdXRlckJncCBHZXQtTnN4TG9naWNhbFJvdXRlckJncE5laWdoYm91ciBHZXQtTnN4TG9naWNhbFJvdXRlckJyaWRnZSBHZXQtTnN4TG9naWNhbFJvdXRlckJyaWRnaW5nIFwiICtcbiAgICAgICAgXCJHZXQtTnN4TG9naWNhbFJvdXRlckludGVyZmFjZSBHZXQtTnN4TG9naWNhbFJvdXRlck9zcGYgR2V0LU5zeExvZ2ljYWxSb3V0ZXJPc3BmQXJlYSBHZXQtTnN4TG9naWNhbFJvdXRlck9zcGZJbnRlcmZhY2UgR2V0LU5zeExvZ2ljYWxSb3V0ZXJQcmVmaXggXCIgK1xuICAgICAgICBcIkdldC1Oc3hMb2dpY2FsUm91dGVyUmVkaXN0cmlidXRpb25SdWxlIEdldC1Oc3hMb2dpY2FsUm91dGVyUm91dGluZyBHZXQtTnN4TG9naWNhbFJvdXRlclN0YXRpY1JvdXRlIEdldC1Oc3hMb2dpY2FsU3dpdGNoIEdldC1Oc3hNYWNTZXQgR2V0LU5zeE1hbmFnZXJCYWNrdXAgXCIgK1xuICAgICAgICBcIkdldC1Oc3hNYW5hZ2VyQ2VydGlmaWNhdGUgR2V0LU5zeE1hbmFnZXJDb21wb25lbnRTdW1tYXJ5IEdldC1Oc3hNYW5hZ2VyTmV0d29yayBHZXQtTnN4TWFuYWdlclJvbGUgR2V0LU5zeE1hbmFnZXJTc29Db25maWcgR2V0LU5zeE1hbmFnZXJTeW5jU3RhdHVzIEdldC1Oc3hNYW5hZ2VyU3lzbG9nU2VydmVyIFwiICtcbiAgICAgICAgXCJHZXQtTnN4TWFuYWdlclN5c3RlbVN1bW1hcnkgR2V0LU5zeE1hbmFnZXJUaW1lU2V0dGluZ3MgR2V0LU5zeE1hbmFnZXJWY2VudGVyQ29uZmlnIEdldC1Oc3hTZWNvbmRhcnlNYW5hZ2VyIEdldC1Oc3hTZWN1cml0eUdyb3VwIEdldC1Oc3hTZWN1cml0eUdyb3VwRWZmZWN0aXZlSXBBZGRyZXNzIFwiICtcbiAgICAgICAgXCJHZXQtTnN4U2VjdXJpdHlHcm91cEVmZmVjdGl2ZU1hY0FkZHJlc3MgR2V0LU5zeFNlY3VyaXR5R3JvdXBFZmZlY3RpdmVNZW1iZXIgR2V0LU5zeFNlY3VyaXR5R3JvdXBFZmZlY3RpdmVWaXJ0dWFsTWFjaGluZSBHZXQtTnN4U2VjdXJpdHlHcm91cEVmZmVjdGl2ZVZuaWMgXCIgK1xuICAgICAgICBcIkdldC1Oc3hTZWN1cml0eUdyb3VwTWVtYmVyVHlwZXMgR2V0LU5zeFNlY3VyaXR5UG9saWN5IEdldC1Oc3hTZWN1cml0eVBvbGljeUhpZ2hlc3RVc2VkUHJlY2VkZW5jZSBHZXQtTnN4U2VjdXJpdHlQb2xpY3lSdWxlIEdldC1Oc3hTZWN1cml0eVRhZyBHZXQtTnN4U2VjdXJpdHlUYWdBc3NpZ25tZW50IFwiICtcbiAgICAgICAgXCJHZXQtTnN4U2VnbWVudElkUmFuZ2UgR2V0LU5zeFNlcnZpY2UgR2V0LU5zeFNlcnZpY2VEZWZpbml0aW9uIEdldC1Oc3hTZXJ2aWNlR3JvdXAgR2V0LU5zeFNlcnZpY2VHcm91cE1lbWJlciBHZXQtTnN4U2VydmljZVByb2ZpbGUgR2V0LU5zeFNwb29mZ3VhcmROaWMgR2V0LU5zeFNwb29mZ3VhcmRQb2xpY3kgXCIgK1xuICAgICAgICBcIkdldC1Oc3hTc2xWcG4gR2V0LU5zeFNzbFZwbkF1dGhTZXJ2ZXIgR2V0LU5zeFNzbFZwbkNsaWVudEluc3RhbGxhdGlvblBhY2thZ2UgR2V0LU5zeFNzbFZwbklwUG9vbCBHZXQtTnN4U3NsVnBuUHJpdmF0ZU5ldHdvcmsgR2V0LU5zeFNzbFZwblVzZXIgR2V0LU5zeFRyYW5zcG9ydFpvbmUgXCIgK1xuICAgICAgICBcIkdldC1Oc3hVc2VyUm9sZSBHZXQtTnN4VmRzQ29udGV4dCBHZXQtTnN4dFBvbGljeVNlcnZpY2UgR2V0LU5zeHRTZXJ2aWNlIEdldC1PU0N1c3RvbWl6YXRpb25OaWNNYXBwaW5nIEdldC1PU0N1c3RvbWl6YXRpb25TcGVjIEdldC1PcmcgR2V0LU9yZ05ldHdvcmsgR2V0LU9yZ1ZkYyBcIiArXG4gICAgICAgIFwiR2V0LU9yZ1ZkY05ldHdvcmsgR2V0LU92ZkNvbmZpZ3VyYXRpb24gR2V0LVBTQ3VycmVudENvbmZpZ3VyYXRpb25Ob2RlIEdldC1QU0RlZmF1bHRDb25maWd1cmF0aW9uRG9jdW1lbnQgR2V0LVBTTWV0YUNvbmZpZ0RvY3VtZW50SW5zdFZlcnNpb25JbmZvIEdldC1QU01ldGFDb25maWd1cmF0aW9uUHJvY2Vzc2VkIFwiICtcbiAgICAgICAgXCJHZXQtUFNSZWFkTGluZUtleUhhbmRsZXIgR2V0LVBTUmVhZExpbmVPcHRpb24gR2V0LVBTUmVwb3NpdG9yeSBHZXQtUFNUb3BDb25maWd1cmF0aW9uTmFtZSBHZXQtUFNWZXJzaW9uIEdldC1QYWNrYWdlIEdldC1QYWNrYWdlUHJvdmlkZXIgR2V0LVBhY2thZ2VTb3VyY2UgR2V0LVBhc3N0aHJvdWdoRGV2aWNlIFwiICtcbiAgICAgICAgXCJHZXQtUG9zaXRpb25JbmZvIEdldC1Qb3dlckNMSUNvbW11bml0eSBHZXQtUG93ZXJDTElDb25maWd1cmF0aW9uIEdldC1Qb3dlckNMSUhlbHAgR2V0LVBvd2VyQ0xJVmVyc2lvbiBHZXQtUG93ZXJOc3hWZXJzaW9uIEdldC1Qcm92aWRlclZkYyBHZXQtUHVibGljS2V5RnJvbUZpbGUgXCIgK1xuICAgICAgICBcIkdldC1QdWJsaWNLZXlGcm9tU3RvcmUgR2V0LVJlc291cmNlUG9vbCBHZXQtUnVuc3BhY2UgR2V0LVJ1bnNwYWNlRGVidWcgR2V0LVNjc2lDb250cm9sbGVyIEdldC1TY3NpTHVuIEdldC1TY3NpTHVuUGF0aCBHZXQtU2VjdXJpdHlJbmZvIEdldC1TZWN1cml0eVBvbGljeSBHZXQtU25hcHNob3QgXCIgK1xuICAgICAgICBcIkdldC1TcGJtQ2FwYWJpbGl0eSBHZXQtU3BibUNvbXBhdGlibGVTdG9yYWdlIEdldC1TcGJtRW50aXR5Q29uZmlndXJhdGlvbiBHZXQtU3BibUZhdWx0RG9tYWluIEdldC1TcGJtUG9pbnRJblRpbWVSZXBsaWNhIEdldC1TcGJtUmVwbGljYXRpb25Hcm91cCBHZXQtU3BibVJlcGxpY2F0aW9uUGFpciBcIiArXG4gICAgICAgIFwiR2V0LVNwYm1TdG9yYWdlUG9saWN5IEdldC1TdGF0IEdldC1TdGF0SW50ZXJ2YWwgR2V0LVN0YXRUeXBlIEdldC1UYWcgR2V0LVRhZ0Fzc2lnbm1lbnQgR2V0LVRhZ0NhdGVnb3J5IEdldC1UYXNrIEdldC1UZW1wbGF0ZSBHZXQtVGltZVpvbmUgR2V0LVVwdGltZSBHZXQtVXNiRGV2aWNlIEdldC1WQUlPRmlsdGVyIFwiICtcbiAgICAgICAgXCJHZXQtVkFwcCBHZXQtVkRCbG9ja2VkUG9saWN5IEdldC1WRFBvcnQgR2V0LVZEUG9ydGdyb3VwIEdldC1WRFBvcnRncm91cE92ZXJyaWRlUG9saWN5IEdldC1WRFNlY3VyaXR5UG9saWN5IEdldC1WRFN3aXRjaCBHZXQtVkRTd2l0Y2hQcml2YXRlVmxhbiBHZXQtVkRUcmFmZmljU2hhcGluZ1BvbGljeSBcIiArXG4gICAgICAgIFwiR2V0LVZEVXBsaW5rTGFjcFBvbGljeSBHZXQtVkRVcGxpbmtUZWFtaW5nUG9saWN5IEdldC1WRGlzayBHZXQtVklBY2NvdW50IEdldC1WSUNvbW1hbmQgR2V0LVZJQ3JlZGVudGlhbFN0b3JlSXRlbSBHZXQtVklFdmVudCBHZXQtVklPYmplY3RCeVZJVmlldyBHZXQtVklQZXJtaXNzaW9uIEdldC1WSVByaXZpbGVnZSBcIiArXG4gICAgICAgIFwiR2V0LVZJUHJvcGVydHkgR2V0LVZJUm9sZSBHZXQtVk0gR2V0LVZNR3Vlc3QgR2V0LVZNSG9zdCBHZXQtVk1Ib3N0QWNjb3VudCBHZXQtVk1Ib3N0QWR2YW5jZWRDb25maWd1cmF0aW9uIEdldC1WTUhvc3RBdXRoZW50aWNhdGlvbiBHZXQtVk1Ib3N0QXZhaWxhYmxlVGltZVpvbmUgXCIgK1xuICAgICAgICBcIkdldC1WTUhvc3REaWFnbm9zdGljUGFydGl0aW9uIEdldC1WTUhvc3REaXNrIEdldC1WTUhvc3REaXNrUGFydGl0aW9uIEdldC1WTUhvc3RGaXJld2FsbERlZmF1bHRQb2xpY3kgR2V0LVZNSG9zdEZpcmV3YWxsRXhjZXB0aW9uIEdldC1WTUhvc3RGaXJtd2FyZSBHZXQtVk1Ib3N0SGFyZHdhcmUgXCIgK1xuICAgICAgICBcIkdldC1WTUhvc3RIYmEgR2V0LVZNSG9zdE1vZHVsZSBHZXQtVk1Ib3N0TmV0d29yayBHZXQtVk1Ib3N0TmV0d29ya0FkYXB0ZXIgR2V0LVZNSG9zdE50cFNlcnZlciBHZXQtVk1Ib3N0UGF0Y2ggR2V0LVZNSG9zdFBjaURldmljZSBHZXQtVk1Ib3N0UHJvZmlsZSBcIiArXG4gICAgICAgIFwiR2V0LVZNSG9zdFByb2ZpbGVJbWFnZUNhY2hlQ29uZmlndXJhdGlvbiBHZXQtVk1Ib3N0UHJvZmlsZVJlcXVpcmVkSW5wdXQgR2V0LVZNSG9zdFByb2ZpbGVTdG9yYWdlRGV2aWNlQ29uZmlndXJhdGlvbiBHZXQtVk1Ib3N0UHJvZmlsZVVzZXJDb25maWd1cmF0aW9uIFwiICtcbiAgICAgICAgXCJHZXQtVk1Ib3N0UHJvZmlsZVZtUG9ydEdyb3VwQ29uZmlndXJhdGlvbiBHZXQtVk1Ib3N0Um91dGUgR2V0LVZNSG9zdFNlcnZpY2UgR2V0LVZNSG9zdFNubXAgR2V0LVZNSG9zdFN0YXJ0UG9saWN5IEdldC1WTUhvc3RTdG9yYWdlIEdldC1WTUhvc3RTeXNMb2dTZXJ2ZXIgR2V0LVZNUXVlc3Rpb24gXCIgK1xuICAgICAgICBcIkdldC1WTVJlc291cmNlQ29uZmlndXJhdGlvbiBHZXQtVk1TdGFydFBvbGljeSBHZXQtVlRwbSBHZXQtVlRwbUNTUiBHZXQtVlRwbUNlcnRpZmljYXRlIEdldC1WYXNhUHJvdmlkZXIgR2V0LVZhc2FTdG9yYWdlQXJyYXkgR2V0LVZpZXcgR2V0LVZpcnR1YWxQb3J0R3JvdXAgR2V0LVZpcnR1YWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIkdldC1WbWNTZGRjTmV0d29ya1NlcnZpY2UgR2V0LVZtY1NlcnZpY2UgR2V0LVZzYW5DbHVzdGVyQ29uZmlndXJhdGlvbiBHZXQtVnNhbkNvbXBvbmVudCBHZXQtVnNhbkRpc2sgR2V0LVZzYW5EaXNrR3JvdXAgR2V0LVZzYW5FdmFjdWF0aW9uUGxhbiBHZXQtVnNhbkZhdWx0RG9tYWluIFwiICtcbiAgICAgICAgXCJHZXQtVnNhbklzY3NpSW5pdGlhdG9yR3JvdXAgR2V0LVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwVGFyZ2V0QXNzb2NpYXRpb24gR2V0LVZzYW5Jc2NzaUx1biBHZXQtVnNhbklzY3NpVGFyZ2V0IEdldC1Wc2FuT2JqZWN0IEdldC1Wc2FuUmVzeW5jaW5nQ29tcG9uZW50IEdldC1Wc2FuUnVudGltZUluZm8gXCIgK1xuICAgICAgICBcIkdldC1Wc2FuU3BhY2VVc2FnZSBHZXQtVnNhblN0YXQgR2V0LVZzYW5WaWV3IEdldC12UkFBcHBsaWFuY2VTZXJ2aWNlU3RhdHVzIEdldC12UkFBdXRob3JpemF0aW9uUm9sZSBHZXQtdlJBQmx1ZXByaW50IEdldC12UkFCdXNpbmVzc0dyb3VwIEdldC12UkFDYXRhbG9nSXRlbSBcIiArXG4gICAgICAgIFwiR2V0LXZSQUNhdGFsb2dJdGVtUmVxdWVzdFRlbXBsYXRlIEdldC12UkFDYXRhbG9nUHJpbmNpcGFsIEdldC12UkFDb21wb25lbnRSZWdpc3RyeVNlcnZpY2UgR2V0LXZSQUNvbXBvbmVudFJlZ2lzdHJ5U2VydmljZUVuZHBvaW50IEdldC12UkFDb21wb25lbnRSZWdpc3RyeVNlcnZpY2VTdGF0dXMgXCIgK1xuICAgICAgICBcIkdldC12UkFDb250ZW50IEdldC12UkFDb250ZW50RGF0YSBHZXQtdlJBQ29udGVudFR5cGUgR2V0LXZSQUN1c3RvbUZvcm0gR2V0LXZSQUVudGl0bGVkQ2F0YWxvZ0l0ZW0gR2V0LXZSQUVudGl0bGVkU2VydmljZSBHZXQtdlJBRW50aXRsZW1lbnQgR2V0LXZSQUV4dGVybmFsTmV0d29ya1Byb2ZpbGUgXCIgK1xuICAgICAgICBcIkdldC12UkFHcm91cFByaW5jaXBhbCBHZXQtdlJBSWNvbiBHZXQtdlJBTkFUTmV0d29ya1Byb2ZpbGUgR2V0LXZSQU5ldHdvcmtQcm9maWxlSVBBZGRyZXNzTGlzdCBHZXQtdlJBTmV0d29ya1Byb2ZpbGVJUFJhbmdlU3VtbWFyeSBHZXQtdlJBUGFja2FnZSBHZXQtdlJBUGFja2FnZUNvbnRlbnQgXCIgK1xuICAgICAgICBcIkdldC12UkFQcm9wZXJ0eURlZmluaXRpb24gR2V0LXZSQVByb3BlcnR5R3JvdXAgR2V0LXZSQVJlcXVlc3QgR2V0LXZSQVJlcXVlc3REZXRhaWwgR2V0LXZSQVJlc2VydmF0aW9uIEdldC12UkFSZXNlcnZhdGlvbkNvbXB1dGVSZXNvdXJjZSBHZXQtdlJBUmVzZXJ2YXRpb25Db21wdXRlUmVzb3VyY2VNZW1vcnkgXCIgK1xuICAgICAgICBcIkdldC12UkFSZXNlcnZhdGlvbkNvbXB1dGVSZXNvdXJjZU5ldHdvcmsgR2V0LXZSQVJlc2VydmF0aW9uQ29tcHV0ZVJlc291cmNlUmVzb3VyY2VQb29sIEdldC12UkFSZXNlcnZhdGlvbkNvbXB1dGVSZXNvdXJjZVN0b3JhZ2UgR2V0LXZSQVJlc2VydmF0aW9uUG9saWN5IFwiICtcbiAgICAgICAgXCJHZXQtdlJBUmVzZXJ2YXRpb25UZW1wbGF0ZSBHZXQtdlJBUmVzZXJ2YXRpb25UeXBlIEdldC12UkFSZXNvdXJjZSBHZXQtdlJBUmVzb3VyY2VBY3Rpb24gR2V0LXZSQVJlc291cmNlQWN0aW9uUmVxdWVzdFRlbXBsYXRlIEdldC12UkFSZXNvdXJjZU1ldHJpYyBHZXQtdlJBUmVzb3VyY2VPcGVyYXRpb24gXCIgK1xuICAgICAgICBcIkdldC12UkFSZXNvdXJjZVR5cGUgR2V0LXZSQVJvdXRlZE5ldHdvcmtQcm9maWxlIEdldC12UkFTZXJ2aWNlIEdldC12UkFTZXJ2aWNlQmx1ZXByaW50IEdldC12UkFTb3VyY2VNYWNoaW5lIEdldC12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgR2V0LXZSQVRlbmFudCBHZXQtdlJBVGVuYW50RGlyZWN0b3J5IFwiICtcbiAgICAgICAgXCJHZXQtdlJBVGVuYW50RGlyZWN0b3J5U3RhdHVzIEdldC12UkFUZW5hbnRSb2xlIEdldC12UkFVc2VyUHJpbmNpcGFsIEdldC12UkFVc2VyUHJpbmNpcGFsR3JvdXBNZW1iZXJzaGlwIEdldC12UkFWZXJzaW9uIEdldC12Uk5JQVBJVmVyc2lvbiBHZXQtdlJOSUFwcGxpY2F0aW9uIFwiICtcbiAgICAgICAgXCJHZXQtdlJOSUFwcGxpY2F0aW9uVGllciBHZXQtdlJOSURhdGFTb3VyY2UgR2V0LXZSTklEYXRhU291cmNlU05NUENvbmZpZyBHZXQtdlJOSURhdGFzdG9yZSBHZXQtdlJOSURpc3RyaWJ1dGVkU3dpdGNoIEdldC12Uk5JRGlzdHJpYnV0ZWRTd2l0Y2hQb3J0R3JvdXAgR2V0LXZSTklFbnRpdHkgXCIgK1xuICAgICAgICBcIkdldC12Uk5JRW50aXR5TmFtZSBHZXQtdlJOSUZpcmV3YWxsUnVsZSBHZXQtdlJOSUZsb3cgR2V0LXZSTklIb3N0IEdldC12Uk5JSG9zdFZNS05pYyBHZXQtdlJOSUlQU2V0IEdldC12Uk5JTDJOZXR3b3JrIEdldC12Uk5JTlNYTWFuYWdlciBHZXQtdlJOSU5vZGVzIEdldC12Uk5JUHJvYmxlbSBcIiArXG4gICAgICAgIFwiR2V0LXZSTklSZWNvbW1lbmRlZFJ1bGVzIEdldC12Uk5JUmVjb21tZW5kZWRSdWxlc05zeEJ1bmRsZSBHZXQtdlJOSVNlY3VyaXR5R3JvdXAgR2V0LXZSTklTZWN1cml0eVRhZyBHZXQtdlJOSVNlcnZpY2UgR2V0LXZSTklTZXJ2aWNlR3JvdXAgR2V0LXZSTklWTSBHZXQtdlJOSVZNdk5JQyBcIiArXG4gICAgICAgIFwiR2V0LXZSTkl2Q2VudGVyIEdldC12Uk5JdkNlbnRlckNsdXN0ZXIgR2V0LXZSTkl2Q2VudGVyRGF0YWNlbnRlciBHZXQtdlJOSXZDZW50ZXJGb2xkZXIgR3JhbnQtTnN4U3Bvb2ZndWFyZE5pY0FwcHJvdmFsIEltcG9ydC1DSVZBcHAgSW1wb3J0LUNJVkFwcFRlbXBsYXRlIEltcG9ydC1Oc3hPYmplY3QgXCIgK1xuICAgICAgICBcIkltcG9ydC1QYWNrYWdlUHJvdmlkZXIgSW1wb3J0LVBvd2VyU2hlbGxEYXRhRmlsZSBJbXBvcnQtU3BibVN0b3JhZ2VQb2xpY3kgSW1wb3J0LVZBcHAgSW1wb3J0LVZNSG9zdFByb2ZpbGUgSW1wb3J0LXZSQUNvbnRlbnREYXRhIEltcG9ydC12UkFJY29uIEltcG9ydC12UkFQYWNrYWdlIFwiICtcbiAgICAgICAgXCJJbml0aWFsaXplLUNvbmZpZ3VyYXRpb25SdW50aW1lU3RhdGUgSW5zdGFsbC1Nb2R1bGUgSW5zdGFsbC1Oc3hDbHVzdGVyIEluc3RhbGwtUGFja2FnZSBJbnN0YWxsLVBhY2thZ2VQcm92aWRlciBJbnN0YWxsLVNjcmlwdCBJbnN0YWxsLVZNSG9zdFBhdGNoIEludm9rZS1EcnNSZWNvbW1lbmRhdGlvbiBcIiArXG4gICAgICAgIFwiSW52b2tlLU5zeENsaSBJbnZva2UtTnN4Q2x1c3RlclJlc29sdmVBbGwgSW52b2tlLU5zeE1hbmFnZXJTeW5jIEludm9rZS1Oc3hSZXN0TWV0aG9kIEludm9rZS1Oc3hXZWJSZXF1ZXN0IEludm9rZS1WTUhvc3RQcm9maWxlIEludm9rZS1WTVNjcmlwdCBJbnZva2UtWHBhdGhRdWVyeSBcIiArXG4gICAgICAgIFwiSW52b2tlLXZSQURhdGFDb2xsZWN0aW9uIEludm9rZS12UkFSZXN0TWV0aG9kIEludm9rZS12UkFUZW5hbnREaXJlY3RvcnlTeW5jIEludm9rZS12Uk5JUmVzdE1ldGhvZCBKb2luLVN0cmluZyBNb3VudC1Ub29scyBNb3ZlLUNsdXN0ZXIgTW92ZS1EYXRhY2VudGVyIE1vdmUtRGF0YXN0b3JlIE1vdmUtRm9sZGVyIFwiICtcbiAgICAgICAgXCJNb3ZlLUhhcmREaXNrIE1vdmUtSW52ZW50b3J5IE1vdmUtTnN4U2VjdXJpdHlQb2xpY3lSdWxlIE1vdmUtUmVzb3VyY2VQb29sIE1vdmUtVGVtcGxhdGUgTW92ZS1WQXBwIE1vdmUtVkRpc2sgTW92ZS1WTSBNb3ZlLVZNSG9zdCBOZXctQWR2YW5jZWRTZXR0aW5nIE5ldy1BbGFybUFjdGlvbiBcIiArXG4gICAgICAgIFwiTmV3LUFsYXJtQWN0aW9uVHJpZ2dlciBOZXctQ0REcml2ZSBOZXctQ0lBY2Nlc3NDb250cm9sUnVsZSBOZXctQ0lWQXBwIE5ldy1DSVZBcHBOZXR3b3JrIE5ldy1DSVZBcHBUZW1wbGF0ZSBOZXctQ0lWTSBOZXctQ2x1c3RlciBOZXctQ3VzdG9tQXR0cmlidXRlIE5ldy1EYXRhY2VudGVyIE5ldy1EYXRhc3RvcmUgXCIgK1xuICAgICAgICBcIk5ldy1EYXRhc3RvcmVDbHVzdGVyIE5ldy1EYXRhc3RvcmVEcml2ZSBOZXctRHJzQ2x1c3Rlckdyb3VwIE5ldy1EcnNSdWxlIE5ldy1EcnNWTUhvc3RSdWxlIE5ldy1Ec2NDaGVja3N1bSBOZXctRmxvcHB5RHJpdmUgTmV3LUZvbGRlciBOZXctR3VpZCBOZXctSENYQXBwbGlhbmNlIE5ldy1IQ1hNaWdyYXRpb24gXCIgK1xuICAgICAgICBcIk5ldy1IQ1hOZXR3b3JrRXh0ZW5zaW9uIE5ldy1IQ1hOZXR3b3JrTWFwcGluZyBOZXctSENYUmVwbGljYXRpb24gTmV3LUhDWFNpdGVQYWlyaW5nIE5ldy1IQ1hTdGF0aWNSb3V0ZSBOZXctSGFyZERpc2sgTmV3LUlTY3NpSGJhVGFyZ2V0IE5ldy1LbWlwQ2xpZW50Q2VydGlmaWNhdGUgXCIgK1xuICAgICAgICBcIk5ldy1OZXR3b3JrQWRhcHRlciBOZXctTmZzVXNlciBOZXctTnN4QWRkcmVzc1NwZWMgTmV3LU5zeENsdXN0ZXJWeGxhbkNvbmZpZyBOZXctTnN4Q29udHJvbGxlciBOZXctTnN4RHluYW1pY0NyaXRlcmlhU3BlYyBOZXctTnN4RWRnZSBOZXctTnN4RWRnZUJncE5laWdoYm91ciBOZXctTnN4RWRnZUNzciBcIiArXG4gICAgICAgIFwiTmV3LU5zeEVkZ2VGaXJld2FsbFJ1bGUgTmV3LU5zeEVkZ2VJbnRlcmZhY2VTcGVjIE5ldy1Oc3hFZGdlTmF0UnVsZSBOZXctTnN4RWRnZU9zcGZBcmVhIE5ldy1Oc3hFZGdlT3NwZkludGVyZmFjZSBOZXctTnN4RWRnZVByZWZpeCBOZXctTnN4RWRnZVJlZGlzdHJpYnV0aW9uUnVsZSBcIiArXG4gICAgICAgIFwiTmV3LU5zeEVkZ2VTZWxmU2lnbmVkQ2VydGlmaWNhdGUgTmV3LU5zeEVkZ2VTdGF0aWNSb3V0ZSBOZXctTnN4RWRnZVN1YkludGVyZmFjZSBOZXctTnN4RWRnZVN1YkludGVyZmFjZVNwZWMgTmV3LU5zeEZpcmV3YWxsUnVsZSBOZXctTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gXCIgK1xuICAgICAgICBcIk5ldy1Oc3hGaXJld2FsbFNlY3Rpb24gTmV3LU5zeElwUG9vbCBOZXctTnN4SXBTZXQgTmV3LU5zeExvYWRCYWxhbmNlckFwcGxpY2F0aW9uUHJvZmlsZSBOZXctTnN4TG9hZEJhbGFuY2VyQXBwbGljYXRpb25SdWxlIE5ldy1Oc3hMb2FkQmFsYW5jZXJNZW1iZXJTcGVjIFwiICtcbiAgICAgICAgXCJOZXctTnN4TG9hZEJhbGFuY2VyTW9uaXRvciBOZXctTnN4TG9hZEJhbGFuY2VyUG9vbCBOZXctTnN4TG9naWNhbFJvdXRlciBOZXctTnN4TG9naWNhbFJvdXRlckJncE5laWdoYm91ciBOZXctTnN4TG9naWNhbFJvdXRlckJyaWRnZSBOZXctTnN4TG9naWNhbFJvdXRlckludGVyZmFjZSBcIiArXG4gICAgICAgIFwiTmV3LU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2VTcGVjIE5ldy1Oc3hMb2dpY2FsUm91dGVyT3NwZkFyZWEgTmV3LU5zeExvZ2ljYWxSb3V0ZXJPc3BmSW50ZXJmYWNlIE5ldy1Oc3hMb2dpY2FsUm91dGVyUHJlZml4IE5ldy1Oc3hMb2dpY2FsUm91dGVyUmVkaXN0cmlidXRpb25SdWxlIFwiICtcbiAgICAgICAgXCJOZXctTnN4TG9naWNhbFJvdXRlclN0YXRpY1JvdXRlIE5ldy1Oc3hMb2dpY2FsU3dpdGNoIE5ldy1Oc3hNYWNTZXQgTmV3LU5zeE1hbmFnZXIgTmV3LU5zeFNlY3VyaXR5R3JvdXAgTmV3LU5zeFNlY3VyaXR5UG9saWN5IE5ldy1Oc3hTZWN1cml0eVBvbGljeUFzc2lnbm1lbnQgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hTZWN1cml0eVBvbGljeUZpcmV3YWxsUnVsZVNwZWMgTmV3LU5zeFNlY3VyaXR5UG9saWN5R3Vlc3RJbnRyb3NwZWN0aW9uU3BlYyBOZXctTnN4U2VjdXJpdHlQb2xpY3lOZXR3b3JrSW50cm9zcGVjdGlvblNwZWMgTmV3LU5zeFNlY3VyaXR5VGFnIE5ldy1Oc3hTZWN1cml0eVRhZ0Fzc2lnbm1lbnQgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hTZWdtZW50SWRSYW5nZSBOZXctTnN4U2VydmljZSBOZXctTnN4U2VydmljZUdyb3VwIE5ldy1Oc3hTcG9vZmd1YXJkUG9saWN5IE5ldy1Oc3hTc2xWcG5BdXRoU2VydmVyIE5ldy1Oc3hTc2xWcG5DbGllbnRJbnN0YWxsYXRpb25QYWNrYWdlIE5ldy1Oc3hTc2xWcG5JcFBvb2wgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hTc2xWcG5Qcml2YXRlTmV0d29yayBOZXctTnN4U3NsVnBuVXNlciBOZXctTnN4VHJhbnNwb3J0Wm9uZSBOZXctTnN4VmRzQ29udGV4dCBOZXctT1NDdXN0b21pemF0aW9uTmljTWFwcGluZyBOZXctT1NDdXN0b21pemF0aW9uU3BlYyBOZXctT3JnIE5ldy1PcmdOZXR3b3JrIE5ldy1PcmdWZGMgXCIgK1xuICAgICAgICBcIk5ldy1PcmdWZGNOZXR3b3JrIE5ldy1SZXNvdXJjZVBvb2wgTmV3LVNjcmlwdEZpbGVJbmZvIE5ldy1TY3NpQ29udHJvbGxlciBOZXctU25hcHNob3QgTmV3LVNwYm1SdWxlIE5ldy1TcGJtUnVsZVNldCBOZXctU3BibVN0b3JhZ2VQb2xpY3kgTmV3LVN0YXRJbnRlcnZhbCBOZXctVGFnIFwiICtcbiAgICAgICAgXCJOZXctVGFnQXNzaWdubWVudCBOZXctVGFnQ2F0ZWdvcnkgTmV3LVRlbXBsYXRlIE5ldy1UZW1wb3JhcnlGaWxlIE5ldy1WQUlPRmlsdGVyIE5ldy1WQXBwIE5ldy1WRFBvcnRncm91cCBOZXctVkRTd2l0Y2ggTmV3LVZEU3dpdGNoUHJpdmF0ZVZsYW4gTmV3LVZEaXNrIFwiICtcbiAgICAgICAgXCJOZXctVklDcmVkZW50aWFsU3RvcmVJdGVtIE5ldy1WSUludmVudG9yeURyaXZlIE5ldy1WSVBlcm1pc3Npb24gTmV3LVZJUHJvcGVydHkgTmV3LVZJUm9sZSBOZXctVklTYW1sU2VjdXJpdHlDb250ZXh0IE5ldy1WTSBOZXctVk1Ib3N0QWNjb3VudCBOZXctVk1Ib3N0TmV0d29ya0FkYXB0ZXIgXCIgK1xuICAgICAgICBcIk5ldy1WTUhvc3RQcm9maWxlIE5ldy1WTUhvc3RQcm9maWxlVm1Qb3J0R3JvdXBDb25maWd1cmF0aW9uIE5ldy1WTUhvc3RSb3V0ZSBOZXctVlRwbSBOZXctVmFzYVByb3ZpZGVyIE5ldy1WY3NPQXV0aFNlY3VyaXR5Q29udGV4dCBOZXctVmlydHVhbFBvcnRHcm91cCBOZXctVmlydHVhbFN3aXRjaCBcIiArXG4gICAgICAgIFwiTmV3LVZzYW5EaXNrIE5ldy1Wc2FuRGlza0dyb3VwIE5ldy1Wc2FuRmF1bHREb21haW4gTmV3LVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwIE5ldy1Wc2FuSXNjc2lJbml0aWF0b3JHcm91cFRhcmdldEFzc29jaWF0aW9uIE5ldy1Wc2FuSXNjc2lMdW4gTmV3LVZzYW5Jc2NzaVRhcmdldCBcIiArXG4gICAgICAgIFwiTmV3LXZSQUJ1c2luZXNzR3JvdXAgTmV3LXZSQUVudGl0bGVtZW50IE5ldy12UkFFeHRlcm5hbE5ldHdvcmtQcm9maWxlIE5ldy12UkFHcm91cFByaW5jaXBhbCBOZXctdlJBTkFUTmV0d29ya1Byb2ZpbGUgTmV3LXZSQU5ldHdvcmtQcm9maWxlSVBSYW5nZURlZmluaXRpb24gTmV3LXZSQVBhY2thZ2UgXCIgK1xuICAgICAgICBcIk5ldy12UkFQcm9wZXJ0eURlZmluaXRpb24gTmV3LXZSQVByb3BlcnR5R3JvdXAgTmV3LXZSQVJlc2VydmF0aW9uIE5ldy12UkFSZXNlcnZhdGlvbk5ldHdvcmtEZWZpbml0aW9uIE5ldy12UkFSZXNlcnZhdGlvblBvbGljeSBOZXctdlJBUmVzZXJ2YXRpb25TdG9yYWdlRGVmaW5pdGlvbiBcIiArXG4gICAgICAgIFwiTmV3LXZSQVJvdXRlZE5ldHdvcmtQcm9maWxlIE5ldy12UkFTZXJ2aWNlIE5ldy12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgTmV3LXZSQVRlbmFudCBOZXctdlJBVGVuYW50RGlyZWN0b3J5IE5ldy12UkFVc2VyUHJpbmNpcGFsIE5ldy12Uk5JQXBwbGljYXRpb24gTmV3LXZSTklBcHBsaWNhdGlvblRpZXIgXCIgK1xuICAgICAgICBcIk5ldy12Uk5JRGF0YVNvdXJjZSBPcGVuLVZNQ29uc29sZVdpbmRvdyBQdWJsaXNoLU1vZHVsZSBQdWJsaXNoLU5zeFNwb29mZ3VhcmRQb2xpY3kgUHVibGlzaC1TY3JpcHQgUmVnaXN0ZXItUFNSZXBvc2l0b3J5IFJlZ2lzdGVyLVBhY2thZ2VTb3VyY2UgUmVtb3ZlLUFkdmFuY2VkU2V0dGluZyBcIiArXG4gICAgICAgIFwiUmVtb3ZlLUFsYXJtQWN0aW9uIFJlbW92ZS1BbGFybUFjdGlvblRyaWdnZXIgUmVtb3ZlLUFsaWFzIFJlbW92ZS1DRERyaXZlIFJlbW92ZS1DSUFjY2Vzc0NvbnRyb2xSdWxlIFJlbW92ZS1DSVZBcHAgUmVtb3ZlLUNJVkFwcE5ldHdvcmsgUmVtb3ZlLUNJVkFwcFRlbXBsYXRlIFJlbW92ZS1DbHVzdGVyIFwiICtcbiAgICAgICAgXCJSZW1vdmUtQ3VzdG9tQXR0cmlidXRlIFJlbW92ZS1EYXRhY2VudGVyIFJlbW92ZS1EYXRhc3RvcmUgUmVtb3ZlLURhdGFzdG9yZUNsdXN0ZXIgUmVtb3ZlLURyc0NsdXN0ZXJHcm91cCBSZW1vdmUtRHJzUnVsZSBSZW1vdmUtRHJzVk1Ib3N0UnVsZSBSZW1vdmUtRmxvcHB5RHJpdmUgUmVtb3ZlLUZvbGRlciBcIiArXG4gICAgICAgIFwiUmVtb3ZlLUhDWEFwcGxpYW5jZSBSZW1vdmUtSENYTmV0d29ya0V4dGVuc2lvbiBSZW1vdmUtSENYUmVwbGljYXRpb24gUmVtb3ZlLUhDWFNpdGVQYWlyaW5nIFJlbW92ZS1IYXJkRGlzayBSZW1vdmUtSVNjc2lIYmFUYXJnZXQgUmVtb3ZlLUludmVudG9yeSBSZW1vdmUtS2V5TWFuYWdlbWVudFNlcnZlciBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5ldHdvcmtBZGFwdGVyIFJlbW92ZS1OZnNVc2VyIFJlbW92ZS1Oc3hDbHVzdGVyIFJlbW92ZS1Oc3hDbHVzdGVyVnhsYW5Db25maWcgUmVtb3ZlLU5zeENvbnRyb2xsZXIgUmVtb3ZlLU5zeER5bmFtaWNDcml0ZXJpYSBSZW1vdmUtTnN4RHluYW1pY01lbWJlclNldCBSZW1vdmUtTnN4RWRnZSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeEVkZ2VCZ3BOZWlnaGJvdXIgUmVtb3ZlLU5zeEVkZ2VDZXJ0aWZpY2F0ZSBSZW1vdmUtTnN4RWRnZUNzciBSZW1vdmUtTnN4RWRnZUZpcmV3YWxsUnVsZSBSZW1vdmUtTnN4RWRnZUludGVyZmFjZUFkZHJlc3MgUmVtb3ZlLU5zeEVkZ2VOYXRSdWxlIFJlbW92ZS1Oc3hFZGdlT3NwZkFyZWEgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hFZGdlT3NwZkludGVyZmFjZSBSZW1vdmUtTnN4RWRnZVByZWZpeCBSZW1vdmUtTnN4RWRnZVJlZGlzdHJpYnV0aW9uUnVsZSBSZW1vdmUtTnN4RWRnZVN0YXRpY1JvdXRlIFJlbW92ZS1Oc3hFZGdlU3ViSW50ZXJmYWNlIFJlbW92ZS1Oc3hGaXJld2FsbEV4Y2x1c2lvbkxpc3RNZW1iZXIgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hGaXJld2FsbFJ1bGUgUmVtb3ZlLU5zeEZpcmV3YWxsUnVsZU1lbWJlciBSZW1vdmUtTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gUmVtb3ZlLU5zeEZpcmV3YWxsU2VjdGlvbiBSZW1vdmUtTnN4SXBQb29sIFJlbW92ZS1Oc3hJcFNldCBSZW1vdmUtTnN4SXBTZXRNZW1iZXIgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hMb2FkQmFsYW5jZXJBcHBsaWNhdGlvblByb2ZpbGUgUmVtb3ZlLU5zeExvYWRCYWxhbmNlck1vbml0b3IgUmVtb3ZlLU5zeExvYWRCYWxhbmNlclBvb2wgUmVtb3ZlLU5zeExvYWRCYWxhbmNlclBvb2xNZW1iZXIgUmVtb3ZlLU5zeExvYWRCYWxhbmNlclZpcCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXIgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJCZ3BOZWlnaGJvdXIgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJCcmlkZ2UgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2UgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJPc3BmQXJlYSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJPc3BmSW50ZXJmYWNlIFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyUHJlZml4IFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyUmVkaXN0cmlidXRpb25SdWxlIFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyU3RhdGljUm91dGUgUmVtb3ZlLU5zeExvZ2ljYWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hNYWNTZXQgUmVtb3ZlLU5zeFNlY29uZGFyeU1hbmFnZXIgUmVtb3ZlLU5zeFNlY3VyaXR5R3JvdXAgUmVtb3ZlLU5zeFNlY3VyaXR5R3JvdXBNZW1iZXIgUmVtb3ZlLU5zeFNlY3VyaXR5UG9saWN5IFJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeUFzc2lnbm1lbnQgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeVJ1bGUgUmVtb3ZlLU5zeFNlY3VyaXR5UG9saWN5UnVsZUdyb3VwIFJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeVJ1bGVTZXJ2aWNlIFJlbW92ZS1Oc3hTZWN1cml0eVRhZyBSZW1vdmUtTnN4U2VjdXJpdHlUYWdBc3NpZ25tZW50IFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4U2VnbWVudElkUmFuZ2UgUmVtb3ZlLU5zeFNlcnZpY2UgUmVtb3ZlLU5zeFNlcnZpY2VHcm91cCBSZW1vdmUtTnN4U3Bvb2ZndWFyZFBvbGljeSBSZW1vdmUtTnN4U3NsVnBuQ2xpZW50SW5zdGFsbGF0aW9uUGFja2FnZSBSZW1vdmUtTnN4U3NsVnBuSXBQb29sIFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4U3NsVnBuUHJpdmF0ZU5ldHdvcmsgUmVtb3ZlLU5zeFNzbFZwblVzZXIgUmVtb3ZlLU5zeFRyYW5zcG9ydFpvbmUgUmVtb3ZlLU5zeFRyYW5zcG9ydFpvbmVNZW1iZXIgUmVtb3ZlLU5zeFZkc0NvbnRleHQgUmVtb3ZlLU9TQ3VzdG9taXphdGlvbk5pY01hcHBpbmcgXCIgK1xuICAgICAgICBcIlJlbW92ZS1PU0N1c3RvbWl6YXRpb25TcGVjIFJlbW92ZS1PcmcgUmVtb3ZlLU9yZ05ldHdvcmsgUmVtb3ZlLU9yZ1ZkYyBSZW1vdmUtT3JnVmRjTmV0d29yayBSZW1vdmUtUFNSZWFkTGluZUtleUhhbmRsZXIgUmVtb3ZlLVBhc3N0aHJvdWdoRGV2aWNlIFJlbW92ZS1SZXNvdXJjZVBvb2wgXCIgK1xuICAgICAgICBcIlJlbW92ZS1TbmFwc2hvdCBSZW1vdmUtU3BibVN0b3JhZ2VQb2xpY3kgUmVtb3ZlLVN0YXRJbnRlcnZhbCBSZW1vdmUtVGFnIFJlbW92ZS1UYWdBc3NpZ25tZW50IFJlbW92ZS1UYWdDYXRlZ29yeSBSZW1vdmUtVGVtcGxhdGUgUmVtb3ZlLVVzYkRldmljZSBSZW1vdmUtVkFJT0ZpbHRlciBSZW1vdmUtVkFwcCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZEUG9ydEdyb3VwIFJlbW92ZS1WRFN3aXRjaCBSZW1vdmUtVkRTd2l0Y2hQaHlzaWNhbE5ldHdvcmtBZGFwdGVyIFJlbW92ZS1WRFN3aXRjaFByaXZhdGVWbGFuIFJlbW92ZS1WRFN3aXRjaFZNSG9zdCBSZW1vdmUtVkRpc2sgUmVtb3ZlLVZJQ3JlZGVudGlhbFN0b3JlSXRlbSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZJUGVybWlzc2lvbiBSZW1vdmUtVklQcm9wZXJ0eSBSZW1vdmUtVklSb2xlIFJlbW92ZS1WTSBSZW1vdmUtVk1Ib3N0IFJlbW92ZS1WTUhvc3RBY2NvdW50IFJlbW92ZS1WTUhvc3ROZXR3b3JrQWRhcHRlciBSZW1vdmUtVk1Ib3N0TnRwU2VydmVyIFJlbW92ZS1WTUhvc3RQcm9maWxlIFwiICtcbiAgICAgICAgXCJSZW1vdmUtVk1Ib3N0UHJvZmlsZVZtUG9ydEdyb3VwQ29uZmlndXJhdGlvbiBSZW1vdmUtVk1Ib3N0Um91dGUgUmVtb3ZlLVZUcG0gUmVtb3ZlLVZhc2FQcm92aWRlciBSZW1vdmUtVmlydHVhbFBvcnRHcm91cCBSZW1vdmUtVmlydHVhbFN3aXRjaCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZpcnR1YWxTd2l0Y2hQaHlzaWNhbE5ldHdvcmtBZGFwdGVyIFJlbW92ZS1Wc2FuRGlzayBSZW1vdmUtVnNhbkRpc2tHcm91cCBSZW1vdmUtVnNhbkZhdWx0RG9tYWluIFJlbW92ZS1Wc2FuSXNjc2lJbml0aWF0b3JHcm91cCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwVGFyZ2V0QXNzb2NpYXRpb24gUmVtb3ZlLVZzYW5Jc2NzaUx1biBSZW1vdmUtVnNhbklzY3NpVGFyZ2V0IFJlbW92ZS12UkFCdXNpbmVzc0dyb3VwIFJlbW92ZS12UkFDdXN0b21Gb3JtIFJlbW92ZS12UkFFeHRlcm5hbE5ldHdvcmtQcm9maWxlIFwiICtcbiAgICAgICAgXCJSZW1vdmUtdlJBR3JvdXBQcmluY2lwYWwgUmVtb3ZlLXZSQUljb24gUmVtb3ZlLXZSQU5BVE5ldHdvcmtQcm9maWxlIFJlbW92ZS12UkFQYWNrYWdlIFJlbW92ZS12UkFQcmluY2lwYWxGcm9tVGVuYW50Um9sZSBSZW1vdmUtdlJBUHJvcGVydHlEZWZpbml0aW9uIFJlbW92ZS12UkFQcm9wZXJ0eUdyb3VwIFwiICtcbiAgICAgICAgXCJSZW1vdmUtdlJBUmVzZXJ2YXRpb24gUmVtb3ZlLXZSQVJlc2VydmF0aW9uTmV0d29yayBSZW1vdmUtdlJBUmVzZXJ2YXRpb25Qb2xpY3kgUmVtb3ZlLXZSQVJlc2VydmF0aW9uU3RvcmFnZSBSZW1vdmUtdlJBUm91dGVkTmV0d29ya1Byb2ZpbGUgUmVtb3ZlLXZSQVNlcnZpY2UgXCIgK1xuICAgICAgICBcIlJlbW92ZS12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgUmVtb3ZlLXZSQVRlbmFudCBSZW1vdmUtdlJBVGVuYW50RGlyZWN0b3J5IFJlbW92ZS12UkFVc2VyUHJpbmNpcGFsIFJlbW92ZS12Uk5JQXBwbGljYXRpb24gUmVtb3ZlLXZSTklBcHBsaWNhdGlvblRpZXIgUmVtb3ZlLXZSTklEYXRhU291cmNlIFwiICtcbiAgICAgICAgXCJSZXBhaXItTnN4RWRnZSBSZXBhaXItVnNhbk9iamVjdCBSZXF1ZXN0LXZSQUNhdGFsb2dJdGVtIFJlcXVlc3QtdlJBUmVzb3VyY2VBY3Rpb24gUmVzdGFydC1DSVZBcHAgUmVzdGFydC1DSVZBcHBHdWVzdCBSZXN0YXJ0LUNJVk0gUmVzdGFydC1DSVZNR3Vlc3QgUmVzdGFydC1WTSBSZXN0YXJ0LVZNR3Vlc3QgXCIgK1xuICAgICAgICBcIlJlc3RhcnQtVk1Ib3N0IFJlc3RhcnQtVk1Ib3N0U2VydmljZSBSZXN1bWUtSENYUmVwbGljYXRpb24gUmV2b2tlLU5zeFNwb29mZ3VhcmROaWNBcHByb3ZhbCBTYXZlLU1vZHVsZSBTYXZlLVBhY2thZ2UgU2F2ZS1TY3JpcHQgU2VhcmNoLUNsb3VkIFNldC1BZHZhbmNlZFNldHRpbmcgXCIgK1xuICAgICAgICBcIlNldC1BbGFybURlZmluaXRpb24gU2V0LUFubm90YXRpb24gU2V0LUNERHJpdmUgU2V0LUNJQWNjZXNzQ29udHJvbFJ1bGUgU2V0LUNJTmV0d29ya0FkYXB0ZXIgU2V0LUNJVkFwcCBTZXQtQ0lWQXBwTmV0d29yayBTZXQtQ0lWQXBwU3RhcnRSdWxlIFNldC1DSVZBcHBUZW1wbGF0ZSBTZXQtQ2x1c3RlciBcIiArXG4gICAgICAgIFwiU2V0LUN1c3RvbUF0dHJpYnV0ZSBTZXQtRGF0YWNlbnRlciBTZXQtRGF0YXN0b3JlIFNldC1EYXRhc3RvcmVDbHVzdGVyIFNldC1EcnNDbHVzdGVyR3JvdXAgU2V0LURyc1J1bGUgU2V0LURyc1ZNSG9zdFJ1bGUgU2V0LUZsb3BweURyaXZlIFNldC1Gb2xkZXIgU2V0LUhDWEFwcGxpYW5jZSBcIiArXG4gICAgICAgIFwiU2V0LUhDWE1pZ3JhdGlvbiBTZXQtSENYUmVwbGljYXRpb24gU2V0LUhhcmREaXNrIFNldC1JU2NzaUhiYVRhcmdldCBTZXQtS2V5TWFuYWdlbWVudFNlcnZlciBTZXQtS21zQ2x1c3RlciBTZXQtTWFya2Rvd25PcHRpb24gU2V0LU5ldHdvcmtBZGFwdGVyIFNldC1OZnNVc2VyIFNldC1OaWNUZWFtaW5nUG9saWN5IFwiICtcbiAgICAgICAgXCJTZXQtTm9kZUV4Y2x1c2l2ZVJlc291cmNlcyBTZXQtTm9kZU1hbmFnZXIgU2V0LU5vZGVSZXNvdXJjZVNvdXJjZSBTZXQtTm9kZVJlc291cmNlcyBTZXQtTnN4RWRnZSBTZXQtTnN4RWRnZUJncCBTZXQtTnN4RWRnZUZpcmV3YWxsIFNldC1Oc3hFZGdlSW50ZXJmYWNlIFNldC1Oc3hFZGdlTmF0IFwiICtcbiAgICAgICAgXCJTZXQtTnN4RWRnZU9zcGYgU2V0LU5zeEVkZ2VSb3V0aW5nIFNldC1Oc3hGaXJld2FsbEdsb2JhbENvbmZpZ3VyYXRpb24gU2V0LU5zeEZpcmV3YWxsUnVsZSBTZXQtTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gU2V0LU5zeEZpcmV3YWxsVGhyZXNob2xkIFNldC1Oc3hMb2FkQmFsYW5jZXIgXCIgK1xuICAgICAgICBcIlNldC1Oc3hMb2FkQmFsYW5jZXJQb29sTWVtYmVyIFNldC1Oc3hMb2dpY2FsUm91dGVyIFNldC1Oc3hMb2dpY2FsUm91dGVyQmdwIFNldC1Oc3hMb2dpY2FsUm91dGVyQnJpZGdpbmcgU2V0LU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2UgU2V0LU5zeExvZ2ljYWxSb3V0ZXJPc3BmIFwiICtcbiAgICAgICAgXCJTZXQtTnN4TG9naWNhbFJvdXRlclJvdXRpbmcgU2V0LU5zeE1hbmFnZXIgU2V0LU5zeE1hbmFnZXJSb2xlIFNldC1Oc3hNYW5hZ2VyVGltZVNldHRpbmdzIFNldC1Oc3hTZWN1cml0eVBvbGljeSBTZXQtTnN4U2VjdXJpdHlQb2xpY3lGaXJld2FsbFJ1bGUgU2V0LU5zeFNzbFZwbiBcIiArXG4gICAgICAgIFwiU2V0LU9TQ3VzdG9taXphdGlvbk5pY01hcHBpbmcgU2V0LU9TQ3VzdG9taXphdGlvblNwZWMgU2V0LU9yZyBTZXQtT3JnTmV0d29yayBTZXQtT3JnVmRjIFNldC1PcmdWZGNOZXR3b3JrIFNldC1QU0N1cnJlbnRDb25maWd1cmF0aW9uTm9kZSBTZXQtUFNEZWZhdWx0Q29uZmlndXJhdGlvbkRvY3VtZW50IFwiICtcbiAgICAgICAgXCJTZXQtUFNNZXRhQ29uZmlnRG9jSW5zUHJvY2Vzc2VkQmVmb3JlTWV0YSBTZXQtUFNNZXRhQ29uZmlnVmVyc2lvbkluZm9WMiBTZXQtUFNSZWFkTGluZUtleUhhbmRsZXIgU2V0LVBTUmVhZExpbmVPcHRpb24gU2V0LVBTUmVwb3NpdG9yeSBTZXQtUFNUb3BDb25maWd1cmF0aW9uTmFtZSBcIiArXG4gICAgICAgIFwiU2V0LVBhY2thZ2VTb3VyY2UgU2V0LVBvd2VyQ0xJQ29uZmlndXJhdGlvbiBTZXQtUmVzb3VyY2VQb29sIFNldC1TY3NpQ29udHJvbGxlciBTZXQtU2NzaUx1biBTZXQtU2NzaUx1blBhdGggU2V0LVNlY3VyaXR5UG9saWN5IFNldC1TbmFwc2hvdCBTZXQtU3BibUVudGl0eUNvbmZpZ3VyYXRpb24gXCIgK1xuICAgICAgICBcIlNldC1TcGJtU3RvcmFnZVBvbGljeSBTZXQtU3RhdEludGVydmFsIFNldC1UYWcgU2V0LVRhZ0NhdGVnb3J5IFNldC1UZW1wbGF0ZSBTZXQtVkFJT0ZpbHRlciBTZXQtVkFwcCBTZXQtVkRCbG9ja2VkUG9saWN5IFNldC1WRFBvcnQgU2V0LVZEUG9ydGdyb3VwIFNldC1WRFBvcnRncm91cE92ZXJyaWRlUG9saWN5IFwiICtcbiAgICAgICAgXCJTZXQtVkRTZWN1cml0eVBvbGljeSBTZXQtVkRTd2l0Y2ggU2V0LVZEVHJhZmZpY1NoYXBpbmdQb2xpY3kgU2V0LVZEVXBsaW5rTGFjcFBvbGljeSBTZXQtVkRVcGxpbmtUZWFtaW5nUG9saWN5IFNldC1WRFZsYW5Db25maWd1cmF0aW9uIFNldC1WRGlzayBTZXQtVklQZXJtaXNzaW9uIFNldC1WSVJvbGUgU2V0LVZNIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0IFNldC1WTUhvc3RBY2NvdW50IFNldC1WTUhvc3RBZHZhbmNlZENvbmZpZ3VyYXRpb24gU2V0LVZNSG9zdEF1dGhlbnRpY2F0aW9uIFNldC1WTUhvc3REaWFnbm9zdGljUGFydGl0aW9uIFNldC1WTUhvc3RGaXJld2FsbERlZmF1bHRQb2xpY3kgU2V0LVZNSG9zdEZpcmV3YWxsRXhjZXB0aW9uIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0RmlybXdhcmUgU2V0LVZNSG9zdEhiYSBTZXQtVk1Ib3N0TW9kdWxlIFNldC1WTUhvc3ROZXR3b3JrIFNldC1WTUhvc3ROZXR3b3JrQWRhcHRlciBTZXQtVk1Ib3N0UHJvZmlsZSBTZXQtVk1Ib3N0UHJvZmlsZUltYWdlQ2FjaGVDb25maWd1cmF0aW9uIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0UHJvZmlsZVN0b3JhZ2VEZXZpY2VDb25maWd1cmF0aW9uIFNldC1WTUhvc3RQcm9maWxlVXNlckNvbmZpZ3VyYXRpb24gU2V0LVZNSG9zdFByb2ZpbGVWbVBvcnRHcm91cENvbmZpZ3VyYXRpb24gU2V0LVZNSG9zdFJvdXRlIFNldC1WTUhvc3RTZXJ2aWNlIFNldC1WTUhvc3RTbm1wIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0U3RhcnRQb2xpY3kgU2V0LVZNSG9zdFN0b3JhZ2UgU2V0LVZNSG9zdFN5c0xvZ1NlcnZlciBTZXQtVk1RdWVzdGlvbiBTZXQtVk1SZXNvdXJjZUNvbmZpZ3VyYXRpb24gU2V0LVZNU3RhcnRQb2xpY3kgU2V0LVZUcG0gU2V0LVZpcnR1YWxQb3J0R3JvdXAgU2V0LVZpcnR1YWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIlNldC1Wc2FuQ2x1c3RlckNvbmZpZ3VyYXRpb24gU2V0LVZzYW5GYXVsdERvbWFpbiBTZXQtVnNhbklzY3NpSW5pdGlhdG9yR3JvdXAgU2V0LVZzYW5Jc2NzaUx1biBTZXQtVnNhbklzY3NpVGFyZ2V0IFNldC12UkFCdXNpbmVzc0dyb3VwIFNldC12UkFDYXRhbG9nSXRlbSBTZXQtdlJBQ3VzdG9tRm9ybSBcIiArXG4gICAgICAgIFwiU2V0LXZSQUVudGl0bGVtZW50IFNldC12UkFFeHRlcm5hbE5ldHdvcmtQcm9maWxlIFNldC12UkFOQVROZXR3b3JrUHJvZmlsZSBTZXQtdlJBUmVzZXJ2YXRpb24gU2V0LXZSQVJlc2VydmF0aW9uTmV0d29yayBTZXQtdlJBUmVzZXJ2YXRpb25Qb2xpY3kgU2V0LXZSQVJlc2VydmF0aW9uU3RvcmFnZSBcIiArXG4gICAgICAgIFwiU2V0LXZSQVJvdXRlZE5ldHdvcmtQcm9maWxlIFNldC12UkFTZXJ2aWNlIFNldC12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgU2V0LXZSQVRlbmFudCBTZXQtdlJBVGVuYW50RGlyZWN0b3J5IFNldC12UkFVc2VyUHJpbmNpcGFsIFNldC12Uk5JRGF0YVNvdXJjZVNOTVBDb25maWcgU2hvdy1NYXJrZG93biBcIiArXG4gICAgICAgIFwiU3RhcnQtQ0lWQXBwIFN0YXJ0LUNJVk0gU3RhcnQtSENYTWlncmF0aW9uIFN0YXJ0LUhDWFJlcGxpY2F0aW9uIFN0YXJ0LVNwYm1SZXBsaWNhdGlvbkZhaWxvdmVyIFN0YXJ0LVNwYm1SZXBsaWNhdGlvblByZXBhcmVGYWlsb3ZlciBTdGFydC1TcGJtUmVwbGljYXRpb25Qcm9tb3RlIFwiICtcbiAgICAgICAgXCJTdGFydC1TcGJtUmVwbGljYXRpb25SZXZlcnNlIFN0YXJ0LVNwYm1SZXBsaWNhdGlvblRlc3RGYWlsb3ZlciBTdGFydC1UaHJlYWRKb2IgU3RhcnQtVkFwcCBTdGFydC1WTSBTdGFydC1WTUhvc3QgU3RhcnQtVk1Ib3N0U2VydmljZSBTdGFydC1Wc2FuQ2x1c3RlckRpc2tVcGRhdGUgXCIgK1xuICAgICAgICBcIlN0YXJ0LVZzYW5DbHVzdGVyUmViYWxhbmNlIFN0YXJ0LVZzYW5FbmNyeXB0aW9uQ29uZmlndXJhdGlvbiBTdG9wLUNJVkFwcCBTdG9wLUNJVkFwcEd1ZXN0IFN0b3AtQ0lWTSBTdG9wLUNJVk1HdWVzdCBTdG9wLVNwYm1SZXBsaWNhdGlvblRlc3RGYWlsb3ZlciBTdG9wLVRhc2sgU3RvcC1WQXBwIFN0b3AtVk0gXCIgK1xuICAgICAgICBcIlN0b3AtVk1HdWVzdCBTdG9wLVZNSG9zdCBTdG9wLVZNSG9zdFNlcnZpY2UgU3RvcC1Wc2FuQ2x1c3RlclJlYmFsYW5jZSBTdXNwZW5kLUNJVkFwcCBTdXNwZW5kLUNJVk0gU3VzcGVuZC1IQ1hSZXBsaWNhdGlvbiBTdXNwZW5kLVZNIFN1c3BlbmQtVk1HdWVzdCBTdXNwZW5kLVZNSG9zdCBcIiArXG4gICAgICAgIFwiU3luYy1TcGJtUmVwbGljYXRpb25Hcm91cCBUZXN0LUNvbmZsaWN0aW5nUmVzb3VyY2VzIFRlc3QtSENYTWlncmF0aW9uIFRlc3QtSENYUmVwbGljYXRpb24gVGVzdC1Kc29uIFRlc3QtTW9kdWxlUmVsb2FkUmVxdWlyZWQgVGVzdC1Nb2ZJbnN0YW5jZVRleHQgVGVzdC1Ob2RlTWFuYWdlciBcIiArXG4gICAgICAgIFwiVGVzdC1Ob2RlUmVzb3VyY2VTb3VyY2UgVGVzdC1Ob2RlUmVzb3VyY2VzIFRlc3QtU2NyaXB0RmlsZUluZm8gVGVzdC1WTUhvc3RQcm9maWxlQ29tcGxpYW5jZSBUZXN0LVZNSG9zdFNubXAgVGVzdC1Wc2FuQ2x1c3RlckhlYWx0aCBUZXN0LVZzYW5OZXR3b3JrUGVyZm9ybWFuY2UgXCIgK1xuICAgICAgICBcIlRlc3QtVnNhblN0b3JhZ2VQZXJmb3JtYW5jZSBUZXN0LVZzYW5WTUNyZWF0aW9uIFRlc3QtdlJBUGFja2FnZSBVbmluc3RhbGwtTW9kdWxlIFVuaW5zdGFsbC1QYWNrYWdlIFVuaW5zdGFsbC1TY3JpcHQgVW5sb2NrLVZNIFVucmVnaXN0ZXItUFNSZXBvc2l0b3J5IFVucmVnaXN0ZXItUGFja2FnZVNvdXJjZSBcIiArXG4gICAgICAgIFwiVXBkYXRlLUNvbmZpZ3VyYXRpb25Eb2N1bWVudFJlZiBVcGRhdGUtQ29uZmlndXJhdGlvbkVycm9yQ291bnQgVXBkYXRlLURlcGVuZHNPbiBVcGRhdGUtTG9jYWxDb25maWdNYW5hZ2VyIFVwZGF0ZS1Nb2R1bGUgVXBkYXRlLU1vZHVsZU1hbmlmZXN0IFVwZGF0ZS1Nb2R1bGVWZXJzaW9uIFVwZGF0ZS1Qb3dlck5zeCBcIiArXG4gICAgICAgIFwiVXBkYXRlLVNjcmlwdCBVcGRhdGUtU2NyaXB0RmlsZUluZm8gVXBkYXRlLVRvb2xzIFVwZGF0ZS1Wc2FuSGNsRGF0YWJhc2UgVmFsaWRhdGVVcGRhdGUtQ29uZmlndXJhdGlvbkRhdGEgV2FpdC1EZWJ1Z2dlciBXYWl0LU5zeENvbnRyb2xsZXJKb2IgV2FpdC1Oc3hHZW5lcmljSm9iIFdhaXQtTnN4Sm9iIFwiICtcbiAgICAgICAgXCJXYWl0LVRhc2sgV2FpdC1Ub29scyBXcml0ZS1JbmZvcm1hdGlvbiBXcml0ZS1Mb2cgV3JpdGUtTWV0YUNvbmZpZ0ZpbGUgV3JpdGUtTm9kZU1PRkZpbGVcIixcbiAgICAgIG5vbWFya3VwOlxuICAgICAgICBcIi1uZSAtZXEgLWx0IC1ndCAtZ2UgLWxlIC1ub3QgLWxpa2UgLW5vdGxpa2UgLW1hdGNoIC1ub3RtYXRjaCAtY29udGFpbnMgLW5vdGNvbnRhaW5zIC1pbiAtbm90aW4gLXJlcGxhY2VcIixcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBCQUNLVElDS19FU0NBUEUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgUVVPVEVfU1RSSU5HLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBMSVRFUkFMLFxuICAgICAgVkFSLFxuICAgICAgUFNfQ09NTUVOVCxcbiAgICBdLFxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ0J1ZmZlcmVkUmVhZGVyIFBWZWN0b3IgUEZvbnQgUEltYWdlIFBHcmFwaGljcyBIYXNoTWFwIGJvb2xlYW4gYnl0ZSBjaGFyIGNvbG9yICcgK1xuICAgICAgICAnZG91YmxlIGZsb2F0IGludCBsb25nIFN0cmluZyBBcnJheSBGbG9hdERpY3QgRmxvYXRMaXN0IEludERpY3QgSW50TGlzdCBKU09OQXJyYXkgSlNPTk9iamVjdCAnICtcbiAgICAgICAgJ09iamVjdCBTdHJpbmdEaWN0IFN0cmluZ0xpc3QgVGFibGUgVGFibGVSb3cgWE1MICcgK1xuICAgICAgICAvLyBKYXZhIGtleXdvcmRzXG4gICAgICAgICdmYWxzZSBzeW5jaHJvbml6ZWQgaW50IGFic3RyYWN0IGZsb2F0IHByaXZhdGUgY2hhciBib29sZWFuIHN0YXRpYyBudWxsIGlmIGNvbnN0ICcgK1xuICAgICAgICAnZm9yIHRydWUgd2hpbGUgbG9uZyB0aHJvdyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHJldHVybiB2b2lkICcgK1xuICAgICAgICAnZW51bSBlbHNlIGJyZWFrIHRyYW5zaWVudCBuZXcgY2F0Y2ggaW5zdGFuY2VvZiBieXRlIHN1cGVyIHZvbGF0aWxlIGNhc2UgYXNzZXJ0IHNob3J0ICcgK1xuICAgICAgICAncGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcm90ZWN0ZWQgcHVibGljIHByaXZhdGUnLFxuICAgICAgbGl0ZXJhbDogJ1AyRCBQM0QgSEFMRl9QSSBQSSBRVUFSVEVSX1BJIFRBVSBUV09fUEknLFxuICAgICAgdGl0bGU6ICdzZXR1cCBkcmF3JyxcbiAgICAgIGJ1aWx0X2luOiAnZGlzcGxheUhlaWdodCBkaXNwbGF5V2lkdGggbW91c2VZIG1vdXNlWCBtb3VzZVByZXNzZWQgcG1vdXNlWCBwbW91c2VZIGtleSAnICtcbiAgICAgICAgJ2tleUNvZGUgcGl4ZWxzIGZvY3VzZWQgZnJhbWVDb3VudCBmcmFtZVJhdGUgaGVpZ2h0IHdpZHRoICcgK1xuICAgICAgICAnc2l6ZSBjcmVhdGVHcmFwaGljcyBiZWdpbkRyYXcgY3JlYXRlU2hhcGUgbG9hZFNoYXBlIFBTaGFwZSBhcmMgZWxsaXBzZSBsaW5lIHBvaW50ICcgK1xuICAgICAgICAncXVhZCByZWN0IHRyaWFuZ2xlIGJlemllciBiZXppZXJEZXRhaWwgYmV6aWVyUG9pbnQgYmV6aWVyVGFuZ2VudCBjdXJ2ZSBjdXJ2ZURldGFpbCBjdXJ2ZVBvaW50ICcgK1xuICAgICAgICAnY3VydmVUYW5nZW50IGN1cnZlVGlnaHRuZXNzIHNoYXBlIHNoYXBlTW9kZSBiZWdpbkNvbnRvdXIgYmVnaW5TaGFwZSBiZXppZXJWZXJ0ZXggY3VydmVWZXJ0ZXggJyArXG4gICAgICAgICdlbmRDb250b3VyIGVuZFNoYXBlIHF1YWRyYXRpY1ZlcnRleCB2ZXJ0ZXggZWxsaXBzZU1vZGUgbm9TbW9vdGggcmVjdE1vZGUgc21vb3RoIHN0cm9rZUNhcCAnICtcbiAgICAgICAgJ3N0cm9rZUpvaW4gc3Ryb2tlV2VpZ2h0IG1vdXNlQ2xpY2tlZCBtb3VzZURyYWdnZWQgbW91c2VNb3ZlZCBtb3VzZVByZXNzZWQgbW91c2VSZWxlYXNlZCAnICtcbiAgICAgICAgJ21vdXNlV2hlZWwga2V5UHJlc3NlZCBrZXlQcmVzc2Vka2V5UmVsZWFzZWQga2V5VHlwZWQgcHJpbnQgcHJpbnRsbiBzYXZlIHNhdmVGcmFtZSBkYXkgaG91ciAnICtcbiAgICAgICAgJ21pbGxpcyBtaW51dGUgbW9udGggc2Vjb25kIHllYXIgYmFja2dyb3VuZCBjbGVhciBjb2xvck1vZGUgZmlsbCBub0ZpbGwgbm9TdHJva2Ugc3Ryb2tlIGFscGhhICcgK1xuICAgICAgICAnYmx1ZSBicmlnaHRuZXNzIGNvbG9yIGdyZWVuIGh1ZSBsZXJwQ29sb3IgcmVkIHNhdHVyYXRpb24gbW9kZWxYIG1vZGVsWSBtb2RlbFogc2NyZWVuWCBzY3JlZW5ZICcgK1xuICAgICAgICAnc2NyZWVuWiBhbWJpZW50IGVtaXNzaXZlIHNoaW5pbmVzcyBzcGVjdWxhciBhZGQgY3JlYXRlSW1hZ2UgYmVnaW5DYW1lcmEgY2FtZXJhIGVuZENhbWVyYSBmcnVzdHVtICcgK1xuICAgICAgICAnb3J0aG8gcGVyc3BlY3RpdmUgcHJpbnRDYW1lcmEgcHJpbnRQcm9qZWN0aW9uIGN1cnNvciBmcmFtZVJhdGUgbm9DdXJzb3IgZXhpdCBsb29wIG5vTG9vcCBwb3BTdHlsZSAnICtcbiAgICAgICAgJ3B1c2hTdHlsZSByZWRyYXcgYmluYXJ5IGJvb2xlYW4gYnl0ZSBjaGFyIGZsb2F0IGhleCBpbnQgc3RyIHVuYmluYXJ5IHVuaGV4IGpvaW4gbWF0Y2ggbWF0Y2hBbGwgbmYgJyArXG4gICAgICAgICduZmMgbmZwIG5mcyBzcGxpdCBzcGxpdFRva2VucyB0cmltIGFwcGVuZCBhcnJheUNvcHkgY29uY2F0IGV4cGFuZCByZXZlcnNlIHNob3J0ZW4gc29ydCBzcGxpY2Ugc3Vic2V0ICcgK1xuICAgICAgICAnYm94IHNwaGVyZSBzcGhlcmVEZXRhaWwgY3JlYXRlSW5wdXQgY3JlYXRlUmVhZGVyIGxvYWRCeXRlcyBsb2FkSlNPTkFycmF5IGxvYWRKU09OT2JqZWN0IGxvYWRTdHJpbmdzICcgK1xuICAgICAgICAnbG9hZFRhYmxlIGxvYWRYTUwgb3BlbiBwYXJzZVhNTCBzYXZlVGFibGUgc2VsZWN0Rm9sZGVyIHNlbGVjdElucHV0IGJlZ2luUmF3IGJlZ2luUmVjb3JkIGNyZWF0ZU91dHB1dCAnICtcbiAgICAgICAgJ2NyZWF0ZVdyaXRlciBlbmRSYXcgZW5kUmVjb3JkIFByaW50V3JpdGVyc2F2ZUJ5dGVzIHNhdmVKU09OQXJyYXkgc2F2ZUpTT05PYmplY3Qgc2F2ZVN0cmVhbSBzYXZlU3RyaW5ncyAnICtcbiAgICAgICAgJ3NhdmVYTUwgc2VsZWN0T3V0cHV0IHBvcE1hdHJpeCBwcmludE1hdHJpeCBwdXNoTWF0cml4IHJlc2V0TWF0cml4IHJvdGF0ZSByb3RhdGVYIHJvdGF0ZVkgcm90YXRlWiBzY2FsZSAnICtcbiAgICAgICAgJ3NoZWFyWCBzaGVhclkgdHJhbnNsYXRlIGFtYmllbnRMaWdodCBkaXJlY3Rpb25hbExpZ2h0IGxpZ2h0RmFsbG9mZiBsaWdodHMgbGlnaHRTcGVjdWxhciBub0xpZ2h0cyBub3JtYWwgJyArXG4gICAgICAgICdwb2ludExpZ2h0IHNwb3RMaWdodCBpbWFnZSBpbWFnZU1vZGUgbG9hZEltYWdlIG5vVGludCByZXF1ZXN0SW1hZ2UgdGludCB0ZXh0dXJlIHRleHR1cmVNb2RlIHRleHR1cmVXcmFwICcgK1xuICAgICAgICAnYmxlbmQgY29weSBmaWx0ZXIgZ2V0IGxvYWRQaXhlbHMgc2V0IHVwZGF0ZVBpeGVscyBibGVuZE1vZGUgbG9hZFNoYWRlciBQU2hhZGVycmVzZXRTaGFkZXIgc2hhZGVyIGNyZWF0ZUZvbnQgJyArXG4gICAgICAgICdsb2FkRm9udCB0ZXh0IHRleHRGb250IHRleHRBbGlnbiB0ZXh0TGVhZGluZyB0ZXh0TW9kZSB0ZXh0U2l6ZSB0ZXh0V2lkdGggdGV4dEFzY2VudCB0ZXh0RGVzY2VudCBhYnMgY2VpbCAnICtcbiAgICAgICAgJ2NvbnN0cmFpbiBkaXN0IGV4cCBmbG9vciBsZXJwIGxvZyBtYWcgbWFwIG1heCBtaW4gbm9ybSBwb3cgcm91bmQgc3Egc3FydCBhY29zIGFzaW4gYXRhbiBhdGFuMiBjb3MgZGVncmVlcyAnICtcbiAgICAgICAgJ3JhZGlhbnMgc2luIHRhbiBub2lzZSBub2lzZURldGFpbCBub2lzZVNlZWQgcmFuZG9tIHJhbmRvbUdhdXNzaWFuIHJhbmRvbVNlZWQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW2EtekEtWl9dW1xcXFxkYS16QS1aX10rXFxcXC5bXFxcXGRhLXpBLVpfXXsxLDN9JywgZW5kOiAnOicsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKG5jYWxsc3x0b3R0aW1lfGN1bXRpbWUpJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAnbmNhbGxzIHRvdHRpbWV8MTAgY3VtdGltZXwxMCBmaWxlbmFtZScsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnZnVuY3Rpb24gY2FsbHMnLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTlVNQkVSX01PREVdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJCcsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQVRPTSA9IHtcblxuICAgIGJlZ2luOiAvW2Etel1bQS1aYS16MC05X10qLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgVkFSID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvW0EtWl1bYS16QS1aMC05X10qL30sXG4gICAgICB7YmVnaW46IC9fW0EtWmEtejAtOV9dKi99LFxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFBBUkVOVEVEID0ge1xuXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIExJU1QgPSB7XG5cbiAgICBiZWdpbjogL1xcWy8sXG4gICAgZW5kOiAvXFxdL1xuICB9O1xuXG4gIHZhciBMSU5FX0NPTU1FTlQgPSB7XG5cbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogLyUvLCBlbmQ6IC8kLyxcbiAgICBjb250YWluczogW2hsanMuUEhSQVNBTF9XT1JEU19NT0RFXVxuICB9O1xuXG4gIHZhciBCQUNLVElDS19TVFJJTkcgPSB7XG5cbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvYC8sIGVuZDogL2AvLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICB9O1xuXG4gIHZhciBDSEFSX0NPREUgPSB7XG5cbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyAwJ2EgZXRjLlxuICAgIGJlZ2luOiAvMFxcJyhcXFxcXFwnfC4pL1xuICB9O1xuXG4gIHZhciBTUEFDRV9DT0RFID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLzBcXCdcXFxccy8gLy8gMCdcXHNcbiAgfTtcblxuICB2YXIgUFJFRF9PUCA9IHsgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBiZWdpbjogLzotL1xuICB9O1xuXG4gIHZhciBpbm5lciA9IFtcblxuICAgIEFUT00sXG4gICAgVkFSLFxuICAgIFBBUkVOVEVELFxuICAgIFBSRURfT1AsXG4gICAgTElTVCxcbiAgICBMSU5FX0NPTU1FTlQsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICBCQUNLVElDS19TVFJJTkcsXG4gICAgQ0hBUl9DT0RFLFxuICAgIFNQQUNFX0NPREUsXG4gICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gIF07XG5cbiAgUEFSRU5URUQuY29udGFpbnMgPSBpbm5lcjtcbiAgTElTVC5jb250YWlucyA9IGlubmVyO1xuXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IGlubmVyLmNvbmNhdChbXG4gICAgICB7YmVnaW46IC9cXC4kL30gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICAvLyB3aGl0ZXNwYWNlczogc3BhY2UsIHRhYiwgZm9ybWZlZWRcbiAgdmFyIFdTMCA9ICdbIFxcXFx0XFxcXGZdKic7XG4gIHZhciBXUzEgPSAnWyBcXFxcdFxcXFxmXSsnO1xuICAvLyBkZWxpbWl0ZXJcbiAgdmFyIERFTElNID0gJygnICsgV1MwKydbOj1dJytXUzArICd8JyArIFdTMSArICcpJztcbiAgdmFyIEtFWV9BTFBIQU5VTSA9ICcoW15cXFxcXFxcXFxcXFxXOj0gXFxcXHRcXFxcZlxcXFxuXXxcXFxcXFxcXC4pKyc7XG4gIHZhciBLRVlfT1RIRVIgPSAnKFteXFxcXFxcXFw6PSBcXFxcdFxcXFxmXFxcXG5dfFxcXFxcXFxcLikrJztcblxuICB2YXIgREVMSU1fQU5EX1ZBTFVFID0ge1xuICAgICAgICAgIC8vIHNraXAgREVMSU1cbiAgICAgICAgICBlbmQ6IERFTElNLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgIC8vIHZhbHVlOiBldmVyeXRoaW5nIHVudGlsIGVuZCBvZiBsaW5lIChhZ2FpbiwgdGFraW5nIGludG8gYWNjb3VudCBiYWNrc2xhc2hlcylcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHsgYmVnaW46ICdcXFxcXFxcXFxcXFxuJyB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXHMqWyEjXScsICckJyksXG4gICAgICAvLyBrZXk6IGV2ZXJ5dGhpbmcgdW50aWwgd2hpdGVzcGFjZSBvciA9IG9yIDogKHRha2luZyBpbnRvIGFjY291bnQgYmFja3NsYXNoZXMpXG4gICAgICAvLyBjYXNlIG9mIGEgXCJub3JtYWxcIiBrZXlcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IEtFWV9BTFBIQU5VTSArIERFTElNLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgICAgIGJlZ2luOiBLRVlfQUxQSEFOVU0sXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdGFydHM6IERFTElNX0FORF9WQUxVRVxuICAgICAgfSxcbiAgICAgIC8vIGNhc2Ugb2Yga2V5IGNvbnRhaW5pbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFycyA9PiByZWxldmFuY2UgPSAwXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBLRVlfT1RIRVIgKyBERUxJTSxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgIGJlZ2luOiBLRVlfT1RIRVIsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdGFydHM6IERFTElNX0FORF9WQUxVRVxuICAgICAgfSxcbiAgICAgIC8vIGNhc2Ugb2YgYW4gZW1wdHkga2V5XG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGJlZ2luOiBLRVlfT1RIRVIgKyBXUzAgKyAnJCdcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAncGFja2FnZSBpbXBvcnQgb3B0aW9uIG9wdGlvbmFsIHJlcXVpcmVkIHJlcGVhdGVkIGdyb3VwIG9uZW9mJyxcbiAgICAgIGJ1aWx0X2luOiAnZG91YmxlIGZsb2F0IGludDMyIGludDY0IHVpbnQzMiB1aW50NjQgc2ludDMyIHNpbnQ2NCAnICtcbiAgICAgICAgJ2ZpeGVkMzIgZml4ZWQ2NCBzZml4ZWQzMiBzZml4ZWQ2NCBib29sIHN0cmluZyBieXRlcycsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnbWVzc2FnZSBlbnVtIHNlcnZpY2UnLCBlbmQ6IC9cXHsvLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgICBzdGFydHM6IHtlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZX0gLy8gaGFjazogZWF0aW5nIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHRpdGxlXG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAncnBjJyxcbiAgICAgICAgZW5kOiAvOy8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAncnBjIHJldHVybnMnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL15cXHMqW0EtWl9dKy8sXG4gICAgICAgIGVuZDogL1xccyo9LywgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIFBVUFBFVF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgIC8qIGxhbmd1YWdlIGtleXdvcmRzICovXG4gICAgICAnYW5kIGNhc2UgZGVmYXVsdCBlbHNlIGVsc2lmIGZhbHNlIGlmIGluIGltcG9ydCBlbmhlcml0cyBub2RlIG9yIHRydWUgdW5kZWYgdW5sZXNzIG1haW4gc2V0dGluZ3MgJHN0cmluZyAnLFxuICAgIGxpdGVyYWw6XG4gICAgLyogbWV0YXBhcmFtZXRlcnMgKi9cbiAgICAgICdhbGlhcyBhdWRpdCBiZWZvcmUgbG9nbGV2ZWwgbm9vcCByZXF1aXJlIHN1YnNjcmliZSB0YWcgJyArXG4gICAgLyogbm9ybWFsIGF0dHJpYnV0ZXMgKi9cbiAgICAgICdvd25lciBlbnN1cmUgZ3JvdXAgbW9kZSBuYW1lfDAgY2hhbmdlcyBjb250ZXh0IGZvcmNlIGluY2wgbGVucyBsb2FkX3BhdGggb25seWlmIHByb3ZpZGVyIHJldHVybnMgcm9vdCBzaG93X2RpZmYgdHlwZV9jaGVjayAnICtcbiAgICAgICdlbl9hZGRyZXNzIGlwX2FkZHJlc3MgcmVhbG5hbWUgY29tbWFuZCBlbnZpcm9ubWVudCBob3VyIG1vbnV0ZSBtb250aCBtb250aGRheSBzcGVjaWFsIHRhcmdldCB3ZWVrZGF5ICcrXG4gICAgICAnY3JlYXRlcyBjd2Qgb2dvdXRwdXQgcmVmcmVzaCByZWZyZXNob25seSB0cmllcyB0cnlfc2xlZXAgdW1hc2sgYmFja3VwIGNoZWNrc3VtIGNvbnRlbnQgY3RpbWUgZm9yY2UgaWdub3JlICcgK1xuICAgICAgJ2xpbmtzIG10aW1lIHB1cmdlIHJlY3Vyc2UgcmVjdXJzZWxpbWl0IHJlcGxhY2Ugc2VsaW51eF9pZ25vcmVfZGVmYXVsdHMgc2VscmFuZ2Ugc2Vscm9sZSBzZWx0eXBlIHNlbHVzZXIgc291cmNlICcgK1xuICAgICAgJ3NvdWlyY2VfcGVybWlzc2lvbnMgc291cmNlc2VsZWN0IHZhbGlkYXRlX2NtZCB2YWxpZGF0ZV9yZXBsYWNlbWVudCBhbGxvd2R1cGUgYXR0cmlidXRlX21lbWJlcnNoaXAgYXV0aF9tZW1iZXJzaGlwIGZvcmNlbG9jYWwgZ2lkICcrXG4gICAgICAnaWFfbG9hZF9tb2R1bGUgbWVtYmVycyBzeXN0ZW0gaG9zdF9hbGlhc2VzIGlwIGFsbG93ZWRfdHJ1bmtfdmxhbnMgZGVzY3JpcHRpb24gZGV2aWNlX3VybCBkdXBsZXggZW5jYXBzdWxhdGlvbiBldGhlcmNoYW5uZWwgJyArXG4gICAgICAnbmF0aXZlX3ZsYW4gc3BlZWQgcHJpbmNpcGFscyBhbGxvd19yb290IGF1dGhfY2xhc3MgYXV0aF90eXBlIGF1dGhlbnRpY2F0ZV91c2VyIGtfb2ZfbiBtZWNoYW5pc21zIHJ1bGUgc2Vzc2lvbl9vd25lciBzaGFyZWQgb3B0aW9ucyAnICtcbiAgICAgICdkZXZpY2UgZnN0eXBlIGVuYWJsZSBoYXNyZXN0YXJ0IGRpcmVjdG9yeSBwcmVzZW50IGFic2VudCBsaW5rIGF0Ym9vdCBibG9ja2RldmljZSBkZXZpY2UgZHVtcCBwYXNzIHJlbW91bnRzIHBvbGxlcl90YWcgdXNlICcgK1xuICAgICAgJ21lc3NhZ2Ugd2l0aHBhdGggYWRtaW5maWxlIGFsbG93X3ZpcnR1YWwgYWxsb3djZHJvbSBjYXRlZ29yeSBjb25maWdmaWxlcyBmbGF2b3IgaW5zdGFsbF9vcHRpb25zIGluc3RhbmNlIHBhY2thZ2Vfc2V0dGluZ3MgcGxhdGZvcm0gJyArXG4gICAgICAncmVzcG9uc2VmaWxlIHN0YXR1cyB1bmluc3RhbGxfb3B0aW9ucyB2ZW5kb3IgdW5sZXNzX3N5c3RlbV91c2VyIHVubGVzc191aWQgYmluYXJ5IGNvbnRyb2wgZmxhZ3MgaGFzc3RhdHVzIG1hbmlmZXN0IHBhdHRlcm4gcmVzdGFydCBydW5uaW5nICcgK1xuICAgICAgJ3N0YXJ0IHN0b3AgYWxsb3dkdXBlIGF1dGhzIGV4cGlyeSBnaWQgZ3JvdXBzIGhvbWUgaXRlcmF0aW9ucyBrZXlfbWVtYmVyc2hpcCBrZXlzIG1hbmFnZWhvbWUgbWVtYmVyc2hpcCBwYXNzd29yZCBwYXNzd29yZF9tYXhfYWdlICcgK1xuICAgICAgJ3Bhc3N3b3JkX21pbl9hZ2UgcHJvZmlsZV9tZW1iZXJzaGlwIHByb2ZpbGVzIHByb2plY3QgcHVyZ2Vfc3NoX2tleXMgcm9sZV9tZW1iZXJzaGlwIHJvbGVzIHNhbHQgc2hlbGwgdWlkIGJhc2V1cmwgY29zdCBkZXNjciBlbmFibGVkICcgK1xuICAgICAgJ2VuYWJsZWdyb3VwcyBleGNsdWRlIGZhaWxvdmVybWV0aG9kIGdwZ2NoZWNrIGdwZ2tleSBodHRwX2NhY2hpbmcgaW5jbHVkZSBpbmNsdWRlcGtncyBrZWVwYWxpdmUgbWV0YWRhdGFfZXhwaXJlIG1ldGFsaW5rIG1pcnJvcmxpc3QgJyArXG4gICAgICAncHJpb3JpdHkgcHJvdGVjdCBwcm94eSBwcm94eV9wYXNzd29yZCBwcm94eV91c2VybmFtZSByZXBvX2dwZ2NoZWNrIHMzX2VuYWJsZWQgc2tpcF9pZl91bmF2YWlsYWJsZSBzc2xjYWNlcnQgc3NsY2xpZW50Y2VydCBzc2xjbGllbnRrZXkgJyArXG4gICAgICAnc3NsdmVyaWZ5IG1vdW50ZWQnLFxuICAgIGJ1aWx0X2luOlxuICAgIC8qIGNvcmUgZmFjdHMgKi9cbiAgICAgICdhcmNoaXRlY3R1cmUgYXVnZWFzdmVyc2lvbiBibG9ja2RldmljZXMgYm9hcmRtYW51ZmFjdHVyZXIgYm9hcmRwcm9kdWN0bmFtZSBib2FyZHNlcmlhbG51bWJlciBjZmtleSBkaGNwX3NlcnZlcnMgJyArXG4gICAgICAnZG9tYWluIGVjMl8gZWMyX3VzZXJkYXRhIGZhY3RlcnZlcnNpb24gZmlsZXN5c3RlbXMgbGRvbSBmcWRuIGdpZCBoYXJkd2FyZWlzYSBoYXJkd2FyZW1vZGVsIGhvc3RuYW1lIGlkfDAgaW50ZXJmYWNlcyAnK1xuICAgICAgJ2lwYWRkcmVzcyBpcGFkZHJlc3NfIGlwYWRkcmVzczYgaXBhZGRyZXNzNl8gaXBob3N0bnVtYmVyIGlzX3ZpcnR1YWwga2VybmVsIGtlcm5lbG1hanZlcnNpb24ga2VybmVscmVsZWFzZSBrZXJuZWx2ZXJzaW9uICcgK1xuICAgICAgJ2tlcm5lbHJlbGVhc2Uga2VybmVsdmVyc2lvbiBsc2JkaXN0Y29kZW5hbWUgbHNiZGlzdGRlc2NyaXB0aW9uIGxzYmRpc3RpZCBsc2JkaXN0cmVsZWFzZSBsc2JtYWpkaXN0cmVsZWFzZSBsc2JtaW5vcmRpc3RyZWxlYXNlICcgK1xuICAgICAgJ2xzYnJlbGVhc2UgbWFjYWRkcmVzcyBtYWNhZGRyZXNzXyBtYWNvc3hfYnVpbGR2ZXJzaW9uIG1hY29zeF9wcm9kdWN0bmFtZSBtYWNvc3hfcHJvZHVjdHZlcnNpb24gbWFjb3N4X3Byb2R1Y3R2ZXJzb25fbWFqb3IgJyArXG4gICAgICAnbWFjb3N4X3Byb2R1Y3R2ZXJzaW9uX21pbm9yIG1hbnVmYWN0dXJlciBtZW1vcnlmcmVlIG1lbW9yeXNpemUgbmV0bWFzayBtZXRtYXNrXyBuZXR3b3JrXyBvcGVyYXRpbmdzeXN0ZW0gb3BlcmF0aW5nc3lzdGVtbWFqcmVsZWFzZSAnK1xuICAgICAgJ29wZXJhdGluZ3N5c3RlbXJlbGVhc2Ugb3NmYW1pbHkgcGFydGl0aW9ucyBwYXRoIHBoeXNpY2FscHJvY2Vzc29yY291bnQgcHJvY2Vzc29yIHByb2Nlc3NvcmNvdW50IHByb2R1Y3RuYW1lIHBzIHB1cHBldHZlcnNpb24gJytcbiAgICAgICdydWJ5c2l0ZWRpciBydWJ5dmVyc2lvbiBzZWxpbnV4IHNlbGludXhfY29uZmlnX21vZGUgc2VsaW51eF9jb25maWdfcG9saWN5IHNlbGludXhfY3VycmVudF9tb2RlIHNlbGludXhfY3VycmVudF9tb2RlIHNlbGludXhfZW5mb3JjZWQgJytcbiAgICAgICdzZWxpbnV4X3BvbGljeXZlcnNpb24gc2VyaWFsbnVtYmVyIHNwXyBzc2hkc2FrZXkgc3NoZWNkc2FrZXkgc3NocnNha2V5IHN3YXBlbmNyeXB0ZWQgc3dhcGZyZWUgc3dhcHNpemUgdGltZXpvbmUgdHlwZSB1bmlxdWVpZCB1cHRpbWUgJytcbiAgICAgICd1cHRpbWVfZGF5cyB1cHRpbWVfaG91cnMgdXB0aW1lX3NlY29uZHMgdXVpZCB2aXJ0dWFsIHZsYW5zIHhlbmRvbWFpbnMgemZzX3ZlcnNpb24gem9uZW5hZSB6b25lcyB6cG9vbF92ZXJzaW9uJ1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKCcjJywgJyQnKTtcblxuICB2YXIgSURFTlRfUkUgPSAnKFtBLVphLXpfXXw6OikoXFxcXHd8OjopKic7XG5cbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBJREVOVF9SRX0pO1xuXG4gIHZhciBWQVJJQUJMRSA9IHtjbGFzc05hbWU6ICd2YXJpYWJsZScsIGJlZ2luOiAnXFxcXCQnICsgSURFTlRfUkV9O1xuXG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgVkFSSUFCTEVdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99XG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwcCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT01NRU5ULFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBTVFJJTkcsXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcycsIGVuZDogJ1xcXFx7fDsnLFxuICAgICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICAgIGNvbnRhaW5zOiBbVElUTEUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnZGVmaW5lJywgZW5kOiAvXFx7LyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJywgYmVnaW46IGhsanMuSURFTlRfUkUsIGVuZHNQYXJlbnQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxzK1xcXFx7JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGVuZDogL1xcUy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXHsvLCBlbmQ6IC9cXH0vLFxuICAgICAgICAgICAga2V5d29yZHM6IFBVUFBFVF9LRVlXT1JEUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgQ09NTUVOVCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOidbYS16QS1aX10rXFxcXHMqPT4nLFxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICc9PicsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGIwWzAtN19dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoXFxcXGJbMS05XVswLTlfXSooXFxcXC5bMC05X10rKT8pfFswX11cXFxcYicsXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFZBUklBQkxFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBCYXNlIGRlYWZ1bHQgY29sb3JzIGluIFBCIElERTogYmFja2dyb3VuZDogI0ZGRkZERjsgZm9yZWdyb3VuZDogIzAwMDAwMDtcblxuZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RSSU5HUyA9IHsgLy8gUEIgSURFIGNvbG9yOiAjMDA4MEZGIChBenVyZSBSYWRpYW5jZSlcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnKH4pP1wiJywgZW5kOiAnXCInLFxuICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgfTtcbiAgdmFyIENPTlNUQU5UUyA9IHsgLy8gUEIgSURFIGNvbG9yOiAjOTI0QjcyIChDYW5ub24gUGluaylcbiAgICAvLyAgXCIjXCIgKyBhIGxldHRlciBvciB1bmRlcnNjb3JlICsgbGV0dGVycywgZGlnaXRzIG9yIHVuZGVyc2NvcmVzICsgKG9wdGlvbmFsKSBcIiRcIlxuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICcjW2EtekEtWl9dXFxcXHcqXFxcXCQ/J1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwYicsICdwYmknXSxcbiAgICBrZXl3b3JkczogLy8gUEIgSURFIGNvbG9yOiAjMDA2NjY2IChCbHVlIFN0b25lKSArIEJvbGRcbiAgICAgIC8vIEtleXdvcmRzIGZyb20gYWxsIHZlcnNpb24gb2YgUHVyZUJBU0lDIDUuMDAgdXB3YXJkIC4uLlxuICAgICAgJ0FsaWduIEFuZCBBcnJheSBBcyBCcmVhayBDYWxsRGVidWdnZXIgQ2FzZSBDb21waWxlckNhc2UgQ29tcGlsZXJEZWZhdWx0ICcgK1xuICAgICAgJ0NvbXBpbGVyRWxzZSBDb21waWxlckVsc2VJZiBDb21waWxlckVuZElmIENvbXBpbGVyRW5kU2VsZWN0IENvbXBpbGVyRXJyb3IgJyArXG4gICAgICAnQ29tcGlsZXJJZiBDb21waWxlclNlbGVjdCBDb21waWxlcldhcm5pbmcgQ29udGludWUgRGF0YSBEYXRhU2VjdGlvbiBEZWJ1ZyAnICtcbiAgICAgICdEZWJ1Z0xldmVsIERlY2xhcmUgRGVjbGFyZUMgRGVjbGFyZUNETEwgRGVjbGFyZURMTCBEZWNsYXJlTW9kdWxlIERlZmF1bHQgJyArXG4gICAgICAnRGVmaW5lIERpbSBEaXNhYmxlQVNNIERpc2FibGVEZWJ1Z2dlciBEaXNhYmxlRXhwbGljaXQgRWxzZSBFbHNlSWYgRW5hYmxlQVNNICcgK1xuICAgICAgJ0VuYWJsZURlYnVnZ2VyIEVuYWJsZUV4cGxpY2l0IEVuZCBFbmREYXRhU2VjdGlvbiBFbmREZWNsYXJlTW9kdWxlIEVuZEVudW1lcmF0aW9uICcgK1xuICAgICAgJ0VuZElmIEVuZEltcG9ydCBFbmRJbnRlcmZhY2UgRW5kTWFjcm8gRW5kTW9kdWxlIEVuZFByb2NlZHVyZSBFbmRTZWxlY3QgJyArXG4gICAgICAnRW5kU3RydWN0dXJlIEVuZFN0cnVjdHVyZVVuaW9uIEVuZFdpdGggRW51bWVyYXRpb24gRW51bWVyYXRpb25CaW5hcnkgRXh0ZW5kcyAnICtcbiAgICAgICdGYWtlUmV0dXJuIEZvciBGb3JFYWNoIEZvckV2ZXIgR2xvYmFsIEdvc3ViIEdvdG8gSWYgSW1wb3J0IEltcG9ydEMgJyArXG4gICAgICAnSW5jbHVkZUJpbmFyeSBJbmNsdWRlRmlsZSBJbmNsdWRlUGF0aCBJbnRlcmZhY2UgTGlzdCBNYWNybyBNYWNyb0V4cGFuZGVkQ291bnQgJyArXG4gICAgICAnTWFwIE1vZHVsZSBOZXdMaXN0IE5ld01hcCBOZXh0IE5vdCBPciBQcm9jZWR1cmUgUHJvY2VkdXJlQyAnICtcbiAgICAgICdQcm9jZWR1cmVDRExMIFByb2NlZHVyZURMTCBQcm9jZWR1cmVSZXR1cm4gUHJvdGVjdGVkIFByb3RvdHlwZSBQcm90b3R5cGVDIFJlRGltICcgK1xuICAgICAgJ1JlYWQgUmVwZWF0IFJlc3RvcmUgUmV0dXJuIFJ1bnRpbWUgU2VsZWN0IFNoYXJlZCBTdGF0aWMgU3RlcCBTdHJ1Y3R1cmUgJyArXG4gICAgICAnU3RydWN0dXJlVW5pb24gU3dhcCBUaHJlYWRlZCBUbyBVbmRlZmluZU1hY3JvIFVudGlsIFVudGlsICBVbnVzZU1vZHVsZSAnICtcbiAgICAgICdVc2VNb2R1bGUgV2VuZCBXaGlsZSBXaXRoIFhJbmNsdWRlRmlsZSBYT3InLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBDT01NRU5UUyB8IFBCIElERSBjb2xvcjogIzAwQUFBQSAoUGVyc2lhbiBHcmVlbilcbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuXG4gICAgICB7IC8vIFBST0NFRFVSRVMgREVGSU5JVElPTlNcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKFByb2NlZHVyZXxEZWNsYXJlKShDfENETEx8RExMKT9cXFxcYicsXG4gICAgICAgIGVuZDogJ1xcXFwoJyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyAvLyBQUk9DRURVUkUgS0VZV09SRFMgfCBQQiBJREUgY29sb3I6ICMwMDY2NjYgKEJsdWUgU3RvbmUpICsgQm9sZFxuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJyhQcm9jZWR1cmV8RGVjbGFyZSkoQ3xDRExMfERMTCk/JyxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgLy8gUFJPQ0VEVVJFIFJFVFVSTiBUWVBFIFNFVFRJTkcgfCBQQiBJREUgY29sb3I6ICMwMDAwMDAgKEJsYWNrKVxuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwuXFxcXHcqJ1xuICAgICAgICAgICAgLy8gZW5kOiAnICcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSAvLyBQUk9DRURVUkUgTkFNRSB8IFBCIElERSBjb2xvcjogIzAwNjY2NiAoQmx1ZSBTdG9uZSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFNUUklOR1MsXG4gICAgICBDT05TVEFOVFNcbiAgICBdXG4gIH07XG59XG5cbi8qICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0hBTkdFTE9HXG4gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLSB2LjEuMiAoMjAxNy0wNS0xMilcbiAgICAgICAgLS0gQlVHLUZJWDogU29tZSBrZXl3b3JkcyB3ZXJlIGFjY2lkZW50YWxseSBqb3luZWQgdG9nZXRoZXIuIE5vdyBmaXhlZC5cbiAgICAtIHYuMS4xICgyMDE3LTA0LTMwKVxuICAgICAgICAtLSBVcGRhdGVkIHRvIFB1cmVCQVNJQyA1LjYwLlxuICAgICAgICAtLSBLZXl3b3JkcyBsaXN0IG5vdyBidWlsdCBieSBleHRyYWN0aW5nIHRoZW0gZnJvbSB0aGUgUHVyZUJBU0lDIFNESydzXG4gICAgICAgICAgIFwiU3ludGF4SGlsaWdodGluZy5kbGxcIiAoZnJvbSBlYWNoIFB1cmVCQVNJQyB2ZXJzaW9uKS4gVG9rZW5zIGZyb20gZWFjaFxuICAgICAgICAgICB2ZXJzaW9uIGFyZSBhZGRlZCB0byB0aGUgbGlzdCwgYW5kIHJlbmFtZWQgb3IgcmVtb3ZlZCB0b2tlbnMgYXJlIGtlcHRcbiAgICAgICAgICAgZm9yIHRoZSBzYWtlIG9mIGNvdmVyaW5nIGFsbCB2ZXJzaW9ucyBvZiB0aGUgbGFuZ3VhZ2UgZnJvbSBQdXJlQkFTSUNcbiAgICAgICAgICAgdjUuMDAgdXB3YXJkLiAoTk9URTogY3VycmVudGx5LCB0aGVyZSBhcmUgbm8gcmVuYW1lZCBvciBkZXByZWNhdGVkXG4gICAgICAgICAgIHRva2VucyBpbiB0aGUga2V5d29yZHMgbGlzdCkuIEZvciBtb3JlIGluZm8sIHNlZTpcbiAgICAgICAgICAgLS0gaHR0cDovL3d3dy5wdXJlYmFzaWMuZnIvZW5nbGlzaC92aWV3dG9waWMucGhwPyZwPTUwNjI2OVxuICAgICAgICAgICAtLSBodHRwczovL2dpdGh1Yi5jb20vdGFqbW9uZS9wdXJlYmFzaWMtYXJjaGl2ZXMvdHJlZS9tYXN0ZXIvc3ludGF4LWhpZ2hsaWdodGluZy9ndWlkZWxpbmVzXG4gICAgLSB2LjEuMCAoQXByaWwgMjAxNilcbiAgICAgICAgLS0gRmlyc3QgcmVsZWFzZVxuICAgICAgICAtLSBLZXl3b3JkcyBsaXN0IHRha2VuIGFuZCBhZGFwdGVkIGZyb20gR3VTaEgncyAoR3VzdGF2byBKdWxpbyBGaW9yZW56YSlcbiAgICAgICAgICAgUHVyZUJhc2ljIGxhbmd1YWdlIGZpbGUgZm9yIEdlU0hpOlxuICAgICAgICAgICAtLSBodHRwczovL2dpdGh1Yi5jb20vZWFzeWJvb2svZ2VzaGkvYmxvYi9tYXN0ZXIvZ2VzaGkvcHVyZWJhc2ljLnBocFxuKi87IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FuZCBlbGlmIGlzIGdsb2JhbCBhcyBpbiBpZiBmcm9tIHJhaXNlIGZvciBleGNlcHQgZmluYWxseSBwcmludCBpbXBvcnQgcGFzcyByZXR1cm4gJyArXG4gICAgICAnZXhlYyBlbHNlIGJyZWFrIG5vdCB3aXRoIGNsYXNzIGFzc2VydCB5aWVsZCB0cnkgd2hpbGUgY29udGludWUgZGVsIG9yIGRlZiBsYW1iZGEgJyArXG4gICAgICAnYXN5bmMgYXdhaXQgbm9ubG9jYWx8MTAnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0VsbGlwc2lzIE5vdEltcGxlbWVudGVkJyxcbiAgICBsaXRlcmFsOiAnRmFsc2UgTm9uZSBUcnVlJ1xuICB9O1xuICB2YXIgUFJPTVBUID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLCAgYmVnaW46IC9eKD4+PnxcXC5cXC5cXC4pIC9cbiAgfTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcey8sIGVuZDogL1xcfS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC8jL1xuICB9O1xuICB2YXIgTElURVJBTF9CUkFDS0VUID0ge1xuICAgIGJlZ2luOiAvXFx7XFx7LyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/JycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFBST01QVF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8Yik/cj9cIlwiXCIvLCBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgUFJPTVBUXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZiknJycvLCBlbmQ6IC8nJycvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgUFJPTVBULCBMSVRFUkFMX0JSQUNLRVQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZilcIlwiXCIvLCBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgUFJPTVBULCBMSVRFUkFMX0JSQUNLRVQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKScvLCBlbmQ6IC8nLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKVwiLywgZW5kOiAvXCIvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhifGJyKScvLCBlbmQ6IC8nL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oYnxicilcIi8sIGVuZDogL1wiL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZiknLywgZW5kOiAvJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBMSVRFUkFMX0JSQUNLRVQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZilcIi8sIGVuZDogL1wiLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIExJVEVSQUxfQlJBQ0tFVCwgU1VCU1RdXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCByZWxldmFuY2U6IDAsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogaGxqcy5CSU5BUllfTlVNQkVSX1JFICsgJ1tsTGpKXT8nfSxcbiAgICAgIHtiZWdpbjogJ1xcXFxiKDBvWzAtN10rKVtsTGpKXT8nfSxcbiAgICAgIHtiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICdbbExqSl0/J31cbiAgICBdXG4gIH07XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFsnc2VsZicsIFBST01QVCwgTlVNQkVSLCBTVFJJTkcsIGhsanMuSEFTSF9DT01NRU5UX01PREVdXG4gIH07XG4gIFNVQlNULmNvbnRhaW5zID0gW1NUUklORywgTlVNQkVSLCBQUk9NUFRdO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncHknLCAnZ3lwJywgJ2lweXRob24nXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLyg8XFwvfC0+fFxcPyl8PT4vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBQUk9NUFQsXG4gICAgICBOVU1CRVIsXG4gICAgICBTVFJJTkcsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtjbGFzc05hbWU6ICdmdW5jdGlvbicsIGJlZ2luS2V5d29yZHM6ICdkZWYnfSxcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAnY2xhc3MnLCBiZWdpbktleXdvcmRzOiAnY2xhc3MnfVxuICAgICAgICBdLFxuICAgICAgICBlbmQ6IC86LyxcbiAgICAgICAgaWxsZWdhbDogL1skez07XFxuLF0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogLy0+LywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogJ05vbmUnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eW1xcdCBdKkAvLCBlbmQ6IC8kL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXGIocHJpbnR8ZXhlYylcXCgvIC8vIGRvbuKAmXQgaGlnaGxpZ2h0IGtleXdvcmRzLXR1cm5lZC1mdW5jdGlvbnMgaW4gUHl0aG9uIDNcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUV9LRVlXT1JEUyA9IHtcbiAga2V5d29yZDpcbiAgICAnZG8gd2hpbGUgc2VsZWN0IGRlbGV0ZSBieSB1cGRhdGUgZnJvbScsXG4gIGxpdGVyYWw6XG4gICAgJzBiIDFiJyxcbiAgYnVpbHRfaW46XG4gICAgJ25lZyBub3QgbnVsbCBzdHJpbmcgcmVjaXByb2NhbCBmbG9vciBjZWlsaW5nIHNpZ251bSBtb2QgeGJhciB4bG9nIGFuZCBvciBlYWNoIHNjYW4gb3ZlciBwcmlvciBtbXUgbHNxIGludiBtZDUgbHRpbWUgZ3RpbWUgY291bnQgZmlyc3QgdmFyIGRldiBtZWQgY292IGNvciBhbGwgYW55IHJhbmQgc3VtcyBwcmRzIG1pbnMgbWF4cyBmaWxscyBkZWx0YXMgcmF0aW9zIGF2Z3MgZGlmZmVyIHByZXYgbmV4dCByYW5rIHJldmVyc2UgaWFzYyBpZGVzYyBhc2MgZGVzYyBtc3VtIG1jb3VudCBtYXZnIG1kZXYgeHJhbmsgbW1pbiBtbWF4IHhwcmV2IHJvdGF0ZSBkaXN0aW5jdCBncm91cCB3aGVyZSBmbGlwIHR5cGUga2V5IHRpbCBnZXQgdmFsdWUgYXR0ciBjdXQgc2V0IHVwc2VydCByYXplIHVuaW9uIGludGVyIGV4Y2VwdCBjcm9zcyBzdiB2cyBzdWJsaXN0IGVubGlzdCByZWFkMCByZWFkMSBob3BlbiBoY2xvc2UgaGRlbCBoc3ltIGhjb3VudCBwZWFjaCBzeXN0ZW0gbHRyaW0gcnRyaW0gdHJpbSBsb3dlciB1cHBlciBzc3IgdmlldyB0YWJsZXMgdmlld3MgY29scyB4Y29scyBrZXlzIHhrZXkgeGNvbCB4YXNjIHhkZXNjIGZrZXlzIG1ldGEgbGogYWogYWowIGlqIHBqIGFzb2YgdWogd3cgd2ogd2oxIGZieSB4Z3JvdXAgdW5ncm91cCBlaiBzYXZlIGxvYWQgcnNhdmUgcmxvYWQgc2hvdyBjc3YgcGFyc2UgZXZhbCBtaW4gbWF4IGF2ZyB3YXZnIHdzdW0gc2luIGNvcyB0YW4gc3VtJyxcbiAgdHlwZTpcbiAgICAnYGZsb2F0IGBkb3VibGUgaW50IGB0aW1lc3RhbXAgYHRpbWVzcGFuIGBkYXRldGltZSBgdGltZSBgYm9vbGVhbiBgc3ltYm9sIGBjaGFyIGBieXRlIGBzaG9ydCBgbG9uZyBgcmVhbCBgbW9udGggYGRhdGUgYG1pbnV0ZSBgc2Vjb25kIGBndWlkJ1xuICB9O1xuICByZXR1cm4ge1xuICBhbGlhc2VzOlsnaycsICdrZGInXSxcbiAga2V5d29yZHM6IFFfS0VZV09SRFMsXG4gIGxleGVtZXM6IC8oYD8pW0EtWmEtejAtOV9dK1xcYi8sXG4gIGNvbnRhaW5zOiBbXG4gIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaW4gb2Ygb24gaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoICcgK1xuICAgICAgICAnaW5zdGFuY2VvZiB3aXRoIHRocm93IGNhc2UgZGVmYXVsdCB0cnkgdGhpcyBzd2l0Y2ggY29udGludWUgdHlwZW9mIGRlbGV0ZSAnICtcbiAgICAgICAgJ2xldCB5aWVsZCBjb25zdCBleHBvcnQgc3VwZXIgZGVidWdnZXIgYXMgYXN5bmMgYXdhaXQgaW1wb3J0JyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkIE5hTiBJbmZpbml0eScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2V2YWwgaXNGaW5pdGUgaXNOYU4gcGFyc2VGbG9hdCBwYXJzZUludCBkZWNvZGVVUkkgZGVjb2RlVVJJQ29tcG9uZW50ICcgK1xuICAgICAgICAnZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgJyArXG4gICAgICAgICdFdmFsRXJyb3IgSW50ZXJuYWxFcnJvciBSYW5nZUVycm9yIFJlZmVyZW5jZUVycm9yIFN0b3BJdGVyYXRpb24gU3ludGF4RXJyb3IgJyArXG4gICAgICAgICdUeXBlRXJyb3IgVVJJRXJyb3IgTnVtYmVyIE1hdGggRGF0ZSBTdHJpbmcgUmVnRXhwIEFycmF5IEZsb2F0MzJBcnJheSAnICtcbiAgICAgICAgJ0Zsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5ICcgK1xuICAgICAgICAnVWludDhBcnJheSBVaW50OENsYW1wZWRBcnJheSBBcnJheUJ1ZmZlciBEYXRhVmlldyBKU09OIEludGwgYXJndW1lbnRzIHJlcXVpcmUgJyArXG4gICAgICAgICdtb2R1bGUgY29uc29sZSB3aW5kb3cgZG9jdW1lbnQgU3ltYm9sIFNldCBNYXAgV2Vha1NldCBXZWFrTWFwIFByb3h5IFJlZmxlY3QgJyArXG4gICAgICAgICdCZWhhdmlvciBib29sIGNvbG9yIGNvb3JkaW5hdGUgZGF0ZSBkb3VibGUgZW51bWVyYXRpb24gZm9udCBnZW9jaXJjbGUgZ2VvcmVjdGFuZ2xlICcgK1xuICAgICAgICAnZ2Vvc2hhcGUgaW50IGxpc3QgbWF0cml4NHg0IHBhcmVudCBwb2ludCBxdWF0ZXJuaW9uIHJlYWwgcmVjdCAnICtcbiAgICAgICAgJ3NpemUgc3RyaW5nIHVybCB2YXJpYW50IHZlY3RvcjJkIHZlY3RvcjNkIHZlY3RvcjRkJyArXG4gICAgICAgICdQcm9taXNlJ1xuICAgIH07XG5cbiAgdmFyIFFNTF9JREVOVF9SRSA9ICdbYS16QS1aX11bYS16QS1aMC05XFxcXC5fXSonO1xuXG4gIC8vIElzb2xhdGUgcHJvcGVydHkgc3RhdGVtZW50cy4gRW5kcyBhdCBhIDosID0sIDssICwsIGEgY29tbWVudCBvciBlbmQgb2YgbGluZS5cbiAgLy8gVXNlIHByb3BlcnR5IGNsYXNzLlxuICB2YXIgUFJPUEVSVFkgPSB7XG4gICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgIGJlZ2luOiAnXFxcXGJwcm9wZXJ0eVxcXFxiJyxcbiAgICAgIHN0YXJ0czoge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBlbmQ6ICcoOnw9fDt8LHwvL3wvXFxcXCp8JCknLFxuICAgICAgICByZXR1cm5FbmQ6IHRydWVcbiAgICAgIH1cbiAgfTtcblxuICAvLyBJc29sYXRlIHNpZ25hbCBzdGF0ZW1lbnRzLiBFbmRzIGF0IGEgKSBhIGNvbW1lbnQgb3IgZW5kIG9mIGxpbmUuXG4gIC8vIFVzZSBwcm9wZXJ0eSBjbGFzcy5cbiAgdmFyIFNJR05BTCA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgYmVnaW46ICdcXFxcYnNpZ25hbFxcXFxiJyxcbiAgICAgIHN0YXJ0czoge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBlbmQ6ICcoXFxcXCh8Onw9fDt8LHwvL3wvXFxcXCp8JCknLFxuICAgICAgICByZXR1cm5FbmQ6IHRydWVcbiAgICAgIH1cbiAgfTtcblxuICAvLyBpZDogaXMgc3BlY2lhbCBpbiBRTUwuIFdoZW4gd2Ugc2VlIGlkOiB3ZSB3YW50IHRvIG1hcmsgdGhlIGlkOiBhcyBhdHRyaWJ1dGUgYW5kXG4gIC8vIGVtcGhhc2l6ZSB0aGUgdG9rZW4gZm9sbG93aW5nLlxuICB2YXIgSURfSUQgPSB7XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgYmVnaW46ICdcXFxcYmlkXFxcXHMqOicsXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgZW5kOiBRTUxfSURFTlRfUkUsXG4gICAgICAgIHJldHVybkVuZDogZmFsc2VcbiAgICAgIH1cbiAgfTtcblxuICAvLyBGaW5kIFFNTCBvYmplY3QgYXR0cmlidXRlLiBBbiBhdHRyaWJ1dGUgaXMgYSBRTUwgaWRlbnRpZmllciBmb2xsb3dlZCBieSA6LlxuICAvLyBVbmZvcnR1bmF0ZWx5IGl0J3MgaGFyZCB0byBrbm93IHdoZXJlIGl0IGVuZHMsIGFzIGl0IG1heSBjb250YWluIHNjYWxhcnMsXG4gIC8vIG9iamVjdHMsIG9iamVjdCBkZWZpbml0aW9ucywgb3IgamF2YXNjcmlwdC4gVGhlIHRydWUgZW5kIGlzIGVpdGhlciB3aGVuIHRoZSBwYXJlbnRcbiAgLy8gZW5kcyBvciB0aGUgbmV4dCBhdHRyaWJ1dGUgaXMgZGV0ZWN0ZWQuXG4gIHZhciBRTUxfQVRUUklCVVRFID0ge1xuICAgIGJlZ2luOiBRTUxfSURFTlRfUkUgKyAnXFxcXHMqOicsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46IFFNTF9JREVOVF9SRSxcbiAgICAgICAgZW5kOiAnXFxcXHMqOicsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgLy8gRmluZCBRTUwgb2JqZWN0LiBBIFFNTCBvYmplY3QgaXMgYSBRTUwgaWRlbnRpZmllciBmb2xsb3dlZCBieSB7IGFuZCBlbmRzIGF0IHRoZSBtYXRjaGluZyB9LlxuICAvLyBBbGwgd2UgcmVhbGx5IGNhcmUgYWJvdXQgaXMgZmluZGluZyBJREVOVCBmb2xsb3dlZCBieSB7IGFuZCBqdXN0IG1hcmsgdXAgdGhlIElERU5UIGFuZCBpZ25vcmUgdGhlIHsuXG4gIHZhciBRTUxfT0JKRUNUID0ge1xuICAgIGJlZ2luOiBRTUxfSURFTlRfUkUgKyAnXFxcXHMqeycsIGVuZDogJ3snLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBRTUxfSURFTlRfUkV9KVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncXQnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSAoc3RyaWN0fGFzbSlbJ1wiXS9cbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgeyAvLyB0ZW1wbGF0ZSBzdHJpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ1xcXFx9J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbYkJdWzAxXSspJyB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYigwW29PXVswLTddKyknIH0sXG4gICAgICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLy8gXCJ2YWx1ZVwiIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogJygnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIoY2FzZXxyZXR1cm58dGhyb3cpXFxcXGIpXFxcXHMqJyxcbiAgICAgICAga2V5d29yZHM6ICdyZXR1cm4gdGhyb3cgY2FzZScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgICAgICB7IC8vIEU0WCAvIEpTWFxuICAgICAgICAgICAgYmVnaW46IC88LywgZW5kOiAvPlxccypbKTtcXF1dLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJ1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgU0lHTkFMLFxuICAgICAgUFJPUEVSVFksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAvXFx7LywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IC9bQS1aYS16JF9dWzAtOUEtWmEteiRfXSovfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC9cXFt8JS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXC4nICsgaGxqcy5JREVOVF9SRSwgcmVsZXZhbmNlOiAwIC8vIGhhY2s6IHByZXZlbnRzIGRldGVjdGlvbiBvZiBrZXl3b3JkcyBhZnRlciBkb3RzXG4gICAgICB9LFxuICAgICAgSURfSUQsXG4gICAgICBRTUxfQVRUUklCVVRFLFxuICAgICAgUU1MX09CSkVDVFxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSURFTlRfUkUgPSAnKFthLXpBLVpdfFxcXFwuW2EtekEtWi5dKVthLXpBLVowLTkuX10qJztcblxuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogSURFTlRfUkUsXG4gICAgICAgIGxleGVtZXM6IElERU5UX1JFLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAnZnVuY3Rpb24gaWYgaW4gYnJlYWsgbmV4dCByZXBlYXQgZWxzZSBmb3IgcmV0dXJuIHN3aXRjaCB3aGlsZSB0cnkgdHJ5Q2F0Y2ggJyArXG4gICAgICAgICAgICAnc3RvcCB3YXJuaW5nIHJlcXVpcmUgbGlicmFyeSBhdHRhY2ggZGV0YWNoIHNvdXJjZSBzZXRNZXRob2Qgc2V0R2VuZXJpYyAnICtcbiAgICAgICAgICAgICdzZXRHcm91cEdlbmVyaWMgc2V0Q2xhc3MgLi4uJyxcbiAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgJ05VTEwgTkEgVFJVRSBGQUxTRSBUIEYgSW5mIE5hTiBOQV9pbnRlZ2VyX3wxMCBOQV9yZWFsX3wxMCBOQV9jaGFyYWN0ZXJffDEwICcgK1xuICAgICAgICAgICAgJ05BX2NvbXBsZXhffDEwJ1xuICAgICAgICB9LFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGhleCB2YWx1ZVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCIwW3hYXVswLTlhLWZBLUZdK1tMaV0/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBleHBsaWNpdCBpbnRlZ2VyXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxkKyg/OltlRV1bK1xcXFwtXT9cXFxcZCopP0xcXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG51bWJlciB3aXRoIHRyYWlsaW5nIGRlY2ltYWxcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXGQrXFxcXC4oPyFcXFxcZCkoPzppXFxcXGIpP1wiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG51bWJlclxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcZCsoPzpcXFxcLlxcXFxkKik/KD86W2VFXVsrXFxcXC1dP1xcXFxkKik/aT9cXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG51bWJlciB3aXRoIGxlYWRpbmcgZGVjaW1hbFxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcLlxcXFxkKyg/OltlRV1bK1xcXFwtXT9cXFxcZCopP2k/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIC8vIGVzY2FwZWQgaWRlbnRpZmllclxuICAgICAgICBiZWdpbjogJ2AnLFxuICAgICAgICBlbmQ6ICdgJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICdcIicsIGVuZDogJ1wiJ30sXG4gICAgICAgICAge2JlZ2luOiBcIidcIiwgZW5kOiBcIidcIn1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIGZ1bmN0aW9uIG9yUmVWYWx1ZXMob3BzKXtcbiAgICByZXR1cm4gb3BzXG4gICAgLm1hcChmdW5jdGlvbihvcCkge1xuICAgICAgcmV0dXJuIG9wXG4gICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgLm1hcChmdW5jdGlvbihjaGFyKSB7XG4gICAgICAgICAgcmV0dXJuICdcXFxcJyArIGNoYXI7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcnKTtcbiAgICB9KVxuICAgIC5qb2luKCd8Jyk7XG4gIH1cblxuICB2YXIgUkVfSURFTlQgPSAnfj9bYS16JF9dWzAtOWEtekEtWiRfXSonO1xuICB2YXIgUkVfTU9EVUxFX0lERU5UID0gJ2A/W0EtWiRfXVswLTlhLXpBLVokX10qJztcblxuICB2YXIgUkVfUEFSQU1fVFlQRVBBUkFNID0gJ1xcJz9bYS16JF9dWzAtOWEteiRfXSonO1xuICB2YXIgUkVfUEFSQU1fVFlQRSA9ICdcXHMqOlxccypbYS16JF9dWzAtOWEteiRfXSooXFwoXFxzKignICsgUkVfUEFSQU1fVFlQRVBBUkFNICsgJ1xccyooLCcgKyBSRV9QQVJBTV9UWVBFUEFSQU0gKyAnKSopP1xccypcXCkpPyc7XG4gIHZhciBSRV9QQVJBTSA9IFJFX0lERU5UICsgJygnICsgUkVfUEFSQU1fVFlQRSArICcpPygnICsgUkVfUEFSQU1fVFlQRSArICcpPyc7XG4gIHZhciBSRV9PUEVSQVRPUiA9IFwiKFwiICsgb3JSZVZhbHVlcyhbJ3x8JywgJyYmJywgJysrJywgJyoqJywgJysuJywgJyonLCAnLycsICcqLicsICcvLicsICcuLi4nLCAnfD4nXSkgKyBcInw9PXw9PT0pXCI7XG4gIHZhciBSRV9PUEVSQVRPUl9TUEFDRUQgPSBcIlxcXFxzK1wiICsgUkVfT1BFUkFUT1IgKyBcIlxcXFxzK1wiO1xuXG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FuZCBhcyBhc3IgYXNzZXJ0IGJlZ2luIGNsYXNzIGNvbnN0cmFpbnQgZG8gZG9uZSBkb3dudG8gZWxzZSBlbmQgZXhjZXB0aW9uIGV4dGVybmFsJyArXG4gICAgICAnZm9yIGZ1biBmdW5jdGlvbiBmdW5jdG9yIGlmIGluIGluY2x1ZGUgaW5oZXJpdCBpbml0aWFsaXplcicgK1xuICAgICAgJ2xhbmQgbGF6eSBsZXQgbG9yIGxzbCBsc3IgbHhvciBtYXRjaCBtZXRob2QgbW9kIG1vZHVsZSBtdXRhYmxlIG5ldyBub25yZWMnICtcbiAgICAgICdvYmplY3Qgb2Ygb3BlbiBvciBwcml2YXRlIHJlYyBzaWcgc3RydWN0IHRoZW4gdG8gdHJ5IHR5cGUgdmFsIHZpcnR1YWwgd2hlbiB3aGlsZSB3aXRoJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdhcnJheSBib29sIGJ5dGVzIGNoYXIgZXhufDUgZmxvYXQgaW50IGludDMyIGludDY0IGxpc3QgbGF6eV90fDUgbmF0aXZlaW50fDUgcmVmIHN0cmluZyB1bml0ICcsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlJ1xuICB9O1xuXG4gIHZhciBSRV9OVU1CRVIgPSAnXFxcXGIoMFt4WF1bYS1mQS1GMC05X10rW0xsbl0/fCcgK1xuICAgICcwW29PXVswLTdfXStbTGxuXT98JyArXG4gICAgJzBbYkJdWzAxX10rW0xsbl0/fCcgK1xuICAgICdbMC05XVswLTlfXSooW0xsbl18KFxcXFwuWzAtOV9dKik/KFtlRV1bLStdP1swLTlfXSspPyk/KSc7XG5cbiAgdmFyIE5VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBSRV9OVU1CRVJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXChcXFxcLScgKyBSRV9OVU1CRVIgKyAnXFxcXCknXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBPUEVSQVRPUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ29wZXJhdG9yJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgYmVnaW46IFJFX09QRVJBVE9SXG4gIH07XG4gIHZhciBMSVNUX0NPTlRFTlRTX01PREVTID0gW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2lkZW50aWZpZXInLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgYmVnaW46IFJFX0lERU5UXG4gICAgfSxcbiAgICBPUEVSQVRPUl9NT0RFLFxuICAgIE5VTUJFUl9NT0RFXG4gIF07XG5cbiAgdmFyIE1PRFVMRV9BQ0NFU1NfQ09OVEVOVFMgPSBbXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBPUEVSQVRPUl9NT0RFLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ21vZHVsZScsXG4gICAgICBiZWdpbjogXCJcXFxcYlwiICsgUkVfTU9EVUxFX0lERU5ULCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgIGVuZDogXCJcXC5cIixcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICBiZWdpbjogUkVfTU9EVUxFX0lERU5ULFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICBdO1xuXG4gIHZhciBQQVJBTVNfQ09OVEVOVFMgPSBbXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbW9kdWxlJyxcbiAgICAgIGJlZ2luOiBcIlxcXFxiXCIgKyBSRV9NT0RVTEVfSURFTlQsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgZW5kOiBcIlxcLlwiLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2lkZW50aWZpZXInLFxuICAgICAgICAgIGJlZ2luOiBSRV9NT0RVTEVfSURFTlQsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIF07XG5cbiAgdmFyIFBBUkFNU19NT0RFID0ge1xuICAgIGJlZ2luOiBSRV9JREVOVCxcbiAgICBlbmQ6ICcoLHxcXFxcbnxcXFxcKSknLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgT1BFUkFUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwaW5nJyxcbiAgICAgICAgYmVnaW46ICc6JyxcbiAgICAgICAgZW5kOiAnKCx8XFxcXG4pJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05URU5UU1xuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgRlVOQ1RJT05fQkxPQ0tfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxzKFxcXFwoXFxcXC4/Lio/XFxcXCl8JyArIFJFX0lERU5UICsgJylcXFxccyo9PicsXG4gICAgICAgIGVuZDogJ1xcXFxzKj0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiBSRV9JREVOVFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IFJFX1BBUkFNXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcKFxccypcXCkvLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxzXFxcXChcXFxcLj9bXjtcXFxcfF0qXFxcXClcXFxccyo9PicsXG4gICAgICAgIGVuZDogJ1xcXFxzPT4nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICBQQVJBTVNfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKFxcXFwuXFxcXHMnICsgUkVfSURFTlQgKyAnXFxcXClcXFxccyo9PidcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIE1PRFVMRV9BQ0NFU1NfQ09OVEVOVFMucHVzaChGVU5DVElPTl9CTE9DS19NT0RFKTtcblxuICB2YXIgQ09OU1RSVUNUT1JfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdjb25zdHJ1Y3RvcicsXG4gICAgYmVnaW46IFJFX01PRFVMRV9JREVOVCArICdcXFxcKCcsXG4gICAgZW5kOiAnXFxcXCknLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgT1BFUkFUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYicgKyBSRV9JREVOVFxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgUEFUVEVSTl9NQVRDSF9CTE9DS19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhdHRlcm4tbWF0Y2gnLFxuICAgIGJlZ2luOiAnXFxcXHwnLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBlbmQ6ICc9PicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT05TVFJVQ1RPUl9NT0RFLFxuICAgICAgT1BFUkFUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjbGFzc05hbWU6ICdjb25zdHJ1Y3RvcicsXG4gICAgICAgIGJlZ2luOiBSRV9NT0RVTEVfSURFTlRcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE1PRFVMRV9BQ0NFU1NfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdtb2R1bGUtYWNjZXNzJyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFwiXFxcXGIoXCIgKyBSRV9NT0RVTEVfSURFTlQgKyBcIlxcXFwuKStcIiArIFJFX0lERU5UXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogXCJcXFxcYihcIiArIFJFX01PRFVMRV9JREVOVCArIFwiXFxcXC4pK1xcXFwoXCIsXG4gICAgICAgIGVuZDogXCJcXFxcKVwiLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBGVU5DVElPTl9CTE9DS19NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLFxuICAgICAgICAgICAgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXS5jb25jYXQoTU9EVUxFX0FDQ0VTU19DT05URU5UUylcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBcIlxcXFxiKFwiICsgUkVfTU9EVUxFX0lERU5UICsgXCJcXFxcLikre1wiLFxuICAgICAgICBlbmQ6IFwifVwiXG4gICAgICB9XG4gICAgXSxcbiAgICBjb250YWluczogTU9EVUxFX0FDQ0VTU19DT05URU5UU1xuICB9O1xuXG4gIFBBUkFNU19DT05URU5UUy5wdXNoKE1PRFVMRV9BQ0NFU1NfTU9ERSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3JlJ10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICcoOlxcXFwtfDo9fFxcXFwke3xcXFxcKz0pJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCcvXFxcXConLCAnXFxcXCovJywgeyBpbGxlZ2FsOiAnXihcXFxcIyxcXFxcL1xcXFwvKScgfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NoYXJhY3RlcicsXG4gICAgICAgIGJlZ2luOiAnXFwnKFxcXFxcXFxcW15cXCddK3xbXlxcJ10pXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXChcXFxcKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXFtcXFxcfCcsXG4gICAgICAgIGVuZDogJ1xcXFx8XFxcXF0nLFxuICAgICAgICByZWxldmFuY2U6ICAwLFxuICAgICAgICBjb250YWluczogTElTVF9DT05URU5UU19NT0RFU1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXFsnLFxuICAgICAgICBlbmQ6ICdcXFxcXScsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IExJU1RfQ09OVEVOVFNfTU9ERVNcbiAgICAgIH0sXG4gICAgICBDT05TVFJVQ1RPUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdvcGVyYXRvcicsXG4gICAgICAgIGJlZ2luOiBSRV9PUEVSQVRPUl9TUEFDRUQsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcLVxcXFwtPicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIE5VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgUEFUVEVSTl9NQVRDSF9CTE9DS19NT0RFLFxuICAgICAgRlVOQ1RJT05fQkxPQ0tfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbW9kdWxlLWRlZicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxibW9kdWxlXFxcXHMrXCIgKyBSRV9JREVOVCArIFwiXFxcXHMrXCIgKyBSRV9NT0RVTEVfSURFTlQgKyBcIlxcXFxzKz1cXFxccyt7XCIsXG4gICAgICAgIGVuZDogXCJ9XCIsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtb2R1bGUnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgYmVnaW46IFJFX01PRFVMRV9JREVOVFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICd7JyxcbiAgICAgICAgICAgIGVuZDogJ30nLFxuICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXS5jb25jYXQoTU9EVUxFX0FDQ0VTU19DT05URU5UUylcbiAgICAgIH0sXG4gICAgICBNT0RVTEVfQUNDRVNTX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOlxuICAgICAgJ0FyY2hpdmVSZWNvcmQgQXJlYUxpZ2h0U291cmNlIEF0bW9zcGhlcmUgQXR0cmlidXRlIEF0dHJpYnV0ZUJlZ2luIEF0dHJpYnV0ZUVuZCBCYXNpcyAnICtcbiAgICAgICdCZWdpbiBCbG9iYnkgQm91bmQgQ2xpcHBpbmcgQ2xpcHBpbmdQbGFuZSBDb2xvciBDb2xvclNhbXBsZXMgQ29uY2F0VHJhbnNmb3JtIENvbmUgJyArXG4gICAgICAnQ29vcmRpbmF0ZVN5c3RlbSBDb29yZFN5c1RyYW5zZm9ybSBDcm9wV2luZG93IEN1cnZlcyBDeWxpbmRlciBEZXB0aE9mRmllbGQgRGV0YWlsICcgK1xuICAgICAgJ0RldGFpbFJhbmdlIERpc2sgRGlzcGxhY2VtZW50IERpc3BsYXkgRW5kIEVycm9ySGFuZGxlciBFeHBvc3VyZSBFeHRlcmlvciBGb3JtYXQgJyArXG4gICAgICAnRnJhbWVBc3BlY3RSYXRpbyBGcmFtZUJlZ2luIEZyYW1lRW5kIEdlbmVyYWxQb2x5Z29uIEdlb21ldHJpY0FwcHJveGltYXRpb24gR2VvbWV0cnkgJyArXG4gICAgICAnSGlkZXIgSHlwZXJib2xvaWQgSWRlbnRpdHkgSWxsdW1pbmF0ZSBJbWFnZXIgSW50ZXJpb3IgTGlnaHRTb3VyY2UgJyArXG4gICAgICAnTWFrZUN1YmVGYWNlRW52aXJvbm1lbnQgTWFrZUxhdExvbmdFbnZpcm9ubWVudCBNYWtlU2hhZG93IE1ha2VUZXh0dXJlIE1hdHRlICcgK1xuICAgICAgJ01vdGlvbkJlZ2luIE1vdGlvbkVuZCBOdVBhdGNoIE9iamVjdEJlZ2luIE9iamVjdEVuZCBPYmplY3RJbnN0YW5jZSBPcGFjaXR5IE9wdGlvbiAnICtcbiAgICAgICdPcmllbnRhdGlvbiBQYXJhYm9sb2lkIFBhdGNoIFBhdGNoTWVzaCBQZXJzcGVjdGl2ZSBQaXhlbEZpbHRlciBQaXhlbFNhbXBsZXMgJyArXG4gICAgICAnUGl4ZWxWYXJpYW5jZSBQb2ludHMgUG9pbnRzR2VuZXJhbFBvbHlnb25zIFBvaW50c1BvbHlnb25zIFBvbHlnb24gUHJvY2VkdXJhbCBQcm9qZWN0aW9uICcgK1xuICAgICAgJ1F1YW50aXplIFJlYWRBcmNoaXZlIFJlbGF0aXZlRGV0YWlsIFJldmVyc2VPcmllbnRhdGlvbiBSb3RhdGUgU2NhbGUgU2NyZWVuV2luZG93ICcgK1xuICAgICAgJ1NoYWRpbmdJbnRlcnBvbGF0aW9uIFNoYWRpbmdSYXRlIFNodXR0ZXIgU2lkZXMgU2tldyBTb2xpZEJlZ2luIFNvbGlkRW5kIFNwaGVyZSAnICtcbiAgICAgICdTdWJkaXZpc2lvbk1lc2ggU3VyZmFjZSBUZXh0dXJlQ29vcmRpbmF0ZXMgVG9ydXMgVHJhbnNmb3JtIFRyYW5zZm9ybUJlZ2luIFRyYW5zZm9ybUVuZCAnICtcbiAgICAgICdUcmFuc2Zvcm1Qb2ludHMgVHJhbnNsYXRlIFRyaW1DdXJ2ZSBXb3JsZEJlZ2luIFdvcmxkRW5kJyxcbiAgICBpbGxlZ2FsOiAnPC8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVElGSUVSID0gJ1thLXpBLVotX11bXlxcXFxue10rXFxcXHsnO1xuXG4gIHZhciBQUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgIGJlZ2luOiAvW2EtekEtWi1fXSsvLCBlbmQ6IC9cXHMqOi8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICc7JyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgYmVnaW46IC9cXC5bYS16QS1aLV9dKy9cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgIGJlZ2luOiAvXFwob3B0aW9uYWxcXCkvXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2dyYXBoJywgJ2luc3RhbmNlcyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6ICdpbXBvcnQnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBGYWNldCBzZWN0aW9uc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ15mYWNldCAnICsgSURFTlRJRklFUixcbiAgICAgICAgZW5kOiAnfScsXG4gICAgICAgIGtleXdvcmRzOiAnZmFjZXQnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFBST1BFUlRZLFxuICAgICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgLy8gSW5zdGFuY2Ugc2VjdGlvbnNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqaW5zdGFuY2Ugb2YgJyArIElERU5USUZJRVIsXG4gICAgICAgIGVuZDogJ30nLFxuICAgICAgICBrZXl3b3JkczogJ25hbWUgY291bnQgY2hhbm5lbHMgaW5zdGFuY2UtZGF0YSBpbnN0YW5jZS1zdGF0ZSBpbnN0YW5jZSBvZicsXG4gICAgICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICBQUk9QRVJUWSxcbiAgICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG5cbiAgICAgIC8vIENvbXBvbmVudCBzZWN0aW9uc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ14nICsgSURFTlRJRklFUixcbiAgICAgICAgZW5kOiAnfScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgUFJPUEVSVFksXG4gICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyBDb21tZW50c1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBDb2xvcnMgZnJvbSBSb3V0ZXJPUyB0ZXJtaW5hbDpcbi8vICAgZ3JlZW4gICAgICAgIC0gIzBFOUEwMFxuLy8gICB0ZWFsICAgICAgICAgLSAjMEM5QTlBXG4vLyAgIHB1cnBsZSAgICAgICAtICM5OTA2OUFcbi8vICAgbGlnaHQtYnJvd24gIC0gIzlBOTkwMFxuXG5mdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIFNUQVRFTUVOVFMgPSAnZm9yZWFjaCBkbyB3aGlsZSBmb3IgaWYgZnJvbSB0byBzdGVwIGVsc2Ugb24tZXJyb3IgYW5kIG9yIG5vdCBpbic7XG5cbiAgLy8gR2xvYmFsIGNvbW1hbmRzOiBFdmVyeSBnbG9iYWwgY29tbWFuZCBzaG91bGQgc3RhcnQgd2l0aCBcIjpcIiB0b2tlbiwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyB2YXJpYWJsZS5cbiAgdmFyIEdMT0JBTF9DT01NQU5EUyA9ICdnbG9iYWwgbG9jYWwgYmVlcCBkZWxheSBwdXQgbGVuIHR5cGVvZiBwaWNrIGxvZyB0aW1lIHNldCBmaW5kIGVudmlyb25tZW50IHRlcm1pbmFsIGVycm9yIGV4ZWN1dGUgcGFyc2UgcmVzb2x2ZSB0b2FycmF5IHRvYm9vbCB0b2lkIHRvaXAgdG9pcDYgdG9udW0gdG9zdHIgdG90aW1lJztcblxuICAvLyBDb21tb24gY29tbWFuZHM6IEZvbGxvd2luZyBjb21tYW5kcyBhdmFpbGFibGUgZnJvbSBtb3N0IHN1Yi1tZW51czpcbiAgdmFyIENPTU1PTl9DT01NQU5EUyA9ICdhZGQgcmVtb3ZlIGVuYWJsZSBkaXNhYmxlIHNldCBnZXQgcHJpbnQgZXhwb3J0IGVkaXQgZmluZCBydW4gZGVidWcgZXJyb3IgaW5mbyB3YXJuaW5nJztcblxuICB2YXIgTElURVJBTFMgPSAndHJ1ZSBmYWxzZSB5ZXMgbm8gbm90aGluZyBuaWwgbnVsbCc7XG5cbiAgdmFyIE9CSkVDVFMgPSAndHJhZmZpYy1mbG93IHRyYWZmaWMtZ2VuZXJhdG9yIGZpcmV3YWxsIHNjaGVkdWxlciBhYWEgYWNjb3VudGluZyBhZGRyZXNzLWxpc3QgYWRkcmVzcyBhbGlnbiBhcmVhIGJhbmR3aWR0aC1zZXJ2ZXIgYmZkIGJncCBicmlkZ2UgY2xpZW50IGNsb2NrIGNvbW11bml0eSBjb25maWcgY29ubmVjdGlvbiBjb25zb2xlIGN1c3RvbWVyIGRlZmF1bHQgZGhjcC1jbGllbnQgZGhjcC1zZXJ2ZXIgZGlzY292ZXJ5IGRucyBlLW1haWwgZXRoZXJuZXQgZmlsdGVyIGZpcmV3YWxsIGZpcm13YXJlIGdwcyBncmFwaGluZyBncm91cCBoYXJkd2FyZSBoZWFsdGggaG90c3BvdCBpZGVudGl0eSBpZ21wLXByb3h5IGluY29taW5nIGluc3RhbmNlIGludGVyZmFjZSBpcCBpcHNlYyBpcHY2IGlycSBsMnRwLXNlcnZlciBsY2QgbGRwIGxvZ2dpbmcgbWFjLXNlcnZlciBtYWMtd2luYm94IG1hbmdsZSBtYW51YWwgbWlycm9yIG1tZSBtcGxzIG5hdCBuZCBuZWlnaGJvciBuZXR3b3JrIG5vdGUgbnRwIG9zcGYgb3NwZi12MyBvdnBuLXNlcnZlciBwYWdlIHBlZXIgcGltIHBpbmcgcG9saWN5IHBvb2wgcG9ydCBwcHAgcHBwb2UtY2xpZW50IHBwdHAtc2VydmVyIHByZWZpeCBwcm9maWxlIHByb3Bvc2FsIHByb3h5IHF1ZXVlIHJhZGl1cyByZXNvdXJjZSByaXAgcmlwbmcgcm91dGUgcm91dGluZyBzY3JlZW4gc2NyaXB0IHNlY3VyaXR5LXByb2ZpbGVzIHNlcnZlciBzZXJ2aWNlIHNlcnZpY2UtcG9ydCBzZXR0aW5ncyBzaGFyZXMgc21iIHNtcyBzbmlmZmVyIHNubXAgc25vb3BlciBzb2NrcyBzc3RwLXNlcnZlciBzeXN0ZW0gdG9vbCB0cmFja2luZyB0eXBlIHVwZ3JhZGUgdXBucCB1c2VyLW1hbmFnZXIgdXNlcnMgdXNlciB2bGFuIHNlY3JldCB2cnJwIHdhdGNoZG9nIHdlYi1hY2Nlc3Mgd2lyZWxlc3MgcHB0cCBwcHBvZSBsYW4gd2FuIGxheWVyNy1wcm90b2NvbCBsZWFzZSBzaW1wbGUgcmF3JztcblxuICAvLyBwcmludCBwYXJhbWV0ZXJzXG4gIC8vIFNldmVyYWwgcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlIGZvciBwcmludCBjb21tYW5kOlxuICAvLyBUb0RvOiB2YXIgUEFSQU1FVEVSU19QUklOVCA9ICdhcHBlbmQgYXMtdmFsdWUgYnJpZWYgZGV0YWlsIGNvdW50LW9ubHkgZmlsZSBmb2xsb3cgZm9sbG93LW9ubHkgZnJvbSBpbnRlcnZhbCB0ZXJzZSB2YWx1ZS1saXN0IHdpdGhvdXQtcGFnaW5nIHdoZXJlIGluZm8nO1xuICAvLyBUb0RvOiB2YXIgT1BFUkFUT1JTID0gJyYmIGFuZCAhIG5vdCB8fCBvciBpbiB+IF4gJiA8PCA+PiArIC0gKiAvJztcbiAgLy8gVG9EbzogdmFyIFRZUEVTID0gJ251bSBudW1iZXIgYm9vbCBib29sZWFuIHN0ciBzdHJpbmcgaXAgaXA2LXByZWZpeCBpZCB0aW1lIGFycmF5JztcbiAgLy8gVG9EbzogVGhlIGZvbGxvd2luZyB0b2tlbnMgc2VydmUgYXMgZGVsaW1pdGVycyBpbiB0aGUgZ3JhbW1hcjogKCkgIFtdICB7fSAgOiAgIDsgICAkICAgL1xuXG4gIHZhciBWQVJfUFJFRklYID0gJ2dsb2JhbCBsb2NhbCBzZXQgZm9yIGZvcmVhY2gnO1xuXG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRbXFx3XFxkI0BdW1xcd1xcZF9dKi99LFxuICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICBdXG4gIH07XG5cbiAgdmFyIFFVT1RFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFZBUixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xcJFxcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgQVBPU19TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLCBlbmQ6IC8nL1xuICB9O1xuXG4gIHZhciBJUEFERFIgPSAnKCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcXFxiJztcbiAgdmFyIElQQUREUl93QklUTUFTSyA9ICBJUEFERFIrJy8oM1swLTJdfFsxLTJdWzAtOV18XFxcXGQpJztcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncm91dGVyb3MnLCAnbWlrcm90aWsnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IC86P1tcXHctXSsvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICAgIGtleXdvcmQ6IFNUQVRFTUVOVFMgKyAnIDonICsgU1RBVEVNRU5UUy5zcGxpdCgnICcpLmpvaW4oJyA6JykgKyAnIDonICsgR0xPQkFMX0NPTU1BTkRTLnNwbGl0KCcgJykuam9pbignIDonKSxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IC8vINC90LXQtNC+0L/Rg9GB0YLQuNC80YvQtSDQutC+0L3RgdGC0YDRg9C60YbQuNC4XG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogL15ALywgZW5kOiAvJC8sIH0sICAgICAgICAgICAgICAgLy8gZG5zXG4gICAgICAgICAgeyBiZWdpbjogL1xcL1xcKi8sIGVuZDogL1xcKlxcLy8sIH0sICAgICAgICAgIC8vIC0tIGNvbW1lbnRcbiAgICAgICAgICB7IGJlZ2luOiAvJSUvLCBlbmQ6IC8kLywgfSwgICAgICAgICAgICAgICAvLyAtLSBjb21tZW50XG4gICAgICAgICAgeyBiZWdpbjogL14nLywgZW5kOiAvJC8sIH0sICAgICAgICAgICAgICAgLy8gTW9ua2V5IG9uZSBsaW5lIGNvbW1lbnRcbiAgICAgICAgICB7IGJlZ2luOiAvXlxccypcXC9bXFx3LV0rPS8sIGVuZDogLyQvLCB9LCAgICAvLyBqYm9zcy1jbGlcbiAgICAgICAgICB7IGJlZ2luOiAvXFwvXFwvLywgZW5kOiAvJC8sIH0sICAgICAgICAgICAgIC8vIFN0YW4gY29tbWVudFxuICAgICAgICAgIHsgYmVnaW46IC9eXFxbXFw8LywgZW5kOiAvXFw+XFxdJC8sIH0sICAgICAgICAvLyBGIyBjbGFzcyBkZWNsYXJhdGlvbj9cbiAgICAgICAgICB7IGJlZ2luOiAvPFxcLy8sIGVuZDogLz4vLCB9LCAgICAgICAgICAgICAgLy8gSFRNTCB0YWdzXG4gICAgICAgICAgeyBiZWdpbjogL15mYWNldCAvLCBlbmQ6IC9cXH0vLCB9LCAgICAgICAgIC8vIHJvYm9jb25mIC0g0LvRjtGC0YvQuSDQutC+0YHRgtGL0LvRjCApKSlcbiAgICAgICAgICB7IGJlZ2luOiAnXjFcXFxcLlxcXFwuKFxcXFxkKykkJywgZW5kOiAvJC8sIH0sICAvLyB0YXBcbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogLy4vLFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXiMnLCAnJCcpLFxuICAgICAgUVVPVEVfU1RSSU5HLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBWQVIsXG4gICAgICB7IC8vIGF0dHJpYnV0ZT12YWx1ZVxuICAgICAgICBiZWdpbjogL1tcXHctXStcXD0oW15cXHNcXHtcXH1cXFtcXF1cXChcXCldKykvLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgICAgICBiZWdpbjogL1tePV0rL1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC89LyxcbiAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiAgdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIFFVT1RFX1NUUklORyxcbiAgICAgICAgICAgICAgQVBPU19TVFJJTkcsXG4gICAgICAgICAgICAgIFZBUixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoJyArIExJVEVSQUxTLnNwbGl0KCcgJykuam9pbignfCcpICsgJylcXFxcYicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC8qe1xuICAgICAgICAgICAgICAgIC8vIElQdjQgYWRkcmVzc2VzIGFuZCBzdWJuZXRzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge2JlZ2luOiBJUEFERFJfd0JJVE1BU0srJygsJytJUEFERFJfd0JJVE1BU0srJykqJ30sIC8vMTkyLjE2OC4wLjAvMjQsMS4yLjMuMC8yNFxuICAgICAgICAgICAgICAgICAge2JlZ2luOiBJUEFERFIrJy0nK0lQQUREUn0sICAgICAgIC8vIDE5Mi4xNjguMC4xLTE5Mi4xNjguMC4zXG4gICAgICAgICAgICAgICAgICB7YmVnaW46IElQQUREUisnKCwnK0lQQUREUisnKSonfSwgLy8gMTkyLjE2OC4wLjEsMTkyLjE2OC4wLjM0LDE5Mi4xNjguMjQuMSwxOTIuMTY4LjAuMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSwgLy8gKi9cbiAgICAgICAgICAgICAgLyp7XG4gICAgICAgICAgICAgICAgLy8gTUFDIGFkZHJlc3NlcyBhbmQgREhDUCBDbGllbnQgSURzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcYigxOik/KFswLTlBLUZhLWZdezEsMn1bOi1dKXs1fShbMC05QS1GYS1mXSl7MSwyfVxcYi8sXG4gICAgICAgICAgICAgIH0sIC8vKi9cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vINCd0LUg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNGC0Ywg0L3QtSDQutC70LDRgdGB0LjRhNC40YbQuNGA0L7QstCw0L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjy4g0J3QtdC+0LHRhdC+0LTQuNC80L4g0LTQu9GPINC40YHQutC70Y7Rh9C10L3QuNGPINC/0L7QtNGB0LLQtdGC0LrQuCDQt9C90LDRh9C10L3QuNC5INC60LDQuiBidWlsdF9pbi5cbiAgICAgICAgICAgICAgICAvLyBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvKFwiW15cIl0qXCJ8W15cXHNcXHtcXH1cXFtcXF1dKykvLFxuICAgICAgICAgICAgICB9LCAvLyovXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSAvLyovXG4gICAgICAgIF1cbiAgICAgIH0sLy8qL1xuICAgICAge1xuICAgICAgICAvLyBIRVggdmFsdWVzXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAvXFwqWzAtOWEtZkEtRl0rLyxcbiAgICAgIH0sIC8vKi9cblxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBDT01NT05fQ09NTUFORFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKShbXFxcXHNcXFtcXChdfFxcXSknLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdidWlsdGluLW5hbWUnLCAvLydmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogL1xcdysvLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcoXFxcXC5cXFxcLi98L3xcXFxccykoKCcgKyBPQkpFQ1RTLnNwbGl0KCcgJykuam9pbignfCcpICsgJyk7P1xcXFxzKSsnLHJlbGV2YW5jZTogMTAsfSxcbiAgICAgICAgICB7YmVnaW46IC9cXC5cXC4vLH0sXG4gICAgICAgIF0sXG4gICAgICB9LC8vKi9cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnZmxvYXQgY29sb3IgcG9pbnQgbm9ybWFsIHZlY3RvciBtYXRyaXggd2hpbGUgZm9yIGlmIGRvIHJldHVybiBlbHNlIGJyZWFrIGV4dGVybiBjb250aW51ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2FicyBhY29zIGFtYmllbnQgYXJlYSBhc2luIGF0YW4gYXRtb3NwaGVyZSBhdHRyaWJ1dGUgY2FsY3VsYXRlbm9ybWFsIGNlaWwgY2VsbG5vaXNlICcgK1xuICAgICAgICAnY2xhbXAgY29tcCBjb25jYXQgY29zIGRlZ3JlZXMgZGVwdGggRGVyaXYgZGlmZnVzZSBkaXN0YW5jZSBEdSBEdiBlbnZpcm9ubWVudCBleHAgJyArXG4gICAgICAgICdmYWNlZm9yd2FyZCBmaWx0ZXJzdGVwIGZsb29yIGZvcm1hdCBmcmVzbmVsIGluY2lkZW50IGxlbmd0aCBsaWdodHNvdXJjZSBsb2cgbWF0Y2ggJyArXG4gICAgICAgICdtYXggbWluIG1vZCBub2lzZSBub3JtYWxpemUgbnRyYW5zZm9ybSBvcHBvc2l0ZSBvcHRpb24gcGhvbmcgcG5vaXNlIHBvdyBwcmludGYgJyArXG4gICAgICAgICdwdGxpbmVkIHJhZGlhbnMgcmFuZG9tIHJlZmxlY3QgcmVmcmFjdCByZW5kZXJpbmZvIHJvdW5kIHNldGNvbXAgc2V0eGNvbXAgc2V0eWNvbXAgJyArXG4gICAgICAgICdzZXR6Y29tcCBzaGFkb3cgc2lnbiBzaW4gc21vb3Roc3RlcCBzcGVjdWxhciBzcGVjdWxhcmJyZGYgc3BsaW5lIHNxcnQgc3RlcCB0YW4gJyArXG4gICAgICAgICd0ZXh0dXJlIHRleHR1cmVpbmZvIHRyYWNlIHRyYW5zZm9ybSB2dHJhbnNmb3JtIHhjb21wIHljb21wIHpjb21wJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3VyZmFjZSBkaXNwbGFjZW1lbnQgbGlnaHQgdm9sdW1lIGltYWdlcicsIGVuZDogJ1xcXFwoJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2lsbHVtaW5hdGUgaWxsdW1pbmFuY2UgZ2F0aGVyJywgZW5kOiAnXFxcXCgnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAgIGtleXdvcmQ6ICdCSUxMX1BFUklPRCBCSUxMX1NUQVJUIEJJTExfU1RPUCBSU19FRkZFQ1RJVkVfU1RBUlQgUlNfRUZGRUNUSVZFX1NUT1AgUlNfSlVSSVNfQ09ERSBSU19PUENPX0NPREUgJyArXG4gICAgICAgICAnSU5UREFEREFUVFJJQlVURXw1IElOVERBRERWTVNHfDUgSU5UREJMT0NLT1B8NSBJTlREQkxPQ0tPUE5BfDUgSU5URENMT1NFfDUgSU5URENPVU5UfDUgJyArXG4gICAgICAgICAnSU5URENPVU5UU1RBVFVTQ09ERXw1IElOVERDUkVBVEVNQVNLfDUgSU5URENSRUFURURBWU1BU0t8NSBJTlREQ1JFQVRFRkFDVE9STUFTS3w1ICcgK1xuICAgICAgICAgJ0lOVERDUkVBVEVIQU5ETEV8NSBJTlREQ1JFQVRFT1ZFUlJJREVEQVlNQVNLfDUgSU5URENSRUFURU9WRVJSSURFTUFTS3w1ICcgK1xuICAgICAgICAgJ0lOVERDUkVBVEVTVEFUVVNDT0RFTUFTS3w1IElOVERDUkVBVEVUT1VQRVJJT0R8NSBJTlREREVMRVRFfDUgSU5URERJUFRFU1R8NSBJTlRERVhQT1JUfDUgJyArXG4gICAgICAgICAnSU5UREdFVEVSUk9SQ09ERXw1IElOVERHRVRFUlJPUk1FU1NBR0V8NSBJTlRESVNFUVVBTHw1IElOVERKT0lOfDUgSU5URExPQUR8NSBJTlRETE9BREFDVFVBTENVVHw1ICcgK1xuICAgICAgICAgJ0lOVERMT0FEREFURVN8NSBJTlRETE9BREhJU1R8NSBJTlRETE9BRExJU1R8NSBJTlRETE9BRExJU1REQVRFU3w1IElOVERMT0FETElTVEVORVJHWXw1ICcgK1xuICAgICAgICAgJ0lOVERMT0FETElTVEhJU1R8NSBJTlRETE9BRFJFTEFURURDSEFOTkVMfDUgSU5URExPQURTUHw1IElOVERMT0FEU1RBR0lOR3w1IElOVERMT0FEVU9NfDUgJyArXG4gICAgICAgICAnSU5URExPQURVT01EQVRFU3w1IElOVERMT0FEVU9NSElTVHw1IElOVERMT0FEVkVSU0lPTnw1IElOVERPUEVOfDUgSU5URFJFQURGSVJTVHw1IElOVERSRUFETkVYVHw1ICcgK1xuICAgICAgICAgJ0lOVERSRUNDT1VOVHw1IElOVERSRUxFQVNFfDUgSU5URFJFUExBQ0V8NSBJTlREUk9MTEFWR3w1IElOVERST0xMUEVBS3w1IElOVERTQ0FMQVJPUHw1IElOVERTQ0FMRXw1ICcgK1xuICAgICAgICAgJ0lOVERTRVRBVFRSSUJVVEV8NSBJTlREU0VURFNUUEFSVElDSVBBTlR8NSBJTlREU0VUU1RSSU5HfDUgSU5URFNFVFZBTFVFfDUgSU5URFNFVFZBTFVFU1RBVFVTfDUgJyArXG4gICAgICAgICAnSU5URFNISUZUU1RBUlRUSU1FfDUgSU5URFNNT09USHw1IElOVERTT1JUfDUgSU5URFNQSUtFVEVTVHw1IElOVERTVUJTRVR8NSBJTlREVE9VfDUgJyArXG4gICAgICAgICAnSU5URFRPVVJFTEVBU0V8NSBJTlREVE9VVkFMVUV8NSBJTlREVVBEQVRFU1RBVFN8NSBJTlREVkFMVUV8NSBTVERFViBJTlREREVMRVRFRVh8NSAnICtcbiAgICAgICAgICdJTlRETE9BREVYQUNUVUFMfDUgSU5URExPQURFWENVVHw1IElOVERMT0FERVhEQVRFU3w1IElOVERMT0FERVh8NSBJTlRETE9BREVYUkVMQVRFRENIQU5ORUx8NSAnICtcbiAgICAgICAgICdJTlREU0FWRUVYfDUgTVZMT0FEfDUgTVZMT0FEQUNDVHw1IE1WTE9BREFDQ1REQVRFU3w1IE1WTE9BREFDQ1RISVNUfDUgTVZMT0FEREFURVN8NSBNVkxPQURISVNUfDUgJyArXG4gICAgICAgICAnTVZMT0FETElTVHw1IE1WTE9BRExJU1REQVRFU3w1IE1WTE9BRExJU1RISVNUfDUgSUYgRk9SIE5FWFQgRE9ORSBTRUxFQ1QgRU5EIENBTEwgQUJPUlQgQ0xFQVIgQ0hBTk5FTCBGQUNUT1IgTElTVCBOVU1CRVIgJyArXG4gICAgICAgICAnT1ZFUlJJREUgU0VUIFdFRUsgRElTVFJJQlVUSU9OTk9ERSBFTFNFIFdIRU4gVEhFTiBPVEhFUldJU0UgSUVOVU0gQ1NWIElOQ0xVREUgTEVBVkUgUklERVIgU0FWRSBERUxFVEUgJyArXG4gICAgICAgICAnTk9WQUxVRSBTRUNUSU9OIFdBUk4gU0FWRV9VUERBVEUgREVURVJNSU5BTlQgTEFCRUwgUkVQT1JUIFJFVkVOVUUgRUFDSCAnICtcbiAgICAgICAgICdJTiBGUk9NIFRPVEFMIENIQVJHRSBCTE9DSyBBTkQgT1IgQ1NWX0ZJTEUgUkFURV9DT0RFIEFVWElMSUFSWV9ERU1BTkQgJyArXG4gICAgICAgICAnVUlEQUNDT1VOVCBSUyBCSUxMX1BFUklPRF9TRUxFQ1QgSE9VUlNfUEVSX01PTlRIIElOVERfRVJST1JfU1RPUCBTRUFTT05fU0NIRURVTEVfTkFNRSAnICtcbiAgICAgICAgICdBQ0NPVU5URkFDVE9SIEFSUkFZVVBQRVJCT1VORCBDQUxMU1RPUkVEUFJPQyBHRVRBRE9DT05ORUNUSU9OIEdFVENPTk5FQ1QgR0VUREFUQVNPVVJDRSAnICtcbiAgICAgICAgICdHRVRRVUFMSUZJRVIgR0VUVVNFUklEIEhBU1ZBTFVFIExJU1RDT1VOVCBMSVNUT1AgTElTVFVQREFURSBMSVNUVkFMVUUgUFJPUkFURUZBQ1RPUiBSU1BST1JBVEUgJyArXG4gICAgICAgICAnU0VUQklOUEFUSCBTRVREQk1PTklUT1IgV1FfT1BFTiBCSUxMSU5HSE9VUlMgREFURSBEQVRFRlJPTUZMT0FUIERBVEVUSU1FRlJPTVNUUklORyAnICtcbiAgICAgICAgICdEQVRFVElNRVRPU1RSSU5HIERBVEVUT0ZMT0FUIERBWSBEQVlESUZGIERBWU5BTUUgREJEQVRFVElNRSBIT1VSIE1JTlVURSBNT05USCBNT05USERJRkYgJyArXG4gICAgICAgICAnTU9OVEhIT1VSUyBNT05USE5BTUUgUk9VTkREQVRFIFNBTUVXRUVLREFZTEFTVFlFQVIgU0VDT05EIFdFRUtEQVkgV0VFS0RJRkYgWUVBUiBZRUFSREFZICcgK1xuICAgICAgICAgJ1lFQVJTVFIgQ09NUFNVTSBISVNUQ09VTlQgSElTVE1BWCBISVNUTUlOIEhJU1RNSU5OWiBISVNUVkFMVUUgTUFYTlJBTkdFIE1BWFJBTkdFIE1JTlJBTkdFICcgK1xuICAgICAgICAgJ0NPTVBJS1ZBIENPTVBLVkEgQ09NUEtWQVJGUk9NS1FLVyBDT01QTEYgSURBVFRSIEZMQUcgTEYyS1cgTEYyS1dIIE1BWEtXIFBPV0VSRkFDVE9SICcgK1xuICAgICAgICAgJ1JFQURJTkcyVVNBR0UgQVZHU0VBU09OIE1BWFNFQVNPTiBNT05USExZTUVSR0UgU0VBU09OVkFMVUUgU1VNU0VBU09OIEFDQ1RSRUFEREFURVMgJyArXG4gICAgICAgICAnQUNDVFRBQkxFTE9BRCBDT05GSUdBREQgQ09ORklHR0VUIENSRUFURU9CSkVDVCBDUkVBVEVSRVBPUlQgRU1BSUxDTElFTlQgRVhQQkxLTURNVVNBR0UgJyArXG4gICAgICAgICAnRVhQTURNVVNBR0UgRVhQT1JUX1VTQUdFIEZBQ1RPUklORUZGRUNUIEdFVFVTRVJTUEVDSUZJRURTVE9QIElORUZGRUNUIElTSE9MSURBWSBSVU5SQVRFICcgK1xuICAgICAgICAgJ1NBVkVfUFJPRklMRSBTRVRSRVBPUlRUSVRMRSBVU0VSRVhJVCBXQVRGT1JSVU5SQVRFIFRPIFRBQkxFIEFDT1MgQVNJTiBBVEFOIEFUQU4yIEJJVEFORCBDRUlMICcgK1xuICAgICAgICAgJ0NPUyBDT1NFQ0FOVCBDT1NIIENPVEFOR0VOVCBESVZRVU9UIERJVlJFTSBFWFAgRkFCUyBGTE9PUiBGTU9EIEZSRVBNIEZSRVhQTiBMT0cgTE9HMTAgTUFYIE1BWE4gJyArXG4gICAgICAgICAnTUlOIE1JTk5aIE1PREYgUE9XIFJPVU5EIFJPVU5EMlZBTFVFIFJPVU5ESU5UIFNFQ0FOVCBTSU4gU0lOSCBTUVJPT1QgVEFOIFRBTkggRkxPQVQyU1RSSU5HICcgK1xuICAgICAgICAgJ0ZMT0FUMlNUUklOR05DIElOU1RSIExFRlQgTEVOIExUUklNIE1JRCBSSUdIVCBSVFJJTSBTVFJJTkcgU1RSSU5HTkMgVE9MT1dFUiBUT1VQUEVSIFRSSU0gJyArXG4gICAgICAgICAnTlVNREFZUyBSRUFEX0RBVEUgU1RBR0lORycsXG4gICAgICAgYnVpbHRfaW46ICdJREVOVElGSUVSIE9QVElPTlMgWE1MX0VMRU1FTlQgWE1MX09QIFhNTF9FTEVNRU5UX09GIERPTURPQ0NSRUFURSBET01ET0NMT0FERklMRSBET01ET0NMT0FEWE1MICcgK1xuICAgICAgICAgJ0RPTURPQ1NBVkVGSUxFIERPTURPQ0dFVFJPT1QgRE9NRE9DQUREUEkgRE9NTk9ERUdFVE5BTUUgRE9NTk9ERUdFVFRZUEUgRE9NTk9ERUdFVFZBTFVFIERPTU5PREVHRVRDSElMRENUICcgK1xuICAgICAgICAgJ0RPTU5PREVHRVRGSVJTVENISUxEIERPTU5PREVHRVRTSUJMSU5HIERPTU5PREVDUkVBVEVDSElMREVMRU1FTlQgRE9NTk9ERVNFVEFUVFJJQlVURSAnICtcbiAgICAgICAgICdET01OT0RFR0VUQ0hJTERFTEVNRU5UQ1QgRE9NTk9ERUdFVEZJUlNUQ0hJTERFTEVNRU5UIERPTU5PREVHRVRTSUJMSU5HRUxFTUVOVCBET01OT0RFR0VUQVRUUklCVVRFQ1QgJyArXG4gICAgICAgICAnRE9NTk9ERUdFVEFUVFJJQlVURUkgRE9NTk9ERUdFVEFUVFJJQlVURUJZTkFNRSBET01OT0RFR0VUQllOQU1FJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcjXFxcXHMrW2EtekEtWlxcXFwgXFxcXC5dKicsIHJlbGV2YW5jZTogMH0sIC8vIGxvb2tzIGxpa2UgIy1jb21tZW50XG4gICAgICAgICAge2JlZ2luOiAnI1thLXpBLVpcXFxcIFxcXFwuXSsnfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5VTV9TVUZGSVggPSAnKFt1aV0oOHwxNnwzMnw2NHwxMjh8c2l6ZSl8ZigzMnw2NCkpXFw/JztcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnYWJzdHJhY3QgYXMgYXN5bmMgYXdhaXQgYmVjb21lIGJveCBicmVhayBjb25zdCBjb250aW51ZSBjcmF0ZSBkbyBkeW4gJyArXG4gICAgJ2Vsc2UgZW51bSBleHRlcm4gZmFsc2UgZmluYWwgZm4gZm9yIGlmIGltcGwgaW4gbGV0IGxvb3AgbWFjcm8gbWF0Y2ggbW9kICcgK1xuICAgICdtb3ZlIG11dCBvdmVycmlkZSBwcml2IHB1YiByZWYgcmV0dXJuIHNlbGYgU2VsZiBzdGF0aWMgc3RydWN0IHN1cGVyICcgK1xuICAgICd0cmFpdCB0cnVlIHRyeSB0eXBlIHR5cGVvZiB1bnNhZmUgdW5zaXplZCB1c2UgdmlydHVhbCB3aGVyZSB3aGlsZSB5aWVsZCc7XG4gIHZhciBCVUlMVElOUyA9XG4gICAgLy8gZnVuY3Rpb25zXG4gICAgJ2Ryb3AgJyArXG4gICAgLy8gdHlwZXNcbiAgICAnaTggaTE2IGkzMiBpNjQgaTEyOCBpc2l6ZSAnICtcbiAgICAndTggdTE2IHUzMiB1NjQgdTEyOCB1c2l6ZSAnICtcbiAgICAnZjMyIGY2NCAnICtcbiAgICAnc3RyIGNoYXIgYm9vbCAnICtcbiAgICAnQm94IE9wdGlvbiBSZXN1bHQgU3RyaW5nIFZlYyAnICtcbiAgICAvLyB0cmFpdHNcbiAgICAnQ29weSBTZW5kIFNpemVkIFN5bmMgRHJvcCBGbiBGbk11dCBGbk9uY2UgVG9Pd25lZCBDbG9uZSBEZWJ1ZyAnICtcbiAgICAnUGFydGlhbEVxIFBhcnRpYWxPcmQgRXEgT3JkIEFzUmVmIEFzTXV0IEludG8gRnJvbSBEZWZhdWx0IEl0ZXJhdG9yICcgK1xuICAgICdFeHRlbmQgSW50b0l0ZXJhdG9yIERvdWJsZUVuZGVkSXRlcmF0b3IgRXhhY3RTaXplSXRlcmF0b3IgJyArXG4gICAgJ1NsaWNlQ29uY2F0RXh0IFRvU3RyaW5nICcgK1xuICAgIC8vIG1hY3Jvc1xuICAgICdhc3NlcnQhIGFzc2VydF9lcSEgYml0ZmxhZ3MhIGJ5dGVzISBjZmchIGNvbCEgY29uY2F0ISBjb25jYXRfaWRlbnRzISAnICtcbiAgICAnZGVidWdfYXNzZXJ0ISBkZWJ1Z19hc3NlcnRfZXEhIGVudiEgcGFuaWMhIGZpbGUhIGZvcm1hdCEgZm9ybWF0X2FyZ3MhICcgK1xuICAgICdpbmNsdWRlX2JpbiEgaW5jbHVkZV9zdHIhIGxpbmUhIGxvY2FsX2RhdGFfa2V5ISBtb2R1bGVfcGF0aCEgJyArXG4gICAgJ29wdGlvbl9lbnYhIHByaW50ISBwcmludGxuISBzZWxlY3QhIHN0cmluZ2lmeSEgdHJ5ISB1bmltcGxlbWVudGVkISAnICtcbiAgICAndW5yZWFjaGFibGUhIHZlYyEgd3JpdGUhIHdyaXRlbG4hIG1hY3JvX3J1bGVzISBhc3NlcnRfbmUhIGRlYnVnX2Fzc2VydF9uZSEnO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncnMnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgS0VZV09SRFMsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBTb21lIE5vbmUgT2sgRXJyJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICBCVUlMVElOU1xuICAgIH0sXG4gICAgbGV4ZW1lczogaGxqcy5JREVOVF9SRSArICchPycsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCcvXFxcXConLCAnXFxcXCovJywge2NvbnRhaW5zOiBbJ3NlbGYnXX0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtiZWdpbjogL2I/XCIvLCBpbGxlZ2FsOiBudWxsfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgIHsgYmVnaW46IC9yKCMqKVwiKC58XFxuKSo/XCJcXDEoPyEjKS8gfSxcbiAgICAgICAgICAgeyBiZWdpbjogL2I/J1xcXFw/KHhcXHd7Mn18dVxcd3s0fXxVXFx3ezh9fC4pJy8gfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogLydbYS16QS1aX11bYS16QS1aMC05X10qL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIwYihbMDFfXSspJyArIE5VTV9TVUZGSVggfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIwbyhbMC03X10rKScgKyBOVU1fU1VGRklYIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiMHgoW0EtRmEtZjAtOV9dKyknICsgTlVNX1NVRkZJWCB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYihcXFxcZFtcXFxcZF9dKihcXFxcLlswLTlfXSspPyhbZUVdWystXT9bMC05X10rKT8pJyArXG4gICAgICAgICAgICAgICAgICAgTlVNX1NVRkZJWFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmbicsIGVuZDogJyhcXFxcKHw8KScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjXFxcXCE/XFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiL1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAndHlwZScsIGVuZDogJzsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwge2VuZHNQYXJlbnQ6IHRydWV9KVxuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXFMnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd0cmFpdCBlbnVtIHN0cnVjdCB1bmlvbicsIGVuZDogJ3snLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwge2VuZHNQYXJlbnQ6IHRydWV9KVxuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAnW1xcXFx3XFxcXGRdJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnOjonLFxuICAgICAgICBrZXl3b3Jkczoge2J1aWx0X2luOiBCVUlMVElOU31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnLT4nXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICAgIC8vIERhdGEgc3RlcCBhbmQgUFJPQyBTUUwgc3RhdGVtZW50c1xuICAgIHZhciBTQVNfS0VZV09SRFMgPSAnJytcbiAgICAgICAgJ2RvIGlmIHRoZW4gZWxzZSBlbmQgdW50aWwgd2hpbGUgJytcbiAgICAgICAgJycrXG4gICAgICAgICdhYm9ydCBhcnJheSBhdHRyaWIgYnkgY2FsbCBjYXJkcyBjYXJkczQgY2F0bmFtZSBjb250aW51ZSAnK1xuICAgICAgICAnZGF0YWxpbmVzIGRhdGFsaW5lczQgZGVsZXRlIGRlbGltIGRlbGltaXRlciBkaXNwbGF5IGRtIGRyb3AgJytcbiAgICAgICAgJ2VuZHNhcyBlcnJvciBmaWxlIGZpbGVuYW1lIGZvb3Rub3RlIGZvcm1hdCBnb3RvIGluIGluZmlsZSAnK1xuICAgICAgICAnaW5mb3JtYXQgaW5wdXQga2VlcCBsYWJlbCBsZWF2ZSBsZW5ndGggbGlibmFtZSBsaW5rIGxpc3QgJytcbiAgICAgICAgJ2xvc3RjYXJkIG1lcmdlIG1pc3NpbmcgbW9kaWZ5IG9wdGlvbnMgb3V0cHV0IG91dCBwYWdlIHB1dCAnK1xuICAgICAgICAncmVkaXJlY3QgcmVtb3ZlIHJlbmFtZSByZXBsYWNlIHJldGFpbiByZXR1cm4gc2VsZWN0IHNldCBza2lwICcrXG4gICAgICAgICdzdGFydHNhcyBzdG9wIHRpdGxlIHVwZGF0ZSB3YWl0c2FzIHdoZXJlIHdpbmRvdyB4IHN5c3Rhc2sgJytcbiAgICAgICAgJycrXG4gICAgICAgICdhZGQgYW5kIGFsdGVyIGFzIGNhc2NhZGUgY2hlY2sgY3JlYXRlIGRlbGV0ZSBkZXNjcmliZSAnK1xuICAgICAgICAnZGlzdGluY3QgZHJvcCBmb3JlaWduIGZyb20gZ3JvdXAgaGF2aW5nIGluZGV4IGluc2VydCBpbnRvIGluICcrXG4gICAgICAgICdrZXkgbGlrZSBtZXNzYWdlIG1vZGlmeSBtc2d0eXBlIG5vdCBudWxsIG9uIG9yIG9yZGVyIHByaW1hcnkgJytcbiAgICAgICAgJ3JlZmVyZW5jZXMgcmVzZXQgcmVzdHJpY3Qgc2VsZWN0IHNldCB0YWJsZSB1bmlxdWUgdXBkYXRlICcrXG4gICAgICAgICd2YWxpZGF0ZSB2aWV3IHdoZXJlJztcblxuICAgIC8vIEJ1aWx0LWluIFNBUyBmdW5jdGlvbnNcbiAgICB2YXIgU0FTX0ZVTiA9ICcnK1xuICAgICAgICAnYWJzfGFkZHJ8YWlyeXxhcmNvc3xhcnNpbnxhdGFufGF0dHJjfGF0dHJufGJhbmR8JytcbiAgICAgICAgJ2JldGFpbnZ8YmxzaGlmdHxibm90fGJvcnxicnNoaWZ0fGJ4b3J8Ynl0ZXxjZGZ8Y2VpbHwnK1xuICAgICAgICAnY2V4aXN0fGNpbnZ8Y2xvc2V8Y25vbmN0fGNvbGxhdGV8Y29tcGJsfGNvbXBvdW5kfCcrXG4gICAgICAgICdjb21wcmVzc3xjb3N8Y29zaHxjc3N8Y3Vyb2JzfGN2fGRhY2NkYnxkYWNjZGJzbHwnK1xuICAgICAgICAnZGFjY3NsfGRhY2NzeWR8ZGFjY3RhYnxkYWlyeXxkYXRlfGRhdGVqdWx8ZGF0ZXBhcnR8JytcbiAgICAgICAgJ2RhdGV0aW1lfGRheXxkY2xvc2V8ZGVwZGJ8ZGVwZGJzbHxkZXBkYnNsfGRlcHNsfCcrXG4gICAgICAgICdkZXBzbHxkZXBzeWR8ZGVwc3lkfGRlcHRhYnxkZXB0YWJ8ZGVxdW90ZXxkaG1zfGRpZnwnK1xuICAgICAgICAnZGlnYW1tYXxkaW18ZGluZm98ZG51bXxkb3Blbnxkb3B0bmFtZXxkb3B0bnVtfGRyZWFkfCcrXG4gICAgICAgICdkcm9wbm90ZXxkc25hbWV8ZXJmfGVyZmN8ZXhpc3R8ZXhwfGZhcHBlbmR8ZmNsb3NlfCcrXG4gICAgICAgICdmY29sfGZkZWxldGV8ZmV0Y2h8ZmV0Y2hvYnN8ZmV4aXN0fGZnZXR8ZmlsZWV4aXN0fCcrXG4gICAgICAgICdmaWxlbmFtZXxmaWxlcmVmfGZpbmZvfGZpbnZ8ZmlwbmFtZXxmaXBuYW1lbHwnK1xuICAgICAgICAnZmlwc3RhdGV8Zmxvb3J8Zm5vbmN0fGZub3RlfGZvcGVufGZvcHRuYW1lfGZvcHRudW18JytcbiAgICAgICAgJ2Zwb2ludHxmcG9zfGZwdXR8ZnJlYWR8ZnJld2luZHxmcmxlbnxmc2VwfGZ1enp8JytcbiAgICAgICAgJ2Z3cml0ZXxnYW1pbnZ8Z2FtbWF8Z2V0b3B0aW9ufGdldHZhcmN8Z2V0dmFybnxoYm91bmR8JytcbiAgICAgICAgJ2htc3xob3N0aGVscHxob3VyfGliZXNzZWx8aW5kZXh8aW5kZXhjfGluZGV4d3xpbnB1dHwnK1xuICAgICAgICAnaW5wdXRjfGlucHV0bnxpbnR8aW50Y2t8aW50bnh8aW50cnJ8aXJyfGpiZXNzZWx8JytcbiAgICAgICAgJ2p1bGRhdGV8a3VydG9zaXN8bGFnfGxib3VuZHxsZWZ0fGxlbmd0aHxsZ2FtbWF8JytcbiAgICAgICAgJ2xpYm5hbWV8bGlicmVmfGxvZ3xsb2cxMHxsb2cyfGxvZ3BkZnxsb2dwbWZ8bG9nc2RmfCcrXG4gICAgICAgICdsb3djYXNlfG1heHxtZHl8bWVhbnxtaW58bWludXRlfG1vZHxtb250aHxtb3BlbnwnK1xuICAgICAgICAnbW9ydHxufG5ldHB2fG5taXNzfG5vcm1hbHxub3RlfG5wdnxvcGVufG9yZGluYWx8JytcbiAgICAgICAgJ3BhdGhuYW1lfHBkZnxwZWVrfHBlZWtjfHBtZnxwb2ludHxwb2lzc29ufHBva2V8JytcbiAgICAgICAgJ3Byb2JiZXRhfHByb2Jibm1sfHByb2JjaGl8cHJvYmZ8cHJvYmdhbXxwcm9iaHlwcnwnK1xuICAgICAgICAncHJvYml0fHByb2JuZWdifHByb2Jub3JtfHByb2J0fHB1dHxwdXRjfHB1dG58cXRyfCcrXG4gICAgICAgICdxdW90ZXxyYW5iaW58cmFuY2F1fHJhbmV4cHxyYW5nYW18cmFuZ2V8cmFua3xyYW5ub3J8JytcbiAgICAgICAgJ3JhbnBvaXxyYW50Ymx8cmFudHJpfHJhbnVuaXxyZXBlYXR8cmVzb2x2ZXxyZXZlcnNlfCcrXG4gICAgICAgICdyZXdpbmR8cmlnaHR8cm91bmR8c2F2aW5nfHNjYW58c2RmfHNlY29uZHxzaWdufCcrXG4gICAgICAgICdzaW58c2luaHxza2V3bmVzc3xzb3VuZGV4fHNwZWRpc3xzcXJ0fHN0ZHxzdGRlcnJ8JytcbiAgICAgICAgJ3N0Zmlwc3xzdG5hbWV8c3RuYW1lbHxzdWJzdHJ8c3VtfHN5bWdldHxzeXNnZXR8JytcbiAgICAgICAgJ3N5c21zZ3xzeXNwcm9kfHN5c3JjfHN5c3RlbXx0YW58dGFuaHx0aW1lfHRpbWVwYXJ0fCcrXG4gICAgICAgICd0aW52fHRub25jdHx0b2RheXx0cmFuc2xhdGV8dHJhbndyZHx0cmlnYW1tYXwnK1xuICAgICAgICAndHJpbXx0cmltbnx0cnVuY3x1bmlmb3JtfHVwY2FzZXx1c3N8dmFyfHZhcmZtdHwnK1xuICAgICAgICAndmFyaW5mbXR8dmFybGFiZWx8dmFybGVufHZhcm5hbWV8dmFybnVtfHZhcnJheXwnK1xuICAgICAgICAndmFycmF5eHx2YXJ0eXBlfHZlcmlmeXx2Zm9ybWF0fHZmb3JtYXRkfHZmb3JtYXRkeHwnK1xuICAgICAgICAndmZvcm1hdG58dmZvcm1hdG54fHZmb3JtYXR3fHZmb3JtYXR3eHx2Zm9ybWF0eHwnK1xuICAgICAgICAndmluYXJyYXl8dmluYXJyYXl4fHZpbmZvcm1hdHx2aW5mb3JtYXRkfHZpbmZvcm1hdGR4fCcrXG4gICAgICAgICd2aW5mb3JtYXRufHZpbmZvcm1hdG54fHZpbmZvcm1hdHd8dmluZm9ybWF0d3h8JytcbiAgICAgICAgJ3ZpbmZvcm1hdHh8dmxhYmVsfHZsYWJlbHh8dmxlbmd0aHx2bGVuZ3RoeHx2bmFtZXwnK1xuICAgICAgICAndm5hbWV4fHZ0eXBlfHZ0eXBleHx3ZWVrZGF5fHllYXJ8eXlxfHppcGZpcHN8emlwbmFtZXwnK1xuICAgICAgICAnemlwbmFtZWx8emlwc3RhdGUnO1xuXG4gICAgLy8gQnVpbHQtaW4gbWFjcm8gZnVuY3Rpb25zXG4gICAgdmFyIFNBU19NQUNST19GVU4gPSAnYnF1b3RlfG5yYnF1b3RlfGNtcHJlc3xxY21wcmVzfGNvbXBzdG9yfCcrXG4gICAgICAgICdkYXRhdHlwfGRpc3BsYXl8ZG98ZWxzZXxlbmR8ZXZhbHxnbG9iYWx8Z290b3wnK1xuICAgICAgICAnaWZ8aW5kZXh8aW5wdXR8a2V5ZGVmfGxhYmVsfGxlZnR8bGVuZ3RofGxldHwnK1xuICAgICAgICAnbG9jYWx8bG93Y2FzZXxtYWNyb3xtZW5kfG5yYnF1b3RlfG5ycXVvdGV8JytcbiAgICAgICAgJ25yc3RyfHB1dHxxY21wcmVzfHFsZWZ0fHFsb3djYXNlfHFzY2FufCcrXG4gICAgICAgICdxc3Vic3RyfHFzeXNmdW5jfHF0cmltfHF1b3RlfHF1cGNhc2V8c2NhbnxzdHJ8JytcbiAgICAgICAgJ3N1YnN0cnxzdXBlcnF8c3lzY2FsbHxzeXNldmFsZnxzeXNleGVjfHN5c2Z1bmN8JytcbiAgICAgICAgJ3N5c2dldHxzeXNscHV0fHN5c3Byb2R8c3lzcmN8c3lzcnB1dHx0aGVufHRvfCcrXG4gICAgICAgICd0cmltfHVucXVvdGV8dW50aWx8dXBjYXNlfHZlcmlmeXx3aGlsZXx3aW5kb3cnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWxpYXNlczogWydzYXMnLCAnU0FTJ10sXG4gICAgICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsIC8vIFNBUyBpcyBjYXNlLWluc2Vuc2l0aXZlXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgICAgICdudWxsIG1pc3NpbmcgX2FsbF8gX2F1dG9tYXRpY18gX2NoYXJhY3Rlcl8gX2luZmlsZV8gJytcbiAgICAgICAgICAgICAgICAnX25fIF9uYW1lXyBfbnVsbF8gX251bWVyaWNfIF91c2VyXyBfd2Vib3V0XycsXG4gICAgICAgICAgICBtZXRhOlxuICAgICAgICAgICAgICAgIFNBU19LRVlXT1JEU1xuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIERpc3RpbmN0IGhpZ2hsaWdodCBmb3IgcHJvYyA8cHJvYz4sIGRhdGEsIHJ1biwgcXVpdFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXlxccyoocHJvYyBbXFx3XFxkX10rfGRhdGF8cnVufHF1aXQpW1xcc1xcO10vXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIE1hY3JvIHZhcmlhYmxlc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcJlthLXpBLVpfXFwmXVthLXpBLVowLTlfXSpcXC4/L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGVtcGhhc2lzIGZvciBkYXRhbGluZXN8Y2FyZHNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXBoYXNpcycsXG4gICAgICAgICAgICAgICAgYmVnaW46IC9eXFxzKmRhdGFsaW5lc3xjYXJkcy4qOy8sXG4gICAgICAgICAgICAgICAgZW5kOiAvXlxccyo7XFxzKiQvXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyAgIC8vIEJ1aWx0LWluIG1hY3JvIHZhcmlhYmxlcyB0YWtlIHByZWNlZGVuY2VcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgICAgICAgICAgYmVnaW46ICclKCcgKyBTQVNfTUFDUk9fRlVOICsgJyknXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIFVzZXItZGVmaW5lZCBtYWNybyBmdW5jdGlvbnMgaGlnaGxpZ2h0ZWQgYWZ0ZXJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogLyVbYS16QS1aX11bYS16QS1aXzAtOV0qL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1teJV0oJyArIFNBU19GVU4gKyAnKVtcXChdJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBobGpzLkNPTU1FTlQoJ1xcXFwqJywgJzsnKSxcbiAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBBTk5PVEFUSU9OID0geyBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAW0EtWmEtel0rJyB9O1xuXG4gIC8vIHVzZWQgaW4gc3RyaW5ncyBmb3IgZXNjYXBpbmcvaW50ZXJwb2xhdGlvbi9zdWJzdGl0dXRpb25cbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFxcXCRbQS1aYS16MC05X10rJ30sXG4gICAgICB7YmVnaW46ICdcXFxcJHsnLCBlbmQ6ICd9J31cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1thLXpdK1wiJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1thLXpdK1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbU1VCU1RdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXVxuXG4gIH07XG5cbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFwnXFxcXHdbXFxcXHdcXFxcZF9dKig/IVxcJyknXG4gIH07XG5cbiAgdmFyIFRZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW0EtWmEtejAtOV9dKicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIE5BTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiAvW14wLTlcXG5cXHQgXCInKCksLmB7fVxcW1xcXTo7XVteXFxuXFx0IFwiJygpLC5ge31cXFtcXF06O10rfFteMC05XFxuXFx0IFwiJygpLC5ge31cXFtcXF06Oz1dLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgQ0xBU1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBvYmplY3QgdHJhaXQgdHlwZScsXG4gICAgZW5kOiAvWzo9e1xcW1xcbjtdLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdleHRlbmRzIHdpdGgnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcWy8sXG4gICAgICAgIGVuZDogL1xcXS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1RZUEVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1RZUEVdXG4gICAgICB9LFxuICAgICAgTkFNRVxuICAgIF1cbiAgfTtcblxuICB2YXIgTUVUSE9EID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZGVmJyxcbiAgICBlbmQ6IC9bOj17XFxbKFxcbjtdLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbTkFNRV1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBudWxsJyxcbiAgICAgIGtleXdvcmQ6ICd0eXBlIHlpZWxkIGxhenkgb3ZlcnJpZGUgZGVmIHdpdGggdmFsIHZhciBzZWFsZWQgYWJzdHJhY3QgcHJpdmF0ZSB0cmFpdCBvYmplY3QgaWYgZm9yU29tZSBmb3Igd2hpbGUgdGhyb3cgZmluYWxseSBwcm90ZWN0ZWQgZXh0ZW5kcyBpbXBvcnQgZmluYWwgcmV0dXJuIGVsc2UgYnJlYWsgbmV3IGNhdGNoIHN1cGVyIGNsYXNzIGNhc2UgcGFja2FnZSBkZWZhdWx0IHRyeSB0aGlzIG1hdGNoIGNvbnRpbnVlIHRocm93cyBpbXBsaWNpdCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgU1RSSU5HLFxuICAgICAgU1lNQk9MLFxuICAgICAgVFlQRSxcbiAgICAgIE1FVEhPRCxcbiAgICAgIENMQVNTLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgQU5OT1RBVElPTlxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTQ0hFTUVfSURFTlRfUkUgPSAnW15cXFxcKFxcXFwpXFxcXFtcXFxcXVxcXFx7XFxcXH1cIixcXCdgOyN8XFxcXFxcXFxcXFxcc10rJztcbiAgdmFyIFNDSEVNRV9TSU1QTEVfTlVNQkVSX1JFID0gJyhcXFxcLXxcXFxcKyk/XFxcXGQrKFsuL11cXFxcZCspPyc7XG4gIHZhciBTQ0hFTUVfQ09NUExFWF9OVU1CRVJfUkUgPSBTQ0hFTUVfU0lNUExFX05VTUJFUl9SRSArICdbK1xcXFwtXScgKyBTQ0hFTUVfU0lNUExFX05VTUJFUl9SRSArICdpJztcbiAgdmFyIEJVSUxUSU5TID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgJ2Nhc2UtbGFtYmRhIGNhbGwvY2MgY2xhc3MgZGVmaW5lLWNsYXNzIGV4aXQtaGFuZGxlciBmaWVsZCBpbXBvcnQgJyArXG4gICAgICAnaW5oZXJpdCBpbml0LWZpZWxkIGludGVyZmFjZSBsZXQqLXZhbHVlcyBsZXQtdmFsdWVzIGxldC9lYyBtaXhpbiAnICtcbiAgICAgICdvcHQtbGFtYmRhIG92ZXJyaWRlIHByb3RlY3QgcHJvdmlkZSBwdWJsaWMgcmVuYW1lIHJlcXVpcmUgJyArXG4gICAgICAncmVxdWlyZS1mb3Itc3ludGF4IHN5bnRheCBzeW50YXgtY2FzZSBzeW50YXgtZXJyb3IgdW5pdC9zaWcgdW5sZXNzICcgK1xuICAgICAgJ3doZW4gd2l0aC1zeW50YXggYW5kIGJlZ2luIGNhbGwtd2l0aC1jdXJyZW50LWNvbnRpbnVhdGlvbiAnICtcbiAgICAgICdjYWxsLXdpdGgtaW5wdXQtZmlsZSBjYWxsLXdpdGgtb3V0cHV0LWZpbGUgY2FzZSBjb25kIGRlZmluZSAnICtcbiAgICAgICdkZWZpbmUtc3ludGF4IGRlbGF5IGRvIGR5bmFtaWMtd2luZCBlbHNlIGZvci1lYWNoIGlmIGxhbWJkYSBsZXQgbGV0KiAnICtcbiAgICAgICdsZXQtc3ludGF4IGxldHJlYyBsZXRyZWMtc3ludGF4IG1hcCBvciBzeW50YXgtcnVsZXMgXFwnICogKyAsICxAIC0gLi4uIC8gJyArXG4gICAgICAnOyA8IDw9ID0gPT4gPiA+PSBgIGFicyBhY29zIGFuZ2xlIGFwcGVuZCBhcHBseSBhc2luIGFzc29jIGFzc3EgYXNzdiBhdGFuICcgK1xuICAgICAgJ2Jvb2xlYW4/IGNhYXIgY2FkciBjYWxsLXdpdGgtaW5wdXQtZmlsZSBjYWxsLXdpdGgtb3V0cHV0LWZpbGUgJyArXG4gICAgICAnY2FsbC13aXRoLXZhbHVlcyBjYXIgY2RkZGFyIGNkZGRkciBjZHIgY2VpbGluZyBjaGFyLT5pbnRlZ2VyICcgK1xuICAgICAgJ2NoYXItYWxwaGFiZXRpYz8gY2hhci1jaTw9PyBjaGFyLWNpPD8gY2hhci1jaT0/IGNoYXItY2k+PT8gY2hhci1jaT4/ICcgK1xuICAgICAgJ2NoYXItZG93bmNhc2UgY2hhci1sb3dlci1jYXNlPyBjaGFyLW51bWVyaWM/IGNoYXItcmVhZHk/IGNoYXItdXBjYXNlICcgK1xuICAgICAgJ2NoYXItdXBwZXItY2FzZT8gY2hhci13aGl0ZXNwYWNlPyBjaGFyPD0/IGNoYXI8PyBjaGFyPT8gY2hhcj49PyBjaGFyPj8gJyArXG4gICAgICAnY2hhcj8gY2xvc2UtaW5wdXQtcG9ydCBjbG9zZS1vdXRwdXQtcG9ydCBjb21wbGV4PyBjb25zIGNvcyAnICtcbiAgICAgICdjdXJyZW50LWlucHV0LXBvcnQgY3VycmVudC1vdXRwdXQtcG9ydCBkZW5vbWluYXRvciBkaXNwbGF5IGVvZi1vYmplY3Q/ICcgK1xuICAgICAgJ2VxPyBlcXVhbD8gZXF2PyBldmFsIGV2ZW4/IGV4YWN0LT5pbmV4YWN0IGV4YWN0PyBleHAgZXhwdCBmbG9vciAnICtcbiAgICAgICdmb3JjZSBnY2QgaW1hZy1wYXJ0IGluZXhhY3QtPmV4YWN0IGluZXhhY3Q/IGlucHV0LXBvcnQ/IGludGVnZXItPmNoYXIgJyArXG4gICAgICAnaW50ZWdlcj8gaW50ZXJhY3Rpb24tZW52aXJvbm1lbnQgbGNtIGxlbmd0aCBsaXN0IGxpc3QtPnN0cmluZyAnICtcbiAgICAgICdsaXN0LT52ZWN0b3IgbGlzdC1yZWYgbGlzdC10YWlsIGxpc3Q/IGxvYWQgbG9nIG1hZ25pdHVkZSBtYWtlLXBvbGFyICcgK1xuICAgICAgJ21ha2UtcmVjdGFuZ3VsYXIgbWFrZS1zdHJpbmcgbWFrZS12ZWN0b3IgbWF4IG1lbWJlciBtZW1xIG1lbXYgbWluICcgK1xuICAgICAgJ21vZHVsbyBuZWdhdGl2ZT8gbmV3bGluZSBub3QgbnVsbC1lbnZpcm9ubWVudCBudWxsPyBudW1iZXItPnN0cmluZyAnICtcbiAgICAgICdudW1iZXI/IG51bWVyYXRvciBvZGQ/IG9wZW4taW5wdXQtZmlsZSBvcGVuLW91dHB1dC1maWxlIG91dHB1dC1wb3J0PyAnICtcbiAgICAgICdwYWlyPyBwZWVrLWNoYXIgcG9ydD8gcG9zaXRpdmU/IHByb2NlZHVyZT8gcXVhc2lxdW90ZSBxdW90ZSBxdW90aWVudCAnICtcbiAgICAgICdyYXRpb25hbD8gcmF0aW9uYWxpemUgcmVhZCByZWFkLWNoYXIgcmVhbC1wYXJ0IHJlYWw/IHJlbWFpbmRlciByZXZlcnNlICcgK1xuICAgICAgJ3JvdW5kIHNjaGVtZS1yZXBvcnQtZW52aXJvbm1lbnQgc2V0ISBzZXQtY2FyISBzZXQtY2RyISBzaW4gc3FydCBzdHJpbmcgJyArXG4gICAgICAnc3RyaW5nLT5saXN0IHN0cmluZy0+bnVtYmVyIHN0cmluZy0+c3ltYm9sIHN0cmluZy1hcHBlbmQgc3RyaW5nLWNpPD0/ICcgK1xuICAgICAgJ3N0cmluZy1jaTw/IHN0cmluZy1jaT0/IHN0cmluZy1jaT49PyBzdHJpbmctY2k+PyBzdHJpbmctY29weSAnICtcbiAgICAgICdzdHJpbmctZmlsbCEgc3RyaW5nLWxlbmd0aCBzdHJpbmctcmVmIHN0cmluZy1zZXQhIHN0cmluZzw9PyBzdHJpbmc8PyAnICtcbiAgICAgICdzdHJpbmc9PyBzdHJpbmc+PT8gc3RyaW5nPj8gc3RyaW5nPyBzdWJzdHJpbmcgc3ltYm9sLT5zdHJpbmcgc3ltYm9sPyAnICtcbiAgICAgICd0YW4gdHJhbnNjcmlwdC1vZmYgdHJhbnNjcmlwdC1vbiB0cnVuY2F0ZSB2YWx1ZXMgdmVjdG9yICcgK1xuICAgICAgJ3ZlY3Rvci0+bGlzdCB2ZWN0b3ItZmlsbCEgdmVjdG9yLWxlbmd0aCB2ZWN0b3ItcmVmIHZlY3Rvci1zZXQhICcgK1xuICAgICAgJ3dpdGgtaW5wdXQtZnJvbS1maWxlIHdpdGgtb3V0cHV0LXRvLWZpbGUgd3JpdGUgd3JpdGUtY2hhciB6ZXJvPydcbiAgfTtcblxuICB2YXIgU0hFQkFORyA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ14jIScsXG4gICAgZW5kOiAnJCdcbiAgfTtcblxuICB2YXIgTElURVJBTCA9IHtcbiAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICBiZWdpbjogJygjdHwjZnwjXFxcXFxcXFwnICsgU0NIRU1FX0lERU5UX1JFICsgJ3wjXFxcXFxcXFwuKSdcbiAgfTtcblxuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IFNDSEVNRV9TSU1QTEVfTlVNQkVSX1JFLCByZWxldmFuY2U6IDAgfSxcbiAgICAgIHsgYmVnaW46IFNDSEVNRV9DT01QTEVYX05VTUJFUl9SRSwgcmVsZXZhbmNlOiAwIH0sXG4gICAgICB7IGJlZ2luOiAnI2JbMC0xXSsoL1swLTFdKyk/JyB9LFxuICAgICAgeyBiZWdpbjogJyNvWzAtN10rKC9bMC03XSspPycgfSxcbiAgICAgIHsgYmVnaW46ICcjeFswLTlhLWZdKygvWzAtOWEtZl0rKT8nIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IGhsanMuUVVPVEVfU1RSSU5HX01PREU7XG5cbiAgdmFyIFJFR1VMQVJfRVhQUkVTU0lPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgIGJlZ2luOiAnI1twcl14XCInLFxuICAgIGVuZDogJ1teXFxcXFxcXFxdXCInXG4gIH07XG5cbiAgdmFyIENPTU1FTlRfTU9ERVMgPSBbXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJzsnLFxuICAgICAgJyQnLFxuICAgICAge1xuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVCgnI1xcXFx8JywgJ1xcXFx8IycpXG4gIF07XG5cbiAgdmFyIElERU5UID0ge1xuICAgIGJlZ2luOiBTQ0hFTUVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFFVT1RFRF9JREVOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFwnJyArIFNDSEVNRV9JREVOVF9SRVxuICB9O1xuXG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBRVU9URURfTElTVCA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogLycvIH0sXG4gICAgICB7IGJlZ2luOiAnYCcgfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZicsIExJVEVSQUwsIFNUUklORywgTlVNQkVSLCBJREVOVCwgUVVPVEVEX0lERU5UXVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTkFNRSA9IHtcbiAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICBiZWdpbjogU0NIRU1FX0lERU5UX1JFLFxuICAgIGxleGVtZXM6IFNDSEVNRV9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogQlVJTFRJTlNcbiAgfTtcblxuICB2YXIgTEFNQkRBID0ge1xuICAgIGJlZ2luOiAvbGFtYmRhLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOQU1FLFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbSURFTlRdLFxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTElTVCA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknIH0sXG4gICAgICB7IGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXScgfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtMQU1CREEsIE5BTUUsIEJPRFldXG4gIH07XG5cbiAgQk9EWS5jb250YWlucyA9IFtMSVRFUkFMLCBOVU1CRVIsIFNUUklORywgSURFTlQsIFFVT1RFRF9JREVOVCwgUVVPVEVEX0xJU1QsIExJU1RdLmNvbmNhdChDT01NRU5UX01PREVTKTtcblxuICByZXR1cm4ge1xuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbU0hFQkFORywgTlVNQkVSLCBTVFJJTkcsIFFVT1RFRF9JREVOVCwgUVVPVEVEX0xJU1QsIExJU1RdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQ09NTU9OX0NPTlRBSU5TID0gW1xuICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcXCd8XFxcIicsIGVuZDogJ1xcJ3xcXFwiJyxcbiAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCB7YmVnaW46ICdcXCdcXCcnfV1cbiAgICB9XG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3NjaSddLFxuICAgIGxleGVtZXM6IC8lP1xcdysvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYWJvcnQgYnJlYWsgY2FzZSBjbGVhciBjYXRjaCBjb250aW51ZSBkbyBlbHNlaWYgZWxzZSBlbmRmdW5jdGlvbiBlbmQgZm9yIGZ1bmN0aW9uICcrXG4gICAgICAgICdnbG9iYWwgaWYgcGF1c2UgcmV0dXJuIHJlc3VtZSBzZWxlY3QgdHJ5IHRoZW4gd2hpbGUnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJyVmICVGICV0ICVUICVwaSAlZXBzICVpbmYgJW5hbiAlZSAlaSAleiAlcycsXG4gICAgICBidWlsdF9pbjogLy8gU2NpbGFiIGhhcyBtb3JlIHRoYW4gMjAwMCBmdW5jdGlvbnMuIEp1c3QgbGlzdCB0aGUgbW9zdCBjb21tb25zXG4gICAgICAgJ2FicyBhbmQgYWNvcyBhc2luIGF0YW4gY2VpbCBjZCBjaGRpciBjbGVhcmdsb2JhbCBjb3NoIGNvcyBjdW1wcm9kIGRlZmYgZGlzcCBlcnJvciAnK1xuICAgICAgICdleGVjIGV4ZWNzdHIgZXhpc3RzIGV4cCBleWUgZ2V0dGV4dCBmbG9vciBmcHJpbnRmIGZyZWFkIGZzb2x2ZSBpbWFnIGlzZGVmIGlzZW1wdHkgJytcbiAgICAgICAnaXNpbmZpc25hbiBpc3ZlY3RvciBsYXN0ZXJyb3IgbGVuZ3RoIGxvYWQgbGluc3BhY2UgbGlzdCBsaXN0ZmlsZXMgbG9nMTAgbG9nMiBsb2cgJytcbiAgICAgICAnbWF4IG1pbiBtc3ByaW50ZiBtY2xvc2UgbW9wZW4gb25lcyBvciBwYXRoY29udmVydCBwb2x5IHByaW50ZiBwcm9kIHB3ZCByYW5kIHJlYWwgJytcbiAgICAgICAncm91bmQgc2luaCBzaW4gc2l6ZSBnc29ydCBzcHJpbnRmIHNxcnQgc3RyY2F0IHN0cmNtcHMgdHJpbmcgc3VtIHN5c3RlbSB0YW5oIHRhbiAnK1xuICAgICAgICd0eXBlIHR5cGVuYW1lIHdhcm5pbmcgemVyb3MgbWF0cml4J1xuICAgIH0sXG4gICAgaWxsZWdhbDogJyhcInwjfC9cXFxcKnxcXFxccysvXFxcXHcrKScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbYS16QS1aX11bYS16QS1aXzAtOV0qKFxcJytbXFxcXC5cXCddKnxbXFxcXC5cXCddKyknLCBlbmQ6ICcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXVxcJypbXFxcXC5cXCddKicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IENPTU1PTl9DT05UQUlOU1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnLy8nLCAnJCcpXG4gICAgXS5jb25jYXQoQ09NTU9OX0NPTlRBSU5TKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVotXVthLXpBLVowLTlfLV0qJztcbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogJyhcXFxcJCcgKyBJREVOVF9SRSArICcpXFxcXGInXG4gIH07XG4gIHZhciBIRVhDT0xPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJyNbMC05QS1GYS1mXSsnXG4gIH07XG4gIHZhciBERUZfSU5URVJOQUxTID0ge1xuICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgYmVnaW46ICdbQS1aXFxcXF9cXFxcLlxcXFwtXSsnLCBlbmQ6ICc6JyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbXlxcXFxzXScsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIEhFWENPTE9SLFxuICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIWltcG9ydGFudCdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbPS98XFwnXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJywgYmVnaW46ICdcXFxcI1tBLVphLXowLTlfLV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsIGJlZ2luOiAnXFxcXC5bQS1aYS16MC05Xy1dKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItYXR0cicsIGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgICAgIGlsbGVnYWw6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItdGFnJywgLy8gYmVnaW46IElERU5UX1JFLCBlbmQ6ICdbLHxcXFxcc10nXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoYXxhYmJyfGFjcm9ueW18YWRkcmVzc3xhcmVhfGFydGljbGV8YXNpZGV8YXVkaW98YnxiYXNlfGJpZ3xibG9ja3F1b3RlfGJvZHl8YnJ8YnV0dG9ufGNhbnZhc3xjYXB0aW9ufGNpdGV8Y29kZXxjb2x8Y29sZ3JvdXB8Y29tbWFuZHxkYXRhbGlzdHxkZHxkZWx8ZGV0YWlsc3xkZm58ZGl2fGRsfGR0fGVtfGVtYmVkfGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fChoWzEtNl0pfGhlYWR8aGVhZGVyfGhncm91cHxocnxodG1sfGl8aWZyYW1lfGltZ3xpbnB1dHxpbnN8a2JkfGtleWdlbnxsYWJlbHxsZWdlbmR8bGl8bGlua3xtYXB8bWFya3xtZXRhfG1ldGVyfG5hdnxub2ZyYW1lc3xub3NjcmlwdHxvYmplY3R8b2x8b3B0Z3JvdXB8b3B0aW9ufG91dHB1dHxwfHBhcmFtfHByZXxwcm9ncmVzc3xxfHJwfHJ0fHJ1Ynl8c2FtcHxzY3JpcHR8c2VjdGlvbnxzZWxlY3R8c21hbGx8c3BhbnxzdHJpa2V8c3Ryb25nfHN0eWxlfHN1YnxzdXB8dGFibGV8dGJvZHl8dGR8dGV4dGFyZWF8dGZvb3R8dGh8dGhlYWR8dGltZXx0aXRsZXx0cnx0dHx1bHx2YXJ8dmlkZW8pXFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnOih2aXNpdGVkfHZhbGlkfHJvb3R8cmlnaHR8cmVxdWlyZWR8cmVhZC13cml0ZXxyZWFkLW9ubHl8b3V0LXJhbmdlfG9wdGlvbmFsfG9ubHktb2YtdHlwZXxvbmx5LWNoaWxkfG50aC1vZi10eXBlfG50aC1sYXN0LW9mLXR5cGV8bnRoLWxhc3QtY2hpbGR8bnRoLWNoaWxkfG5vdHxsaW5rfGxlZnR8bGFzdC1vZi10eXBlfGxhc3QtY2hpbGR8bGFuZ3xpbnZhbGlkfGluZGV0ZXJtaW5hdGV8aW4tcmFuZ2V8aG92ZXJ8Zm9jdXN8Zmlyc3Qtb2YtdHlwZXxmaXJzdC1saW5lfGZpcnN0LWxldHRlcnxmaXJzdC1jaGlsZHxmaXJzdHxlbmFibGVkfGVtcHR5fGRpc2FibGVkfGRlZmF1bHR8Y2hlY2tlZHxiZWZvcmV8YWZ0ZXJ8YWN0aXZlKSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnOjooYWZ0ZXJ8YmVmb3JlfGNob2ljZXN8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8cmVwZWF0LWluZGV4fHJlcGVhdC1pdGVtfHNlbGVjdGlvbnx2YWx1ZSknXG4gICAgICB9LFxuICAgICAgVkFSSUFCTEUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoei1pbmRleHx3b3JkLXdyYXB8d29yZC1zcGFjaW5nfHdvcmQtYnJlYWt8d2lkdGh8d2lkb3dzfHdoaXRlLXNwYWNlfHZpc2liaWxpdHl8dmVydGljYWwtYWxpZ258dW5pY29kZS1iaWRpfHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi1kdXJhdGlvbnx0cmFuc2l0aW9uLWRlbGF5fHRyYW5zaXRpb258dHJhbnNmb3JtLXN0eWxlfHRyYW5zZm9ybS1vcmlnaW58dHJhbnNmb3JtfHRvcHx0ZXh0LXVuZGVybGluZS1wb3NpdGlvbnx0ZXh0LXRyYW5zZm9ybXx0ZXh0LXNoYWRvd3x0ZXh0LXJlbmRlcmluZ3x0ZXh0LW92ZXJmbG93fHRleHQtaW5kZW50fHRleHQtZGVjb3JhdGlvbi1zdHlsZXx0ZXh0LWRlY29yYXRpb24tbGluZXx0ZXh0LWRlY29yYXRpb24tY29sb3J8dGV4dC1kZWNvcmF0aW9ufHRleHQtYWxpZ24tbGFzdHx0ZXh0LWFsaWdufHRhYi1zaXplfHRhYmxlLWxheW91dHxyaWdodHxyZXNpemV8cXVvdGVzfHBvc2l0aW9ufHBvaW50ZXItZXZlbnRzfHBlcnNwZWN0aXZlLW9yaWdpbnxwZXJzcGVjdGl2ZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWFmdGVyfHBhZGRpbmctdG9wfHBhZGRpbmctcmlnaHR8cGFkZGluZy1sZWZ0fHBhZGRpbmctYm90dG9tfHBhZGRpbmd8b3ZlcmZsb3cteXxvdmVyZmxvdy14fG92ZXJmbG93LXdyYXB8b3ZlcmZsb3d8b3V0bGluZS13aWR0aHxvdXRsaW5lLXN0eWxlfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtY29sb3J8b3V0bGluZXxvcnBoYW5zfG9yZGVyfG9wYWNpdHl8b2JqZWN0LXBvc2l0aW9ufG9iamVjdC1maXR8bm9ybWFsfG5vbmV8bmF2LXVwfG5hdi1yaWdodHxuYXYtbGVmdHxuYXYtaW5kZXh8bmF2LWRvd258bWluLXdpZHRofG1pbi1oZWlnaHR8bWF4LXdpZHRofG1heC1oZWlnaHR8bWFza3xtYXJrc3xtYXJnaW4tdG9wfG1hcmdpbi1yaWdodHxtYXJnaW4tbGVmdHxtYXJnaW4tYm90dG9tfG1hcmdpbnxsaXN0LXN0eWxlLXR5cGV8bGlzdC1zdHlsZS1wb3NpdGlvbnxsaXN0LXN0eWxlLWltYWdlfGxpc3Qtc3R5bGV8bGluZS1oZWlnaHR8bGV0dGVyLXNwYWNpbmd8bGVmdHxqdXN0aWZ5LWNvbnRlbnR8aW5pdGlhbHxpbmhlcml0fGltZS1tb2RlfGltYWdlLW9yaWVudGF0aW9ufGltYWdlLXJlc29sdXRpb258aW1hZ2UtcmVuZGVyaW5nfGljb258aHlwaGVuc3xoZWlnaHR8Zm9udC13ZWlnaHR8Zm9udC12YXJpYW50LWxpZ2F0dXJlc3xmb250LXZhcmlhbnR8Zm9udC1zdHlsZXxmb250LXN0cmV0Y2h8Zm9udC1zaXplLWFkanVzdHxmb250LXNpemV8Zm9udC1sYW5ndWFnZS1vdmVycmlkZXxmb250LWtlcm5pbmd8Zm9udC1mZWF0dXJlLXNldHRpbmdzfGZvbnQtZmFtaWx5fGZvbnR8ZmxvYXR8ZmxleC13cmFwfGZsZXgtc2hyaW5rfGZsZXgtZ3Jvd3xmbGV4LWZsb3d8ZmxleC1kaXJlY3Rpb258ZmxleC1iYXNpc3xmbGV4fGZpbHRlcnxlbXB0eS1jZWxsc3xkaXNwbGF5fGRpcmVjdGlvbnxjdXJzb3J8Y291bnRlci1yZXNldHxjb3VudGVyLWluY3JlbWVudHxjb250ZW50fGNvbHVtbi13aWR0aHxjb2x1bW4tc3Bhbnxjb2x1bW4tcnVsZS13aWR0aHxjb2x1bW4tcnVsZS1zdHlsZXxjb2x1bW4tcnVsZS1jb2xvcnxjb2x1bW4tcnVsZXxjb2x1bW4tZ2FwfGNvbHVtbi1maWxsfGNvbHVtbi1jb3VudHxjb2x1bW5zfGNvbG9yfGNsaXAtcGF0aHxjbGlwfGNsZWFyfGNhcHRpb24tc2lkZXxicmVhay1pbnNpZGV8YnJlYWstYmVmb3JlfGJyZWFrLWFmdGVyfGJveC1zaXppbmd8Ym94LXNoYWRvd3xib3gtZGVjb3JhdGlvbi1icmVha3xib3R0b218Ym9yZGVyLXdpZHRofGJvcmRlci10b3Atd2lkdGh8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXJpZ2h0LXJhZGl1c3xib3JkZXItdG9wLWxlZnQtcmFkaXVzfGJvcmRlci10b3AtY29sb3J8Ym9yZGVyLXRvcHxib3JkZXItc3R5bGV8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXJpZ2h0LXdpZHRofGJvcmRlci1yaWdodC1zdHlsZXxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0fGJvcmRlci1yYWRpdXN8Ym9yZGVyLWxlZnQtd2lkdGh8Ym9yZGVyLWxlZnQtc3R5bGV8Ym9yZGVyLWxlZnQtY29sb3J8Ym9yZGVyLWxlZnR8Ym9yZGVyLWltYWdlLXdpZHRofGJvcmRlci1pbWFnZS1zb3VyY2V8Ym9yZGVyLWltYWdlLXNsaWNlfGJvcmRlci1pbWFnZS1yZXBlYXR8Ym9yZGVyLWltYWdlLW91dHNldHxib3JkZXItaW1hZ2V8Ym9yZGVyLWNvbG9yfGJvcmRlci1jb2xsYXBzZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1ib3R0b20tc3R5bGV8Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c3xib3JkZXItYm90dG9tLWNvbG9yfGJvcmRlci1ib3R0b218Ym9yZGVyfGJhY2tncm91bmQtc2l6ZXxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kLXBvc2l0aW9ufGJhY2tncm91bmQtb3JpZ2lufGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1jb2xvcnxiYWNrZ3JvdW5kLWNsaXB8YmFja2dyb3VuZC1hdHRhY2htZW50fGJhY2tncm91bmQtYmxlbmQtbW9kZXxiYWNrZ3JvdW5kfGJhY2tmYWNlLXZpc2liaWxpdHl8YXV0b3xhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9ufGFuaW1hdGlvbi1wbGF5LXN0YXRlfGFuaW1hdGlvbi1uYW1lfGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnR8YW5pbWF0aW9uLWZpbGwtbW9kZXxhbmltYXRpb24tZHVyYXRpb258YW5pbWF0aW9uLWRpcmVjdGlvbnxhbmltYXRpb24tZGVsYXl8YW5pbWF0aW9ufGFsaWduLXNlbGZ8YWxpZ24taXRlbXN8YWxpZ24tY29udGVudClcXFxcYicsXG4gICAgICAgIGlsbGVnYWw6ICdbXlxcXFxzXSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGIod2hpdGVzcGFjZXx3YWl0fHctcmVzaXplfHZpc2libGV8dmVydGljYWwtdGV4dHx2ZXJ0aWNhbC1pZGVvZ3JhcGhpY3x1cHBlcmNhc2V8dXBwZXItcm9tYW58dXBwZXItYWxwaGF8dW5kZXJsaW5lfHRyYW5zcGFyZW50fHRvcHx0aGlufHRoaWNrfHRleHR8dGV4dC10b3B8dGV4dC1ib3R0b218dGItcmx8dGFibGUtaGVhZGVyLWdyb3VwfHRhYmxlLWZvb3Rlci1ncm91cHxzdy1yZXNpemV8c3VwZXJ8c3RyaWN0fHN0YXRpY3xzcXVhcmV8c29saWR8c21hbGwtY2Fwc3xzZXBhcmF0ZXxzZS1yZXNpemV8c2Nyb2xsfHMtcmVzaXplfHJ0bHxyb3ctcmVzaXplfHJpZGdlfHJpZ2h0fHJlcGVhdHxyZXBlYXQteXxyZXBlYXQteHxyZWxhdGl2ZXxwcm9ncmVzc3xwb2ludGVyfG92ZXJsaW5lfG91dHNpZGV8b3V0c2V0fG9ibGlxdWV8bm93cmFwfG5vdC1hbGxvd2VkfG5vcm1hbHxub25lfG53LXJlc2l6ZXxuby1yZXBlYXR8bm8tZHJvcHxuZXdzcGFwZXJ8bmUtcmVzaXplfG4tcmVzaXplfG1vdmV8bWlkZGxlfG1lZGl1bXxsdHJ8bHItdGJ8bG93ZXJjYXNlfGxvd2VyLXJvbWFufGxvd2VyLWFscGhhfGxvb3NlfGxpc3QtaXRlbXxsaW5lfGxpbmUtdGhyb3VnaHxsaW5lLWVkZ2V8bGlnaHRlcnxsZWZ0fGtlZXAtYWxsfGp1c3RpZnl8aXRhbGljfGludGVyLXdvcmR8aW50ZXItaWRlb2dyYXBofGluc2lkZXxpbnNldHxpbmxpbmV8aW5saW5lLWJsb2NrfGluaGVyaXR8aW5hY3RpdmV8aWRlb2dyYXBoLXNwYWNlfGlkZW9ncmFwaC1wYXJlbnRoZXNpc3xpZGVvZ3JhcGgtbnVtZXJpY3xpZGVvZ3JhcGgtYWxwaGF8aG9yaXpvbnRhbHxoaWRkZW58aGVscHxoYW5kfGdyb292ZXxmaXhlZHxlbGxpcHNpc3xlLXJlc2l6ZXxkb3VibGV8ZG90dGVkfGRpc3RyaWJ1dGV8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlLWxldHRlcnxkaXN0cmlidXRlLWFsbC1saW5lc3xkaXNjfGRpc2FibGVkfGRlZmF1bHR8ZGVjaW1hbHxkYXNoZWR8Y3Jvc3NoYWlyfGNvbGxhcHNlfGNvbC1yZXNpemV8Y2lyY2xlfGNoYXJ8Y2VudGVyfGNhcGl0YWxpemV8YnJlYWstd29yZHxicmVhay1hbGx8Ym90dG9tfGJvdGh8Ym9sZGVyfGJvbGR8YmxvY2t8YmlkaS1vdmVycmlkZXxiZWxvd3xiYXNlbGluZXxhdXRvfGFsd2F5c3xhbGwtc2Nyb2xsfGFic29sdXRlfHRhYmxlfHRhYmxlLWNlbGwpXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzonLCBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBIRVhDT0xPUixcbiAgICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICchaW1wb3J0YW50J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdAJywgZW5kOiAnW3s7XScsXG4gICAgICAgIGtleXdvcmRzOiAnbWl4aW4gaW5jbHVkZSBleHRlbmQgZm9yIGlmIGVsc2UgZWFjaCB3aGlsZSBjaGFyc2V0IGltcG9ydCBkZWJ1ZyBtZWRpYSBwYWdlIGNvbnRlbnQgZm9udC1mYWNlIG5hbWVzcGFjZSB3YXJuJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBIRVhDT0xPUixcbiAgICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxzW0EtWmEtejAtOV8uLV0rJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjb25zb2xlJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzezAsM31bL1xcXFx3XFxcXGRcXFxcW1xcXFxdKClALV0qWz4lJCNdJyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnJCcsIHN1Ykxhbmd1YWdlOiAnYmFzaCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIHNtYWxpX2luc3RyX2xvd19wcmlvID0gWydhZGQnLCAnYW5kJywgJ2NtcCcsICdjbXBnJywgJ2NtcGwnLCAnY29uc3QnLCAnZGl2JywgJ2RvdWJsZScsICdmbG9hdCcsICdnb3RvJywgJ2lmJywgJ2ludCcsICdsb25nJywgJ21vdmUnLCAnbXVsJywgJ25lZycsICduZXcnLCAnbm9wJywgJ25vdCcsICdvcicsICdyZW0nLCAncmV0dXJuJywgJ3NobCcsICdzaHInLCAnc3B1dCcsICdzdWInLCAndGhyb3cnLCAndXNocicsICd4b3InXTtcbiAgdmFyIHNtYWxpX2luc3RyX2hpZ2hfcHJpbyA9IFsnYWdldCcsICdhcHV0JywgJ2FycmF5JywgJ2NoZWNrJywgJ2V4ZWN1dGUnLCAnZmlsbCcsICdmaWxsZWQnLCAnZ290by8xNicsICdnb3RvLzMyJywgJ2lnZXQnLCAnaW5zdGFuY2UnLCAnaW52b2tlJywgJ2lwdXQnLCAnbW9uaXRvcicsICdwYWNrZWQnLCAnc2dldCcsICdzcGFyc2UnXTtcbiAgdmFyIHNtYWxpX2tleXdvcmRzID0gWyd0cmFuc2llbnQnLCAnY29uc3RydWN0b3InLCAnYWJzdHJhY3QnLCAnZmluYWwnLCAnc3ludGhldGljJywgJ3B1YmxpYycsICdwcml2YXRlJywgJ3Byb3RlY3RlZCcsICdzdGF0aWMnLCAnYnJpZGdlJywgJ3N5c3RlbSddO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc21hbGknXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcjJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJ1xcXFxzKlxcXFwuZW5kXFxcXHNbYS16QS1aMC05XSonfSxcbiAgICAgICAgICB7YmVnaW46ICdeWyBdKlxcXFwuW2EtekEtWl0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICdcXFxcczpbYS16QS1aXzAtOV0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICdcXFxccygnICsgc21hbGlfa2V5d29yZHMuam9pbignfCcpICsgJyknfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIHZhcmlhbnRzIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHMoJytzbWFsaV9pbnN0cl9sb3dfcHJpby5qb2luKCd8JykrJylcXFxccydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHMoJytzbWFsaV9pbnN0cl9sb3dfcHJpby5qb2luKCd8JykrJykoKFxcXFwtfC8pW2EtekEtWjAtOV0rKStcXFxccycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxzKCcrc21hbGlfaW5zdHJfaGlnaF9wcmlvLmpvaW4oJ3wnKSsnKSgoXFxcXC18LylbYS16QS1aMC05XSspKlxcXFxzJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luOiAnTFteXFwoOzpcXG5dKjsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW3ZwXVswLTldKycsXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUl9JREVOVF9SRSA9ICdbYS16XVthLXpBLVowLTlfXSonO1xuICB2YXIgQ0hBUiA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXCQuezF9J1xuICB9O1xuICB2YXIgU1lNQk9MID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICcjJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc3QnXSxcbiAgICBrZXl3b3JkczogJ3NlbGYgc3VwZXIgbmlsIHRydWUgZmFsc2UgdGhpc0NvbnRleHQnLCAvLyBvbmx5IDZcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdcIicsICdcIicpLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYltBLVpdW0EtWmEtejAtOV9dKicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFZBUl9JREVOVF9SRSArICc6JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgU1lNQk9MLFxuICAgICAgQ0hBUixcbiAgICAgIHtcbiAgICAgICAgLy8gVGhpcyBsb29rcyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gbmVlZGVkIHRvIGF2b2lkIGNvbWJpbmF0b3JpYWxcbiAgICAgICAgLy8gZXhwbG9zaW9uIHVuZGVyIFY4LiBJdCBlZmZlY3RpdmVseSBtZWFucyBgfCB2YXIxIHZhcjIgLi4uIHxgIHdpdGhcbiAgICAgICAgLy8gd2hpdGVzcGFjZSBhZGphY2VudCB0byBgfGAgYmVpbmcgb3B0aW9uYWwuXG4gICAgICAgIGJlZ2luOiAnXFxcXHxbIF0qJyArIFZBUl9JREVOVF9SRSArICcoWyBdKycgKyBWQVJfSURFTlRfUkUgKyAnKSpbIF0qXFxcXHwnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvXFx8LyxcbiAgICAgICAgaWxsZWdhbDogL1xcUy8sXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnKFxcXFx8WyBdKik/JyArIFZBUl9JREVOVF9SRX1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwjXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIENIQVIsXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIFNZTUJPTFxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21sJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8qIGFjY29yZGluZyB0byBEZWZpbml0aW9uIG9mIFN0YW5kYXJkIE1MIDk3ICAqL1xuICAgICAgICAnYWJzdHlwZSBhbmQgYW5kYWxzbyBhcyBjYXNlIGRhdGF0eXBlIGRvIGVsc2UgZW5kIGVxdHlwZSAnICtcbiAgICAgICAgJ2V4Y2VwdGlvbiBmbiBmdW4gZnVuY3RvciBoYW5kbGUgaWYgaW4gaW5jbHVkZSBpbmZpeCBpbmZpeHIgJyArXG4gICAgICAgICdsZXQgbG9jYWwgbm9uZml4IG9mIG9wIG9wZW4gb3JlbHNlIHJhaXNlIHJlYyBzaGFyaW5nIHNpZyAnICtcbiAgICAgICAgJ3NpZ25hdHVyZSBzdHJ1Y3Qgc3RydWN0dXJlIHRoZW4gdHlwZSB2YWwgd2l0aCB3aXRodHlwZSB3aGVyZSB3aGlsZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLyogYnVpbHQtaW4gdHlwZXMgYWNjb3JkaW5nIHRvIGJhc2lzIGxpYnJhcnkgKi9cbiAgICAgICAgJ2FycmF5IGJvb2wgY2hhciBleG4gaW50IGxpc3Qgb3B0aW9uIG9yZGVyIHJlYWwgcmVmIHN0cmluZyBzdWJzdHJpbmcgdmVjdG9yIHVuaXQgd29yZCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBOT05FIFNPTUUgTEVTUyBFUVVBTCBHUkVBVEVSIG5pbCdcbiAgICB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXC98Pj4vLFxuICAgIGxleGVtZXM6ICdbYS16X11cXFxcdyohPycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAvXFxbKFxcfFxcfCk/XFxdfFxcKFxcKS8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1xcXFwoXFxcXConLFxuICAgICAgICAnXFxcXCpcXFxcKScsXG4gICAgICAgIHtcbiAgICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHsgLyogdHlwZSB2YXJpYWJsZSAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogJ1xcJ1tBLVphLXpfXSg/IVxcJylbXFxcXHdcXCddKidcbiAgICAgICAgLyogdGhlIGdyYW1tYXIgaXMgYW1iaWd1b3VzIG9uIGhvdyAnYSdiIHNob3VsZCBiZSBpbnRlcnByZXRlZCBidXQgbm90IHRoZSBjb21waWxlciAqL1xuICAgICAgfSxcbiAgICAgIHsgLyogcG9seW1vcnBoaWMgdmFyaWFudCAqL1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdgW0EtWl1bXFxcXHdcXCddKidcbiAgICAgIH0sXG4gICAgICB7IC8qIG1vZHVsZSBvciBjb25zdHJ1Y3RvciAqL1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFwnXSonLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8qIGRvbid0IGNvbG9yIGlkZW50aWZpZXJzLCBidXQgc2FmZWx5IGNhdGNoIGFsbCBpZGVudGlmaWVycyB3aXRoICcqL1xuICAgICAgICBiZWdpbjogJ1thLXpfXVxcXFx3KlxcJ1tcXFxcd1xcJ10qJ1xuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjpcbiAgICAgICAgICAnXFxcXGIoMFt4WF1bYS1mQS1GMC05X10rW0xsbl0/fCcgK1xuICAgICAgICAgICcwW29PXVswLTdfXStbTGxuXT98JyArXG4gICAgICAgICAgJzBbYkJdWzAxX10rW0xsbl0/fCcgK1xuICAgICAgICAgICdbMC05XVswLTlfXSooW0xsbl18KFxcXFwuWzAtOV9dKik/KFtlRV1bLStdP1swLTlfXSspPyk/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9bLT1dPi8gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyBJbiBTUUYsIGEgdmFyaWFibGUgc3RhcnQgd2l0aCBfXG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXGJfK1thLXpBLVpfXVxcdyovXG4gIH07XG5cbiAgLy8gSW4gU1FGLCBhIGZ1bmN0aW9uIHNob3VsZCBmaXQgbXlUYWdfZm5jX215RnVuY3Rpb24gcGF0dGVyblxuICAvLyBodHRwczovL2NvbW11bml0eS5iaXN0dWRpby5jb20vd2lraS9GdW5jdGlvbnNfTGlicmFyeV8oQXJtYV8zKSNBZGRpbmdfYV9GdW5jdGlvblxuICB2YXIgRlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiAvW2EtekEtWl1bYS16QS1aMC05XStfZm5jX1xcdyovXG4gIH07XG5cbiAgLy8gSW4gU1FGIHN0cmluZ3MsIHF1b3RlcyBtYXRjaGluZyB0aGUgc3RhcnQgYXJlIGVzY2FwZWQgYnkgYWRkaW5nIGEgY29uc2VjdXRpdmUuXG4gIC8vIEV4YW1wbGUgb2Ygc2luZ2xlIGVzY2FwZWQgcXVvdGVzOiBcIiBcIlwiIFwiIGFuZCAgJyAnJyAnLlxuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIicsIHJlbGV2YW5jZTogMH1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJywgcmVsZXZhbmNlOiAwfV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgLy8gbGlzdCBvZiBrZXl3b3JkcyBmcm9tOlxuICAvLyBodHRwczovL2NvbW11bml0eS5iaXN0dWRpby5jb20vd2lraS9QcmVQcm9jZXNzb3JfQ29tbWFuZHNcbiAgdmFyIFBSRVBST0NFU1NPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogLyNcXHMqW2Etel0rXFxiLywgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgICdtZXRhLWtleXdvcmQnOlxuICAgICAgICAnZGVmaW5lIHVuZGVmIGlmZGVmIGlmbmRlZiBlbHNlIGVuZGlmIGluY2x1ZGUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXFxcXG4vLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoU1RSSU5HUywge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJ30pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgIGJlZ2luOiAvPFteXFxuPl0qPi8sIGVuZDogLyQvLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3NxZiddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdjYXNlIGNhdGNoIGRlZmF1bHQgZG8gZWxzZSBleGl0IGV4aXRXaXRoIGZvciBmb3JFYWNoIGZyb20gaWYgJyArXG4gICAgICAgICdwcml2YXRlIHN3aXRjaCB0aGVuIHRocm93IHRvIHRyeSB3YWl0VW50aWwgd2hpbGUgd2l0aCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2FicyBhY2NUaW1lIGFjb3MgYWN0aW9uIGFjdGlvbklEcyBhY3Rpb25LZXlzIGFjdGlvbktleXNJbWFnZXMgYWN0aW9uS2V5c05hbWVzICcgK1xuICAgICAgICAnYWN0aW9uS2V5c05hbWVzQXJyYXkgYWN0aW9uTmFtZSBhY3Rpb25QYXJhbXMgYWN0aXZhdGVBZGRvbnMgYWN0aXZhdGVkQWRkb25zIGFjdGl2YXRlS2V5ICcgK1xuICAgICAgICAnYWRkM0RFTkNvbm5lY3Rpb24gYWRkM0RFTkV2ZW50SGFuZGxlciBhZGQzREVOTGF5ZXIgYWRkQWN0aW9uIGFkZEJhY2twYWNrIGFkZEJhY2twYWNrQ2FyZ28gJyArXG4gICAgICAgICdhZGRCYWNrcGFja0NhcmdvR2xvYmFsIGFkZEJhY2twYWNrR2xvYmFsIGFkZENhbVNoYWtlIGFkZEN1cmF0b3JBZGRvbnMgYWRkQ3VyYXRvckNhbWVyYUFyZWEgJyArXG4gICAgICAgICdhZGRDdXJhdG9yRWRpdGFibGVPYmplY3RzIGFkZEN1cmF0b3JFZGl0aW5nQXJlYSBhZGRDdXJhdG9yUG9pbnRzIGFkZEVkaXRvck9iamVjdCBhZGRFdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdhZGRGb3JjZSBhZGRHb2dnbGVzIGFkZEdyb3VwSWNvbiBhZGRIYW5kZ3VuSXRlbSBhZGRIZWFkZ2VhciBhZGRJdGVtIGFkZEl0ZW1DYXJnbyAnICtcbiAgICAgICAgJ2FkZEl0ZW1DYXJnb0dsb2JhbCBhZGRJdGVtUG9vbCBhZGRJdGVtVG9CYWNrcGFjayBhZGRJdGVtVG9Vbmlmb3JtIGFkZEl0ZW1Ub1Zlc3QgYWRkTGl2ZVN0YXRzICcgK1xuICAgICAgICAnYWRkTWFnYXppbmUgYWRkTWFnYXppbmVBbW1vQ2FyZ28gYWRkTWFnYXppbmVDYXJnbyBhZGRNYWdhemluZUNhcmdvR2xvYmFsIGFkZE1hZ2F6aW5lR2xvYmFsICcgK1xuICAgICAgICAnYWRkTWFnYXppbmVQb29sIGFkZE1hZ2F6aW5lcyBhZGRNYWdhemluZVR1cnJldCBhZGRNZW51IGFkZE1lbnVJdGVtIGFkZE1pc3Npb25FdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdhZGRNUEV2ZW50SGFuZGxlciBhZGRNdXNpY0V2ZW50SGFuZGxlciBhZGRPd25lZE1pbmUgYWRkUGxheWVyU2NvcmVzIGFkZFByaW1hcnlXZWFwb25JdGVtICcgK1xuICAgICAgICAnYWRkUHVibGljVmFyaWFibGVFdmVudEhhbmRsZXIgYWRkUmF0aW5nIGFkZFJlc291cmNlcyBhZGRTY29yZSBhZGRTY29yZVNpZGUgYWRkU2Vjb25kYXJ5V2VhcG9uSXRlbSAnICtcbiAgICAgICAgJ2FkZFN3aXRjaGFibGVVbml0IGFkZFRlYW1NZW1iZXIgYWRkVG9SZW1haW5zQ29sbGVjdG9yIGFkZFRvcnF1ZSBhZGRVbmlmb3JtIGFkZFZlaGljbGUgYWRkVmVzdCAnICtcbiAgICAgICAgJ2FkZFdheXBvaW50IGFkZFdlYXBvbiBhZGRXZWFwb25DYXJnbyBhZGRXZWFwb25DYXJnb0dsb2JhbCBhZGRXZWFwb25HbG9iYWwgYWRkV2VhcG9uSXRlbSAnICtcbiAgICAgICAgJ2FkZFdlYXBvblBvb2wgYWRkV2VhcG9uVHVycmV0IGFkbWluIGFnZW50IGFnZW50cyBBR0xUb0FTTCBhaW1lZEF0VGFyZ2V0IGFpbVBvcyBhaXJEZW5zaXR5UlREICcgK1xuICAgICAgICAnYWlycGxhbmVUaHJvdHRsZSBhaXJwb3J0U2lkZSBBSVNGaW5pc2hIZWFsIGFsaXZlIGFsbDNERU5FbnRpdGllcyBhbGxBaXJwb3J0cyBhbGxDb250cm9scyAnICtcbiAgICAgICAgJ2FsbEN1cmF0b3JzIGFsbEN1dExheWVycyBhbGxEZWFkIGFsbERlYWRNZW4gYWxsRGlzcGxheXMgYWxsR3JvdXBzIGFsbE1hcE1hcmtlcnMgYWxsTWluZXMgJyArXG4gICAgICAgICdhbGxNaXNzaW9uT2JqZWN0cyBhbGxvdzNETW9kZSBhbGxvd0NyZXdJbkltbW9iaWxlIGFsbG93Q3VyYXRvckxvZ2ljSWdub3JlQXJlYXMgYWxsb3dEYW1hZ2UgJyArXG4gICAgICAgICdhbGxvd0RhbW1hZ2UgYWxsb3dGaWxlT3BlcmF0aW9ucyBhbGxvd0ZsZWVpbmcgYWxsb3dHZXRJbiBhbGxvd1NwcmludCBhbGxQbGF5ZXJzIGFsbFNpbXBsZU9iamVjdHMgJyArXG4gICAgICAgICdhbGxTaXRlcyBhbGxUdXJyZXRzIGFsbFVuaXRzIGFsbFVuaXRzVUFWIGFsbFZhcmlhYmxlcyBhbW1vIGFtbW9PblB5bG9uIGFuZCBhbmltYXRlIGFuaW1hdGVCYXkgJyArXG4gICAgICAgICdhbmltYXRlRG9vciBhbmltYXRlUHlsb24gYW5pbWF0ZVNvdXJjZSBhbmltYXRpb25OYW1lcyBhbmltYXRpb25QaGFzZSBhbmltYXRpb25Tb3VyY2VQaGFzZSAnICtcbiAgICAgICAgJ2FuaW1hdGlvblN0YXRlIGFwcGVuZCBhcHBseSBhcm1vcnlQb2ludHMgYXJyYXlJbnRlcnNlY3QgYXNpbiBBU0xUb0FHTCBBU0xUb0FUTCBhc3NlcnQgJyArXG4gICAgICAgICdhc3NpZ25Bc0NhcmdvIGFzc2lnbkFzQ2FyZ29JbmRleCBhc3NpZ25Bc0NvbW1hbmRlciBhc3NpZ25Bc0RyaXZlciBhc3NpZ25Bc0d1bm5lciBhc3NpZ25Bc1R1cnJldCAnICtcbiAgICAgICAgJ2Fzc2lnbkN1cmF0b3IgYXNzaWduZWRDYXJnbyBhc3NpZ25lZENvbW1hbmRlciBhc3NpZ25lZERyaXZlciBhc3NpZ25lZEd1bm5lciBhc3NpZ25lZEl0ZW1zICcgK1xuICAgICAgICAnYXNzaWduZWRUYXJnZXQgYXNzaWduZWRUZWFtIGFzc2lnbmVkVmVoaWNsZSBhc3NpZ25lZFZlaGljbGVSb2xlIGFzc2lnbkl0ZW0gYXNzaWduVGVhbSAnICtcbiAgICAgICAgJ2Fzc2lnblRvQWlycG9ydCBhdGFuIGF0YW4yIGF0ZyBBVExUb0FTTCBhdHRhY2hlZE9iamVjdCBhdHRhY2hlZE9iamVjdHMgYXR0YWNoZWRUbyBhdHRhY2hPYmplY3QgJyArXG4gICAgICAgICdhdHRhY2hUbyBhdHRhY2tFbmFibGVkIGJhY2twYWNrIGJhY2twYWNrQ2FyZ28gYmFja3BhY2tDb250YWluZXIgYmFja3BhY2tJdGVtcyBiYWNrcGFja01hZ2F6aW5lcyAnICtcbiAgICAgICAgJ2JhY2twYWNrU3BhY2VGb3IgYmVoYXZpb3VyIGJlbmNobWFyayBiaW5vY3VsYXIgYm91bmRpbmdCb3ggYm91bmRpbmdCb3hSZWFsIGJvdW5kaW5nQ2VudGVyICcgK1xuICAgICAgICAnYnJlYWtPdXQgYnJlYWtUbyBicmllZmluZ05hbWUgYnVpbGRpbmdFeGl0IGJ1aWxkaW5nUG9zIGJ1dHRvbkFjdGlvbiBidXR0b25TZXRBY3Rpb24gY2FkZXRNb2RlICcgK1xuICAgICAgICAnY2FsbCBjYWxsRXh0ZW5zaW9uIGNhbUNvbW1hbmQgY2FtQ29tbWl0IGNhbUNvbW1pdFByZXBhcmVkIGNhbUNvbW1pdHRlZCBjYW1Db25zdHVjdGlvblNldFBhcmFtcyAnICtcbiAgICAgICAgJ2NhbUNyZWF0ZSBjYW1EZXN0cm95IGNhbWVyYUVmZmVjdCBjYW1lcmFFZmZlY3RFbmFibGVIVUQgY2FtZXJhSW50ZXJlc3QgY2FtZXJhT24gY2FtZXJhVmlldyAnICtcbiAgICAgICAgJ2NhbXBhaWduQ29uZmlnRmlsZSBjYW1QcmVsb2FkIGNhbVByZWxvYWRlZCBjYW1QcmVwYXJlQmFuayBjYW1QcmVwYXJlRGlyIGNhbVByZXBhcmVEaXZlICcgK1xuICAgICAgICAnY2FtUHJlcGFyZUZvY3VzIGNhbVByZXBhcmVGb3YgY2FtUHJlcGFyZUZvdlJhbmdlIGNhbVByZXBhcmVQb3MgY2FtUHJlcGFyZVJlbFBvcyBjYW1QcmVwYXJlVGFyZ2V0ICcgK1xuICAgICAgICAnY2FtU2V0QmFuayBjYW1TZXREaXIgY2FtU2V0RGl2ZSBjYW1TZXRGb2N1cyBjYW1TZXRGb3YgY2FtU2V0Rm92UmFuZ2UgY2FtU2V0UG9zIGNhbVNldFJlbFBvcyAnICtcbiAgICAgICAgJ2NhbVNldFRhcmdldCBjYW1UYXJnZXQgY2FtVXNlTlZHIGNhbkFkZCBjYW5BZGRJdGVtVG9CYWNrcGFjayBjYW5BZGRJdGVtVG9Vbmlmb3JtIGNhbkFkZEl0ZW1Ub1Zlc3QgJyArXG4gICAgICAgICdjYW5jZWxTaW1wbGVUYXNrRGVzdGluYXRpb24gY2FuRmlyZSBjYW5Nb3ZlIGNhblNsaW5nTG9hZCBjYW5TdGFuZCBjYW5TdXNwZW5kICcgK1xuICAgICAgICAnY2FuVHJpZ2dlckR5bmFtaWNTaW11bGF0aW9uIGNhblVubG9hZEluQ29tYmF0IGNhblZlaGljbGVDYXJnbyBjYXB0aXZlIGNhcHRpdmVOdW0gY2JDaGVja2VkICcgK1xuICAgICAgICAnY2JTZXRDaGVja2VkIGNlaWwgY2hhbm5lbEVuYWJsZWQgY2hlYXRzRW5hYmxlZCBjaGVja0FJRmVhdHVyZSBjaGVja1Zpc2liaWxpdHkgY2xhc3NOYW1lICcgK1xuICAgICAgICAnY2xlYXJBbGxJdGVtc0Zyb21CYWNrcGFjayBjbGVhckJhY2twYWNrQ2FyZ28gY2xlYXJCYWNrcGFja0NhcmdvR2xvYmFsIGNsZWFyR3JvdXBJY29ucyAnICtcbiAgICAgICAgJ2NsZWFySXRlbUNhcmdvIGNsZWFySXRlbUNhcmdvR2xvYmFsIGNsZWFySXRlbVBvb2wgY2xlYXJNYWdhemluZUNhcmdvIGNsZWFyTWFnYXppbmVDYXJnb0dsb2JhbCAnICtcbiAgICAgICAgJ2NsZWFyTWFnYXppbmVQb29sIGNsZWFyT3ZlcmxheSBjbGVhclJhZGlvIGNsZWFyV2VhcG9uQ2FyZ28gY2xlYXJXZWFwb25DYXJnb0dsb2JhbCBjbGVhcldlYXBvblBvb2wgJyArXG4gICAgICAgICdjbGllbnRPd25lciBjbG9zZURpYWxvZyBjbG9zZURpc3BsYXkgY2xvc2VPdmVybGF5IGNvbGxhcHNlT2JqZWN0VHJlZSBjb2xsZWN0M0RFTkhpc3RvcnkgJyArXG4gICAgICAgICdjb2xsZWN0aXZlUlREIGNvbWJhdE1vZGUgY29tbWFuZEFydGlsbGVyeUZpcmUgY29tbWFuZENoYXQgY29tbWFuZGVyIGNvbW1hbmRGaXJlIGNvbW1hbmRGb2xsb3cgJyArXG4gICAgICAgICdjb21tYW5kRlNNIGNvbW1hbmRHZXRPdXQgY29tbWFuZGluZ01lbnUgY29tbWFuZE1vdmUgY29tbWFuZFJhZGlvIGNvbW1hbmRTdG9wICcgK1xuICAgICAgICAnY29tbWFuZFN1cHByZXNzaXZlRmlyZSBjb21tYW5kVGFyZ2V0IGNvbW1hbmRXYXRjaCBjb21tZW50IGNvbW1pdE92ZXJsYXkgY29tcGlsZSBjb21waWxlRmluYWwgJyArXG4gICAgICAgICdjb21wbGV0ZWRGU00gY29tcG9zZVRleHQgY29uZmlnQ2xhc3NlcyBjb25maWdGaWxlIGNvbmZpZ0hpZXJhcmNoeSBjb25maWdOYW1lIGNvbmZpZ1Byb3BlcnRpZXMgJyArXG4gICAgICAgICdjb25maWdTb3VyY2VBZGRvbkxpc3QgY29uZmlnU291cmNlTW9kIGNvbmZpZ1NvdXJjZU1vZExpc3QgY29uZmlybVNlbnNvclRhcmdldCAnICtcbiAgICAgICAgJ2Nvbm5lY3RUZXJtaW5hbFRvVUFWIGNvbnRyb2xzR3JvdXBDdHJsIGNvcHlGcm9tQ2xpcGJvYXJkIGNvcHlUb0NsaXBib2FyZCBjb3B5V2F5cG9pbnRzIGNvcyBjb3VudCAnICtcbiAgICAgICAgJ2NvdW50RW5lbXkgY291bnRGcmllbmRseSBjb3VudFNpZGUgY291bnRUeXBlIGNvdW50VW5rbm93biBjcmVhdGUzREVOQ29tcG9zaXRpb24gY3JlYXRlM0RFTkVudGl0eSAnICtcbiAgICAgICAgJ2NyZWF0ZUFnZW50IGNyZWF0ZUNlbnRlciBjcmVhdGVEaWFsb2cgY3JlYXRlRGlhcnlMaW5rIGNyZWF0ZURpYXJ5UmVjb3JkIGNyZWF0ZURpYXJ5U3ViamVjdCAnICtcbiAgICAgICAgJ2NyZWF0ZURpc3BsYXkgY3JlYXRlR2VhckRpYWxvZyBjcmVhdGVHcm91cCBjcmVhdGVHdWFyZGVkUG9pbnQgY3JlYXRlTG9jYXRpb24gY3JlYXRlTWFya2VyICcgK1xuICAgICAgICAnY3JlYXRlTWFya2VyTG9jYWwgY3JlYXRlTWVudSBjcmVhdGVNaW5lIGNyZWF0ZU1pc3Npb25EaXNwbGF5IGNyZWF0ZU1QQ2FtcGFpZ25EaXNwbGF5ICcgK1xuICAgICAgICAnY3JlYXRlU2ltcGxlT2JqZWN0IGNyZWF0ZVNpbXBsZVRhc2sgY3JlYXRlU2l0ZSBjcmVhdGVTb3VuZFNvdXJjZSBjcmVhdGVUYXNrIGNyZWF0ZVRlYW0gJyArXG4gICAgICAgICdjcmVhdGVUcmlnZ2VyIGNyZWF0ZVVuaXQgY3JlYXRlVmVoaWNsZSBjcmVhdGVWZWhpY2xlQ3JldyBjcmVhdGVWZWhpY2xlTG9jYWwgY3JldyBjdEFkZEhlYWRlciAnICtcbiAgICAgICAgJ2N0QWRkUm93IGN0Q2xlYXIgY3RDdXJTZWwgY3REYXRhIGN0RmluZEhlYWRlclJvd3MgY3RGaW5kUm93SGVhZGVyIGN0SGVhZGVyQ29udHJvbHMgY3RIZWFkZXJDb3VudCAnICtcbiAgICAgICAgJ2N0UmVtb3ZlSGVhZGVycyBjdFJlbW92ZVJvd3MgY3RybEFjdGl2YXRlIGN0cmxBZGRFdmVudEhhbmRsZXIgY3RybEFuZ2xlIGN0cmxBdXRvU2Nyb2xsRGVsYXkgJyArXG4gICAgICAgICdjdHJsQXV0b1Njcm9sbFJld2luZCBjdHJsQXV0b1Njcm9sbFNwZWVkIGN0cmxDaGVja2VkIGN0cmxDbGFzc05hbWUgY3RybENvbW1pdCBjdHJsQ29tbWl0dGVkICcgK1xuICAgICAgICAnY3RybENyZWF0ZSBjdHJsRGVsZXRlIGN0cmxFbmFibGUgY3RybEVuYWJsZWQgY3RybEZhZGUgY3RybEhUTUxMb2FkZWQgY3RybElEQyBjdHJsSUREICcgK1xuICAgICAgICAnY3RybE1hcEFuaW1BZGQgY3RybE1hcEFuaW1DbGVhciBjdHJsTWFwQW5pbUNvbW1pdCBjdHJsTWFwQW5pbURvbmUgY3RybE1hcEN1cnNvciBjdHJsTWFwTW91c2VPdmVyICcgK1xuICAgICAgICAnY3RybE1hcFNjYWxlIGN0cmxNYXBTY3JlZW5Ub1dvcmxkIGN0cmxNYXBXb3JsZFRvU2NyZWVuIGN0cmxNb2RlbCBjdHJsTW9kZWxEaXJBbmRVcCBjdHJsTW9kZWxTY2FsZSAnICtcbiAgICAgICAgJ2N0cmxQYXJlbnQgY3RybFBhcmVudENvbnRyb2xzR3JvdXAgY3RybFBvc2l0aW9uIGN0cmxSZW1vdmVBbGxFdmVudEhhbmRsZXJzIGN0cmxSZW1vdmVFdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdjdHJsU2NhbGUgY3RybFNldEFjdGl2ZUNvbG9yIGN0cmxTZXRBbmdsZSBjdHJsU2V0QXV0b1Njcm9sbERlbGF5IGN0cmxTZXRBdXRvU2Nyb2xsUmV3aW5kICcgK1xuICAgICAgICAnY3RybFNldEF1dG9TY3JvbGxTcGVlZCBjdHJsU2V0QmFja2dyb3VuZENvbG9yIGN0cmxTZXRDaGVja2VkIGN0cmxTZXRFdmVudEhhbmRsZXIgY3RybFNldEZhZGUgJyArXG4gICAgICAgICdjdHJsU2V0Rm9jdXMgY3RybFNldEZvbnQgY3RybFNldEZvbnRIMSBjdHJsU2V0Rm9udEgxQiBjdHJsU2V0Rm9udEgyIGN0cmxTZXRGb250SDJCIGN0cmxTZXRGb250SDMgJyArXG4gICAgICAgICdjdHJsU2V0Rm9udEgzQiBjdHJsU2V0Rm9udEg0IGN0cmxTZXRGb250SDRCIGN0cmxTZXRGb250SDUgY3RybFNldEZvbnRINUIgY3RybFNldEZvbnRINiAnICtcbiAgICAgICAgJ2N0cmxTZXRGb250SDZCIGN0cmxTZXRGb250SGVpZ2h0IGN0cmxTZXRGb250SGVpZ2h0SDEgY3RybFNldEZvbnRIZWlnaHRIMiBjdHJsU2V0Rm9udEhlaWdodEgzICcgK1xuICAgICAgICAnY3RybFNldEZvbnRIZWlnaHRINCBjdHJsU2V0Rm9udEhlaWdodEg1IGN0cmxTZXRGb250SGVpZ2h0SDYgY3RybFNldEZvbnRIZWlnaHRTZWNvbmRhcnkgJyArXG4gICAgICAgICdjdHJsU2V0Rm9udFAgY3RybFNldEZvbnRQQiBjdHJsU2V0Rm9udFNlY29uZGFyeSBjdHJsU2V0Rm9yZWdyb3VuZENvbG9yIGN0cmxTZXRNb2RlbCAnICtcbiAgICAgICAgJ2N0cmxTZXRNb2RlbERpckFuZFVwIGN0cmxTZXRNb2RlbFNjYWxlIGN0cmxTZXRQaXhlbFByZWNpc2lvbiBjdHJsU2V0UG9zaXRpb24gY3RybFNldFNjYWxlICcgK1xuICAgICAgICAnY3RybFNldFN0cnVjdHVyZWRUZXh0IGN0cmxTZXRUZXh0IGN0cmxTZXRUZXh0Q29sb3IgY3RybFNldFRvb2x0aXAgY3RybFNldFRvb2x0aXBDb2xvckJveCAnICtcbiAgICAgICAgJ2N0cmxTZXRUb29sdGlwQ29sb3JTaGFkZSBjdHJsU2V0VG9vbHRpcENvbG9yVGV4dCBjdHJsU2hvdyBjdHJsU2hvd24gY3RybFRleHQgY3RybFRleHRIZWlnaHQgJyArXG4gICAgICAgICdjdHJsVGV4dFdpZHRoIGN0cmxUeXBlIGN0cmxWaXNpYmxlIGN0Um93Q29udHJvbHMgY3RSb3dDb3VudCBjdFNldEN1clNlbCBjdFNldERhdGEgJyArXG4gICAgICAgICdjdFNldEhlYWRlclRlbXBsYXRlIGN0U2V0Um93VGVtcGxhdGUgY3RTZXRWYWx1ZSBjdFZhbHVlIGN1cmF0b3JBZGRvbnMgY3VyYXRvckNhbWVyYSAnICtcbiAgICAgICAgJ2N1cmF0b3JDYW1lcmFBcmVhIGN1cmF0b3JDYW1lcmFBcmVhQ2VpbGluZyBjdXJhdG9yQ29lZiBjdXJhdG9yRWRpdGFibGVPYmplY3RzIGN1cmF0b3JFZGl0aW5nQXJlYSAnICtcbiAgICAgICAgJ2N1cmF0b3JFZGl0aW5nQXJlYVR5cGUgY3VyYXRvck1vdXNlT3ZlciBjdXJhdG9yUG9pbnRzIGN1cmF0b3JSZWdpc3RlcmVkT2JqZWN0cyBjdXJhdG9yU2VsZWN0ZWQgJyArXG4gICAgICAgICdjdXJhdG9yV2F5cG9pbnRDb3N0IGN1cnJlbnQzREVOT3BlcmF0aW9uIGN1cnJlbnRDaGFubmVsIGN1cnJlbnRDb21tYW5kIGN1cnJlbnRNYWdhemluZSAnICtcbiAgICAgICAgJ2N1cnJlbnRNYWdhemluZURldGFpbCBjdXJyZW50TWFnYXppbmVEZXRhaWxUdXJyZXQgY3VycmVudE1hZ2F6aW5lVHVycmV0IGN1cnJlbnRNdXp6bGUgJyArXG4gICAgICAgICdjdXJyZW50TmFtZXNwYWNlIGN1cnJlbnRUYXNrIGN1cnJlbnRUYXNrcyBjdXJyZW50VGhyb3dhYmxlIGN1cnJlbnRWaXNpb25Nb2RlIGN1cnJlbnRXYXlwb2ludCAnICtcbiAgICAgICAgJ2N1cnJlbnRXZWFwb24gY3VycmVudFdlYXBvbk1vZGUgY3VycmVudFdlYXBvblR1cnJldCBjdXJyZW50WmVyb2luZyBjdXJzb3JPYmplY3QgY3Vyc29yVGFyZ2V0ICcgK1xuICAgICAgICAnY3VzdG9tQ2hhdCBjdXN0b21SYWRpbyBjdXRGYWRlT3V0IGN1dE9iaiBjdXRSc2MgY3V0VGV4dCBkYW1hZ2UgZGF0ZSBkYXRlVG9OdW1iZXIgZGF5dGltZSAnICtcbiAgICAgICAgJ2RlQWN0aXZhdGVLZXkgZGVicmllZmluZ1RleHQgZGVidWdGU00gZGVidWdMb2cgZGVnIGRlbGV0ZTNERU5FbnRpdGllcyBkZWxldGVBdCBkZWxldGVDZW50ZXIgJyArXG4gICAgICAgICdkZWxldGVDb2xsZWN0aW9uIGRlbGV0ZUVkaXRvck9iamVjdCBkZWxldGVHcm91cCBkZWxldGVHcm91cFdoZW5FbXB0eSBkZWxldGVJZGVudGl0eSAnICtcbiAgICAgICAgJ2RlbGV0ZUxvY2F0aW9uIGRlbGV0ZU1hcmtlciBkZWxldGVNYXJrZXJMb2NhbCBkZWxldGVSYW5nZSBkZWxldGVSZXNvdXJjZXMgZGVsZXRlU2l0ZSBkZWxldGVTdGF0dXMgJyArXG4gICAgICAgICdkZWxldGVUZWFtIGRlbGV0ZVZlaGljbGUgZGVsZXRlVmVoaWNsZUNyZXcgZGVsZXRlV2F5cG9pbnQgZGV0YWNoIGRldGVjdGVkTWluZXMgJyArXG4gICAgICAgICdkaWFnX2FjdGl2ZU1pc3Npb25GU01zIGRpYWdfYWN0aXZlU2NyaXB0cyBkaWFnX2FjdGl2ZVNRRlNjcmlwdHMgZGlhZ19hY3RpdmVTUVNTY3JpcHRzICcgK1xuICAgICAgICAnZGlhZ19jYXB0dXJlRnJhbWUgZGlhZ19jYXB0dXJlRnJhbWVUb0ZpbGUgZGlhZ19jYXB0dXJlU2xvd0ZyYW1lIGRpYWdfY29kZVBlcmZvcm1hbmNlICcgK1xuICAgICAgICAnZGlhZ19kcmF3TW9kZSBkaWFnX2VuYWJsZSBkaWFnX2VuYWJsZWQgZGlhZ19mcHMgZGlhZ19mcHNNaW4gZGlhZ19mcmFtZU5vIGRpYWdfbGlnaHROZXdMb2FkICcgK1xuICAgICAgICAnZGlhZ19saXN0IGRpYWdfbG9nIGRpYWdfbG9nU2xvd0ZyYW1lIGRpYWdfbWVyZ2VDb25maWdGaWxlIGRpYWdfcmVjb3JkVHVycmV0TGltaXRzICcgK1xuICAgICAgICAnZGlhZ19zZXRMaWdodE5ldyBkaWFnX3RpY2tUaW1lIGRpYWdfdG9nZ2xlIGRpYWxvZyBkaWFyeVN1YmplY3RFeGlzdHMgZGlkSklQIGRpZEpJUE93bmVyICcgK1xuICAgICAgICAnZGlmZmljdWx0eSBkaWZmaWN1bHR5RW5hYmxlZCBkaWZmaWN1bHR5RW5hYmxlZFJURCBkaWZmaWN1bHR5T3B0aW9uIGRpcmVjdGlvbiBkaXJlY3RTYXkgZGlzYWJsZUFJICcgK1xuICAgICAgICAnZGlzYWJsZUNvbGxpc2lvbldpdGggZGlzYWJsZUNvbnZlcnNhdGlvbiBkaXNhYmxlRGVicmllZmluZ1N0YXRzIGRpc2FibGVNYXBJbmRpY2F0b3JzICcgK1xuICAgICAgICAnZGlzYWJsZU5WR0VxdWlwbWVudCBkaXNhYmxlUmVtb3RlU2Vuc29ycyBkaXNhYmxlU2VyaWFsaXphdGlvbiBkaXNhYmxlVElFcXVpcG1lbnQgJyArXG4gICAgICAgICdkaXNhYmxlVUFWQ29ubmVjdGFiaWxpdHkgZGlzYWJsZVVzZXJJbnB1dCBkaXNwbGF5QWRkRXZlbnRIYW5kbGVyIGRpc3BsYXlDdHJsIGRpc3BsYXlQYXJlbnQgJyArXG4gICAgICAgICdkaXNwbGF5UmVtb3ZlQWxsRXZlbnRIYW5kbGVycyBkaXNwbGF5UmVtb3ZlRXZlbnRIYW5kbGVyIGRpc3BsYXlTZXRFdmVudEhhbmRsZXIgZGlzc29sdmVUZWFtICcgK1xuICAgICAgICAnZGlzdGFuY2UgZGlzdGFuY2UyRCBkaXN0YW5jZVNxciBkaXN0cmlidXRpb25SZWdpb24gZG8zREVOQWN0aW9uIGRvQXJ0aWxsZXJ5RmlyZSBkb0ZpcmUgZG9Gb2xsb3cgJyArXG4gICAgICAgICdkb0ZTTSBkb0dldE91dCBkb01vdmUgZG9vclBoYXNlIGRvU3RvcCBkb1N1cHByZXNzaXZlRmlyZSBkb1RhcmdldCBkb1dhdGNoIGRyYXdBcnJvdyBkcmF3RWxsaXBzZSAnICtcbiAgICAgICAgJ2RyYXdJY29uIGRyYXdJY29uM0QgZHJhd0xpbmUgZHJhd0xpbmUzRCBkcmF3TGluayBkcmF3TG9jYXRpb24gZHJhd1BvbHlnb24gZHJhd1JlY3RhbmdsZSAnICtcbiAgICAgICAgJ2RyYXdUcmlhbmdsZSBkcml2ZXIgZHJvcCBkeW5hbWljU2ltdWxhdGlvbkRpc3RhbmNlIGR5bmFtaWNTaW11bGF0aW9uRGlzdGFuY2VDb2VmICcgK1xuICAgICAgICAnZHluYW1pY1NpbXVsYXRpb25FbmFibGVkIGR5bmFtaWNTaW11bGF0aW9uU3lzdGVtRW5hYmxlZCBlY2hvIGVkaXQzREVOTWlzc2lvbkF0dHJpYnV0ZXMgZWRpdE9iamVjdCAnICtcbiAgICAgICAgJ2VkaXRvclNldEV2ZW50SGFuZGxlciBlZmZlY3RpdmVDb21tYW5kZXIgZW1wdHlQb3NpdGlvbnMgZW5hYmxlQUkgZW5hYmxlQUlGZWF0dXJlICcgK1xuICAgICAgICAnZW5hYmxlQWltUHJlY2lzaW9uIGVuYWJsZUF0dGFjayBlbmFibGVBdWRpb0ZlYXR1cmUgZW5hYmxlQXV0b1N0YXJ0VXBSVEQgZW5hYmxlQXV0b1RyaW1SVEQgJyArXG4gICAgICAgICdlbmFibGVDYW1TaGFrZSBlbmFibGVDYXVzdGljcyBlbmFibGVDaGFubmVsIGVuYWJsZUNvbGxpc2lvbldpdGggZW5hYmxlQ29waWxvdCAnICtcbiAgICAgICAgJ2VuYWJsZURlYnJpZWZpbmdTdGF0cyBlbmFibGVEaWFnTGVnZW5kIGVuYWJsZUR5bmFtaWNTaW11bGF0aW9uIGVuYWJsZUR5bmFtaWNTaW11bGF0aW9uU3lzdGVtICcgK1xuICAgICAgICAnZW5hYmxlRW5kRGlhbG9nIGVuYWJsZUVuZ2luZUFydGlsbGVyeSBlbmFibGVFbnZpcm9ubWVudCBlbmFibGVGYXRpZ3VlIGVuYWJsZUd1bkxpZ2h0cyAnICtcbiAgICAgICAgJ2VuYWJsZUluZm9QYW5lbENvbXBvbmVudCBlbmFibGVJUkxhc2VycyBlbmFibGVNaW1pY3MgZW5hYmxlUGVyc29uVHVycmV0IGVuYWJsZVJhZGlvIGVuYWJsZVJlbG9hZCAnICtcbiAgICAgICAgJ2VuYWJsZVJvcGVBdHRhY2ggZW5hYmxlU2F0Tm9ybWFsT25EZXRhaWwgZW5hYmxlU2F2aW5nIGVuYWJsZVNlbnRlbmNlcyBlbmFibGVTaW11bGF0aW9uICcgK1xuICAgICAgICAnZW5hYmxlU2ltdWxhdGlvbkdsb2JhbCBlbmFibGVTdGFtaW5hIGVuYWJsZVRlYW1Td2l0Y2ggZW5hYmxlVHJhZmZpYyBlbmFibGVVQVZDb25uZWN0YWJpbGl0eSAnICtcbiAgICAgICAgJ2VuYWJsZVVBVldheXBvaW50cyBlbmFibGVWZWhpY2xlQ2FyZ28gZW5hYmxlVmVoaWNsZVNlbnNvciBlbmFibGVXZWFwb25EaXNhc3NlbWJseSAnICtcbiAgICAgICAgJ2VuZExvYWRpbmdTY3JlZW4gZW5kTWlzc2lvbiBlbmdpbmVPbiBlbmdpbmVzSXNPblJURCBlbmdpbmVzUnBtUlREIGVuZ2luZXNUb3JxdWVSVEQgZW50aXRpZXMgJyArXG4gICAgICAgICdlbnZpcm9ubWVudEVuYWJsZWQgZXN0aW1hdGVkRW5kU2VydmVyVGltZSBlc3RpbWF0ZWRUaW1lTGVmdCBldmFsT2JqZWN0QXJndW1lbnQgZXZlcnlCYWNrcGFjayAnICtcbiAgICAgICAgJ2V2ZXJ5Q29udGFpbmVyIGV4ZWMgZXhlY0VkaXRvclNjcmlwdCBleGVjRlNNIGV4ZWNWTSBleHAgZXhwZWN0ZWREZXN0aW5hdGlvbiBleHBvcnRKSVBNZXNzYWdlcyAnICtcbiAgICAgICAgJ2V5ZURpcmVjdGlvbiBleWVQb3MgZmFjZSBmYWN0aW9uIGZhZGVNdXNpYyBmYWRlUmFkaW8gZmFkZVNvdW5kIGZhZGVTcGVlY2ggZmFpbE1pc3Npb24gJyArXG4gICAgICAgICdmaWxsV2VhcG9uc0Zyb21Qb29sIGZpbmQgZmluZENvdmVyIGZpbmREaXNwbGF5IGZpbmRFZGl0b3JPYmplY3QgZmluZEVtcHR5UG9zaXRpb24gJyArXG4gICAgICAgICdmaW5kRW1wdHlQb3NpdGlvblJlYWR5IGZpbmRJZiBmaW5kTmVhcmVzdEVuZW15IGZpbmlzaE1pc3Npb25Jbml0IGZpbml0ZSBmaXJlIGZpcmVBdFRhcmdldCAnICtcbiAgICAgICAgJ2ZpcnN0QmFja3BhY2sgZmxhZyBmbGFnQW5pbWF0aW9uUGhhc2UgZmxhZ093bmVyIGZsYWdTaWRlIGZsYWdUZXh0dXJlIGZsZWVpbmcgZmxvb3IgZmx5SW5IZWlnaHQgJyArXG4gICAgICAgICdmbHlJbkhlaWdodEFTTCBmb2cgZm9nRm9yZWNhc3QgZm9nUGFyYW1zIGZvcmNlQWRkVW5pZm9ybSBmb3JjZWRNYXAgZm9yY2VFbmQgZm9yY2VGbGFnVGV4dHVyZSAnICtcbiAgICAgICAgJ2ZvcmNlRm9sbG93Um9hZCBmb3JjZU1hcCBmb3JjZVJlc3Bhd24gZm9yY2VTcGVlZCBmb3JjZVdhbGsgZm9yY2VXZWFwb25GaXJlIGZvcmNlV2VhdGhlckNoYW5nZSAnICtcbiAgICAgICAgJ2ZvckVhY2hNZW1iZXIgZm9yRWFjaE1lbWJlckFnZW50IGZvckVhY2hNZW1iZXJUZWFtIGZvcmdldFRhcmdldCBmb3JtYXQgZm9ybWF0aW9uICcgK1xuICAgICAgICAnZm9ybWF0aW9uRGlyZWN0aW9uIGZvcm1hdGlvbkxlYWRlciBmb3JtYXRpb25NZW1iZXJzIGZvcm1hdGlvblBvc2l0aW9uIGZvcm1hdGlvblRhc2sgZm9ybWF0VGV4dCAnICtcbiAgICAgICAgJ2Zvcm1MZWFkZXIgZnJlZUxvb2sgZnJvbUVkaXRvciBmdWVsIGZ1bGxDcmV3IGdlYXJJRENBbW1vQ291bnQgZ2VhclNsb3RBbW1vQ291bnQgZ2VhclNsb3REYXRhICcgK1xuICAgICAgICAnZ2V0M0RFTkFjdGlvblN0YXRlIGdldDNERU5BdHRyaWJ1dGUgZ2V0M0RFTkNhbWVyYSBnZXQzREVOQ29ubmVjdGlvbnMgZ2V0M0RFTkVudGl0eSAnICtcbiAgICAgICAgJ2dldDNERU5FbnRpdHlJRCBnZXQzREVOR3JpZCBnZXQzREVOSWNvbnNWaXNpYmxlIGdldDNERU5MYXllckVudGl0aWVzIGdldDNERU5MaW5lc1Zpc2libGUgJyArXG4gICAgICAgICdnZXQzREVOTWlzc2lvbkF0dHJpYnV0ZSBnZXQzREVOTW91c2VPdmVyIGdldDNERU5TZWxlY3RlZCBnZXRBaW1pbmdDb2VmIGdldEFsbEVudlNvdW5kQ29udHJvbGxlcnMgJyArXG4gICAgICAgICdnZXRBbGxIaXRQb2ludHNEYW1hZ2UgZ2V0QWxsT3duZWRNaW5lcyBnZXRBbGxTb3VuZENvbnRyb2xsZXJzIGdldEFtbW9DYXJnbyBnZXRBbmltQWltUHJlY2lzaW9uICcgK1xuICAgICAgICAnZ2V0QW5pbVNwZWVkQ29lZiBnZXRBcnJheSBnZXRBcnRpbGxlcnlBbW1vIGdldEFydGlsbGVyeUNvbXB1dGVyU2V0dGluZ3MgZ2V0QXJ0aWxsZXJ5RVRBICcgK1xuICAgICAgICAnZ2V0QXNzaWduZWRDdXJhdG9yTG9naWMgZ2V0QXNzaWduZWRDdXJhdG9yVW5pdCBnZXRCYWNrcGFja0NhcmdvIGdldEJsZWVkaW5nUmVtYWluaW5nICcgK1xuICAgICAgICAnZ2V0QnVybmluZ1ZhbHVlIGdldENhbWVyYVZpZXdEaXJlY3Rpb24gZ2V0Q2FyZ29JbmRleCBnZXRDZW50ZXJPZk1hc3MgZ2V0Q2xpZW50U3RhdGUgJyArXG4gICAgICAgICdnZXRDbGllbnRTdGF0ZU51bWJlciBnZXRDb21wYXRpYmxlUHlsb25NYWdhemluZXMgZ2V0Q29ubmVjdGVkVUFWIGdldENvbnRhaW5lck1heExvYWQgJyArXG4gICAgICAgICdnZXRDdXJzb3JPYmplY3RQYXJhbXMgZ2V0Q3VzdG9tQWltQ29lZiBnZXREYW1tYWdlIGdldERlc2NyaXB0aW9uIGdldERpciBnZXREaXJWaXN1YWwgJyArXG4gICAgICAgICdnZXRETENBc3NldHNVc2FnZSBnZXRETENBc3NldHNVc2FnZUJ5TmFtZSBnZXRETENzIGdldEVkaXRvckNhbWVyYSBnZXRFZGl0b3JNb2RlICcgK1xuICAgICAgICAnZ2V0RWRpdG9yT2JqZWN0U2NvcGUgZ2V0RWxldmF0aW9uT2Zmc2V0IGdldEVudlNvdW5kQ29udHJvbGxlciBnZXRGYXRpZ3VlIGdldEZvcmNlZEZsYWdUZXh0dXJlICcgK1xuICAgICAgICAnZ2V0RnJpZW5kIGdldEZTTVZhcmlhYmxlIGdldEZ1ZWxDYXJnbyBnZXRHcm91cEljb24gZ2V0R3JvdXBJY29uUGFyYW1zIGdldEdyb3VwSWNvbnMgZ2V0SGlkZUZyb20gJyArXG4gICAgICAgICdnZXRIaXQgZ2V0SGl0SW5kZXggZ2V0SGl0UG9pbnREYW1hZ2UgZ2V0SXRlbUNhcmdvIGdldE1hZ2F6aW5lQ2FyZ28gZ2V0TWFya2VyQ29sb3IgZ2V0TWFya2VyUG9zICcgK1xuICAgICAgICAnZ2V0TWFya2VyU2l6ZSBnZXRNYXJrZXJUeXBlIGdldE1hc3MgZ2V0TWlzc2lvbkNvbmZpZyBnZXRNaXNzaW9uQ29uZmlnVmFsdWUgZ2V0TWlzc2lvbkRMQ3MgJyArXG4gICAgICAgICdnZXRNaXNzaW9uTGF5ZXJFbnRpdGllcyBnZXRNb2RlbEluZm8gZ2V0TW91c2VQb3NpdGlvbiBnZXRNdXNpY1BsYXllZFRpbWUgZ2V0TnVtYmVyICcgK1xuICAgICAgICAnZ2V0T2JqZWN0QXJndW1lbnQgZ2V0T2JqZWN0Q2hpbGRyZW4gZ2V0T2JqZWN0RExDIGdldE9iamVjdE1hdGVyaWFscyBnZXRPYmplY3RQcm94eSAnICtcbiAgICAgICAgJ2dldE9iamVjdFRleHR1cmVzIGdldE9iamVjdFR5cGUgZ2V0T2JqZWN0Vmlld0Rpc3RhbmNlIGdldE94eWdlblJlbWFpbmluZyBnZXRQZXJzb25Vc2VkRExDcyAnICtcbiAgICAgICAgJ2dldFBpbG90Q2FtZXJhRGlyZWN0aW9uIGdldFBpbG90Q2FtZXJhUG9zaXRpb24gZ2V0UGlsb3RDYW1lcmFSb3RhdGlvbiBnZXRQaWxvdENhbWVyYVRhcmdldCAnICtcbiAgICAgICAgJ2dldFBsYXRlTnVtYmVyIGdldFBsYXllckNoYW5uZWwgZ2V0UGxheWVyU2NvcmVzIGdldFBsYXllclVJRCBnZXRQb3MgZ2V0UG9zQVNMIGdldFBvc0FTTFZpc3VhbCAnICtcbiAgICAgICAgJ2dldFBvc0FTTFcgZ2V0UG9zQVRMIGdldFBvc0FUTFZpc3VhbCBnZXRQb3NWaXN1YWwgZ2V0UG9zV29ybGQgZ2V0UHlsb25NYWdhemluZXMgZ2V0UmVsRGlyICcgK1xuICAgICAgICAnZ2V0UmVsUG9zIGdldFJlbW90ZVNlbnNvcnNEaXNhYmxlZCBnZXRSZXBhaXJDYXJnbyBnZXRSZXNvbHV0aW9uIGdldFNoYWRvd0Rpc3RhbmNlIGdldFNob3RQYXJlbnRzICcgK1xuICAgICAgICAnZ2V0U2xpbmdMb2FkIGdldFNvdW5kQ29udHJvbGxlciBnZXRTb3VuZENvbnRyb2xsZXJSZXN1bHQgZ2V0U3BlZWQgZ2V0U3RhbWluYSBnZXRTdGF0VmFsdWUgJyArXG4gICAgICAgICdnZXRTdXBwcmVzc2lvbiBnZXRUZXJyYWluR3JpZCBnZXRUZXJyYWluSGVpZ2h0QVNMIGdldFRleHQgZ2V0VG90YWxETENVc2FnZVRpbWUgZ2V0VW5pdExvYWRvdXQgJyArXG4gICAgICAgICdnZXRVbml0VHJhaXQgZ2V0VXNlck1GRFRleHQgZ2V0VXNlck1GRHZhbHVlIGdldFZhcmlhYmxlIGdldFZlaGljbGVDYXJnbyBnZXRXZWFwb25DYXJnbyAnICtcbiAgICAgICAgJ2dldFdlYXBvblN3YXkgZ2V0V2luZ3NPcmllbnRhdGlvblJURCBnZXRXaW5nc1Bvc2l0aW9uUlREIGdldFdQUG9zIGdsYW5jZUF0IGdsb2JhbENoYXQgZ2xvYmFsUmFkaW8gJyArXG4gICAgICAgICdnb2dnbGVzIGdvdG8gZ3JvdXAgZ3JvdXBDaGF0IGdyb3VwRnJvbU5ldElkIGdyb3VwSWNvblNlbGVjdGFibGUgZ3JvdXBJY29uc1Zpc2libGUgZ3JvdXBJZCAnICtcbiAgICAgICAgJ2dyb3VwT3duZXIgZ3JvdXBSYWRpbyBncm91cFNlbGVjdGVkVW5pdHMgZ3JvdXBTZWxlY3RVbml0IGd1bm5lciBndXN0cyBoYWx0IGhhbmRndW5JdGVtcyAnICtcbiAgICAgICAgJ2hhbmRndW5NYWdhemluZSBoYW5kZ3VuV2VhcG9uIGhhbmRzSGl0IGhhc0ludGVyZmFjZSBoYXNQaWxvdENhbWVyYSBoYXNXZWFwb24gaGNBbGxHcm91cHMgJyArXG4gICAgICAgICdoY0dyb3VwUGFyYW1zIGhjTGVhZGVyIGhjUmVtb3ZlQWxsR3JvdXBzIGhjUmVtb3ZlR3JvdXAgaGNTZWxlY3RlZCBoY1NlbGVjdEdyb3VwIGhjU2V0R3JvdXAgJyArXG4gICAgICAgICdoY1Nob3dCYXIgaGNTaG93bkJhciBoZWFkZ2VhciBoaWRlQm9keSBoaWRlT2JqZWN0IGhpZGVPYmplY3RHbG9iYWwgaGlkZVNlbGVjdGlvbiBoaW50IGhpbnRDICcgK1xuICAgICAgICAnaGludENhZGV0IGhpbnRTaWxlbnQgaG1kIGhvc3RNaXNzaW9uIGh0bWxMb2FkIEhVRE1vdmVtZW50TGV2ZWxzIGh1bWlkaXR5IGltYWdlIGltcG9ydEFsbEdyb3VwcyAnICtcbiAgICAgICAgJ2ltcG9ydGFuY2UgaW4gaW5BcmVhIGluQXJlYUFycmF5IGluY2FwYWNpdGF0ZWRTdGF0ZSBpbmZsYW1lIGluZmxhbWVkIGluZm9QYW5lbCAnICtcbiAgICAgICAgJ2luZm9QYW5lbENvbXBvbmVudEVuYWJsZWQgaW5mb1BhbmVsQ29tcG9uZW50cyBpbmZvUGFuZWxzIGluR2FtZVVJU2V0RXZlbnRIYW5kbGVyIGluaGVyaXRzRnJvbSAnICtcbiAgICAgICAgJ2luaXRBbWJpZW50TGlmZSBpblBvbHlnb24gaW5wdXRBY3Rpb24gaW5SYW5nZU9mQXJ0aWxsZXJ5IGluc2VydEVkaXRvck9iamVjdCBpbnRlcnNlY3QgaXMzREVOICcgK1xuICAgICAgICAnaXMzREVOTXVsdGlwbGF5ZXIgaXNBYmxlVG9CcmVhdGhlIGlzQWdlbnQgaXNBcnJheSBpc0F1dG9Ib3Zlck9uIGlzQXV0b25vbW91cyBpc0F1dG90ZXN0ICcgK1xuICAgICAgICAnaXNCbGVlZGluZyBpc0J1cm5pbmcgaXNDbGFzcyBpc0NvbGxpc2lvbkxpZ2h0T24gaXNDb3BpbG90RW5hYmxlZCBpc0RhbWFnZUFsbG93ZWQgaXNEZWRpY2F0ZWQgJyArXG4gICAgICAgICdpc0RMQ0F2YWlsYWJsZSBpc0VuZ2luZU9uIGlzRXF1YWxUbyBpc0VxdWFsVHlwZSBpc0VxdWFsVHlwZUFsbCBpc0VxdWFsVHlwZUFueSBpc0VxdWFsVHlwZUFycmF5ICcgK1xuICAgICAgICAnaXNFcXVhbFR5cGVQYXJhbXMgaXNGaWxlUGF0Y2hpbmdFbmFibGVkIGlzRmxhc2hsaWdodE9uIGlzRmxhdEVtcHR5IGlzRm9yY2VkV2FsayBpc0Zvcm1hdGlvbkxlYWRlciAnICtcbiAgICAgICAgJ2lzR3JvdXBEZWxldGVkV2hlbkVtcHR5IGlzSGlkZGVuIGlzSW5SZW1haW5zQ29sbGVjdG9yIGlzSW5zdHJ1Y3RvckZpZ3VyZUVuYWJsZWQgaXNJUkxhc2VyT24gJyArXG4gICAgICAgICdpc0tleUFjdGl2ZSBpc0tpbmRPZiBpc0xhc2VyT24gaXNMaWdodE9uIGlzTG9jYWxpemVkIGlzTWFudWFsRmlyZSBpc01hcmtlZEZvckNvbGxlY3Rpb24gJyArXG4gICAgICAgICdpc011bHRpcGxheWVyIGlzTXVsdGlwbGF5ZXJTb2xvIGlzTmlsIGlzTnVsbCBpc051bWJlciBpc09iamVjdEhpZGRlbiBpc09iamVjdFJURCBpc09uUm9hZCAnICtcbiAgICAgICAgJ2lzUGlwRW5hYmxlZCBpc1BsYXllciBpc1JlYWxUaW1lIGlzUmVtb3RlRXhlY3V0ZWQgaXNSZW1vdGVFeGVjdXRlZEpJUCBpc1NlcnZlciBpc1Nob3dpbmczREljb25zICcgK1xuICAgICAgICAnaXNTaW1wbGVPYmplY3QgaXNTcHJpbnRBbGxvd2VkIGlzU3RhbWluYUVuYWJsZWQgaXNTdGVhbU1pc3Npb24gaXNTdHJlYW1GcmllbmRseVVJRW5hYmxlZCBpc1RleHQgJyArXG4gICAgICAgICdpc1RvdWNoaW5nR3JvdW5kIGlzVHVybmVkT3V0IGlzVHV0SGludHNFbmFibGVkIGlzVUFWQ29ubmVjdGFibGUgaXNVQVZDb25uZWN0ZWQgaXNVSUNvbnRleHQgJyArXG4gICAgICAgICdpc1VuaWZvcm1BbGxvd2VkIGlzVmVoaWNsZUNhcmdvIGlzVmVoaWNsZVJhZGFyT24gaXNWZWhpY2xlU2Vuc29yRW5hYmxlZCBpc1dhbGtpbmcgJyArXG4gICAgICAgICdpc1dlYXBvbkRlcGxveWVkIGlzV2VhcG9uUmVzdGVkIGl0ZW1DYXJnbyBpdGVtcyBpdGVtc1dpdGhNYWdhemluZXMgam9pbiBqb2luQXMgam9pbkFzU2lsZW50ICcgK1xuICAgICAgICAnam9pblNpbGVudCBqb2luU3RyaW5nIGtiQWRkRGF0YWJhc2Uga2JBZGREYXRhYmFzZVRhcmdldHMga2JBZGRUb3BpYyBrYkhhc1RvcGljIGtiUmVhY3QgJyArXG4gICAgICAgICdrYlJlbW92ZVRvcGljIGtiVGVsbCBrYldhc1NhaWQga2V5SW1hZ2Uga2V5TmFtZSBrbm93c0Fib3V0IGxhbmQgbGFuZEF0IGxhbmRSZXN1bHQgbGFuZ3VhZ2UgJyArXG4gICAgICAgICdsYXNlclRhcmdldCBsYkFkZCBsYkNsZWFyIGxiQ29sb3IgbGJDb2xvclJpZ2h0IGxiQ3VyU2VsIGxiRGF0YSBsYkRlbGV0ZSBsYklzU2VsZWN0ZWQgbGJQaWN0dXJlICcgK1xuICAgICAgICAnbGJQaWN0dXJlUmlnaHQgbGJTZWxlY3Rpb24gbGJTZXRDb2xvciBsYlNldENvbG9yUmlnaHQgbGJTZXRDdXJTZWwgbGJTZXREYXRhIGxiU2V0UGljdHVyZSAnICtcbiAgICAgICAgJ2xiU2V0UGljdHVyZUNvbG9yIGxiU2V0UGljdHVyZUNvbG9yRGlzYWJsZWQgbGJTZXRQaWN0dXJlQ29sb3JTZWxlY3RlZCBsYlNldFBpY3R1cmVSaWdodCAnICtcbiAgICAgICAgJ2xiU2V0UGljdHVyZVJpZ2h0Q29sb3IgbGJTZXRQaWN0dXJlUmlnaHRDb2xvckRpc2FibGVkIGxiU2V0UGljdHVyZVJpZ2h0Q29sb3JTZWxlY3RlZCAnICtcbiAgICAgICAgJ2xiU2V0U2VsZWN0Q29sb3IgbGJTZXRTZWxlY3RDb2xvclJpZ2h0IGxiU2V0U2VsZWN0ZWQgbGJTZXRUZXh0IGxiU2V0VGV4dFJpZ2h0IGxiU2V0VG9vbHRpcCAnICtcbiAgICAgICAgJ2xiU2V0VmFsdWUgbGJTaXplIGxiU29ydCBsYlNvcnRCeVZhbHVlIGxiVGV4dCBsYlRleHRSaWdodCBsYlZhbHVlIGxlYWRlciBsZWFkZXJib2FyZERlSW5pdCAnICtcbiAgICAgICAgJ2xlYWRlcmJvYXJkR2V0Um93cyBsZWFkZXJib2FyZEluaXQgbGVhZGVyYm9hcmRSZXF1ZXN0Um93c0ZyaWVuZHMgbGVhZGVyYm9hcmRzUmVxdWVzdFVwbG9hZFNjb3JlICcgK1xuICAgICAgICAnbGVhZGVyYm9hcmRzUmVxdWVzdFVwbG9hZFNjb3JlS2VlcEJlc3QgbGVhZGVyYm9hcmRTdGF0ZSBsZWF2ZVZlaGljbGUgbGlicmFyeUNyZWRpdHMgJyArXG4gICAgICAgICdsaWJyYXJ5RGlzY2xhaW1lcnMgbGlmZVN0YXRlIGxpZ2h0QXR0YWNoT2JqZWN0IGxpZ2h0RGV0YWNoT2JqZWN0IGxpZ2h0SXNPbiBsaWdodG5pbmdzIGxpbWl0U3BlZWQgJyArXG4gICAgICAgICdsaW5lYXJDb252ZXJzaW9uIGxpbmVJbnRlcnNlY3RzIGxpbmVJbnRlcnNlY3RzT2JqcyBsaW5lSW50ZXJzZWN0c1N1cmZhY2VzIGxpbmVJbnRlcnNlY3RzV2l0aCAnICtcbiAgICAgICAgJ2xpbmtJdGVtIGxpc3QgbGlzdE9iamVjdHMgbGlzdFJlbW90ZVRhcmdldHMgbGlzdFZlaGljbGVTZW5zb3JzIGxuIGxuYkFkZEFycmF5IGxuYkFkZENvbHVtbiAnICtcbiAgICAgICAgJ2xuYkFkZFJvdyBsbmJDbGVhciBsbmJDb2xvciBsbmJDdXJTZWxSb3cgbG5iRGF0YSBsbmJEZWxldGVDb2x1bW4gbG5iRGVsZXRlUm93ICcgK1xuICAgICAgICAnbG5iR2V0Q29sdW1uc1Bvc2l0aW9uIGxuYlBpY3R1cmUgbG5iU2V0Q29sb3IgbG5iU2V0Q29sdW1uc1BvcyBsbmJTZXRDdXJTZWxSb3cgbG5iU2V0RGF0YSAnICtcbiAgICAgICAgJ2xuYlNldFBpY3R1cmUgbG5iU2V0VGV4dCBsbmJTZXRWYWx1ZSBsbmJTaXplIGxuYlNvcnQgbG5iU29ydEJ5VmFsdWUgbG5iVGV4dCBsbmJWYWx1ZSBsb2FkIGxvYWRBYnMgJyArXG4gICAgICAgICdsb2FkQmFja3BhY2sgbG9hZEZpbGUgbG9hZEdhbWUgbG9hZElkZW50aXR5IGxvYWRNYWdhemluZSBsb2FkT3ZlcmxheSBsb2FkU3RhdHVzIGxvYWRVbmlmb3JtICcgK1xuICAgICAgICAnbG9hZFZlc3QgbG9jYWwgbG9jYWxpemUgbG9jYXRpb25Qb3NpdGlvbiBsb2NrIGxvY2tDYW1lcmFUbyBsb2NrQ2FyZ28gbG9ja0RyaXZlciBsb2NrZWQgJyArXG4gICAgICAgICdsb2NrZWRDYXJnbyBsb2NrZWREcml2ZXIgbG9ja2VkVHVycmV0IGxvY2tJZGVudGl0eSBsb2NrVHVycmV0IGxvY2tXUCBsb2cgbG9nRW50aXRpZXMgbG9nTmV0d29yayAnICtcbiAgICAgICAgJ2xvZ05ldHdvcmtUZXJtaW5hdGUgbG9va0F0IGxvb2tBdFBvcyBtYWdhemluZUNhcmdvIG1hZ2F6aW5lcyBtYWdhemluZXNBbGxUdXJyZXRzIG1hZ2F6aW5lc0FtbW8gJyArXG4gICAgICAgICdtYWdhemluZXNBbW1vQ2FyZ28gbWFnYXppbmVzQW1tb0Z1bGwgbWFnYXppbmVzRGV0YWlsIG1hZ2F6aW5lc0RldGFpbEJhY2twYWNrICcgK1xuICAgICAgICAnbWFnYXppbmVzRGV0YWlsVW5pZm9ybSBtYWdhemluZXNEZXRhaWxWZXN0IG1hZ2F6aW5lc1R1cnJldCBtYWdhemluZVR1cnJldEFtbW8gbWFwQW5pbUFkZCAnICtcbiAgICAgICAgJ21hcEFuaW1DbGVhciBtYXBBbmltQ29tbWl0IG1hcEFuaW1Eb25lIG1hcENlbnRlck9uQ2FtZXJhIG1hcEdyaWRQb3NpdGlvbiBtYXJrQXNGaW5pc2hlZE9uU3RlYW0gJyArXG4gICAgICAgICdtYXJrZXJBbHBoYSBtYXJrZXJCcnVzaCBtYXJrZXJDb2xvciBtYXJrZXJEaXIgbWFya2VyUG9zIG1hcmtlclNoYXBlIG1hcmtlclNpemUgbWFya2VyVGV4dCAnICtcbiAgICAgICAgJ21hcmtlclR5cGUgbWF4IG1lbWJlcnMgbWVudUFjdGlvbiBtZW51QWRkIG1lbnVDaGVja2VkIG1lbnVDbGVhciBtZW51Q29sbGFwc2UgbWVudURhdGEgbWVudURlbGV0ZSAnICtcbiAgICAgICAgJ21lbnVFbmFibGUgbWVudUVuYWJsZWQgbWVudUV4cGFuZCBtZW51SG92ZXIgbWVudVBpY3R1cmUgbWVudVNldEFjdGlvbiBtZW51U2V0Q2hlY2sgbWVudVNldERhdGEgJyArXG4gICAgICAgICdtZW51U2V0UGljdHVyZSBtZW51U2V0VmFsdWUgbWVudVNob3J0Y3V0IG1lbnVTaG9ydGN1dFRleHQgbWVudVNpemUgbWVudVNvcnQgbWVudVRleHQgbWVudVVSTCAnICtcbiAgICAgICAgJ21lbnVWYWx1ZSBtaW4gbWluZUFjdGl2ZSBtaW5lRGV0ZWN0ZWRCeSBtaXNzaW9uQ29uZmlnRmlsZSBtaXNzaW9uRGlmZmljdWx0eSBtaXNzaW9uTmFtZSAnICtcbiAgICAgICAgJ21pc3Npb25OYW1lc3BhY2UgbWlzc2lvblN0YXJ0IG1pc3Npb25WZXJzaW9uIG1vZCBtb2RlbFRvV29ybGQgbW9kZWxUb1dvcmxkVmlzdWFsICcgK1xuICAgICAgICAnbW9kZWxUb1dvcmxkVmlzdWFsV29ybGQgbW9kZWxUb1dvcmxkV29ybGQgbW9kUGFyYW1zIG1vb25JbnRlbnNpdHkgbW9vblBoYXNlIG1vcmFsZSBtb3ZlICcgK1xuICAgICAgICAnbW92ZTNERU5DYW1lcmEgbW92ZUluQW55IG1vdmVJbkNhcmdvIG1vdmVJbkNvbW1hbmRlciBtb3ZlSW5Ecml2ZXIgbW92ZUluR3VubmVyIG1vdmVJblR1cnJldCAnICtcbiAgICAgICAgJ21vdmVPYmplY3RUb0VuZCBtb3ZlT3V0IG1vdmVUaW1lIG1vdmVUbyBtb3ZlVG9Db21wbGV0ZWQgbW92ZVRvRmFpbGVkIG11c2ljVm9sdW1lIG5hbWUgbmFtZVNvdW5kICcgK1xuICAgICAgICAnbmVhckVudGl0aWVzIG5lYXJlc3RCdWlsZGluZyBuZWFyZXN0TG9jYXRpb24gbmVhcmVzdExvY2F0aW9ucyBuZWFyZXN0TG9jYXRpb25XaXRoRHViYmluZyAnICtcbiAgICAgICAgJ25lYXJlc3RPYmplY3QgbmVhcmVzdE9iamVjdHMgbmVhcmVzdFRlcnJhaW5PYmplY3RzIG5lYXJPYmplY3RzIG5lYXJPYmplY3RzUmVhZHkgbmVhclJvYWRzICcgK1xuICAgICAgICAnbmVhclN1cHBsaWVzIG5lYXJUYXJnZXRzIG5lZWRSZWxvYWQgbmV0SWQgbmV0T2JqTnVsbCBuZXdPdmVybGF5IG5leHRNZW51SXRlbUluZGV4ICcgK1xuICAgICAgICAnbmV4dFdlYXRoZXJDaGFuZ2Ugbk1lbnVJdGVtcyBub3QgbnVtYmVyT2ZFbmdpbmVzUlREIG51bWJlclRvRGF0ZSBvYmplY3RDdXJhdG9ycyBvYmplY3RGcm9tTmV0SWQgJyArXG4gICAgICAgICdvYmplY3RQYXJlbnQgb2JqU3RhdHVzIG9uQnJpZWZpbmdHcm91cCBvbkJyaWVmaW5nTm90ZXMgb25CcmllZmluZ1BsYW4gb25CcmllZmluZ1RlYW1Td2l0Y2ggJyArXG4gICAgICAgICdvbkNvbW1hbmRNb2RlQ2hhbmdlZCBvbkRvdWJsZUNsaWNrIG9uRWFjaEZyYW1lIG9uR3JvdXBJY29uQ2xpY2sgb25Hcm91cEljb25PdmVyRW50ZXIgJyArXG4gICAgICAgICdvbkdyb3VwSWNvbk92ZXJMZWF2ZSBvbkhDR3JvdXBTZWxlY3Rpb25DaGFuZ2VkIG9uTWFwU2luZ2xlQ2xpY2sgb25QbGF5ZXJDb25uZWN0ZWQgJyArXG4gICAgICAgICdvblBsYXllckRpc2Nvbm5lY3RlZCBvblByZWxvYWRGaW5pc2hlZCBvblByZWxvYWRTdGFydGVkIG9uU2hvd05ld09iamVjdCBvblRlYW1Td2l0Y2ggJyArXG4gICAgICAgICdvcGVuQ3VyYXRvckludGVyZmFjZSBvcGVuRExDUGFnZSBvcGVuTWFwIG9wZW5TdGVhbUFwcCBvcGVuWW91dHViZVZpZGVvIG9yIG9yZGVyR2V0SW4gb3ZlcmNhc3QgJyArXG4gICAgICAgICdvdmVyY2FzdEZvcmVjYXN0IG93bmVyIHBhcmFtIHBhcmFtcyBwYXJzZU51bWJlciBwYXJzZVNpbXBsZUFycmF5IHBhcnNlVGV4dCBwYXJzaW5nTmFtZXNwYWNlICcgK1xuICAgICAgICAncGFydGljbGVzUXVhbGl0eSBwaWNrV2VhcG9uUG9vbCBwaXRjaCBwaXhlbEdyaWQgcGl4ZWxHcmlkQmFzZSBwaXhlbEdyaWROb1VJU2NhbGUgcGl4ZWxIIHBpeGVsVyAnICtcbiAgICAgICAgJ3BsYXlhYmxlU2xvdHNOdW1iZXIgcGxheWFibGVVbml0cyBwbGF5QWN0aW9uIHBsYXlBY3Rpb25Ob3cgcGxheWVyIHBsYXllclJlc3Bhd25UaW1lIHBsYXllclNpZGUgJyArXG4gICAgICAgICdwbGF5ZXJzTnVtYmVyIHBsYXlHZXN0dXJlIHBsYXlNaXNzaW9uIHBsYXlNb3ZlIHBsYXlNb3ZlTm93IHBsYXlNdXNpYyBwbGF5U2NyaXB0ZWRNaXNzaW9uICcgK1xuICAgICAgICAncGxheVNvdW5kIHBsYXlTb3VuZDNEIHBvc2l0aW9uIHBvc2l0aW9uQ2FtZXJhVG9Xb3JsZCBwb3NTY3JlZW5Ub1dvcmxkIHBvc1dvcmxkVG9TY3JlZW4gJyArXG4gICAgICAgICdwcEVmZmVjdEFkanVzdCBwcEVmZmVjdENvbW1pdCBwcEVmZmVjdENvbW1pdHRlZCBwcEVmZmVjdENyZWF0ZSBwcEVmZmVjdERlc3Ryb3kgcHBFZmZlY3RFbmFibGUgJyArXG4gICAgICAgICdwcEVmZmVjdEVuYWJsZWQgcHBFZmZlY3RGb3JjZUluTlZHIHByZWNpc2lvbiBwcmVsb2FkQ2FtZXJhIHByZWxvYWRPYmplY3QgcHJlbG9hZFNvdW5kICcgK1xuICAgICAgICAncHJlbG9hZFRpdGxlT2JqIHByZWxvYWRUaXRsZVJzYyBwcmVwcm9jZXNzRmlsZSBwcmVwcm9jZXNzRmlsZUxpbmVOdW1iZXJzIHByaW1hcnlXZWFwb24gJyArXG4gICAgICAgICdwcmltYXJ5V2VhcG9uSXRlbXMgcHJpbWFyeVdlYXBvbk1hZ2F6aW5lIHByaW9yaXR5IHByb2Nlc3NEaWFyeUxpbmsgcHJvZHVjdFZlcnNpb24gcHJvZmlsZU5hbWUgJyArXG4gICAgICAgICdwcm9maWxlTmFtZXNwYWNlIHByb2ZpbGVOYW1lU3RlYW0gcHJvZ3Jlc3NMb2FkaW5nU2NyZWVuIHByb2dyZXNzUG9zaXRpb24gcHJvZ3Jlc3NTZXRQb3NpdGlvbiAnICtcbiAgICAgICAgJ3B1YmxpY1ZhcmlhYmxlIHB1YmxpY1ZhcmlhYmxlQ2xpZW50IHB1YmxpY1ZhcmlhYmxlU2VydmVyIHB1c2hCYWNrIHB1c2hCYWNrVW5pcXVlIHB1dFdlYXBvblBvb2wgJyArXG4gICAgICAgICdxdWVyeUl0ZW1zUG9vbCBxdWVyeU1hZ2F6aW5lUG9vbCBxdWVyeVdlYXBvblBvb2wgcmFkIHJhZGlvQ2hhbm5lbEFkZCByYWRpb0NoYW5uZWxDcmVhdGUgJyArXG4gICAgICAgICdyYWRpb0NoYW5uZWxSZW1vdmUgcmFkaW9DaGFubmVsU2V0Q2FsbFNpZ24gcmFkaW9DaGFubmVsU2V0TGFiZWwgcmFkaW9Wb2x1bWUgcmFpbiByYWluYm93IHJhbmRvbSAnICtcbiAgICAgICAgJ3JhbmsgcmFua0lkIHJhdGluZyByZWN0YW5ndWxhciByZWdpc3RlcmVkVGFza3MgcmVnaXN0ZXJUYXNrIHJlbG9hZCByZWxvYWRFbmFibGVkIHJlbW90ZUNvbnRyb2wgJyArXG4gICAgICAgICdyZW1vdGVFeGVjIHJlbW90ZUV4ZWNDYWxsIHJlbW90ZUV4ZWN1dGVkT3duZXIgcmVtb3ZlM0RFTkNvbm5lY3Rpb24gcmVtb3ZlM0RFTkV2ZW50SGFuZGxlciAnICtcbiAgICAgICAgJ3JlbW92ZTNERU5MYXllciByZW1vdmVBY3Rpb24gcmVtb3ZlQWxsM0RFTkV2ZW50SGFuZGxlcnMgcmVtb3ZlQWxsQWN0aW9ucyByZW1vdmVBbGxBc3NpZ25lZEl0ZW1zICcgK1xuICAgICAgICAncmVtb3ZlQWxsQ29udGFpbmVycyByZW1vdmVBbGxDdXJhdG9yQWRkb25zIHJlbW92ZUFsbEN1cmF0b3JDYW1lcmFBcmVhcyAnICtcbiAgICAgICAgJ3JlbW92ZUFsbEN1cmF0b3JFZGl0aW5nQXJlYXMgcmVtb3ZlQWxsRXZlbnRIYW5kbGVycyByZW1vdmVBbGxIYW5kZ3VuSXRlbXMgcmVtb3ZlQWxsSXRlbXMgJyArXG4gICAgICAgICdyZW1vdmVBbGxJdGVtc1dpdGhNYWdhemluZXMgcmVtb3ZlQWxsTWlzc2lvbkV2ZW50SGFuZGxlcnMgcmVtb3ZlQWxsTVBFdmVudEhhbmRsZXJzICcgK1xuICAgICAgICAncmVtb3ZlQWxsTXVzaWNFdmVudEhhbmRsZXJzIHJlbW92ZUFsbE93bmVkTWluZXMgcmVtb3ZlQWxsUHJpbWFyeVdlYXBvbkl0ZW1zIHJlbW92ZUFsbFdlYXBvbnMgJyArXG4gICAgICAgICdyZW1vdmVCYWNrcGFjayByZW1vdmVCYWNrcGFja0dsb2JhbCByZW1vdmVDdXJhdG9yQWRkb25zIHJlbW92ZUN1cmF0b3JDYW1lcmFBcmVhICcgK1xuICAgICAgICAncmVtb3ZlQ3VyYXRvckVkaXRhYmxlT2JqZWN0cyByZW1vdmVDdXJhdG9yRWRpdGluZ0FyZWEgcmVtb3ZlRHJhd0ljb24gcmVtb3ZlRHJhd0xpbmtzICcgK1xuICAgICAgICAncmVtb3ZlRXZlbnRIYW5kbGVyIHJlbW92ZUZyb21SZW1haW5zQ29sbGVjdG9yIHJlbW92ZUdvZ2dsZXMgcmVtb3ZlR3JvdXBJY29uIHJlbW92ZUhhbmRndW5JdGVtICcgK1xuICAgICAgICAncmVtb3ZlSGVhZGdlYXIgcmVtb3ZlSXRlbSByZW1vdmVJdGVtRnJvbUJhY2twYWNrIHJlbW92ZUl0ZW1Gcm9tVW5pZm9ybSByZW1vdmVJdGVtRnJvbVZlc3QgJyArXG4gICAgICAgICdyZW1vdmVJdGVtcyByZW1vdmVNYWdhemluZSByZW1vdmVNYWdhemluZUdsb2JhbCByZW1vdmVNYWdhemluZXMgcmVtb3ZlTWFnYXppbmVzVHVycmV0ICcgK1xuICAgICAgICAncmVtb3ZlTWFnYXppbmVUdXJyZXQgcmVtb3ZlTWVudUl0ZW0gcmVtb3ZlTWlzc2lvbkV2ZW50SGFuZGxlciByZW1vdmVNUEV2ZW50SGFuZGxlciAnICtcbiAgICAgICAgJ3JlbW92ZU11c2ljRXZlbnRIYW5kbGVyIHJlbW92ZU93bmVkTWluZSByZW1vdmVQcmltYXJ5V2VhcG9uSXRlbSByZW1vdmVTZWNvbmRhcnlXZWFwb25JdGVtICcgK1xuICAgICAgICAncmVtb3ZlU2ltcGxlVGFzayByZW1vdmVTd2l0Y2hhYmxlVW5pdCByZW1vdmVUZWFtTWVtYmVyIHJlbW92ZVVuaWZvcm0gcmVtb3ZlVmVzdCByZW1vdmVXZWFwb24gJyArXG4gICAgICAgICdyZW1vdmVXZWFwb25BdHRhY2htZW50Q2FyZ28gcmVtb3ZlV2VhcG9uQ2FyZ28gcmVtb3ZlV2VhcG9uR2xvYmFsIHJlbW92ZVdlYXBvblR1cnJldCAnICtcbiAgICAgICAgJ3JlcG9ydFJlbW90ZVRhcmdldCByZXF1aXJlZFZlcnNpb24gcmVzZXRDYW1TaGFrZSByZXNldFN1Ymdyb3VwRGlyZWN0aW9uIHJlc2l6ZSByZXNvdXJjZXMgJyArXG4gICAgICAgICdyZXNwYXduVmVoaWNsZSByZXN0YXJ0RWRpdG9yQ2FtZXJhIHJldmVhbCByZXZlYWxNaW5lIHJldmVyc2UgcmV2ZXJzZWRNb3VzZVkgcm9hZEF0ICcgK1xuICAgICAgICAncm9hZHNDb25uZWN0ZWRUbyByb2xlRGVzY3JpcHRpb24gcm9wZUF0dGFjaGVkT2JqZWN0cyByb3BlQXR0YWNoZWRUbyByb3BlQXR0YWNoRW5hYmxlZCAnICtcbiAgICAgICAgJ3JvcGVBdHRhY2hUbyByb3BlQ3JlYXRlIHJvcGVDdXQgcm9wZURlc3Ryb3kgcm9wZURldGFjaCByb3BlRW5kUG9zaXRpb24gcm9wZUxlbmd0aCByb3BlcyAnICtcbiAgICAgICAgJ3JvcGVVbndpbmQgcm9wZVVud291bmQgcm90b3JzRm9yY2VzUlREIHJvdG9yc1JwbVJURCByb3VuZCBydW5Jbml0U2NyaXB0IHNhZmVab25lSCBzYWZlWm9uZVcgJyArXG4gICAgICAgICdzYWZlWm9uZVdBYnMgc2FmZVpvbmVYIHNhZmVab25lWEFicyBzYWZlWm9uZVkgc2F2ZTNERU5JbnZlbnRvcnkgc2F2ZUdhbWUgc2F2ZUlkZW50aXR5ICcgK1xuICAgICAgICAnc2F2ZUpveXN0aWNrcyBzYXZlT3ZlcmxheSBzYXZlUHJvZmlsZU5hbWVzcGFjZSBzYXZlU3RhdHVzIHNhdmVWYXIgc2F2aW5nRW5hYmxlZCBzYXkgc2F5MkQgc2F5M0QgJyArXG4gICAgICAgICdzY29wZU5hbWUgc2NvcmUgc2NvcmVTaWRlIHNjcmVlbnNob3Qgc2NyZWVuVG9Xb3JsZCBzY3JpcHREb25lIHNjcmlwdE5hbWUgc2N1ZFN0YXRlICcgK1xuICAgICAgICAnc2Vjb25kYXJ5V2VhcG9uIHNlY29uZGFyeVdlYXBvbkl0ZW1zIHNlY29uZGFyeVdlYXBvbk1hZ2F6aW5lIHNlbGVjdCBzZWxlY3RCZXN0UGxhY2VzICcgK1xuICAgICAgICAnc2VsZWN0RGlhcnlTdWJqZWN0IHNlbGVjdGVkRWRpdG9yT2JqZWN0cyBzZWxlY3RFZGl0b3JPYmplY3Qgc2VsZWN0aW9uTmFtZXMgc2VsZWN0aW9uUG9zaXRpb24gJyArXG4gICAgICAgICdzZWxlY3RMZWFkZXIgc2VsZWN0TWF4IHNlbGVjdE1pbiBzZWxlY3ROb1BsYXllciBzZWxlY3RQbGF5ZXIgc2VsZWN0UmFuZG9tIHNlbGVjdFJhbmRvbVdlaWdodGVkICcgK1xuICAgICAgICAnc2VsZWN0V2VhcG9uIHNlbGVjdFdlYXBvblR1cnJldCBzZW5kQVVNZXNzYWdlIHNlbmRTaW1wbGVDb21tYW5kIHNlbmRUYXNrIHNlbmRUYXNrUmVzdWx0ICcgK1xuICAgICAgICAnc2VuZFVEUE1lc3NhZ2Ugc2VydmVyQ29tbWFuZCBzZXJ2ZXJDb21tYW5kQXZhaWxhYmxlIHNlcnZlckNvbW1hbmRFeGVjdXRhYmxlIHNlcnZlck5hbWUgc2VydmVyVGltZSAnICtcbiAgICAgICAgJ3NldCBzZXQzREVOQXR0cmlidXRlIHNldDNERU5BdHRyaWJ1dGVzIHNldDNERU5HcmlkIHNldDNERU5JY29uc1Zpc2libGUgc2V0M0RFTkxheWVyICcgK1xuICAgICAgICAnc2V0M0RFTkxpbmVzVmlzaWJsZSBzZXQzREVOTG9naWNUeXBlIHNldDNERU5NaXNzaW9uQXR0cmlidXRlIHNldDNERU5NaXNzaW9uQXR0cmlidXRlcyAnICtcbiAgICAgICAgJ3NldDNERU5Nb2RlbHNWaXNpYmxlIHNldDNERU5PYmplY3RUeXBlIHNldDNERU5TZWxlY3RlZCBzZXRBY2NUaW1lIHNldEFjdHVhbENvbGxlY3RpdmVSVEQgJyArXG4gICAgICAgICdzZXRBaXJwbGFuZVRocm90dGxlIHNldEFpcnBvcnRTaWRlIHNldEFtbW8gc2V0QW1tb0NhcmdvIHNldEFtbW9PblB5bG9uIHNldEFuaW1TcGVlZENvZWYgJyArXG4gICAgICAgICdzZXRBcGVydHVyZSBzZXRBcGVydHVyZU5ldyBzZXRBcm1vcnlQb2ludHMgc2V0QXR0cmlidXRlcyBzZXRBdXRvbm9tb3VzIHNldEJlaGF2aW91ciAnICtcbiAgICAgICAgJ3NldEJsZWVkaW5nUmVtYWluaW5nIHNldEJyYWtlc1JURCBzZXRDYW1lcmFJbnRlcmVzdCBzZXRDYW1TaGFrZURlZlBhcmFtcyBzZXRDYW1TaGFrZVBhcmFtcyAnICtcbiAgICAgICAgJ3NldENhbVVzZVRJIHNldENhcHRpdmUgc2V0Q2VudGVyT2ZNYXNzIHNldENvbGxpc2lvbkxpZ2h0IHNldENvbWJhdE1vZGUgc2V0Q29tcGFzc09zY2lsbGF0aW9uICcgK1xuICAgICAgICAnc2V0Q29udm95U2VwYXJhdGlvbiBzZXRDdXJhdG9yQ2FtZXJhQXJlYUNlaWxpbmcgc2V0Q3VyYXRvckNvZWYgc2V0Q3VyYXRvckVkaXRpbmdBcmVhVHlwZSAnICtcbiAgICAgICAgJ3NldEN1cmF0b3JXYXlwb2ludENvc3Qgc2V0Q3VycmVudENoYW5uZWwgc2V0Q3VycmVudFRhc2sgc2V0Q3VycmVudFdheXBvaW50IHNldEN1c3RvbUFpbUNvZWYgJyArXG4gICAgICAgICdzZXRDdXN0b21XZWlnaHRSVEQgc2V0RGFtYWdlIHNldERhbW1hZ2Ugc2V0RGF0ZSBzZXREZWJyaWVmaW5nVGV4dCBzZXREZWZhdWx0Q2FtZXJhIHNldERlc3RpbmF0aW9uICcgK1xuICAgICAgICAnc2V0RGV0YWlsTWFwQmxlbmRQYXJzIHNldERpciBzZXREaXJlY3Rpb24gc2V0RHJhd0ljb24gc2V0RHJpdmVPblBhdGggc2V0RHJvcEludGVydmFsICcgK1xuICAgICAgICAnc2V0RHluYW1pY1NpbXVsYXRpb25EaXN0YW5jZSBzZXREeW5hbWljU2ltdWxhdGlvbkRpc3RhbmNlQ29lZiBzZXRFZGl0b3JNb2RlIHNldEVkaXRvck9iamVjdFNjb3BlICcgK1xuICAgICAgICAnc2V0RWZmZWN0Q29uZGl0aW9uIHNldEVuZ2luZVJQTVJURCBzZXRGYWNlIHNldEZhY2VBbmltYXRpb24gc2V0RmF0aWd1ZSBzZXRGZWF0dXJlVHlwZSAnICtcbiAgICAgICAgJ3NldEZsYWdBbmltYXRpb25QaGFzZSBzZXRGbGFnT3duZXIgc2V0RmxhZ1NpZGUgc2V0RmxhZ1RleHR1cmUgc2V0Rm9nIHNldEZvcm1hdGlvbiAnICtcbiAgICAgICAgJ3NldEZvcm1hdGlvblRhc2sgc2V0Rm9ybURpciBzZXRGcmllbmQgc2V0RnJvbUVkaXRvciBzZXRGU01WYXJpYWJsZSBzZXRGdWVsIHNldEZ1ZWxDYXJnbyAnICtcbiAgICAgICAgJ3NldEdyb3VwSWNvbiBzZXRHcm91cEljb25QYXJhbXMgc2V0R3JvdXBJY29uc1NlbGVjdGFibGUgc2V0R3JvdXBJY29uc1Zpc2libGUgc2V0R3JvdXBJZCAnICtcbiAgICAgICAgJ3NldEdyb3VwSWRHbG9iYWwgc2V0R3JvdXBPd25lciBzZXRHdXN0cyBzZXRIaWRlQmVoaW5kIHNldEhpdCBzZXRIaXRJbmRleCBzZXRIaXRQb2ludERhbWFnZSAnICtcbiAgICAgICAgJ3NldEhvcml6b25QYXJhbGxheENvZWYgc2V0SFVETW92ZW1lbnRMZXZlbHMgc2V0SWRlbnRpdHkgc2V0SW1wb3J0YW5jZSBzZXRJbmZvUGFuZWwgc2V0TGVhZGVyICcgK1xuICAgICAgICAnc2V0TGlnaHRBbWJpZW50IHNldExpZ2h0QXR0ZW51YXRpb24gc2V0TGlnaHRCcmlnaHRuZXNzIHNldExpZ2h0Q29sb3Igc2V0TGlnaHREYXlMaWdodCAnICtcbiAgICAgICAgJ3NldExpZ2h0RmxhcmVNYXhEaXN0YW5jZSBzZXRMaWdodEZsYXJlU2l6ZSBzZXRMaWdodEludGVuc2l0eSBzZXRMaWdodG5pbmdzIHNldExpZ2h0VXNlRmxhcmUgJyArXG4gICAgICAgICdzZXRMb2NhbFdpbmRQYXJhbXMgc2V0TWFnYXppbmVUdXJyZXRBbW1vIHNldE1hcmtlckFscGhhIHNldE1hcmtlckFscGhhTG9jYWwgc2V0TWFya2VyQnJ1c2ggJyArXG4gICAgICAgICdzZXRNYXJrZXJCcnVzaExvY2FsIHNldE1hcmtlckNvbG9yIHNldE1hcmtlckNvbG9yTG9jYWwgc2V0TWFya2VyRGlyIHNldE1hcmtlckRpckxvY2FsICcgK1xuICAgICAgICAnc2V0TWFya2VyUG9zIHNldE1hcmtlclBvc0xvY2FsIHNldE1hcmtlclNoYXBlIHNldE1hcmtlclNoYXBlTG9jYWwgc2V0TWFya2VyU2l6ZSAnICtcbiAgICAgICAgJ3NldE1hcmtlclNpemVMb2NhbCBzZXRNYXJrZXJUZXh0IHNldE1hcmtlclRleHRMb2NhbCBzZXRNYXJrZXJUeXBlIHNldE1hcmtlclR5cGVMb2NhbCBzZXRNYXNzICcgK1xuICAgICAgICAnc2V0TWltaWMgc2V0TW91c2VQb3NpdGlvbiBzZXRNdXNpY0VmZmVjdCBzZXRNdXNpY0V2ZW50SGFuZGxlciBzZXROYW1lIHNldE5hbWVTb3VuZCAnICtcbiAgICAgICAgJ3NldE9iamVjdEFyZ3VtZW50cyBzZXRPYmplY3RNYXRlcmlhbCBzZXRPYmplY3RNYXRlcmlhbEdsb2JhbCBzZXRPYmplY3RQcm94eSBzZXRPYmplY3RUZXh0dXJlICcgK1xuICAgICAgICAnc2V0T2JqZWN0VGV4dHVyZUdsb2JhbCBzZXRPYmplY3RWaWV3RGlzdGFuY2Ugc2V0T3ZlcmNhc3Qgc2V0T3duZXIgc2V0T3h5Z2VuUmVtYWluaW5nICcgK1xuICAgICAgICAnc2V0UGFydGljbGVDaXJjbGUgc2V0UGFydGljbGVDbGFzcyBzZXRQYXJ0aWNsZUZpcmUgc2V0UGFydGljbGVQYXJhbXMgc2V0UGFydGljbGVSYW5kb20gJyArXG4gICAgICAgICdzZXRQaWxvdENhbWVyYURpcmVjdGlvbiBzZXRQaWxvdENhbWVyYVJvdGF0aW9uIHNldFBpbG90Q2FtZXJhVGFyZ2V0IHNldFBpbG90TGlnaHQgc2V0UGlQRWZmZWN0ICcgK1xuICAgICAgICAnc2V0UGl0Y2ggc2V0UGxhdGVOdW1iZXIgc2V0UGxheWFibGUgc2V0UGxheWVyUmVzcGF3blRpbWUgc2V0UG9zIHNldFBvc0FTTCBzZXRQb3NBU0wyIHNldFBvc0FTTFcgJyArXG4gICAgICAgICdzZXRQb3NBVEwgc2V0UG9zaXRpb24gc2V0UG9zV29ybGQgc2V0UHlsb25Mb2FkT3V0IHNldFB5bG9uc1ByaW9yaXR5IHNldFJhZGlvTXNnIHNldFJhaW4gJyArXG4gICAgICAgICdzZXRSYWluYm93IHNldFJhbmRvbUxpcCBzZXRSYW5rIHNldFJlY3Rhbmd1bGFyIHNldFJlcGFpckNhcmdvIHNldFJvdG9yQnJha2VSVEQgc2V0U2hhZG93RGlzdGFuY2UgJyArXG4gICAgICAgICdzZXRTaG90UGFyZW50cyBzZXRTaWRlIHNldFNpbXBsZVRhc2tBbHdheXNWaXNpYmxlIHNldFNpbXBsZVRhc2tDdXN0b21EYXRhICcgK1xuICAgICAgICAnc2V0U2ltcGxlVGFza0Rlc2NyaXB0aW9uIHNldFNpbXBsZVRhc2tEZXN0aW5hdGlvbiBzZXRTaW1wbGVUYXNrVGFyZ2V0IHNldFNpbXBsZVRhc2tUeXBlICcgK1xuICAgICAgICAnc2V0U2ltdWxXZWF0aGVyTGF5ZXJzIHNldFNpemUgc2V0U2tpbGwgc2V0U2xpbmdMb2FkIHNldFNvdW5kRWZmZWN0IHNldFNwZWFrZXIgc2V0U3BlZWNoICcgK1xuICAgICAgICAnc2V0U3BlZWRNb2RlIHNldFN0YW1pbmEgc2V0U3RhbWluYVNjaGVtZSBzZXRTdGF0VmFsdWUgc2V0U3VwcHJlc3Npb24gc2V0U3lzdGVtT2ZVbml0cyAnICtcbiAgICAgICAgJ3NldFRhcmdldEFnZSBzZXRUYXNrTWFya2VyT2Zmc2V0IHNldFRhc2tSZXN1bHQgc2V0VGFza1N0YXRlIHNldFRlcnJhaW5HcmlkIHNldFRleHQgJyArXG4gICAgICAgICdzZXRUaW1lTXVsdGlwbGllciBzZXRUaXRsZUVmZmVjdCBzZXRUcmFmZmljRGVuc2l0eSBzZXRUcmFmZmljRGlzdGFuY2Ugc2V0VHJhZmZpY0dhcCAnICtcbiAgICAgICAgJ3NldFRyYWZmaWNTcGVlZCBzZXRUcmlnZ2VyQWN0aXZhdGlvbiBzZXRUcmlnZ2VyQXJlYSBzZXRUcmlnZ2VyU3RhdGVtZW50cyBzZXRUcmlnZ2VyVGV4dCAnICtcbiAgICAgICAgJ3NldFRyaWdnZXJUaW1lb3V0IHNldFRyaWdnZXJUeXBlIHNldFR5cGUgc2V0VW5jb25zY2lvdXMgc2V0VW5pdEFiaWxpdHkgc2V0VW5pdExvYWRvdXQgc2V0VW5pdFBvcyAnICtcbiAgICAgICAgJ3NldFVuaXRQb3NXZWFrIHNldFVuaXRSYW5rIHNldFVuaXRSZWNvaWxDb2VmZmljaWVudCBzZXRVbml0VHJhaXQgc2V0VW5sb2FkSW5Db21iYXQgJyArXG4gICAgICAgICdzZXRVc2VyQWN0aW9uVGV4dCBzZXRVc2VyTUZEVGV4dCBzZXRVc2VyTUZEdmFsdWUgc2V0VmFyaWFibGUgc2V0VmVjdG9yRGlyIHNldFZlY3RvckRpckFuZFVwICcgK1xuICAgICAgICAnc2V0VmVjdG9yVXAgc2V0VmVoaWNsZUFtbW8gc2V0VmVoaWNsZUFtbW9EZWYgc2V0VmVoaWNsZUFybW9yIHNldFZlaGljbGVDYXJnbyBzZXRWZWhpY2xlSWQgJyArXG4gICAgICAgICdzZXRWZWhpY2xlTG9jayBzZXRWZWhpY2xlUG9zaXRpb24gc2V0VmVoaWNsZVJhZGFyIHNldFZlaGljbGVSZWNlaXZlUmVtb3RlVGFyZ2V0cyAnICtcbiAgICAgICAgJ3NldFZlaGljbGVSZXBvcnRPd25Qb3NpdGlvbiBzZXRWZWhpY2xlUmVwb3J0UmVtb3RlVGFyZ2V0cyBzZXRWZWhpY2xlVElQYXJzIHNldFZlaGljbGVWYXJOYW1lICcgK1xuICAgICAgICAnc2V0VmVsb2NpdHkgc2V0VmVsb2NpdHlNb2RlbFNwYWNlIHNldFZlbG9jaXR5VHJhbnNmb3JtYXRpb24gc2V0Vmlld0Rpc3RhbmNlICcgK1xuICAgICAgICAnc2V0VmlzaWJsZUlmVHJlZUNvbGxhcHNlZCBzZXRXYW50ZWRSUE1SVEQgc2V0V2F2ZXMgc2V0V2F5cG9pbnRCZWhhdmlvdXIgc2V0V2F5cG9pbnRDb21iYXRNb2RlICcgK1xuICAgICAgICAnc2V0V2F5cG9pbnRDb21wbGV0aW9uUmFkaXVzIHNldFdheXBvaW50RGVzY3JpcHRpb24gc2V0V2F5cG9pbnRGb3JjZUJlaGF2aW91ciBzZXRXYXlwb2ludEZvcm1hdGlvbiAnICtcbiAgICAgICAgJ3NldFdheXBvaW50SG91c2VQb3NpdGlvbiBzZXRXYXlwb2ludExvaXRlclJhZGl1cyBzZXRXYXlwb2ludExvaXRlclR5cGUgc2V0V2F5cG9pbnROYW1lICcgK1xuICAgICAgICAnc2V0V2F5cG9pbnRQb3NpdGlvbiBzZXRXYXlwb2ludFNjcmlwdCBzZXRXYXlwb2ludFNwZWVkIHNldFdheXBvaW50U3RhdGVtZW50cyBzZXRXYXlwb2ludFRpbWVvdXQgJyArXG4gICAgICAgICdzZXRXYXlwb2ludFR5cGUgc2V0V2F5cG9pbnRWaXNpYmxlIHNldFdlYXBvblJlbG9hZGluZ1RpbWUgc2V0V2luZCBzZXRXaW5kRGlyIHNldFdpbmRGb3JjZSAnICtcbiAgICAgICAgJ3NldFdpbmRTdHIgc2V0V2luZ0ZvcmNlU2NhbGVSVEQgc2V0V1BQb3Mgc2hvdzNESWNvbnMgc2hvd0NoYXQgc2hvd0NpbmVtYUJvcmRlciBzaG93Q29tbWFuZGluZ01lbnUgJyArXG4gICAgICAgICdzaG93Q29tcGFzcyBzaG93Q3VyYXRvckNvbXBhc3Mgc2hvd0dQUyBzaG93SFVEIHNob3dMZWdlbmQgc2hvd01hcCBzaG93bkFydGlsbGVyeUNvbXB1dGVyICcgK1xuICAgICAgICAnc2hvd25DaGF0IHNob3duQ29tcGFzcyBzaG93bkN1cmF0b3JDb21wYXNzIHNob3dOZXdFZGl0b3JPYmplY3Qgc2hvd25HUFMgc2hvd25IVUQgc2hvd25NYXAgJyArXG4gICAgICAgICdzaG93blBhZCBzaG93blJhZGlvIHNob3duU2NvcmV0YWJsZSBzaG93blVBVkZlZWQgc2hvd25XYXJyYW50IHNob3duV2F0Y2ggc2hvd1BhZCBzaG93UmFkaW8gJyArXG4gICAgICAgICdzaG93U2NvcmV0YWJsZSBzaG93U3VidGl0bGVzIHNob3dVQVZGZWVkIHNob3dXYXJyYW50IHNob3dXYXRjaCBzaG93V2F5cG9pbnQgc2hvd1dheXBvaW50cyBzaWRlICcgK1xuICAgICAgICAnc2lkZUNoYXQgc2lkZUVuZW15IHNpZGVGcmllbmRseSBzaWRlUmFkaW8gc2ltcGxlVGFza3Mgc2ltdWxhdGlvbkVuYWJsZWQgc2ltdWxDbG91ZERlbnNpdHkgJyArXG4gICAgICAgICdzaW11bENsb3VkT2NjbHVzaW9uIHNpbXVsSW5DbG91ZHMgc2ltdWxXZWF0aGVyU3luYyBzaW4gc2l6ZSBzaXplT2Ygc2tpbGwgc2tpbGxGaW5hbCBza2lwVGltZSAnICtcbiAgICAgICAgJ3NsZWVwIHNsaWRlclBvc2l0aW9uIHNsaWRlclJhbmdlIHNsaWRlclNldFBvc2l0aW9uIHNsaWRlclNldFJhbmdlIHNsaWRlclNldFNwZWVkIHNsaWRlclNwZWVkICcgK1xuICAgICAgICAnc2xpbmdMb2FkQXNzaXN0YW50U2hvd24gc29sZGllck1hZ2F6aW5lcyBzb21lQW1tbyBzb3J0IHNvdW5kVm9sdW1lIHNwYXduIHNwZWFrZXIgc3BlZWQgc3BlZWRNb2RlICcgK1xuICAgICAgICAnc3BsaXRTdHJpbmcgc3FydCBzcXVhZFBhcmFtcyBzdGFuY2Ugc3RhcnRMb2FkaW5nU2NyZWVuIHN0ZXAgc3RvcCBzdG9wRW5naW5lUlREIHN0b3BwZWQgc3RyICcgK1xuICAgICAgICAnc3VuT3JNb29uIHN1cHBvcnRJbmZvIHN1cHByZXNzRm9yIHN1cmZhY2VJc1dhdGVyIHN1cmZhY2VOb3JtYWwgc3VyZmFjZVR5cGUgc3dpbUluRGVwdGggJyArXG4gICAgICAgICdzd2l0Y2hhYmxlVW5pdHMgc3dpdGNoQWN0aW9uIHN3aXRjaENhbWVyYSBzd2l0Y2hHZXN0dXJlIHN3aXRjaExpZ2h0IHN3aXRjaE1vdmUgJyArXG4gICAgICAgICdzeW5jaHJvbml6ZWRPYmplY3RzIHN5bmNocm9uaXplZFRyaWdnZXJzIHN5bmNocm9uaXplZFdheXBvaW50cyBzeW5jaHJvbml6ZU9iamVjdHNBZGQgJyArXG4gICAgICAgICdzeW5jaHJvbml6ZU9iamVjdHNSZW1vdmUgc3luY2hyb25pemVUcmlnZ2VyIHN5bmNocm9uaXplV2F5cG9pbnQgc3lzdGVtQ2hhdCBzeXN0ZW1PZlVuaXRzIHRhbiAnICtcbiAgICAgICAgJ3RhcmdldEtub3dsZWRnZSB0YXJnZXRzIHRhcmdldHNBZ2dyZWdhdGUgdGFyZ2V0c1F1ZXJ5IHRhc2tBbHdheXNWaXNpYmxlIHRhc2tDaGlsZHJlbiAnICtcbiAgICAgICAgJ3Rhc2tDb21wbGV0ZWQgdGFza0N1c3RvbURhdGEgdGFza0Rlc2NyaXB0aW9uIHRhc2tEZXN0aW5hdGlvbiB0YXNrSGludCB0YXNrTWFya2VyT2Zmc2V0IHRhc2tQYXJlbnQgJyArXG4gICAgICAgICd0YXNrUmVzdWx0IHRhc2tTdGF0ZSB0YXNrVHlwZSB0ZWFtTWVtYmVyIHRlYW1OYW1lIHRlYW1zIHRlYW1Td2l0Y2ggdGVhbVN3aXRjaEVuYWJsZWQgdGVhbVR5cGUgJyArXG4gICAgICAgICd0ZXJtaW5hdGUgdGVycmFpbkludGVyc2VjdCB0ZXJyYWluSW50ZXJzZWN0QVNMIHRlcnJhaW5JbnRlcnNlY3RBdEFTTCB0ZXh0IHRleHRMb2cgdGV4dExvZ0Zvcm1hdCAnICtcbiAgICAgICAgJ3RnIHRpbWUgdGltZU11bHRpcGxpZXIgdGl0bGVDdXQgdGl0bGVGYWRlT3V0IHRpdGxlT2JqIHRpdGxlUnNjIHRpdGxlVGV4dCB0b0FycmF5IHRvRml4ZWQgdG9Mb3dlciAnICtcbiAgICAgICAgJ3RvU3RyaW5nIHRvVXBwZXIgdHJpZ2dlckFjdGl2YXRlZCB0cmlnZ2VyQWN0aXZhdGlvbiB0cmlnZ2VyQXJlYSB0cmlnZ2VyQXR0YWNoZWRWZWhpY2xlICcgK1xuICAgICAgICAndHJpZ2dlckF0dGFjaE9iamVjdCB0cmlnZ2VyQXR0YWNoVmVoaWNsZSB0cmlnZ2VyRHluYW1pY1NpbXVsYXRpb24gdHJpZ2dlclN0YXRlbWVudHMgdHJpZ2dlclRleHQgJyArXG4gICAgICAgICd0cmlnZ2VyVGltZW91dCB0cmlnZ2VyVGltZW91dEN1cnJlbnQgdHJpZ2dlclR5cGUgdHVycmV0TG9jYWwgdHVycmV0T3duZXIgdHVycmV0VW5pdCB0dkFkZCB0dkNsZWFyICcgK1xuICAgICAgICAndHZDb2xsYXBzZSB0dkNvbGxhcHNlQWxsIHR2Q291bnQgdHZDdXJTZWwgdHZEYXRhIHR2RGVsZXRlIHR2RXhwYW5kIHR2RXhwYW5kQWxsIHR2UGljdHVyZSAnICtcbiAgICAgICAgJ3R2U2V0Q29sb3IgdHZTZXRDdXJTZWwgdHZTZXREYXRhIHR2U2V0UGljdHVyZSB0dlNldFBpY3R1cmVDb2xvciB0dlNldFBpY3R1cmVDb2xvckRpc2FibGVkICcgK1xuICAgICAgICAndHZTZXRQaWN0dXJlQ29sb3JTZWxlY3RlZCB0dlNldFBpY3R1cmVSaWdodCB0dlNldFBpY3R1cmVSaWdodENvbG9yIHR2U2V0UGljdHVyZVJpZ2h0Q29sb3JEaXNhYmxlZCAnICtcbiAgICAgICAgJ3R2U2V0UGljdHVyZVJpZ2h0Q29sb3JTZWxlY3RlZCB0dlNldFRleHQgdHZTZXRUb29sdGlwIHR2U2V0VmFsdWUgdHZTb3J0IHR2U29ydEJ5VmFsdWUgdHZUZXh0ICcgK1xuICAgICAgICAndHZUb29sdGlwIHR2VmFsdWUgdHlwZSB0eXBlTmFtZSB0eXBlT2YgVUFWQ29udHJvbCB1aU5hbWVzcGFjZSB1aVNsZWVwIHVuYXNzaWduQ3VyYXRvciAnICtcbiAgICAgICAgJ3VuYXNzaWduSXRlbSB1bmFzc2lnblRlYW0gdW5hc3NpZ25WZWhpY2xlIHVuZGVyd2F0ZXIgdW5pZm9ybSB1bmlmb3JtQ29udGFpbmVyIHVuaWZvcm1JdGVtcyAnICtcbiAgICAgICAgJ3VuaWZvcm1NYWdhemluZXMgdW5pdEFkZG9ucyB1bml0QWltUG9zaXRpb24gdW5pdEFpbVBvc2l0aW9uVmlzdWFsIHVuaXRCYWNrcGFjayB1bml0SXNVQVYgdW5pdFBvcyAnICtcbiAgICAgICAgJ3VuaXRSZWFkeSB1bml0UmVjb2lsQ29lZmZpY2llbnQgdW5pdHMgdW5pdHNCZWxvd0hlaWdodCB1bmxpbmtJdGVtIHVubG9ja0FjaGlldmVtZW50ICcgK1xuICAgICAgICAndW5yZWdpc3RlclRhc2sgdXBkYXRlRHJhd0ljb24gdXBkYXRlTWVudUl0ZW0gdXBkYXRlT2JqZWN0VHJlZSB1c2VBSVN0ZWVyaW5nQ29tcG9uZW50ICcgK1xuICAgICAgICAndXNlQXVkaW9UaW1lRm9yTW92ZXMgdXNlcklucHV0RGlzYWJsZWQgdmVjdG9yQWRkIHZlY3RvckNvcyB2ZWN0b3JDcm9zc1Byb2R1Y3QgdmVjdG9yRGlmZiAnICtcbiAgICAgICAgJ3ZlY3RvckRpciB2ZWN0b3JEaXJWaXN1YWwgdmVjdG9yRGlzdGFuY2UgdmVjdG9yRGlzdGFuY2VTcXIgdmVjdG9yRG90UHJvZHVjdCB2ZWN0b3JGcm9tVG8gJyArXG4gICAgICAgICd2ZWN0b3JNYWduaXR1ZGUgdmVjdG9yTWFnbml0dWRlU3FyIHZlY3Rvck1vZGVsVG9Xb3JsZCB2ZWN0b3JNb2RlbFRvV29ybGRWaXN1YWwgdmVjdG9yTXVsdGlwbHkgJyArXG4gICAgICAgICd2ZWN0b3JOb3JtYWxpemVkIHZlY3RvclVwIHZlY3RvclVwVmlzdWFsIHZlY3RvcldvcmxkVG9Nb2RlbCB2ZWN0b3JXb3JsZFRvTW9kZWxWaXN1YWwgdmVoaWNsZSAnICtcbiAgICAgICAgJ3ZlaGljbGVDYXJnb0VuYWJsZWQgdmVoaWNsZUNoYXQgdmVoaWNsZVJhZGlvIHZlaGljbGVSZWNlaXZlUmVtb3RlVGFyZ2V0cyB2ZWhpY2xlUmVwb3J0T3duUG9zaXRpb24gJyArXG4gICAgICAgICd2ZWhpY2xlUmVwb3J0UmVtb3RlVGFyZ2V0cyB2ZWhpY2xlcyB2ZWhpY2xlVmFyTmFtZSB2ZWxvY2l0eSB2ZWxvY2l0eU1vZGVsU3BhY2UgdmVyaWZ5U2lnbmF0dXJlICcgK1xuICAgICAgICAndmVzdCB2ZXN0Q29udGFpbmVyIHZlc3RJdGVtcyB2ZXN0TWFnYXppbmVzIHZpZXdEaXN0YW5jZSB2aXNpYmxlQ29tcGFzcyB2aXNpYmxlR1BTIHZpc2libGVNYXAgJyArXG4gICAgICAgICd2aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQVNMIHZpc2libGVTY29yZXRhYmxlIHZpc2libGVXYXRjaCB3YXZlcyB3YXlwb2ludEF0dGFjaGVkT2JqZWN0ICcgK1xuICAgICAgICAnd2F5cG9pbnRBdHRhY2hlZFZlaGljbGUgd2F5cG9pbnRBdHRhY2hPYmplY3Qgd2F5cG9pbnRBdHRhY2hWZWhpY2xlIHdheXBvaW50QmVoYXZpb3VyICcgK1xuICAgICAgICAnd2F5cG9pbnRDb21iYXRNb2RlIHdheXBvaW50Q29tcGxldGlvblJhZGl1cyB3YXlwb2ludERlc2NyaXB0aW9uIHdheXBvaW50Rm9yY2VCZWhhdmlvdXIgJyArXG4gICAgICAgICd3YXlwb2ludEZvcm1hdGlvbiB3YXlwb2ludEhvdXNlUG9zaXRpb24gd2F5cG9pbnRMb2l0ZXJSYWRpdXMgd2F5cG9pbnRMb2l0ZXJUeXBlIHdheXBvaW50TmFtZSAnICtcbiAgICAgICAgJ3dheXBvaW50UG9zaXRpb24gd2F5cG9pbnRzIHdheXBvaW50U2NyaXB0IHdheXBvaW50c0VuYWJsZWRVQVYgd2F5cG9pbnRTaG93IHdheXBvaW50U3BlZWQgJyArXG4gICAgICAgICd3YXlwb2ludFN0YXRlbWVudHMgd2F5cG9pbnRUaW1lb3V0IHdheXBvaW50VGltZW91dEN1cnJlbnQgd2F5cG9pbnRUeXBlIHdheXBvaW50VmlzaWJsZSAnICtcbiAgICAgICAgJ3dlYXBvbkFjY2Vzc29yaWVzIHdlYXBvbkFjY2Vzc29yaWVzQ2FyZ28gd2VhcG9uQ2FyZ28gd2VhcG9uRGlyZWN0aW9uIHdlYXBvbkluZXJ0aWEgd2VhcG9uTG93ZXJlZCAnICtcbiAgICAgICAgJ3dlYXBvbnMgd2VhcG9uc0l0ZW1zIHdlYXBvbnNJdGVtc0NhcmdvIHdlYXBvblN0YXRlIHdlYXBvbnNUdXJyZXQgd2VpZ2h0UlREIFdGU2lkZVRleHQgd2luZCAnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ2JsdWZvciBjaXZpbGlhbiBjb25maWdOdWxsIGNvbnRyb2xOdWxsIGRpc3BsYXlOdWxsIGVhc3QgZW5kbCBmYWxzZSBncnBOdWxsIGluZGVwZW5kZW50IGxpbmVCcmVhayAnICtcbiAgICAgICAgJ2xvY2F0aW9uTnVsbCBuaWwgb2JqTnVsbCBvcGZvciBwaSByZXNpc3RhbmNlIHNjcmlwdE51bGwgc2lkZUFtYmllbnRMaWZlIHNpZGVFbXB0eSBzaWRlTG9naWMgJyArXG4gICAgICAgICdzaWRlVW5rbm93biB0YXNrTnVsbCB0ZWFtTWVtYmVyTnVsbCB0cnVlIHdlc3QnLFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBGVU5DVElPTixcbiAgICAgIFNUUklOR1MsXG4gICAgICBQUkVQUk9DRVNTT1JcbiAgICBdLFxuICAgIGlsbGVnYWw6IC8jfF5cXCQgL1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgaWxsZWdhbDogL1s8Pnt9Kl0vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6XG4gICAgICAgICAgJ2JlZ2luIGVuZCBzdGFydCBjb21taXQgcm9sbGJhY2sgc2F2ZXBvaW50IGxvY2sgYWx0ZXIgY3JlYXRlIGRyb3AgcmVuYW1lIGNhbGwgJyArXG4gICAgICAgICAgJ2RlbGV0ZSBkbyBoYW5kbGVyIGluc2VydCBsb2FkIHJlcGxhY2Ugc2VsZWN0IHRydW5jYXRlIHVwZGF0ZSBzZXQgc2hvdyBwcmFnbWEgZ3JhbnQgJyArXG4gICAgICAgICAgJ21lcmdlIGRlc2NyaWJlIHVzZSBleHBsYWluIGhlbHAgZGVjbGFyZSBwcmVwYXJlIGV4ZWN1dGUgZGVhbGxvY2F0ZSByZWxlYXNlICcgK1xuICAgICAgICAgICd1bmxvY2sgcHVyZ2UgcmVzZXQgY2hhbmdlIHN0b3AgYW5hbHl6ZSBjYWNoZSBmbHVzaCBvcHRpbWl6ZSByZXBhaXIga2lsbCAnICtcbiAgICAgICAgICAnaW5zdGFsbCB1bmluc3RhbGwgY2hlY2tzdW0gcmVzdG9yZSBjaGVjayBiYWNrdXAgcmV2b2tlIGNvbW1lbnQgdmFsdWVzIHdpdGgnLFxuICAgICAgICBlbmQ6IC87LywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIGxleGVtZXM6IC9bXFx3XFwuXSsvLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAnYXMgYWJvcnQgYWJzIGFic29sdXRlIGFjYyBhY2NlIGFjY2VwIGFjY2VwdCBhY2Nlc3MgYWNjZXNzZWQgYWNjZXNzaWJsZSBhY2NvdW50IGFjb3MgYWN0aW9uIGFjdGl2YXRlIGFkZCAnICtcbiAgICAgICAgICAgICdhZGR0aW1lIGFkbWluIGFkbWluaXN0ZXIgYWR2YW5jZWQgYWR2aXNlIGFlc19kZWNyeXB0IGFlc19lbmNyeXB0IGFmdGVyIGFnZW50IGFnZ3JlZ2F0ZSBhbGkgYWxpYSBhbGlhcyAnICtcbiAgICAgICAgICAgICdhbGwgYWxsb2NhdGUgYWxsb3cgYWx0ZXIgYWx3YXlzIGFuYWx5emUgYW5jaWxsYXJ5IGFuZCBhbnRpIGFueSBhbnlkYXRhIGFueWRhdGFzZXQgYW55c2NoZW1hIGFueXR5cGUgYXBwbHkgJyArXG4gICAgICAgICAgICAnYXJjaGl2ZSBhcmNoaXZlZCBhcmNoaXZlbG9nIGFyZSBhcyBhc2MgYXNjaWkgYXNpbiBhc3NlbWJseSBhc3NlcnRpb24gYXNzb2NpYXRlIGFzeW5jaHJvbm91cyBhdCBhdGFuICcgK1xuICAgICAgICAgICAgJ2F0bjIgYXR0ciBhdHRyaSBhdHRyaWIgYXR0cmlidSBhdHRyaWJ1dCBhdHRyaWJ1dGUgYXR0cmlidXRlcyBhdWRpdCBhdXRoZW50aWNhdGVkIGF1dGhlbnRpY2F0aW9uIGF1dGhpZCAnICtcbiAgICAgICAgICAgICdhdXRob3JzIGF1dG8gYXV0b2FsbG9jYXRlIGF1dG9kYmxpbmsgYXV0b2V4dGVuZCBhdXRvbWF0aWMgYXZhaWxhYmlsaXR5IGF2ZyBiYWNrdXAgYmFkZmlsZSBiYXNpY2ZpbGUgJyArXG4gICAgICAgICAgICAnYmVmb3JlIGJlZ2luIGJlZ2lubmluZyBiZW5jaG1hcmsgYmV0d2VlbiBiZmlsZSBiZmlsZV9iYXNlIGJpZyBiaWdmaWxlIGJpbiBiaW5hcnlfZG91YmxlIGJpbmFyeV9mbG9hdCAnICtcbiAgICAgICAgICAgICdiaW5sb2cgYml0X2FuZCBiaXRfY291bnQgYml0X2xlbmd0aCBiaXRfb3IgYml0X3hvciBiaXRtYXAgYmxvYl9iYXNlIGJsb2NrIGJsb2Nrc2l6ZSBib2R5IGJvdGggYm91bmQgJyArXG4gICAgICAgICAgICAnYnVja2V0IGJ1ZmZlcl9jYWNoZSBidWZmZXJfcG9vbCBidWlsZCBidWxrIGJ5IGJ5dGUgYnl0ZW9yZGVybWFyayBieXRlcyBjYWNoZSBjYWNoaW5nIGNhbGwgY2FsbGluZyBjYW5jZWwgJyArXG4gICAgICAgICAgICAnY2FwYWNpdHkgY2FzY2FkZSBjYXNjYWRlZCBjYXNlIGNhc3QgY2F0YWxvZyBjYXRlZ29yeSBjZWlsIGNlaWxpbmcgY2hhaW4gY2hhbmdlIGNoYW5nZWQgY2hhcl9iYXNlICcgK1xuICAgICAgICAgICAgJ2NoYXJfbGVuZ3RoIGNoYXJhY3Rlcl9sZW5ndGggY2hhcmFjdGVycyBjaGFyYWN0ZXJzZXQgY2hhcmluZGV4IGNoYXJzZXQgY2hhcnNldGZvcm0gY2hhcnNldGlkIGNoZWNrICcgK1xuICAgICAgICAgICAgJ2NoZWNrc3VtIGNoZWNrc3VtX2FnZyBjaGlsZCBjaG9vc2UgY2hyIGNodW5rIGNsYXNzIGNsZWFudXAgY2xlYXIgY2xpZW50IGNsb2IgY2xvYl9iYXNlIGNsb25lIGNsb3NlICcgK1xuICAgICAgICAgICAgJ2NsdXN0ZXJfaWQgY2x1c3Rlcl9wcm9iYWJpbGl0eSBjbHVzdGVyX3NldCBjbHVzdGVyaW5nIGNvYWxlc2NlIGNvZXJjaWJpbGl0eSBjb2wgY29sbGF0ZSBjb2xsYXRpb24gJyArXG4gICAgICAgICAgICAnY29sbGVjdCBjb2x1IGNvbHVtIGNvbHVtbiBjb2x1bW5fdmFsdWUgY29sdW1ucyBjb2x1bW5zX3VwZGF0ZWQgY29tbWVudCBjb21taXQgY29tcGFjdCBjb21wYXRpYmlsaXR5ICcgK1xuICAgICAgICAgICAgJ2NvbXBpbGVkIGNvbXBsZXRlIGNvbXBvc2l0ZV9saW1pdCBjb21wb3VuZCBjb21wcmVzcyBjb21wdXRlIGNvbmNhdCBjb25jYXRfd3MgY29uY3VycmVudCBjb25maXJtIGNvbm4gJyArXG4gICAgICAgICAgICAnY29ubmVjIGNvbm5lY3QgY29ubmVjdF9ieV9pc2N5Y2xlIGNvbm5lY3RfYnlfaXNsZWFmIGNvbm5lY3RfYnlfcm9vdCBjb25uZWN0X3RpbWUgY29ubmVjdGlvbiAnICtcbiAgICAgICAgICAgICdjb25zaWRlciBjb25zaXN0ZW50IGNvbnN0YW50IGNvbnN0cmFpbnQgY29uc3RyYWludHMgY29uc3RydWN0b3IgY29udGFpbmVyIGNvbnRlbnQgY29udGVudHMgY29udGV4dCAnICtcbiAgICAgICAgICAgICdjb250cmlidXRvcnMgY29udHJvbGZpbGUgY29udiBjb252ZXJ0IGNvbnZlcnRfdHogY29yciBjb3JyX2sgY29ycl9zIGNvcnJlc3BvbmRpbmcgY29ycnVwdGlvbiBjb3MgY29zdCAnICtcbiAgICAgICAgICAgICdjb3VudCBjb3VudF9iaWcgY291bnRlZCBjb3Zhcl9wb3AgY292YXJfc2FtcCBjcHVfcGVyX2NhbGwgY3B1X3Blcl9zZXNzaW9uIGNyYzMyIGNyZWF0ZSBjcmVhdGlvbiAnICtcbiAgICAgICAgICAgICdjcml0aWNhbCBjcm9zcyBjdWJlIGN1bWVfZGlzdCBjdXJkYXRlIGN1cnJlbnQgY3VycmVudF9kYXRlIGN1cnJlbnRfdGltZSBjdXJyZW50X3RpbWVzdGFtcCBjdXJyZW50X3VzZXIgJyArXG4gICAgICAgICAgICAnY3Vyc29yIGN1cnRpbWUgY3VzdG9tZGF0dW0gY3ljbGUgZGF0YSBkYXRhYmFzZSBkYXRhYmFzZXMgZGF0YWZpbGUgZGF0YWZpbGVzIGRhdGFsZW5ndGggZGF0ZV9hZGQgJyArXG4gICAgICAgICAgICAnZGF0ZV9jYWNoZSBkYXRlX2Zvcm1hdCBkYXRlX3N1YiBkYXRlYWRkIGRhdGVkaWZmIGRhdGVmcm9tcGFydHMgZGF0ZW5hbWUgZGF0ZXBhcnQgZGF0ZXRpbWUyZnJvbXBhcnRzICcgK1xuICAgICAgICAgICAgJ2RheSBkYXlfdG9fc2Vjb25kIGRheW5hbWUgZGF5b2Ztb250aCBkYXlvZndlZWsgZGF5b2Z5ZWFyIGRheXMgZGJfcm9sZV9jaGFuZ2UgZGJ0aW1lem9uZSBkZGwgZGVhbGxvY2F0ZSAnICtcbiAgICAgICAgICAgICdkZWNsYXJlIGRlY29kZSBkZWNvbXBvc2UgZGVjcmVtZW50IGRlY3J5cHQgZGVkdXBsaWNhdGUgZGVmIGRlZmEgZGVmYXUgZGVmYXVsIGRlZmF1bHQgZGVmYXVsdHMgJyArXG4gICAgICAgICAgICAnZGVmZXJyZWQgZGVmaSBkZWZpbiBkZWZpbmUgZGVncmVlcyBkZWxheWVkIGRlbGVnYXRlIGRlbGV0ZSBkZWxldGVfYWxsIGRlbGltaXRlZCBkZW1hbmQgZGVuc2VfcmFuayAnICtcbiAgICAgICAgICAgICdkZXB0aCBkZXF1ZXVlIGRlc19kZWNyeXB0IGRlc19lbmNyeXB0IGRlc19rZXlfZmlsZSBkZXNjIGRlc2NyIGRlc2NyaSBkZXNjcmliIGRlc2NyaWJlIGRlc2NyaXB0b3IgJyArXG4gICAgICAgICAgICAnZGV0ZXJtaW5pc3RpYyBkaWFnbm9zdGljcyBkaWZmZXJlbmNlIGRpbWVuc2lvbiBkaXJlY3RfbG9hZCBkaXJlY3RvcnkgZGlzYWJsZSBkaXNhYmxlX2FsbCAnICtcbiAgICAgICAgICAgICdkaXNhbGxvdyBkaXNhc3NvY2lhdGUgZGlzY2FyZGZpbGUgZGlzY29ubmVjdCBkaXNrZ3JvdXAgZGlzdGluY3QgZGlzdGluY3Ryb3cgZGlzdHJpYnV0ZSBkaXN0cmlidXRlZCBkaXYgJyArXG4gICAgICAgICAgICAnZG8gZG9jdW1lbnQgZG9tYWluIGRvdG5ldCBkb3VibGUgZG93bmdyYWRlIGRyb3AgZHVtcGZpbGUgZHVwbGljYXRlIGR1cmF0aW9uIGVhY2ggZWRpdGlvbiBlZGl0aW9uYWJsZSAnICtcbiAgICAgICAgICAgICdlZGl0aW9ucyBlbGVtZW50IGVsbGlwc2lzIGVsc2UgZWxzaWYgZWx0IGVtcHR5IGVuYWJsZSBlbmFibGVfYWxsIGVuY2xvc2VkIGVuY29kZSBlbmNvZGluZyBlbmNyeXB0ICcgK1xuICAgICAgICAgICAgJ2VuZCBlbmQtZXhlYyBlbmRpYW4gZW5mb3JjZWQgZW5naW5lIGVuZ2luZXMgZW5xdWV1ZSBlbnRlcnByaXNlIGVudGl0eWVzY2FwaW5nIGVvbW9udGggZXJyb3IgZXJyb3JzICcgK1xuICAgICAgICAgICAgJ2VzY2FwZWQgZXZhbG5hbWUgZXZhbHVhdGUgZXZlbnQgZXZlbnRkYXRhIGV2ZW50cyBleGNlcHQgZXhjZXB0aW9uIGV4Y2VwdGlvbnMgZXhjaGFuZ2UgZXhjbHVkZSBleGNsdWRpbmcgJyArXG4gICAgICAgICAgICAnZXhlY3UgZXhlY3V0IGV4ZWN1dGUgZXhlbXB0IGV4aXN0cyBleGl0IGV4cCBleHBpcmUgZXhwbGFpbiBleHBsb2RlIGV4cG9ydCBleHBvcnRfc2V0IGV4dGVuZGVkIGV4dGVudCBleHRlcm5hbCAnICtcbiAgICAgICAgICAgICdleHRlcm5hbF8xIGV4dGVybmFsXzIgZXh0ZXJuYWxseSBleHRyYWN0IGZhaWxlZCBmYWlsZWRfbG9naW5fYXR0ZW1wdHMgZmFpbG92ZXIgZmFpbHVyZSBmYXIgZmFzdCAnICtcbiAgICAgICAgICAgICdmZWF0dXJlX3NldCBmZWF0dXJlX3ZhbHVlIGZldGNoIGZpZWxkIGZpZWxkcyBmaWxlIGZpbGVfbmFtZV9jb252ZXJ0IGZpbGVzeXN0ZW1fbGlrZV9sb2dnaW5nIGZpbmFsICcgK1xuICAgICAgICAgICAgJ2ZpbmlzaCBmaXJzdCBmaXJzdF92YWx1ZSBmaXhlZCBmbGFzaF9jYWNoZSBmbGFzaGJhY2sgZmxvb3IgZmx1c2ggZm9sbG93aW5nIGZvbGxvd3MgZm9yIGZvcmFsbCBmb3JjZSBmb3JlaWduICcgK1xuICAgICAgICAgICAgJ2Zvcm0gZm9ybWEgZm9ybWF0IGZvdW5kIGZvdW5kX3Jvd3MgZnJlZWxpc3QgZnJlZWxpc3RzIGZyZWVwb29scyBmcmVzaCBmcm9tIGZyb21fYmFzZTY0IGZyb21fZGF5cyAnICtcbiAgICAgICAgICAgICdmdHAgZnVsbCBmdW5jdGlvbiBnZW5lcmFsIGdlbmVyYXRlZCBnZXQgZ2V0X2Zvcm1hdCBnZXRfbG9jayBnZXRkYXRlIGdldHV0Y2RhdGUgZ2xvYmFsIGdsb2JhbF9uYW1lICcgK1xuICAgICAgICAgICAgJ2dsb2JhbGx5IGdvIGdvdG8gZ3JhbnQgZ3JhbnRzIGdyZWF0ZXN0IGdyb3VwIGdyb3VwX2NvbmNhdCBncm91cF9pZCBncm91cGluZyBncm91cGluZ19pZCBncm91cHMgJyArXG4gICAgICAgICAgICAnZ3RpZF9zdWJ0cmFjdCBndWFyYW50ZWUgZ3VhcmQgaGFuZGxlciBoYXNoIGhhc2hrZXlzIGhhdmluZyBoZWEgaGVhZCBoZWFkaSBoZWFkaW4gaGVhZGluZyBoZWFwIGhlbHAgaGV4ICcgK1xuICAgICAgICAgICAgJ2hpZXJhcmNoeSBoaWdoIGhpZ2hfcHJpb3JpdHkgaG9zdHMgaG91ciBob3VycyBodHRwIGlkIGlkZW50X2N1cnJlbnQgaWRlbnRfaW5jciBpZGVudF9zZWVkIGlkZW50aWZpZWQgJyArXG4gICAgICAgICAgICAnaWRlbnRpdHkgaWRsZV90aW1lIGlmIGlmbnVsbCBpZ25vcmUgaWlmIGlsaWtlIGlsbSBpbW1lZGlhdGUgaW1wb3J0IGluIGluY2x1ZGUgaW5jbHVkaW5nIGluY3JlbWVudCAnICtcbiAgICAgICAgICAgICdpbmRleCBpbmRleGVzIGluZGV4aW5nIGluZGV4dHlwZSBpbmRpY2F0b3IgaW5kaWNlcyBpbmV0Nl9hdG9uIGluZXQ2X250b2EgaW5ldF9hdG9uIGluZXRfbnRvYSBpbmZpbGUgJyArXG4gICAgICAgICAgICAnaW5pdGlhbCBpbml0aWFsaXplZCBpbml0aWFsbHkgaW5pdHJhbnMgaW5tZW1vcnkgaW5uZXIgaW5ub2RiIGlucHV0IGluc2VydCBpbnN0YWxsIGluc3RhbmNlIGluc3RhbnRpYWJsZSAnICtcbiAgICAgICAgICAgICdpbnN0ciBpbnRlcmZhY2UgaW50ZXJsZWF2ZWQgaW50ZXJzZWN0IGludG8gaW52YWxpZGF0ZSBpbnZpc2libGUgaXMgaXNfZnJlZV9sb2NrIGlzX2lwdjQgaXNfaXB2NF9jb21wYXQgJyArXG4gICAgICAgICAgICAnaXNfbm90IGlzX25vdF9udWxsIGlzX3VzZWRfbG9jayBpc2RhdGUgaXNudWxsIGlzb2xhdGlvbiBpdGVyYXRlIGphdmEgam9pbiBqc29uIGpzb25fZXhpc3RzICcgK1xuICAgICAgICAgICAgJ2tlZXAga2VlcF9kdXBsaWNhdGVzIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFyZ2UgbGFzdCBsYXN0X2RheSBsYXN0X2luc2VydF9pZCBsYXN0X3ZhbHVlIGxhdGVyYWwgbGF4IGxjYXNlICcgK1xuICAgICAgICAgICAgJ2xlYWQgbGVhZGluZyBsZWFzdCBsZWF2ZXMgbGVmdCBsZW4gbGVuZ2h0IGxlbmd0aCBsZXNzIGxldmVsIGxldmVscyBsaWJyYXJ5IGxpa2UgbGlrZTIgbGlrZTQgbGlrZWMgbGltaXQgJyArXG4gICAgICAgICAgICAnbGluZXMgbGluayBsaXN0IGxpc3RhZ2cgbGl0dGxlIGxuIGxvYWQgbG9hZF9maWxlIGxvYiBsb2JzIGxvY2FsIGxvY2FsdGltZSBsb2NhbHRpbWVzdGFtcCBsb2NhdGUgJyArXG4gICAgICAgICAgICAnbG9jYXRvciBsb2NrIGxvY2tlZCBsb2cgbG9nMTAgbG9nMiBsb2dmaWxlIGxvZ2ZpbGVzIGxvZ2dpbmcgbG9naWNhbCBsb2dpY2FsX3JlYWRzX3Blcl9jYWxsICcgK1xuICAgICAgICAgICAgJ2xvZ29mZiBsb2dvbiBsb2dzIGxvbmcgbG9vcCBsb3cgbG93X3ByaW9yaXR5IGxvd2VyIGxwYWQgbHJ0cmltIGx0cmltIG1haW4gbWFrZV9zZXQgbWFrZWRhdGUgbWFrZXRpbWUgJyArXG4gICAgICAgICAgICAnbWFuYWdlZCBtYW5hZ2VtZW50IG1hbnVhbCBtYXAgbWFwcGluZyBtYXNrIG1hc3RlciBtYXN0ZXJfcG9zX3dhaXQgbWF0Y2ggbWF0Y2hlZCBtYXRlcmlhbGl6ZWQgbWF4ICcgK1xuICAgICAgICAgICAgJ21heGV4dGVudHMgbWF4aW1pemUgbWF4aW5zdGFuY2VzIG1heGxlbiBtYXhsb2dmaWxlcyBtYXhsb2doaXN0b3J5IG1heGxvZ21lbWJlcnMgbWF4c2l6ZSBtYXh0cmFucyAnICtcbiAgICAgICAgICAgICdtZDUgbWVhc3VyZXMgbWVkaWFuIG1lZGl1bSBtZW1iZXIgbWVtY29tcHJlc3MgbWVtb3J5IG1lcmdlIG1pY3Jvc2Vjb25kIG1pZCBtaWdyYXRpb24gbWluIG1pbmV4dGVudHMgJyArXG4gICAgICAgICAgICAnbWluaW11bSBtaW5pbmcgbWludXMgbWludXRlIG1pbnV0ZXMgbWludmFsdWUgbWlzc2luZyBtb2QgbW9kZSBtb2RlbCBtb2RpZmljYXRpb24gbW9kaWZ5IG1vZHVsZSBtb25pdG9yaW5nIG1vbnRoICcgK1xuICAgICAgICAgICAgJ21vbnRocyBtb3VudCBtb3ZlIG1vdmVtZW50IG11bHRpc2V0IG11dGV4IG5hbWUgbmFtZV9jb25zdCBuYW1lcyBuYW4gbmF0aW9uYWwgbmF0aXZlIG5hdHVyYWwgbmF2IG5jaGFyICcgK1xuICAgICAgICAgICAgJ25jbG9iIG5lc3RlZCBuZXZlciBuZXcgbmV3bGluZSBuZXh0IG5leHR2YWwgbm8gbm9fd3JpdGVfdG9fYmlubG9nIG5vYXJjaGl2ZWxvZyBub2F1ZGl0IG5vYmFkZmlsZSAnICtcbiAgICAgICAgICAgICdub2NoZWNrIG5vY29tcHJlc3Mgbm9jb3B5IG5vY3ljbGUgbm9kZWxheSBub2Rpc2NhcmRmaWxlIG5vZW50aXR5ZXNjYXBpbmcgbm9ndWFyYW50ZWUgbm9rZWVwIG5vbG9nZmlsZSAnICtcbiAgICAgICAgICAgICdub21hcHBpbmcgbm9tYXh2YWx1ZSBub21pbmltaXplIG5vbWludmFsdWUgbm9tb25pdG9yaW5nIG5vbmUgbm9uZWRpdGlvbmFibGUgbm9uc2NoZW1hIG5vb3JkZXIgJyArXG4gICAgICAgICAgICAnbm9wciBub3BybyBub3Byb20gbm9wcm9tcCBub3Byb21wdCBub3JlbHkgbm9yZXNldGxvZ3Mgbm9yZXZlcnNlIG5vcm1hbCBub3Jvd2RlcGVuZGVuY2llcyBub3NjaGVtYWNoZWNrICcgK1xuICAgICAgICAgICAgJ25vc3dpdGNoIG5vdCBub3RoaW5nIG5vdGljZSBub3RudWxsIG5vdHJpbSBub3ZhbGlkYXRlIG5vdyBub3dhaXQgbnRoX3ZhbHVlIG51bGxpZiBudWxscyBudW0gbnVtYiBudW1iZSAnICtcbiAgICAgICAgICAgICdudmFyY2hhciBudmFyY2hhcjIgb2JqZWN0IG9jaWNvbGwgb2NpZGF0ZSBvY2lkYXRldGltZSBvY2lkdXJhdGlvbiBvY2lpbnRlcnZhbCBvY2lsb2Jsb2NhdG9yIG9jaW51bWJlciAnICtcbiAgICAgICAgICAgICdvY2lyZWYgb2NpcmVmY3Vyc29yIG9jaXJvd2lkIG9jaXN0cmluZyBvY2l0eXBlIG9jdCBvY3RldF9sZW5ndGggb2Ygb2ZmIG9mZmxpbmUgb2Zmc2V0IG9pZCBvaWRpbmRleCBvbGQgJyArXG4gICAgICAgICAgICAnb24gb25saW5lIG9ubHkgb3BhcXVlIG9wZW4gb3BlcmF0aW9ucyBvcGVyYXRvciBvcHRpbWFsIG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG9yIG9yYWNsZSBvcmFjbGVfZGF0ZSAnICtcbiAgICAgICAgICAgICdvcmFkYXRhIG9yZCBvcmRhdWRpbyBvcmRkaWNvbSBvcmRkb2Mgb3JkZXIgb3JkaW1hZ2Ugb3JkaW5hbGl0eSBvcmR2aWRlbyBvcmdhbml6YXRpb24gb3JsYW55IG9ybHZhcnkgJyArXG4gICAgICAgICAgICAnb3V0IG91dGVyIG91dGZpbGUgb3V0bGluZSBvdXRwdXQgb3ZlciBvdmVyZmxvdyBvdmVycmlkaW5nIHBhY2thZ2UgcGFkIHBhcmFsbGVsIHBhcmFsbGVsX2VuYWJsZSAnICtcbiAgICAgICAgICAgICdwYXJhbWV0ZXJzIHBhcmVudCBwYXJzZSBwYXJ0aWFsIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc2NhbCBwYXNzaW5nIHBhc3N3b3JkIHBhc3N3b3JkX2dyYWNlX3RpbWUgJyArXG4gICAgICAgICAgICAncGFzc3dvcmRfbG9ja190aW1lIHBhc3N3b3JkX3JldXNlX21heCBwYXNzd29yZF9yZXVzZV90aW1lIHBhc3N3b3JkX3ZlcmlmeV9mdW5jdGlvbiBwYXRjaCBwYXRoIHBhdGluZGV4ICcgK1xuICAgICAgICAgICAgJ3BjdGluY3JlYXNlIHBjdHRocmVzaG9sZCBwY3R1c2VkIHBjdHZlcnNpb24gcGVyY2VudCBwZXJjZW50X3JhbmsgcGVyY2VudGlsZV9jb250IHBlcmNlbnRpbGVfZGlzYyAnICtcbiAgICAgICAgICAgICdwZXJmb3JtYW5jZSBwZXJpb2QgcGVyaW9kX2FkZCBwZXJpb2RfZGlmZiBwZXJtYW5lbnQgcGh5c2ljYWwgcGkgcGlwZSBwaXBlbGluZWQgcGl2b3QgcGx1Z2dhYmxlIHBsdWdpbiAnICtcbiAgICAgICAgICAgICdwb2xpY3kgcG9zaXRpb24gcG9zdF90cmFuc2FjdGlvbiBwb3cgcG93ZXIgcHJhZ21hIHByZWJ1aWx0IHByZWNlZGVzIHByZWNlZGluZyBwcmVjaXNpb24gcHJlZGljdGlvbiAnICtcbiAgICAgICAgICAgICdwcmVkaWN0aW9uX2Nvc3QgcHJlZGljdGlvbl9kZXRhaWxzIHByZWRpY3Rpb25fcHJvYmFiaWxpdHkgcHJlZGljdGlvbl9zZXQgcHJlcGFyZSBwcmVzZW50IHByZXNlcnZlICcgK1xuICAgICAgICAgICAgJ3ByaW9yIHByaW9yaXR5IHByaXZhdGUgcHJpdmF0ZV9zZ2EgcHJpdmlsZWdlcyBwcm9jZWR1cmFsIHByb2NlZHVyZSBwcm9jZWR1cmVfYW5hbHl6ZSBwcm9jZXNzbGlzdCAnICtcbiAgICAgICAgICAgICdwcm9maWxlcyBwcm9qZWN0IHByb21wdCBwcm90ZWN0aW9uIHB1YmxpYyBwdWJsaXNoaW5nc2VydmVybmFtZSBwdXJnZSBxdWFydGVyIHF1ZXJ5IHF1aWNrIHF1aWVzY2UgcXVvdGEgJyArXG4gICAgICAgICAgICAncXVvdGVuYW1lIHJhZGlhbnMgcmFpc2UgcmFuZCByYW5nZSByYW5rIHJhdyByZWFkIHJlYWRzIHJlYWRzaXplIHJlYnVpbGQgcmVjb3JkIHJlY29yZHMgJyArXG4gICAgICAgICAgICAncmVjb3ZlciByZWNvdmVyeSByZWN1cnNpdmUgcmVjeWNsZSByZWRvIHJlZHVjZWQgcmVmIHJlZmVyZW5jZSByZWZlcmVuY2VkIHJlZmVyZW5jZXMgcmVmZXJlbmNpbmcgcmVmcmVzaCAnICtcbiAgICAgICAgICAgICdyZWdleHBfbGlrZSByZWdpc3RlciByZWdyX2F2Z3ggcmVncl9hdmd5IHJlZ3JfY291bnQgcmVncl9pbnRlcmNlcHQgcmVncl9yMiByZWdyX3Nsb3BlIHJlZ3Jfc3h4IHJlZ3Jfc3h5ICcgK1xuICAgICAgICAgICAgJ3JlamVjdCByZWtleSByZWxhdGlvbmFsIHJlbGF0aXZlIHJlbGF5bG9nIHJlbGVhc2UgcmVsZWFzZV9sb2NrIHJlbGllc19vbiByZWxvY2F0ZSByZWx5IHJlbSByZW1haW5kZXIgcmVuYW1lICcgK1xuICAgICAgICAgICAgJ3JlcGFpciByZXBlYXQgcmVwbGFjZSByZXBsaWNhdGUgcmVwbGljYXRpb24gcmVxdWlyZWQgcmVzZXQgcmVzZXRsb2dzIHJlc2l6ZSByZXNvdXJjZSByZXNwZWN0IHJlc3RvcmUgJyArXG4gICAgICAgICAgICAncmVzdHJpY3RlZCByZXN1bHQgcmVzdWx0X2NhY2hlIHJlc3VtYWJsZSByZXN1bWUgcmV0ZW50aW9uIHJldHVybiByZXR1cm5pbmcgcmV0dXJucyByZXVzZSByZXZlcnNlIHJldm9rZSAnICtcbiAgICAgICAgICAgICdyaWdodCBybGlrZSByb2xlIHJvbGVzIHJvbGxiYWNrIHJvbGxpbmcgcm9sbHVwIHJvdW5kIHJvdyByb3dfY291bnQgcm93ZGVwZW5kZW5jaWVzIHJvd2lkIHJvd251bSByb3dzICcgK1xuICAgICAgICAgICAgJ3J0cmltIHJ1bGVzIHNhZmUgc2FsdCBzYW1wbGUgc2F2ZSBzYXZlcG9pbnQgc2IxIHNiMiBzYjQgc2NhbiBzY2hlbWEgc2NoZW1hY2hlY2sgc2NuIHNjb3BlIHNjcm9sbCAnICtcbiAgICAgICAgICAgICdzZG9fZ2VvcmFzdGVyIHNkb190b3BvX2dlb21ldHJ5IHNlYXJjaCBzZWNfdG9fdGltZSBzZWNvbmQgc2Vjb25kcyBzZWN0aW9uIHNlY3VyZWZpbGUgc2VjdXJpdHkgc2VlZCBzZWdtZW50IHNlbGVjdCAnICtcbiAgICAgICAgICAgICdzZWxmIHNlbWkgc2VxdWVuY2Ugc2VxdWVudGlhbCBzZXJpYWxpemFibGUgc2VydmVyIHNlcnZlcmVycm9yIHNlc3Npb24gc2Vzc2lvbl91c2VyIHNlc3Npb25zX3Blcl91c2VyIHNldCAnICtcbiAgICAgICAgICAgICdzZXRzIHNldHRpbmdzIHNoYSBzaGExIHNoYTIgc2hhcmUgc2hhcmVkIHNoYXJlZF9wb29sIHNob3J0IHNob3cgc2hyaW5rIHNodXRkb3duIHNpX2F2ZXJhZ2Vjb2xvciAnICtcbiAgICAgICAgICAgICdzaV9jb2xvcmhpc3RvZ3JhbSBzaV9mZWF0dXJlbGlzdCBzaV9wb3NpdGlvbmFsY29sb3Igc2lfc3RpbGxpbWFnZSBzaV90ZXh0dXJlIHNpYmxpbmdzIHNpZCBzaWduIHNpbiAnICtcbiAgICAgICAgICAgICdzaXplIHNpemVfdCBzaXplcyBza2lwIHNsYXZlIHNsZWVwIHNtYWxsZGF0ZXRpbWVmcm9tcGFydHMgc21hbGxmaWxlIHNuYXBzaG90IHNvbWUgc29uYW1lIHNvcnQgc291bmRleCAnICtcbiAgICAgICAgICAgICdzb3VyY2Ugc3BhY2Ugc3BhcnNlIHNwZmlsZSBzcGxpdCBzcWwgc3FsX2JpZ19yZXN1bHQgc3FsX2J1ZmZlcl9yZXN1bHQgc3FsX2NhY2hlIHNxbF9jYWxjX2ZvdW5kX3Jvd3MgJyArXG4gICAgICAgICAgICAnc3FsX3NtYWxsX3Jlc3VsdCBzcWxfdmFyaWFudF9wcm9wZXJ0eSBzcWxjb2RlIHNxbGRhdGEgc3FsZXJyb3Igc3FsbmFtZSBzcWxzdGF0ZSBzcXJ0IHNxdWFyZSBzdGFuZGFsb25lICcgK1xuICAgICAgICAgICAgJ3N0YW5kYnkgc3RhcnQgc3RhcnRpbmcgc3RhcnR1cCBzdGF0ZW1lbnQgc3RhdGljIHN0YXRpc3RpY3Mgc3RhdHNfYmlub21pYWxfdGVzdCBzdGF0c19jcm9zc3RhYiAnICtcbiAgICAgICAgICAgICdzdGF0c19rc190ZXN0IHN0YXRzX21vZGUgc3RhdHNfbXdfdGVzdCBzdGF0c19vbmVfd2F5X2Fub3ZhIHN0YXRzX3RfdGVzdF8gc3RhdHNfdF90ZXN0X2luZGVwICcgK1xuICAgICAgICAgICAgJ3N0YXRzX3RfdGVzdF9vbmUgc3RhdHNfdF90ZXN0X3BhaXJlZCBzdGF0c193c3JfdGVzdCBzdGF0dXMgc3RkIHN0ZGRldiBzdGRkZXZfcG9wIHN0ZGRldl9zYW1wIHN0ZGV2ICcgK1xuICAgICAgICAgICAgJ3N0b3Agc3RvcmFnZSBzdG9yZSBzdG9yZWQgc3RyIHN0cl90b19kYXRlIHN0cmFpZ2h0X2pvaW4gc3RyY21wIHN0cmljdCBzdHJpbmcgc3RydWN0IHN0dWZmIHN0eWxlIHN1YmRhdGUgJyArXG4gICAgICAgICAgICAnc3VicGFydGl0aW9uIHN1YnBhcnRpdGlvbnMgc3Vic3RpdHV0YWJsZSBzdWJzdHIgc3Vic3RyaW5nIHN1YnRpbWUgc3VidHJpbmdfaW5kZXggc3VidHlwZSBzdWNjZXNzIHN1bSAnICtcbiAgICAgICAgICAgICdzdXNwZW5kIHN3aXRjaCBzd2l0Y2hvZmZzZXQgc3dpdGNob3ZlciBzeW5jIHN5bmNocm9ub3VzIHN5bm9ueW0gc3lzIHN5c194bWxhZ2cgc3lzYXNtIHN5c2F1eCBzeXNkYXRlICcgK1xuICAgICAgICAgICAgJ3N5c2RhdGV0aW1lb2Zmc2V0IHN5c2RiYSBzeXNvcGVyIHN5c3RlbSBzeXN0ZW1fdXNlciBzeXN1dGNkYXRldGltZSB0YWJsZSB0YWJsZXMgdGFibGVzcGFjZSB0YWJsZXNhbXBsZSB0YW4gdGRvICcgK1xuICAgICAgICAgICAgJ3RlbXBsYXRlIHRlbXBvcmFyeSB0ZXJtaW5hdGVkIHRlcnRpYXJ5X3dlaWdodHMgdGVzdCB0aGFuIHRoZW4gdGhyZWFkIHRocm91Z2ggdGllciB0aWVzIHRpbWUgdGltZV9mb3JtYXQgJyArXG4gICAgICAgICAgICAndGltZV96b25lIHRpbWVkaWZmIHRpbWVmcm9tcGFydHMgdGltZW91dCB0aW1lc3RhbXAgdGltZXN0YW1wYWRkIHRpbWVzdGFtcGRpZmYgdGltZXpvbmVfYWJiciAnICtcbiAgICAgICAgICAgICd0aW1lem9uZV9taW51dGUgdGltZXpvbmVfcmVnaW9uIHRvIHRvX2Jhc2U2NCB0b19kYXRlIHRvX2RheXMgdG9fc2Vjb25kcyB0b2RhdGV0aW1lb2Zmc2V0IHRyYWNlIHRyYWNraW5nICcgK1xuICAgICAgICAgICAgJ3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uYWwgdHJhbnNsYXRlIHRyYW5zbGF0aW9uIHRyZWF0IHRyaWdnZXIgdHJpZ2dlcl9uZXN0bGV2ZWwgdHJpZ2dlcnMgdHJpbSB0cnVuY2F0ZSAnICtcbiAgICAgICAgICAgICd0cnlfY2FzdCB0cnlfY29udmVydCB0cnlfcGFyc2UgdHlwZSB1YjEgdWIyIHViNCB1Y2FzZSB1bmFyY2hpdmVkIHVuYm91bmRlZCB1bmNvbXByZXNzICcgK1xuICAgICAgICAgICAgJ3VuZGVyIHVuZG8gdW5oZXggdW5pY29kZSB1bmlmb3JtIHVuaW5zdGFsbCB1bmlvbiB1bmlxdWUgdW5peF90aW1lc3RhbXAgdW5rbm93biB1bmxpbWl0ZWQgdW5sb2NrIHVubmVzdCB1bnBpdm90ICcgK1xuICAgICAgICAgICAgJ3VucmVjb3ZlcmFibGUgdW5zYWZlIHVuc2lnbmVkIHVudGlsIHVudHJ1c3RlZCB1bnVzYWJsZSB1bnVzZWQgdXBkYXRlIHVwZGF0ZWQgdXBncmFkZSB1cHBlZCB1cHBlciB1cHNlcnQgJyArXG4gICAgICAgICAgICAndXJsIHVyb3dpZCB1c2FibGUgdXNhZ2UgdXNlIHVzZV9zdG9yZWRfb3V0bGluZXMgdXNlciB1c2VyX2RhdGEgdXNlcl9yZXNvdXJjZXMgdXNlcnMgdXNpbmcgdXRjX2RhdGUgJyArXG4gICAgICAgICAgICAndXRjX3RpbWVzdGFtcCB1dWlkIHV1aWRfc2hvcnQgdmFsaWRhdGUgdmFsaWRhdGVfcGFzc3dvcmRfc3RyZW5ndGggdmFsaWRhdGlvbiB2YWxpc3QgdmFsdWUgdmFsdWVzIHZhciAnICtcbiAgICAgICAgICAgICd2YXJfc2FtcCB2YXJjaGFyYyB2YXJpIHZhcmlhIHZhcmlhYiB2YXJpYWJsIHZhcmlhYmxlIHZhcmlhYmxlcyB2YXJpYW5jZSB2YXJwIHZhcnJhdyB2YXJyYXdjIHZhcnJheSAnICtcbiAgICAgICAgICAgICd2ZXJpZnkgdmVyc2lvbiB2ZXJzaW9ucyB2aWV3IHZpcnR1YWwgdmlzaWJsZSB2b2lkIHdhaXQgd2FsbGV0IHdhcm5pbmcgd2FybmluZ3Mgd2VlayB3ZWVrZGF5IHdlZWtvZnllYXIgJyArXG4gICAgICAgICAgICAnd2VsbGZvcm1lZCB3aGVuIHdoZW5lIHdoZW5ldiB3aGVuZXZlIHdoZW5ldmVyIHdoZXJlIHdoaWxlIHdoaXRlc3BhY2Ugd2luZG93IHdpdGggd2l0aGluIHdpdGhvdXQgd29yayB3cmFwcGVkICcgK1xuICAgICAgICAgICAgJ3hkYiB4bWwgeG1sYWdnIHhtbGF0dHJpYnV0ZXMgeG1sY2FzdCB4bWxjb2xhdHR2YWwgeG1sZWxlbWVudCB4bWxleGlzdHMgeG1sZm9yZXN0IHhtbGluZGV4IHhtbG5hbWVzcGFjZXMgJyArXG4gICAgICAgICAgICAneG1scGkgeG1scXVlcnkgeG1scm9vdCB4bWxzY2hlbWEgeG1sc2VyaWFsaXplIHhtbHRhYmxlIHhtbHR5cGUgeG9yIHllYXIgeWVhcl90b19tb250aCB5ZWFycyB5ZWFyd2VlaycsXG4gICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5rbm93bicsXG4gICAgICAgICAgYnVpbHRfaW46XG4gICAgICAgICAgICAnYXJyYXkgYmlnaW50IGJpbmFyeSBiaXQgYmxvYiBib29sIGJvb2xlYW4gY2hhciBjaGFyYWN0ZXIgZGF0ZSBkZWMgZGVjaW1hbCBmbG9hdCBpbnQgaW50OCBpbnRlZ2VyIGludGVydmFsIG51bWJlciAnICtcbiAgICAgICAgICAgICdudW1lcmljIHJlYWwgcmVjb3JkIHNlcmlhbCBzZXJpYWw4IHNtYWxsaW50IHRleHQgdGltZSB0aW1lc3RhbXAgdGlueWludCB2YXJjaGFyIHZhcmNoYXIyIHZhcnlpbmcgdm9pZCdcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIHtiZWdpbjogJ1xcJ1xcJyd9XVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwge2JlZ2luOiAnXCJcIid9XVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBDT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIENPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgbGV4ZW1lczogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIC8vIFN0YW4ncyBrZXl3b3Jkc1xuICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAnZm9yIGluIHdoaWxlIHJlcGVhdCB1bnRpbCBpZiB0aGVuIGVsc2UnLFxuICAgICAgICAgIC8vIFN0YW4ncyBwcm9iYWJsaXR5IGRpc3RyaWJ1dGlvbnMgKGxlc3MgYmV0YSBhbmQgZ2FtbWEsIGFzIGNvbW1vbmx5XG4gICAgICAgICAgLy8gdXNlZCBmb3IgcGFyYW1ldGVyIG5hbWVzKS4gU28gZmFyLCBfbG9nIGFuZCBfcm5nIHZhcmlhbnRzIGFyZSBub3RcbiAgICAgICAgICAvLyBpbmNsdWRlZFxuICAgICAgICAgIHN5bWJvbDpcbiAgICAgICAgICAgICdiZXJub3VsbGkgYmVybm91bGxpX2xvZ2l0IGJpbm9taWFsIGJpbm9taWFsX2xvZ2l0ICcgICAgICAgICAgICAgICArXG4gICAgICAgICAgICAnYmV0YV9iaW5vbWlhbCBoeXBlcmdlb21ldHJpYyBjYXRlZ29yaWNhbCBjYXRlZ29yaWNhbF9sb2dpdCAnICAgICAgK1xuICAgICAgICAgICAgJ29yZGVyZWRfbG9naXN0aWMgbmVnX2Jpbm9taWFsIG5lZ19iaW5vbWlhbF8yICcgICAgICAgICAgICAgICAgICAgICtcbiAgICAgICAgICAgICduZWdfYmlub21pYWxfMl9sb2cgcG9pc3NvbiBwb2lzc29uX2xvZyBtdWx0aW5vbWlhbCBub3JtYWwgJyAgICAgICArXG4gICAgICAgICAgICAnZXhwX21vZF9ub3JtYWwgc2tld19ub3JtYWwgc3R1ZGVudF90IGNhdWNoeSBkb3VibGVfZXhwb25lbnRpYWwgJyAgK1xuICAgICAgICAgICAgJ2xvZ2lzdGljIGd1bWJlbCBsb2dub3JtYWwgY2hpX3NxdWFyZSBpbnZfY2hpX3NxdWFyZSAnICAgICAgICAgICAgICtcbiAgICAgICAgICAgICdzY2FsZWRfaW52X2NoaV9zcXVhcmUgZXhwb25lbnRpYWwgaW52X2dhbW1hIHdlaWJ1bGwgZnJlY2hldCAnICAgICArXG4gICAgICAgICAgICAncmF5bGVpZ2ggd2llbmVyIHBhcmV0byBwYXJldG9fdHlwZV8yIHZvbl9taXNlcyB1bmlmb3JtICcgICAgICAgICAgK1xuICAgICAgICAgICAgJ211bHRpX25vcm1hbCBtdWx0aV9ub3JtYWxfcHJlYyBtdWx0aV9ub3JtYWxfY2hvbGVza3kgbXVsdGlfZ3AgJyAgICtcbiAgICAgICAgICAgICdtdWx0aV9ncF9jaG9sZXNreSBtdWx0aV9zdHVkZW50X3QgZ2F1c3NpYW5fZGxtX29icyBkaXJpY2hsZXQgJyAgICArXG4gICAgICAgICAgICAnbGtqX2NvcnIgbGtqX2NvcnJfY2hvbGVza3kgd2lzaGFydCBpbnZfd2lzaGFydCcsXG4gICAgICAgICAgLy8gU3RhbidzIGRhdGEgdHlwZXNcbiAgICAgICAgICAnc2VsZWN0b3ItdGFnJzpcbiAgICAgICAgICAgICdpbnQgcmVhbCB2ZWN0b3Igc2ltcGxleCB1bml0X3ZlY3RvciBvcmRlcmVkIHBvc2l0aXZlX29yZGVyZWQgJyAgICArXG4gICAgICAgICAgICAncm93X3ZlY3RvciBtYXRyaXggY2hvbGVza3lfZmFjdG9yX2NvcnIgY2hvbGVza3lfZmFjdG9yX2NvdiAnICAgICAgK1xuICAgICAgICAgICAgJ2NvcnJfbWF0cml4IGNvdl9tYXRyaXgnLFxuICAgICAgICAgIC8vIFN0YW4ncyBtb2RlbCBibG9ja3NcbiAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICdmdW5jdGlvbnMgbW9kZWwgZGF0YSBwYXJhbWV0ZXJzIHF1YW50aXRpZXMgdHJhbnNmb3JtZWQgJyAgICAgICAgICArXG4gICAgICAgICAgICAnZ2VuZXJhdGVkJyxcbiAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgJ3RydWUgZmFsc2UnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIFRoZSBiZWxvdyBpcyBhbGwgdGFrZW4gZnJvbSB0aGUgUiBsYW5ndWFnZSBkZWZpbml0aW9uXG4gICAgICB7XG4gICAgICAgIC8vIGhleCB2YWx1ZVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCIwW3hYXVswLTlhLWZBLUZdK1tMaV0/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBoZXggdmFsdWVcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiMFt4WF1bMC05YS1mQS1GXStbTGldP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gZXhwbGljaXQgaW50ZWdlclxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcZCsoPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9MXFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXIgd2l0aCB0cmFpbGluZyBkZWNpbWFsXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxkK1xcXFwuKD8hXFxcXGQpKD86aVxcXFxiKT9cIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXJcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXGQrKD86XFxcXC5cXFxcZCopPyg/OltlRV1bK1xcXFwtXT9cXFxcZCopP2k/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXIgd2l0aCBsZWFkaW5nIGRlY2ltYWxcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXC5cXFxcZCsoPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9pP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvKlxuICBUaGlzIGlzIGEgZm9yayBhbmQgbW9kaWZpY2F0aW9uIG9mIERyZXcgTWNEb25hbGQncyBmaWxlIChodHRwczovL2dpdGh1Yi5jb20vZHJld21jZG9uYWxkL3N0YXRhLWhpZ2hsaWdodGluZykuIEkgaGF2ZSBhbHNvIGluY2x1ZGVkIGEgbGlzdCBvZiBidWlsdGluIGNvbW1hbmRzIGZyb20gaHR0cHM6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTY0Ni5cbiovXG5cbmZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2RvJywgJ2FkbyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6ICdpZiBlbHNlIGluIGZvcmVhY2ggZm9yIGZvcnYgZm9ydmEgZm9ydmFsIGZvcnZhbHUgZm9ydmFsdWUgZm9ydmFsdWVzIGJ5IGJ5cyBieXNvcnQgeGkgcXVpZXRseSBxdWkgY2FwdHVyZSBhYm91dCBhYyBhY183IGFjcHJwbG90IGFjcHJwbG90XzcgYWRqdXN0IGFkbyBhZG9wYXRoIGFkb3VwZGF0ZSBhbHBoYSBhbWVhbnMgYW4gYW5vIGFub3YgYW5vdmEgYW5vdmFfZXN0YXQgYW5vdmFfdGVybXMgYW5vdmFkZWYgYW9yZGVyIGFwIGFwcCBhcHBlIGFwcGVuIGFwcGVuZCBhcmNoIGFyY2hfZHIgYXJjaF9lc3RhdCBhcmNoX3AgYXJjaGxtIGFyZWcgYXJlZ19wIGFyZ3MgYXJpbWEgYXJpbWFfZHIgYXJpbWFfZXN0YXQgYXJpbWFfcCBhcyBhc21wcm9iaXQgYXNtcHJvYml0X2VzdGF0IGFzbXByb2JpdF9sZiBhc21wcm9iaXRfbWZ4X19kbGcgYXNtcHJvYml0X3AgYXNzIGFzc2UgYXNzZXIgYXNzZXJ0IGF2cGxvdCBhdnBsb3RfNyBhdnBsb3RzIGF2cGxvdHNfNyBiY3NrZXcwIGJnb2RmcmV5IGJpYXMgYmlucmVnIGJpcDBfbGYgYmlwbG90IGJpcHBfbGYgYmlwcl9sZiBiaXByX3AgYmlwcm9iaXQgYml0ZXN0IGJpdGVzdGkgYml0b3d0IGJsb2dpdCBibWVtc2l6ZSBib290IGJvb3RzYW1wIGJvb3RzdHJhcCBib290c3RyYXBfOCBib3hjb19sIGJveGNvX3AgYm94Y294IGJveGNveF82IGJveGNveF9wIGJwcm9iaXQgYnIgYnJlYWsgYnJpZXIgYnJvIGJyb3cgYnJvd3MgYnJvd3NlIGJyciBicnJzdGF0IGJzIGJzXzcgYnNhbXBsX3cgYnNhbXBsZSBic2FtcGxlXzcgYnNxcmVnIGJzdGF0IGJzdGF0XzcgYnN0YXRfOCBic3RyYXAgYnN0cmFwXzcgYnViYmxlIGJ1YmJsZXBsb3QgY2EgY2FfZXN0YXQgY2FfcCBjYWJpcGxvdCBjYW1hdCBjYW5vbiBjYW5vbl84IGNhbm9uXzhfcCBjYW5vbl9lc3RhdCBjYW5vbl9wIGNhcCBjYXByb2plY3Rpb24gY2FwdCBjYXB0dSBjYXB0dXIgY2FwdHVyZSBjYXQgY2MgY2NoYXJ0IGNjaGFydF83IGNjaSBjZCBjZW5zb2JzX3RhYmxlIGNlbnRpbGUgY2YgY2hhciBjaGRpciBjaGVja2RsZ2ZpbGVzIGNoZWNrZXN0aW1hdGlvbnNhbXBsZSBjaGVja2hscGZpbGVzIGNoZWNrc3VtIGNoZWxwIGNpIGNpaSBjbCBjbGFzcyBjbGFzc3V0aWwgY2xlYXIgY2xpIGNsaXMgY2xpc3QgY2xvIGNsb2cgY2xvZ19sZiBjbG9nX3AgY2xvZ2kgY2xvZ2lfc3cgY2xvZ2l0IGNsb2dpdF9sZiBjbG9naXRfcCBjbG9naXRwIGNsb2dsX3N3IGNsb2dsb2cgY2xvbmV2YXIgY2xzbGlzdGFycmF5IGNsdXN0ZXIgY2x1c3Rlcl9tZWFzdXJlcyBjbHVzdGVyX3N0b3AgY2x1c3Rlcl90cmVlIGNsdXN0ZXJfdHJlZV84IGNsdXN0ZXJtYXQgY21kbG9nIGNuciBjbnJlIGNucmVnIGNucmVnX3AgY25yZWdfc3cgY25zcmVnIGNvZGVib29rIGNvbGxhcHM0IGNvbGxhcHNlIGNvbG9ybXVsdF9uYiBjb2xvcm11bHRfbncgY29tcGFyZSBjb21wcmVzcyBjb25mIGNvbmZpIGNvbmZpciBjb25maXJtIGNvbnJlbiBjb25zIGNvbnN0IGNvbnN0ciBjb25zdHJhIGNvbnN0cmFpIGNvbnN0cmFpbiBjb25zdHJhaW50IGNvbnRpbnVlIGNvbnRyYWN0IGNvcHkgY29weXJpZ2h0IGNvcHlzb3VyY2UgY29yIGNvcmMgY29yciBjb3JyMmRhdGEgY29ycl9hbnRpIGNvcnJfa21vIGNvcnJfc21jIGNvcnJlIGNvcnJlbCBjb3JyZWxhIGNvcnJlbGF0IGNvcnJlbGF0ZSBjb3JyZ3JhbSBjb3UgY291biBjb3VudCBjb3ggY294X3AgY294X3N3IGNveGJhc2UgY294aGF6IGNveHZhciBjcHJwbG90IGNwcnBsb3RfNyBjcmMgY3JldCBjcmV0dSBjcmV0dXIgY3JldHVybiBjcm9zcyBjcyBjc2NyaXB0IGNzY3JpcHRfbG9nIGNzaSBjdCBjdF9pcyBjdHNldCBjdHN0XzUgY3RzdF9zdCBjdHRvc3QgY3Vtc3AgY3Vtc3BfNyBjdW11bCBjdXN1bSBjdXN1bV83IGN1dGlsIGR8MCBkYXRhc2lnIGRhdGFzaWduIGRhdGFzaWduYSBkYXRhc2lnbmF0IGRhdGFzaWduYXR1IGRhdGFzaWduYXR1ciBkYXRhc2lnbmF0dXJlIGRhdGV0b2YgZGIgZGJldGEgZGUgZGVjIGRlY28gZGVjb2QgZGVjb2RlIGRlZmYgZGVzIGRlc2MgZGVzY3IgZGVzY3JpIGRlc2NyaWIgZGVzY3JpYmUgZGVzdHJpbmcgZGZiZXRhIGRmZ2xzIGRmdWxsZXIgZGkgZGlfZyBkaXIgZGlyc3RhdHMgZGlzIGRpc2NhcmQgZGlzcCBkaXNwX3JlcyBkaXNwX3MgZGlzcGwgZGlzcGxhIGRpc3BsYXkgZGlzdGluY3QgZG8gZG9lIGRvZWQgZG9lZGkgZG9lZGl0IGRvdHBsb3QgZG90cGxvdF83IGRwcm9iaXQgZHJhd25vcm0gZHJvcCBkcyBkc191dGlsIGRzdGRpemUgZHVwbGljYXRlcyBkdXJiaW5hIGR3c3RhdCBkeWR4IGV8MCBlZCBlZGkgZWRpdCBlZ2VuIGVpdnJlZyBlbWRlZiBlbiBlbmMgZW5jbyBlbmNvZCBlbmNvZGUgZXEgZXJhc2UgZXJlZyBlcmVnX2xmIGVyZWdfcCBlcmVnX3N3IGVyZWdoZXQgZXJlZ2hldF9nbGYgZXJlZ2hldF9nbGZfc2ggZXJlZ2hldF9ncCBlcmVnaGV0X2lsZiBlcmVnaGV0X2lsZl9zaCBlcmVnaGV0X2lwIGVyZXQgZXJldHUgZXJldHVyIGVyZXR1cm4gZXJyIGVycm8gZXJyb3IgZXNpemUgZXN0IGVzdF9jZmV4aXN0IGVzdF9jZm5hbWUgZXN0X2NsaWNrYWJsZSBlc3RfZXhwYW5kIGVzdF9ob2xkIGVzdF90YWJsZSBlc3RfdW5ob2xkIGVzdF91bmhvbGRvayBlc3RhdCBlc3RhdF9kZWZhdWx0IGVzdGF0X3N1bW0gZXN0YXRfdmNlX29ubHkgZXN0aSBlc3RpbWF0ZXMgZXRvZG93IGV0b2YgZXRvbWR5IGV4IGV4aSBleGl0IGV4cGFuZCBleHBhbmRjbCBmYWMgZmFjdCBmYWN0byBmYWN0b3IgZmFjdG9yX2VzdGF0IGZhY3Rvcl9wIGZhY3Rvcl9wY2Ffcm90YXRlZCBmYWN0b3Jfcm90YXRlIGZhY3Rvcm1hdCBmY2FzdCBmY2FzdF9jb21wdXRlIGZjYXN0X2dyYXBoIGZkYWRlcyBmZGFkZXNjIGZkYWRlc2NyIGZkYWRlc2NyaSBmZGFkZXNjcmliIGZkYWRlc2NyaWJlIGZkYXNhdiBmZGFzYXZlIGZkYXVzZSBmaF9zdCBmaWxlIG9wZW4gZmlsZSByZWFkIGZpbGUgY2xvc2UgZmlsZSBmaWxlZmlsdGVyIGZpbGxpbiBmaW5kX2hscF9maWxlIGZpbmRmaWxlIGZpbmRpdCBmaW5kaXRfNyBmaXQgZmwgZmxpIGZsaXMgZmxpc3QgZm9yNV8wIGZvcmVzdCBmb3Jlc3RwbG90IGZvcm0gZm9ybWEgZm9ybWF0IGZwcmVkaWN0IGZyYWNfMTU0IGZyYWNfYWRqIGZyYWNfY2hrIGZyYWNfY294IGZyYWNfZGRwIGZyYWNfZGlzIGZyYWNfZHYgZnJhY19pbiBmcmFjX211biBmcmFjX3BwIGZyYWNfcHEgZnJhY19wdiBmcmFjX3dndCBmcmFjX3hvIGZyYWNnZW4gZnJhY3Bsb3QgZnJhY3Bsb3RfNyBmcmFjcG9seSBmcmFjcHJlZCBmcm9uX2V4IGZyb25faG4gZnJvbl9wIGZyb25fdG4gZnJvbl90bjIgZnJvbnRpZXIgZnRvZGF0ZSBmdG9lIGZ0b21keSBmdG93ZGF0ZSBmdW5uZWwgZnVubmVscGxvdCBnfDAgZ2FtaGV0X2dsZiBnYW1oZXRfZ3AgZ2FtaGV0X2lsZiBnYW1oZXRfaXAgZ2FtbWEgZ2FtbWFfZDIgZ2FtbWFfcCBnYW1tYV9zdyBnYW1tYWhldCBnZGlfaGV4YWdvbiBnZGlfc3Bva2VzIGdlIGdlbiBnZW5lIGdlbmVyIGdlbmVyYSBnZW5lcmF0IGdlbmVyYXRlIGdlbnJhbmsgZ2Vuc3RkIGdlbnZtZWFuIGdldHRva2VuIGdsIGdsYWRkZXIgZ2xhZGRlcl83IGdsaW1fbDAxIGdsaW1fbDAyIGdsaW1fbDAzIGdsaW1fbDA0IGdsaW1fbDA1IGdsaW1fbDA2IGdsaW1fbDA3IGdsaW1fbDA4IGdsaW1fbDA5IGdsaW1fbDEwIGdsaW1fbDExIGdsaW1fbDEyIGdsaW1fbGYgZ2xpbV9tdSBnbGltX253MSBnbGltX253MiBnbGltX253MyBnbGltX3AgZ2xpbV92MSBnbGltX3YyIGdsaW1fdjMgZ2xpbV92NCBnbGltX3Y1IGdsaW1fdjYgZ2xpbV92NyBnbG0gZ2xtXzYgZ2xtX3AgZ2xtX3N3IGdsbXByZWQgZ2xvIGdsb2IgZ2xvYmEgZ2xvYmFsIGdsb2dpdCBnbG9naXRfOCBnbG9naXRfcCBnbWVhbnMgZ25icmVfbGYgZ25icmVnIGduYnJlZ181IGduYnJlZ19wIGdvbXBfbGYgZ29tcGVfc3cgZ29tcGVyX3AgZ29tcGVydHogZ29tcGVydHpoZXQgZ29tcGhldF9nbGYgZ29tcGhldF9nbGZfc2ggZ29tcGhldF9ncCBnb21waGV0X2lsZiBnb21waGV0X2lsZl9zaCBnb21waGV0X2lwIGdwaGRvdCBncGhwZW4gZ3BocHJpbnQgZ3ByZWZzIGdwcm9iaV9wIGdwcm9iaXQgZ3Byb2JpdF84IGdyIGdyNyBncl9jb3B5IGdyX2N1cnJlbnQgZ3JfZGIgZ3JfZGVzY3JpYmUgZ3JfZGlyIGdyX2RyYXcgZ3JfZHJhd19yZXBsYXkgZ3JfZHJvcCBncl9lZGl0IGdyX2VkaXR2aWV3b3B0cyBncl9leGFtcGxlIGdyX2V4YW1wbGUyIGdyX2V4cG9ydCBncl9wcmludCBncl9xc2NoZW1lIGdyX3F1ZXJ5IGdyX3JlYWQgZ3JfcmVuYW1lIGdyX3JlcGxheSBncl9zYXZlIGdyX3NldCBncl9zZXRzY2hlbWUgZ3JfdGFibGUgZ3JfdW5kbyBncl91c2UgZ3JhcGggZ3JhcGg3IGdyZWJhciBncmVpZ2VuIGdyZWlnZW5fNyBncmVpZ2VuXzggZ3JtZWFuYnkgZ3JtZWFuYnlfNyBnc19maWxlaW5mbyBnc19maWxldHlwZSBnc19ncmFwaGluZm8gZ3Nfc3RhdCBnc29ydCBnd29vZCBofDAgaGFkaW12byBoYXJlZyBoYXVzbWFuIGhhdmVyIGhlIGhlY2tfZDIgaGVja21hX3AgaGVja21hbiBoZWNrcF9sZiBoZWNrcHJfcCBoZWNrcHJvYiBoZWwgaGVscCBoZXJlZyBoZXRwcl9sZiBoZXRwcl9wIGhldHByb2IgaGV0dGVzdCBoZXhkdW1wIGhpbGl0ZSBoaXN0IGhpc3RfNyBoaXN0b2dyYW0gaGxvZ2l0IGhsdSBobWVhbnMgaG90ZWwgaG90ZWxsaW5nIGhwcm9iaXQgaHJlZyBoc2VhcmNoIGljZDkgaWNkOV9mZiBpY2Q5cCBpaXMgaW1wdXRlIGltdGVzdCBpbmJhc2UgaW5jbHVkZSBpbmYgaW5maSBpbmZpbCBpbmZpbGUgaW5maXggaW5wIGlucHUgaW5wdXQgaW5zIGluc2hlZXQgaW5zcCBpbnNwZSBpbnNwZWMgaW5zcGVjdCBpbnRlZyBpbnRlbiBpbnRyZWcgaW50cmVnXzcgaW50cmVnX3AgaW50cmcyX2xsIGludHJnX2xsIGludHJnX2xsMiBpcG9sYXRlIGlxcmVnIGlyIGlyZiBpcmZfY3JlYXRlIGlyZm0gaXJpIGlzX3N2eSBpc19zdnlzdW0gaXNpZCBpc3RkaXplIGl2cHJvYl8xX2xmIGl2cHJvYl9sZiBpdnByb2JpdCBpdnByb2JpdF9wIGl2cmVnIGl2cmVnX2Zvb3Rub3RlIGl2dG9iXzFfbGYgaXZ0b2JfbGYgaXZ0b2JpdCBpdnRvYml0X3AgamFja2tuaWZlIGphY2tuaWZlIGprbmlmZSBqa25pZmVfNiBqa25pZmVfOCBqa3N0YXQgam9pbmJ5IGthbGFybWExIGthcCBrYXBfMyBrYXBtZWllciBrYXBwYSBrYXB3Z3Qga2RlbnNpdHkga2RlbnNpdHlfNyBrZWVwIGtzbSBrc21pcm5vdiBrdGF1IGt3YWxsaXMgbHwwIGxhIGxhYiBsYWJiZSBsYWJiZXBsb3QgbGFiZSBsYWJlbCBsYWJlbGJvb2sgbGFkZGVyIGxldmVscyBsZXZlbHNvZiBsZXZlcmFnZSBsZml0IGxmaXRfcCBsaSBsaW5jb20gbGluZSBsaW5rdGVzdCBsaXMgbGlzdCBsbG9naGV0X2dsZiBsbG9naGV0X2dsZl9zaCBsbG9naGV0X2dwIGxsb2doZXRfaWxmIGxsb2doZXRfaWxmX3NoIGxsb2doZXRfaXAgbGxvZ2lfc3cgbGxvZ2lzX3AgbGxvZ2lzdCBsbG9naXN0aWMgbGxvZ2lzdGljaGV0IGxub3JtX2xmIGxub3JtX3N3IGxub3JtYV9wIGxub3JtYWwgbG5vcm1hbGhldCBsbm9ybWhldF9nbGYgbG5vcm1oZXRfZ2xmX3NoIGxub3JtaGV0X2dwIGxub3JtaGV0X2lsZiBsbm9ybWhldF9pbGZfc2ggbG5vcm1oZXRfaXAgbG5za2V3MCBsb2FkaW5ncGxvdCBsb2MgbG9jYSBsb2NhbCBsb2cgbG9naSBsb2dpc19sZiBsb2dpc3RpYyBsb2dpc3RpY19wIGxvZ2l0IGxvZ2l0X2VzdGF0IGxvZ2l0X3AgbG9nbG9ncyBsb2dyYW5rIGxvbmV3YXkgbG9va2ZvciBsb29rdXAgbG93ZXNzIGxvd2Vzc183IGxwcmVkaWN0IGxyZWNvbXAgbHJvYyBscm9jXzcgbHJ0ZXN0IGxzIGxzZW5zIGxzZW5zXzcgbHNlbnNfeCBsc3RhdCBsdGFibGUgbHRhYmxlXzcgbHRyaWFuZyBsdiBsdnIycGxvdCBsdnIycGxvdF83IG18MCBtYSBtYWMgbWFjciBtYWNybyBtYWtlY25zIG1hbiBtYW5vdmEgbWFub3ZhX2VzdGF0IG1hbm92YV9wIG1hbm92YXRlc3QgbWFudGVsIG1hcmsgbWFya2luIG1hcmtvdXQgbWFya3NhbXBsZSBtYXQgbWF0X2NhcHAgbWF0X29yZGVyIG1hdF9wdXRfcnIgbWF0X3JhcHAgbWF0YSBtYXRhX2NsZWFyIG1hdGFfZGVzY3JpYmUgbWF0YV9kcm9wIG1hdGFfbWF0ZGVzY3JpYmUgbWF0YV9tYXRzYXZlIG1hdGFfbWF0dXNlIG1hdGFfbWVtb3J5IG1hdGFfbWxpYiBtYXRhX21vc2F2ZSBtYXRhX3JlbmFtZSBtYXRhX3doaWNoIG1hdGFsYWJlbCBtYXRjcHJvYyBtYXRsaXN0IG1hdG5hbWUgbWF0ciBtYXRyaSBtYXRyaXggbWF0cml4X2lucHV0X19kbGcgbWF0c3RyaWsgbWNjIG1jY2kgbWQwXyBtZDFfIG1kMWRlYnVnXyBtZDJfIG1kMmRlYnVnXyBtZHMgbWRzX2VzdGF0IG1kc19wIG1kc2NvbmZpZyBtZHNsb25nIG1kc21hdCBtZHNzaGVwYXJkIG1keXRvZSBtZHl0b2YgbWVfZGVyZCBtZWFuIG1lYW5zIG1lZGlhbiBtZW1vcnkgbWVtc2l6ZSBtZW5sIG1lcXBhcnNlIG1lciBtZXJnIG1lcmdlIG1ldGEgbWZwIG1meCBtaGVscCBtaG9kZHMgbWluYm91bmQgbWl4ZWRfbGwgbWl4ZWRfbGxfcmVwYXJtIG1rYXNzZXJ0IG1rZGlyIG1rbWF0IG1rc3BsaW5lIG1sIG1sXzUgbWxfYWRqcyBtbF9iaGhocyBtbF9jX2QgbWxfY2hlY2sgbWxfY2xlYXIgbWxfY250IG1sX2RlYnVnIG1sX2RlZmQgbWxfZTAgbWxfZTBfYmZncyBtbF9lMF9jeWNsZSBtbF9lMF9kZnAgbWxfZTBpIG1sX2UxIG1sX2UxX2JmZ3MgbWxfZTFfYmhoaCBtbF9lMV9jeWNsZSBtbF9lMV9kZnAgbWxfZTIgbWxfZTJfY3ljbGUgbWxfZWJmZzAgbWxfZWJmcjAgbWxfZWJmcjEgbWxfZWJoMHEgbWxfZWJoaDAgbWxfZWJocjAgbWxfZWJyMGkgbWxfZWNyMGkgbWxfZWRmcDAgbWxfZWRmcjAgbWxfZWRmcjEgbWxfZWRyMGkgbWxfZWRzIG1sX2VlcjBpIG1sX2VncjBpIG1sX2VsZiBtbF9lbGZfYmZncyBtbF9lbGZfYmhoaCBtbF9lbGZfY3ljbGUgbWxfZWxmX2RmcCBtbF9lbGZpIG1sX2VsZnMgbWxfZW5yMGkgbWxfZW5ycjAgbWxfZXJkdTAgbWxfZXJkdTBfYmZncyBtbF9lcmR1MF9iaGhoIG1sX2VyZHUwX2JoaGhxIG1sX2VyZHUwX2N5Y2xlIG1sX2VyZHUwX2RmcCBtbF9lcmR1MF9ucmJmZ3MgbWxfZXhkZSBtbF9mb290bm90ZSBtbF9nZXFuciBtbF9ncmFkMCBtbF9ncmFwaCBtbF9oYmhoaCBtbF9oZDAgbWxfaG9sZCBtbF9pbml0IG1sX2ludiBtbF9sb2cgbWxfbWF4IG1sX21sb3V0IG1sX21sb3V0XzggbWxfbW9kZWwgbWxfbmIwIG1sX29wdCBtbF9wIG1sX3Bsb3QgbWxfcXVlcnkgbWxfcmRncmQgbWxfcmVwb3IgbWxfc19lIG1sX3Njb3JlIG1sX3NlYXJjIG1sX3RlY2huaXF1ZSBtbF91bmhvbGQgbWxldmFsIG1sZl8gbWxtYXRieXN1bSBtbG1hdHN1bSBtbG9nIG1sb2dpIG1sb2dpdCBtbG9naXRfZm9vdG5vdGUgbWxvZ2l0X3AgbWxvcHRzIG1sc3VtIG1sdmVjc3VtIG1ubDBfIG1vciBtb3JlIG1vdiBtb3ZlIG1wcm9iaXQgbXByb2JpdF9sZiBtcHJvYml0X3AgbXJkdTBfIG1yZHUxXyBtdmRlY29kZSBtdmVuY29kZSBtdnJlZyBtdnJlZ19lc3RhdCBufDAgbmJyZWcgbmJyZWdfYWwgbmJyZWdfbGYgbmJyZWdfcCBuYnJlZ19zdyBuZXN0cmVnIG5ldCBuZXdleSBuZXdleV83IG5ld2V5X3AgbmV3cyBubCBubF83IG5sXzkgbmxfOV9wIG5sX3AgbmxfcF83IG5sY29tIG5sY29tX3AgbmxleHAyIG5sZXhwMl83IG5sZXhwMmEgbmxleHAyYV83IG5sZXhwMyBubGV4cDNfNyBubGdvbTMgbmxnb20zXzcgbmxnb200IG5sZ29tNF83IG5saW5pdCBubGxvZzMgbmxsb2czXzcgbmxsb2c0IG5sbG9nNF83IG5sb2dfcmQgbmxvZ2l0IG5sb2dpdF9wIG5sb2dpdGdlbiBubG9naXR0cmVlIG5scHJlZCBubyBub2JyZWFrIG5vaSBub2lzIG5vaXNpIG5vaXNpbCBub2lzaWx5IG5vdGUgbm90ZXMgbm90ZXNfZGxnIG5wdHJlbmQgbnVtbGFiZWwgbnVtbGlzdCBvZGJjIG9sZF92ZXIgb2xvIG9sb2cgb2xvZ2kgb2xvZ2lfc3cgb2xvZ2l0IG9sb2dpdF9wIG9sb2dpdHAgb24gb25lIG9uZXcgb25ld2Egb25ld2F5IG9wX2NvbG5tIG9wX2NvbXAgb3BfZGlmZiBvcF9pbnYgb3Bfc3RyIG9wciBvcHJvIG9wcm9iIG9wcm9iX3N3IG9wcm9iaSBvcHJvYmlfcCBvcHJvYml0IG9wcm9iaXRwIG9wdHNfZXhjbHVzaXZlIG9yZGVyIG9ydGhvZyBvcnRocG9seSBvdSBvdXQgb3V0ZiBvdXRmaSBvdXRmaWwgb3V0ZmlsZSBvdXRzIG91dHNoIG91dHNoZSBvdXRzaGVlIG91dHNoZWV0IG92dGVzdCBwYWMgcGFjXzcgcGFsZXR0ZSBwYXJzZSBwYXJzZV9kaXNzaW0gcGF1c2UgcGNhIHBjYV84IHBjYV9kaXNwbGF5IHBjYV9lc3RhdCBwY2FfcCBwY2Ffcm90YXRlIHBjYW1hdCBwY2hhcnQgcGNoYXJ0XzcgcGNoaSBwY2hpXzcgcGNvcnIgcGN0aWxlIHBlbnRpdW0gcGVyZ3JhbSBwZXJncmFtXzcgcGVybXV0ZSBwZXJtdXRlXzggcGVyc29uYWwgcGV0b19zdCBwa2NvbGxhcHNlIHBrY3Jvc3MgcGtlcXVpdiBwa2V4YW1pbmUgcGtleGFtaW5lXzcgcGtzaGFwZSBwa3N1bW0gcGtzdW1tXzcgcGwgcGxvIHBsb3QgcGx1Z2luIHBub3JtIHBub3JtXzcgcG9pc2dvZiBwb2lzc19sZiBwb2lzc19zdyBwb2lzc29fcCBwb2lzc29uIHBvaXNzb25fZXN0YXQgcG9zdCBwb3N0Y2xvc2UgcG9zdGZpbGUgcG9zdHV0aWwgcHBlcnJvbiBwciBwcmFpcyBwcmFpc19lIHByYWlzX2UyIHByYWlzX3AgcHJlZGljdCBwcmVkaWN0bmwgcHJlc2VydmUgcHJpbnQgcHJvIHByb2IgcHJvYmkgcHJvYml0IHByb2JpdF9lc3RhdCBwcm9iaXRfcCBwcm9jX3RpbWUgcHJvY292ZXJsYXkgcHJvY3J1c3RlcyBwcm9jcnVzdGVzX2VzdGF0IHByb2NydXN0ZXNfcCBwcm9maWxlciBwcm9nIHByb2dyIHByb2dyYSBwcm9ncmFtIHByb3AgcHJvcG9ydGlvbiBwcnRlc3QgcHJ0ZXN0aSBwd2NvcnIgcHdkIHFcXFxccyBxYnkgcWJ5cyBxY2hpIHFjaGlfNyBxbGFkZGVyIHFsYWRkZXJfNyBxbm9ybSBxbm9ybV83IHFxcGxvdCBxcXBsb3RfNyBxcmVnIHFyZWdfYyBxcmVnX3AgcXJlZ19zdyBxdSBxdWFkY2hrIHF1YW50aWxlIHF1YW50aWxlXzcgcXVlIHF1ZXIgcXVlcnkgcmFuZ2UgcmFua3N1bSByYXRpbyByY2hhcnQgcmNoYXJ0XzcgcmNvZiByZWNhc3QgcmVjbGluayByZWNvZGUgcmVnIHJlZzMgcmVnM19wIHJlZ2R3IHJlZ3IgcmVncmUgcmVncmVfcDIgcmVncmVzIHJlZ3Jlc19wIHJlZ3Jlc3MgcmVncmVzc19lc3RhdCByZWdyaXZfcCByZW1hcCByZW4gcmVuYSByZW5hbSByZW5hbWUgcmVucGZpeCByZXBlYXQgcmVwbGFjZSByZXBvcnQgcmVzaGFwZSByZXN0b3JlIHJldCByZXR1IHJldHVyIHJldHVybiBybSBybWRpciByb2J2YXIgcm9jY29tcCByb2Njb21wXzcgcm9jY29tcF84IHJvY2ZfbGYgcm9jZml0IHJvY2ZpdF84IHJvY2dvbGQgcm9jcGxvdCByb2NwbG90Xzcgcm9jdGFiIHJvY3RhYl83IHJvbGxpbmcgcm9sb2dpdCByb2xvZ2l0X3Agcm90IHJvdGEgcm90YXQgcm90YXRlIHJvdGF0ZW1hdCBycmVnIHJyZWdfcCBydSBydW4gcnVudGVzdCBydmZwbG90IHJ2ZnBsb3RfNyBydnBwbG90IHJ2cHBsb3RfNyBzYSBzYWZlc3VtIHNhbXBsZSBzYW1wc2kgc2F2IHNhdmUgc2F2ZWRyZXN1bHRzIHNhdmVvbGQgc2Mgc2NhIHNjYWwgc2NhbGEgc2NhbGFyIHNjYXR0ZXIgc2NtX21pbmUgc2NvIHNjb2JfbGYgc2NvYl9wIHNjb2JpX3N3IHNjb2JpdCBzY29yIHNjb3JlIHNjb3JlcGxvdCBzY29yZXBsb3RfaGVscCBzY3JlZSBzY3JlZXBsb3Qgc2NyZWVwbG90X2hlbHAgc2R0ZXN0IHNkdGVzdGkgc2Ugc2VhcmNoIHNlcGFyYXRlIHNlcGVyYXRlIHNlcnJiYXIgc2VycmJhcl83IHNlcnNldCBzZXQgc2V0X2RlZmF1bHRzIHNmcmFuY2lhIHNoIHNoZSBzaGVsIHNoZWxsIHNoZXdoYXJ0IHNoZXdoYXJ0Xzcgc2lnbmVzdGltYXRpb25zYW1wbGUgc2lnbnJhbmsgc2lnbnRlc3Qgc2ltdWwgc2ltdWxfNyBzaW11bGF0ZSBzaW11bGF0ZV84IHNrdGVzdCBzbGVlcCBzbG9naXQgc2xvZ2l0X2QyIHNsb2dpdF9wIHNtb290aCBzbmFwc3BhbiBzbyBzb3Igc29ydCBzcGVhcm1hbiBzcGlrZXBsb3Qgc3Bpa2VwbG90Xzcgc3Bpa2VwbHQgc3BsaW5lX3ggc3BsaXQgc3FyZWcgc3FyZWdfcCBzcmV0IHNyZXR1IHNyZXR1ciBzcmV0dXJuIHNzYyBzdCBzdF9jdCBzdF9oYyBzdF9oY2Qgc3RfaGNkX3NoIHN0X2lzIHN0X2lzc3lzIHN0X25vdGUgc3RfcHJvbW8gc3Rfc2V0IHN0X3Nob3cgc3Rfc21wbCBzdF9zdWJpZCBzdGFjayBzdGF0c2J5IHN0YXRzYnlfOCBzdGJhc2Ugc3RjaSBzdGNpXzcgc3Rjb3ggc3Rjb3hfZXN0YXQgc3Rjb3hfZnIgc3Rjb3hfZnJfbGwgc3Rjb3hfcCBzdGNveF9zdyBzdGNveGttIHN0Y294a21fNyBzdGNzdGF0IHN0Y3VydiBzdGN1cnZlIHN0Y3VydmVfNyBzdGRlcyBzdGVtIHN0ZXB3aXNlIHN0ZXJlZyBzdGZpbGwgc3RnZW4gc3RpciBzdGpvaW4gc3RtYyBzdG1oIHN0cGhwbG90IHN0cGhwbG90Xzcgc3RwaHRlc3Qgc3RwaHRlc3RfNyBzdHB0aW1lIHN0cmF0ZSBzdHJhdGVfNyBzdHJlZyBzdHJlZ19zdyBzdHJlc2V0IHN0cyBzdHNfNyBzdHNldCBzdHNwbGl0IHN0c3VtIHN0dG9jYyBzdHRvY3Qgc3R2YXJ5IHN0d2VpYiBzdSBzdWVzdCBzdWVzdF84IHN1bSBzdW1tIHN1bW1hIHN1bW1hciBzdW1tYXJpIHN1bW1hcml6IHN1bW1hcml6ZSBzdW5mbG93ZXIgc3VyZWcgc3VydmN1cnYgc3VydnN1bSBzdmFyIHN2YXJfcCBzdm1hdCBzdnkgc3Z5X2Rpc3Agc3Z5X2RyZWcgc3Z5X2VzdCBzdnlfZXN0Xzcgc3Z5X2VzdGF0IHN2eV9nZXQgc3Z5X2duYnJlZ19wIHN2eV9oZWFkIHN2eV9oZWFkZXIgc3Z5X2hlY2ttYW5fcCBzdnlfaGVja3Byb2JfcCBzdnlfaW50cmVnX3Agc3Z5X2l2cmVnX3Agc3Z5X2xvZ2lzdGljX3Agc3Z5X2xvZ2l0X3Agc3Z5X21sb2dpdF9wIHN2eV9uYnJlZ19wIHN2eV9vbG9naXRfcCBzdnlfb3Byb2JpdF9wIHN2eV9wb2lzc29uX3Agc3Z5X3Byb2JpdF9wIHN2eV9yZWdyZXNzX3Agc3Z5X3N1YiBzdnlfc3ViXzcgc3Z5X3ggc3Z5X3hfNyBzdnlfeF9wIHN2eWRlcyBzdnlkZXNfOCBzdnlnZW4gc3Z5Z25icmVnIHN2eWhlY2ttYW4gc3Z5aGVja3Byb2Igc3Z5aW50cmVnIHN2eWludHJlZ183IHN2eWludHJnIHN2eWl2cmVnIHN2eWxjIHN2eWxvZ19wIHN2eWxvZ2l0IHN2eW1hcmtvdXQgc3Z5bWFya291dF84IHN2eW1lYW4gc3Z5bWxvZyBzdnltbG9naXQgc3Z5bmJyZWcgc3Z5b2xvZyBzdnlvbG9naXQgc3Z5b3Byb2Igc3Z5b3Byb2JpdCBzdnlvcHRzIHN2eXBvaXMgc3Z5cG9pc183IHN2eXBvaXNzb24gc3Z5cHJvYml0IHN2eXByb2J0IHN2eXByb3Agc3Z5cHJvcF83IHN2eXJhdGlvIHN2eXJlZyBzdnlyZWdfcCBzdnlyZWdyZXNzIHN2eXNldCBzdnlzZXRfNyBzdnlzZXRfOCBzdnl0YWIgc3Z5dGFiXzcgc3Z5dGVzdCBzdnl0b3RhbCBzdyBzd184IHN3Y25yZWcgc3djb3ggc3dlcmVnIHN3aWxrIHN3bG9naXMgc3dsb2dpdCBzd29sb2dpdCBzd29wcmJ0IHN3cG9pcyBzd3Byb2JpdCBzd3FyZWcgc3d0b2JpdCBzd3dlaWIgc3ltbWV0cnkgc3ltbWkgc3ltcGxvdCBzeW1wbG90Xzcgc3ludGF4IHN5c2Rlc2NyaWJlIHN5c2RpciBzeXN1c2Ugc3pyb2V0ZXIgdGEgdGFiIHRhYjEgdGFiMiB0YWJfb3IgdGFiZCB0YWJkaSB0YWJkaXMgdGFiZGlzcCB0YWJpIHRhYmxlIHRhYm9kZHMgdGFib2Rkc183IHRhYnN0YXQgdGFidSB0YWJ1bCB0YWJ1bGEgdGFidWxhdCB0YWJ1bGF0ZSB0ZSB0ZW1wZmlsZSB0ZW1wbmFtZSB0ZW1wdmFyIHRlcyB0ZXN0IHRlc3RubCB0ZXN0cGFybSB0ZXN0c3RkIHRldHJhY2hvcmljIHRpbWVfaXQgdGltZXIgdGlzIHRvYiB0b2JpIHRvYml0IHRvYml0X3AgdG9iaXRfc3cgdG9rZW4gdG9rZW5pIHRva2VuaXogdG9rZW5pemUgdG9zdHJpbmcgdG90YWwgdHJhbnNsYXRlIHRyYW5zbGF0b3IgdHJhbnNtYXAgdHJlYXRfbGwgdHJlYXRyX3AgdHJlYXRyZWcgdHJpbSB0cmltZmlsbCB0cm5iX2NvbnMgdHJuYl9tZWFuIHRycG9pc3NfZDIgdHJ1bmNfbGwgdHJ1bmNyX3AgdHJ1bmNyZWcgdHNhcHBlbmQgdHNldCB0c2ZpbGwgdHNsaW5lIHRzbGluZV9leCB0c3JlcG9ydCB0c3JldmFyIHRzcmxpbmUgdHNzZXQgdHNzbW9vdGggdHN1bmFiIHR0ZXN0IHR0ZXN0aSB0dXRfY2hrIHR1dF93YWl0IHR1dG9yaWFsIHR3IHR3YXJlX3N0IHR3byB0d293YXkgdHdvd2F5X19mcGZpdF9zZXJzZXQgdHdvd2F5X19mdW5jdGlvbl9nZW4gdHdvd2F5X19oaXN0b2dyYW1fZ2VuIHR3b3dheV9faXBvaW50X3NlcnNldCB0d293YXlfX2lwb2ludHNfc2Vyc2V0IHR3b3dheV9fa2RlbnNpdHlfZ2VuIHR3b3dheV9fbGZpdF9zZXJzZXQgdHdvd2F5X19ub3JtZ2VuX2dlbiB0d293YXlfX3BjaV9zZXJzZXQgdHdvd2F5X19xZml0X3NlcnNldCB0d293YXlfX3NjYXR0ZXJpX3NlcnNldCB0d293YXlfX3N1bmZsb3dlcl9nZW4gdHdvd2F5X2tzbV9zZXJzZXQgdHkgdHlwIHR5cGUgdHlwZW9mIHV8MCB1bmFiIHVuYWJicmV2IHVuYWJjbWQgdXBkYXRlIHVzIHVzZSB1c2VsYWJlbCB2YXIgdmFyX21rY29tcGFuaW9uIHZhcl9wIHZhcmJhc2ljIHZhcmZjYXN0IHZhcmdyYW5nZXIgdmFyaXJmIHZhcmlyZl9hZGQgdmFyaXJmX2NncmFwaCB2YXJpcmZfY3JlYXRlIHZhcmlyZl9jdGFibGUgdmFyaXJmX2Rlc2NyaWJlIHZhcmlyZl9kaXIgdmFyaXJmX2Ryb3AgdmFyaXJmX2VyYXNlIHZhcmlyZl9ncmFwaCB2YXJpcmZfb2dyYXBoIHZhcmlyZl9yZW5hbWUgdmFyaXJmX3NldCB2YXJpcmZfdGFibGUgdmFybGlzdCB2YXJsbWFyIHZhcm5vcm0gdmFyc29jIHZhcnN0YWJsZSB2YXJzdGFibGVfdyB2YXJzdGFibGVfdzIgdmFyd2xlIHZjZSB2ZWMgdmVjX2ZldmQgdmVjX21rcGhpIHZlY19wIHZlY19wX3cgdmVjaXJmX2NyZWF0ZSB2ZWNsbWFyIHZlY2xtYXJfdyB2ZWNub3JtIHZlY25vcm1fdyB2ZWNyYW5rIHZlY3N0YWJsZSB2ZXJpbnN0IHZlcnMgdmVyc2kgdmVyc2lvIHZlcnNpb24gdmlldyB2aWV3c291cmNlIHZpZiB2d2xzIHdkYXRldG9mIHdlYmRlc2NyaWJlIHdlYnNlZWsgd2VidXNlIHdlaWIxX2xmIHdlaWIyX2xmIHdlaWJfbGYgd2VpYl9sZjAgd2VpYmhldF9nbGYgd2VpYmhldF9nbGZfc2ggd2VpYmhldF9nbGZhIHdlaWJoZXRfZ2xmYV9zaCB3ZWliaGV0X2dwIHdlaWJoZXRfaWxmIHdlaWJoZXRfaWxmX3NoIHdlaWJoZXRfaWxmYSB3ZWliaGV0X2lsZmFfc2ggd2VpYmhldF9pcCB3ZWlidV9zdyB3ZWlidWxfcCB3ZWlidWxsIHdlaWJ1bGxfYyB3ZWlidWxsX3Mgd2VpYnVsbGhldCB3aCB3aGVscCB3aGkgd2hpY2ggd2hpbCB3aGlsZSB3aWxjX3N0IHdpbGNveG9uIHdpbiB3aW5kIHdpbmRvIHdpbmRvdyB3aW5leGVjIHdudGVzdGIgd250ZXN0Yl83IHdudGVzdHEgeGNoYXJ0IHhjaGFydF83IHhjb3JyIHhjb3JyXzcgeGkgeGlfNiB4bWxzYXYgeG1sc2F2ZSB4bWx1c2UgeHBvc2UgeHNoIHhzaGUgeHNoZWwgeHNoZWxsIHh0X2lpcyB4dF90aXMgeHRhYl9wIHh0YWJvbmQgeHRiaW5fcCB4dGNsb2cgeHRjbG9nbG9nIHh0Y2xvZ2xvZ184IHh0Y2xvZ2xvZ19kMiB4dGNsb2dsb2dfcGFfcCB4dGNsb2dsb2dfcmVfcCB4dGNudF9wIHh0Y29yciB4dGRhdGEgeHRkZXMgeHRmcm9udF9wIHh0ZnJvbnRpZXIgeHRnZWUgeHRnZWVfZWxpbmsgeHRnZWVfZXN0YXQgeHRnZWVfbWFrZWl2YXIgeHRnZWVfcCB4dGdlZV9wbGluayB4dGdscyB4dGdsc19wIHh0aGF1cyB4dGhhdXNtYW4geHRodF9wIHh0aHRheWxvciB4dGlsZSB4dGludF9wIHh0aW50cmVnIHh0aW50cmVnXzggeHRpbnRyZWdfZDIgeHRpbnRyZWdfcCB4dGl2cF8xIHh0aXZwXzIgeHRpdnJlZyB4dGxpbmUgeHRsaW5lX2V4IHh0bG9naXQgeHRsb2dpdF84IHh0bG9naXRfZDIgeHRsb2dpdF9mZV9wIHh0bG9naXRfcGFfcCB4dGxvZ2l0X3JlX3AgeHRtaXhlZCB4dG1peGVkX2VzdGF0IHh0bWl4ZWRfcCB4dG5iX2ZlIHh0bmJfbGYgeHRuYnJlZyB4dG5icmVnX3BhX3AgeHRuYnJlZ19yZWZlX3AgeHRwY3NlIHh0cGNzZV9wIHh0cG9pcyB4dHBvaXNzb24geHRwb2lzc29uX2QyIHh0cG9pc3Nvbl9wYV9wIHh0cG9pc3Nvbl9yZWZlX3AgeHRwcmVkIHh0cHJvYml0IHh0cHJvYml0XzggeHRwcm9iaXRfZDIgeHRwcm9iaXRfcmVfcCB4dHBzX2ZlIHh0cHNfbGYgeHRwc19yZW4geHRwc19yZW5fOCB4dHJhcl9wIHh0cmMgeHRyY19wIHh0cmNoaCB4dHJlZmVfcCB4dHJlZyB4dHJlZ19iZSB4dHJlZ19mZSB4dHJlZ19tbCB4dHJlZ19wYV9wIHh0cmVnX3JlIHh0cmVnYXIgeHRyZXJlX3AgeHRzZXQgeHRzZl9sbCB4dHNmX2xsdGkgeHRzdW0geHR0YWIgeHR0ZXN0MCB4dHRvYml0IHh0dG9iaXRfOCB4dHRvYml0X3AgeHR0cmFucyB5eCB5eHZpZXdfX2Jhcmxpa2VfZHJhdyB5eHZpZXdfYXJlYV9kcmF3IHl4dmlld19iYXJfZHJhdyB5eHZpZXdfZG90X2RyYXcgeXh2aWV3X2Ryb3BsaW5lX2RyYXcgeXh2aWV3X2Z1bmN0aW9uX2RyYXcgeXh2aWV3X2lhcnJvd19kcmF3IHl4dmlld19pbGFiZWxzX2RyYXcgeXh2aWV3X25vcm1hbF9kcmF3IHl4dmlld19wY2Fycm93X2RyYXcgeXh2aWV3X3BjYmFycm93X2RyYXcgeXh2aWV3X3BjY2Fwc3ltX2RyYXcgeXh2aWV3X3Bjc2NhdHRlcl9kcmF3IHl4dmlld19wY3NwaWtlX2RyYXcgeXh2aWV3X3JhcmVhX2RyYXcgeXh2aWV3X3JiYXJfZHJhdyB5eHZpZXdfcmJhcm1fZHJhdyB5eHZpZXdfcmNhcF9kcmF3IHl4dmlld19yY2Fwc3ltX2RyYXcgeXh2aWV3X3Jjb25uZWN0ZWRfZHJhdyB5eHZpZXdfcmxpbmVfZHJhdyB5eHZpZXdfcnNjYXR0ZXJfZHJhdyB5eHZpZXdfcnNwaWtlX2RyYXcgeXh2aWV3X3NwaWtlX2RyYXcgeXh2aWV3X3N1bmZsb3dlcl9kcmF3IHphcF9zIHppbmIgemluYl9sbGYgemluYl9wbGYgemlwIHppcF9sbGYgemlwX3AgemlwX3BsZiB6dF9jdF81IHp0X2hjXzUgenRfaGNkXzUgenRfaXNfNSB6dF9pc3NfNSB6dF9zaG9fNSB6dF9zbXBfNSB6dGJhc2VfNSB6dGNveF81IHp0ZGVzXzUgenRlcmVnXzUgenRmaWxsXzUgenRnZW5fNSB6dGlyXzUgenRqb2luXzUgenRuYiB6dG5iX3AgenRwIHp0cF9wIHp0c181IHp0c2V0XzUgenRzcGxpXzUgenRzdW1fNSB6dHRvY3RfNSB6dHZhcnlfNSB6dHdlaWJfNScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvYFthLXpBLVowLTlfXSsnL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xcJFxcez9bYS16QS1aMC05X10rXFx9Py9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnYFwiW15cXHJcXG5dKj9cIlxcJyd9LFxuICAgICAgICAgIHtiZWdpbjogJ1wiW15cXHJcXG5cIl0qXCInfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKGFic3xhY29zfGFzaW58YXRhbnxhdGFuMnxhdGFuaHxjZWlsfGNsb2dsb2d8Y29tYnxjb3N8ZGlnYW1tYXxleHB8Zmxvb3J8aW52Y2xvZ2xvZ3xpbnZsb2dpdHxsbnxsbmZhY3R8bG5mYWN0b3JpYWx8bG5nYW1tYXxsb2d8bG9nMTB8bWF4fG1pbnxtb2R8cmVsZGlmfHJvdW5kfHNpZ258c2lufHNxcnR8c3VtfHRhbnx0YW5ofHRyaWdhbW1hfHRydW5jfGJldGFkZW58Qmlub21pYWx8Ymlub3JtfGJpbm9ybWFsfGNoaTJ8Y2hpMnRhaWx8ZGdhbW1hcGRhfGRnYW1tYXBkYWRhfGRnYW1tYXBkYWR4fGRnYW1tYXBkeHxkZ2FtbWFwZHhkeHxGfEZkZW58RnRhaWx8Z2FtbWFkZW58Z2FtbWFwfGliZXRhfGludmJpbm9taWFsfGludmNoaTJ8aW52Y2hpMnRhaWx8aW52RnxpbnZGdGFpbHxpbnZnYW1tYXB8aW52aWJldGF8aW52bmNoaTJ8aW52bkZ0YWlsfGludm5pYmV0YXxpbnZub3JtfGludm5vcm1hbHxpbnZ0dGFpbHxuYmV0YWRlbnxuY2hpMnxuRmRlbnxuRnRhaWx8bmliZXRhfG5vcm18bm9ybWFsfG5vcm1hbGRlbnxub3JtZHxucG5jaGkyfHRkZW58dHRhaWx8dW5pZm9ybXxhYmJyZXZ8Y2hhcnxpbmRleHxpbmRleG5vdHxsZW5ndGh8bG93ZXJ8bHRyaW18bWF0Y2h8cGx1cmFsfHByb3BlcnxyZWFsfHJlZ2V4bXxyZWdleHJ8cmVnZXhzfHJldmVyc2V8cnRyaW18c3RyaW5nfHN0cmxlbnxzdHJsb3dlcnxzdHJsdHJpbXxzdHJtYXRjaHxzdHJvZnJlYWx8c3RycG9zfHN0cnByb3BlcnxzdHJyZXZlcnNlfHN0cnJ0cmltfHN0cnRyaW18c3RydXBwZXJ8c3ViaW5zdHJ8c3ViaW53b3JkfHN1YnN0cnx0cmltfHVwcGVyfHdvcmR8d29yZGNvdW50fF9jYWxsZXJ8YXV0b2NvZGV8Ynl0ZW9yZGVyfGNob3B8Y2xpcHxjb25kfGV8ZXBzZG91YmxlfGVwc2Zsb2F0fGdyb3VwfGlubGlzdHxpbnJhbmdlfGlyZWNvZGV8bWF0cml4fG1heGJ5dGV8bWF4ZG91YmxlfG1heGZsb2F0fG1heGludHxtYXhsb25nfG1pfG1pbmJ5dGV8bWluZG91YmxlfG1pbmZsb2F0fG1pbmludHxtaW5sb25nfG1pc3Npbmd8cnxyZWNvZGV8cmVwbGF5fHJldHVybnxzfHNjYWxhcnxkfGRhdGV8ZGF5fGRvd3xkb3l8aGFsZnllYXJ8bWR5fG1vbnRofHF1YXJ0ZXJ8d2Vla3x5ZWFyfGR8ZGFpbHl8ZG9mZHxkb2ZofGRvZm18ZG9mcXxkb2Z3fGRvZnl8aHxoYWxmeWVhcmx5fGhvZmR8bXxtb2ZkfG1vbnRobHl8cXxxb2ZkfHF1YXJ0ZXJseXx0aW58dHdpdGhpbnx3fHdlZWtseXx3b2ZkfHl8eWVhcmx5fHlofHltfHlvZmR8eXF8eXd8Y2hvbGVza3l8Y29sbnVtYnxjb2xzb2Z8Y29ycnxkZXR8ZGlhZ3xkaWFnMGNudHxlbHxnZXR8aGFkYW1hcmR8SXxpbnZ8aW52c3ltfGlzc3ltfGlzc3ltbWV0cmljfEp8bWF0bWlzc2luZ3xtYXR1bmlmb3JtfG1yZWxkaWZ8bnVsbG1hdHxyb3dudW1ifHJvd3NvZnxzd2VlcHxzeW1pbnZ8dHJhY2V8dmVjfHZlY2RpYWcpKD89XFxcXCgpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgaGxqcy5DT01NRU5UKCdeWyBcXHRdKlxcXFwqLiokJywgZmFsc2UpLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVEVQMjFfSURFTlRfUkUgPSAnW0EtWl9dW0EtWjAtOV8uXSonO1xuICB2YXIgU1RFUDIxX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6ICdIRUFERVIgRU5EU0VDIERBVEEnXG4gIH07XG4gIHZhciBTVEVQMjFfU1RBUlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdJU08tMTAzMDMtMjE7JyxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG4gIHZhciBTVEVQMjFfQ0xPU0UgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdFTkQtSVNPLTEwMzAzLTIxOycsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwMjEnLCAnc3RlcCcsICdzdHAnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLCAvLyBTVEVQIDIxIGlzIGNhc2UgaW5zZW5zaXRpdmUgaW4gdGhlb3J5LCBpbiBwcmFjdGljZSBhbGwgbm9uLWNvbW1lbnRzIGFyZSBjYXBpdGFsaXplZC5cbiAgICBsZXhlbWVzOiBTVEVQMjFfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IFNURVAyMV9LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RFUDIxX1NUQVJULFxuICAgICAgU1RFUDIxX0NMT1NFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqXFxcXCohJywgJ1xcXFwqLycpLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogXCInXCIsIGVuZDogXCInXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcVydcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46ICdcXFxcJCcgKyBobGpzLklERU5UX1JFXG4gIH07XG5cbiAgdmFyIEhFWF9DT0xPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnIyhbYS1mQS1GMC05XXs2fXxbYS1mQS1GMC05XXszfSknXG4gIH07XG5cbiAgdmFyIEFUX0tFWVdPUkRTID0gW1xuICAgICdjaGFyc2V0JyxcbiAgICAnY3NzJyxcbiAgICAnZGVidWcnLFxuICAgICdleHRlbmQnLFxuICAgICdmb250LWZhY2UnLFxuICAgICdmb3InLFxuICAgICdpbXBvcnQnLFxuICAgICdpbmNsdWRlJyxcbiAgICAnbWVkaWEnLFxuICAgICdtaXhpbicsXG4gICAgJ3BhZ2UnLFxuICAgICd3YXJuJyxcbiAgICAnd2hpbGUnXG4gIF07XG5cbiAgdmFyIFBTRVVET19TRUxFQ1RPUlMgPSBbXG4gICAgJ2FmdGVyJyxcbiAgICAnYmVmb3JlJyxcbiAgICAnZmlyc3QtbGV0dGVyJyxcbiAgICAnZmlyc3QtbGluZScsXG4gICAgJ2FjdGl2ZScsXG4gICAgJ2ZpcnN0LWNoaWxkJyxcbiAgICAnZm9jdXMnLFxuICAgICdob3ZlcicsXG4gICAgJ2xhbmcnLFxuICAgICdsaW5rJyxcbiAgICAndmlzaXRlZCdcbiAgXTtcblxuICB2YXIgVEFHUyA9IFtcbiAgICAnYScsXG4gICAgJ2FiYnInLFxuICAgICdhZGRyZXNzJyxcbiAgICAnYXJ0aWNsZScsXG4gICAgJ2FzaWRlJyxcbiAgICAnYXVkaW8nLFxuICAgICdiJyxcbiAgICAnYmxvY2txdW90ZScsXG4gICAgJ2JvZHknLFxuICAgICdidXR0b24nLFxuICAgICdjYW52YXMnLFxuICAgICdjYXB0aW9uJyxcbiAgICAnY2l0ZScsXG4gICAgJ2NvZGUnLFxuICAgICdkZCcsXG4gICAgJ2RlbCcsXG4gICAgJ2RldGFpbHMnLFxuICAgICdkZm4nLFxuICAgICdkaXYnLFxuICAgICdkbCcsXG4gICAgJ2R0JyxcbiAgICAnZW0nLFxuICAgICdmaWVsZHNldCcsXG4gICAgJ2ZpZ2NhcHRpb24nLFxuICAgICdmaWd1cmUnLFxuICAgICdmb290ZXInLFxuICAgICdmb3JtJyxcbiAgICAnaDEnLFxuICAgICdoMicsXG4gICAgJ2gzJyxcbiAgICAnaDQnLFxuICAgICdoNScsXG4gICAgJ2g2JyxcbiAgICAnaGVhZGVyJyxcbiAgICAnaGdyb3VwJyxcbiAgICAnaHRtbCcsXG4gICAgJ2knLFxuICAgICdpZnJhbWUnLFxuICAgICdpbWcnLFxuICAgICdpbnB1dCcsXG4gICAgJ2lucycsXG4gICAgJ2tiZCcsXG4gICAgJ2xhYmVsJyxcbiAgICAnbGVnZW5kJyxcbiAgICAnbGknLFxuICAgICdtYXJrJyxcbiAgICAnbWVudScsXG4gICAgJ25hdicsXG4gICAgJ29iamVjdCcsXG4gICAgJ29sJyxcbiAgICAncCcsXG4gICAgJ3EnLFxuICAgICdxdW90ZScsXG4gICAgJ3NhbXAnLFxuICAgICdzZWN0aW9uJyxcbiAgICAnc3BhbicsXG4gICAgJ3N0cm9uZycsXG4gICAgJ3N1bW1hcnknLFxuICAgICdzdXAnLFxuICAgICd0YWJsZScsXG4gICAgJ3Rib2R5JyxcbiAgICAndGQnLFxuICAgICd0ZXh0YXJlYScsXG4gICAgJ3Rmb290JyxcbiAgICAndGgnLFxuICAgICd0aGVhZCcsXG4gICAgJ3RpbWUnLFxuICAgICd0cicsXG4gICAgJ3VsJyxcbiAgICAndmFyJyxcbiAgICAndmlkZW8nXG4gIF07XG5cbiAgdmFyIExPT0tBSEVBRF9UQUdfRU5EID0gJyg/PVtcXFxcLlxcXFxzXFxcXG5cXFxcW1xcXFw6LF0pJztcblxuICB2YXIgQVRUUklCVVRFUyA9IFtcbiAgICAnYWxpZ24tY29udGVudCcsXG4gICAgJ2FsaWduLWl0ZW1zJyxcbiAgICAnYWxpZ24tc2VsZicsXG4gICAgJ2FuaW1hdGlvbicsXG4gICAgJ2FuaW1hdGlvbi1kZWxheScsXG4gICAgJ2FuaW1hdGlvbi1kaXJlY3Rpb24nLFxuICAgICdhbmltYXRpb24tZHVyYXRpb24nLFxuICAgICdhbmltYXRpb24tZmlsbC1tb2RlJyxcbiAgICAnYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCcsXG4gICAgJ2FuaW1hdGlvbi1uYW1lJyxcbiAgICAnYW5pbWF0aW9uLXBsYXktc3RhdGUnLFxuICAgICdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgICAnYXV0bycsXG4gICAgJ2JhY2tmYWNlLXZpc2liaWxpdHknLFxuICAgICdiYWNrZ3JvdW5kJyxcbiAgICAnYmFja2dyb3VuZC1hdHRhY2htZW50JyxcbiAgICAnYmFja2dyb3VuZC1jbGlwJyxcbiAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgJ2JhY2tncm91bmQtaW1hZ2UnLFxuICAgICdiYWNrZ3JvdW5kLW9yaWdpbicsXG4gICAgJ2JhY2tncm91bmQtcG9zaXRpb24nLFxuICAgICdiYWNrZ3JvdW5kLXJlcGVhdCcsXG4gICAgJ2JhY2tncm91bmQtc2l6ZScsXG4gICAgJ2JvcmRlcicsXG4gICAgJ2JvcmRlci1ib3R0b20nLFxuICAgICdib3JkZXItYm90dG9tLWNvbG9yJyxcbiAgICAnYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cycsXG4gICAgJ2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzJyxcbiAgICAnYm9yZGVyLWJvdHRvbS1zdHlsZScsXG4gICAgJ2JvcmRlci1ib3R0b20td2lkdGgnLFxuICAgICdib3JkZXItY29sbGFwc2UnLFxuICAgICdib3JkZXItY29sb3InLFxuICAgICdib3JkZXItaW1hZ2UnLFxuICAgICdib3JkZXItaW1hZ2Utb3V0c2V0JyxcbiAgICAnYm9yZGVyLWltYWdlLXJlcGVhdCcsXG4gICAgJ2JvcmRlci1pbWFnZS1zbGljZScsXG4gICAgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLFxuICAgICdib3JkZXItaW1hZ2Utd2lkdGgnLFxuICAgICdib3JkZXItbGVmdCcsXG4gICAgJ2JvcmRlci1sZWZ0LWNvbG9yJyxcbiAgICAnYm9yZGVyLWxlZnQtc3R5bGUnLFxuICAgICdib3JkZXItbGVmdC13aWR0aCcsXG4gICAgJ2JvcmRlci1yYWRpdXMnLFxuICAgICdib3JkZXItcmlnaHQnLFxuICAgICdib3JkZXItcmlnaHQtY29sb3InLFxuICAgICdib3JkZXItcmlnaHQtc3R5bGUnLFxuICAgICdib3JkZXItcmlnaHQtd2lkdGgnLFxuICAgICdib3JkZXItc3BhY2luZycsXG4gICAgJ2JvcmRlci1zdHlsZScsXG4gICAgJ2JvcmRlci10b3AnLFxuICAgICdib3JkZXItdG9wLWNvbG9yJyxcbiAgICAnYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cycsXG4gICAgJ2JvcmRlci10b3AtcmlnaHQtcmFkaXVzJyxcbiAgICAnYm9yZGVyLXRvcC1zdHlsZScsXG4gICAgJ2JvcmRlci10b3Atd2lkdGgnLFxuICAgICdib3JkZXItd2lkdGgnLFxuICAgICdib3R0b20nLFxuICAgICdib3gtZGVjb3JhdGlvbi1icmVhaycsXG4gICAgJ2JveC1zaGFkb3cnLFxuICAgICdib3gtc2l6aW5nJyxcbiAgICAnYnJlYWstYWZ0ZXInLFxuICAgICdicmVhay1iZWZvcmUnLFxuICAgICdicmVhay1pbnNpZGUnLFxuICAgICdjYXB0aW9uLXNpZGUnLFxuICAgICdjbGVhcicsXG4gICAgJ2NsaXAnLFxuICAgICdjbGlwLXBhdGgnLFxuICAgICdjb2xvcicsXG4gICAgJ2NvbHVtbi1jb3VudCcsXG4gICAgJ2NvbHVtbi1maWxsJyxcbiAgICAnY29sdW1uLWdhcCcsXG4gICAgJ2NvbHVtbi1ydWxlJyxcbiAgICAnY29sdW1uLXJ1bGUtY29sb3InLFxuICAgICdjb2x1bW4tcnVsZS1zdHlsZScsXG4gICAgJ2NvbHVtbi1ydWxlLXdpZHRoJyxcbiAgICAnY29sdW1uLXNwYW4nLFxuICAgICdjb2x1bW4td2lkdGgnLFxuICAgICdjb2x1bW5zJyxcbiAgICAnY29udGVudCcsXG4gICAgJ2NvdW50ZXItaW5jcmVtZW50JyxcbiAgICAnY291bnRlci1yZXNldCcsXG4gICAgJ2N1cnNvcicsXG4gICAgJ2RpcmVjdGlvbicsXG4gICAgJ2Rpc3BsYXknLFxuICAgICdlbXB0eS1jZWxscycsXG4gICAgJ2ZpbHRlcicsXG4gICAgJ2ZsZXgnLFxuICAgICdmbGV4LWJhc2lzJyxcbiAgICAnZmxleC1kaXJlY3Rpb24nLFxuICAgICdmbGV4LWZsb3cnLFxuICAgICdmbGV4LWdyb3cnLFxuICAgICdmbGV4LXNocmluaycsXG4gICAgJ2ZsZXgtd3JhcCcsXG4gICAgJ2Zsb2F0JyxcbiAgICAnZm9udCcsXG4gICAgJ2ZvbnQtZmFtaWx5JyxcbiAgICAnZm9udC1mZWF0dXJlLXNldHRpbmdzJyxcbiAgICAnZm9udC1rZXJuaW5nJyxcbiAgICAnZm9udC1sYW5ndWFnZS1vdmVycmlkZScsXG4gICAgJ2ZvbnQtc2l6ZScsXG4gICAgJ2ZvbnQtc2l6ZS1hZGp1c3QnLFxuICAgICdmb250LXN0cmV0Y2gnLFxuICAgICdmb250LXN0eWxlJyxcbiAgICAnZm9udC12YXJpYW50JyxcbiAgICAnZm9udC12YXJpYW50LWxpZ2F0dXJlcycsXG4gICAgJ2ZvbnQtd2VpZ2h0JyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnaHlwaGVucycsXG4gICAgJ2ljb24nLFxuICAgICdpbWFnZS1vcmllbnRhdGlvbicsXG4gICAgJ2ltYWdlLXJlbmRlcmluZycsXG4gICAgJ2ltYWdlLXJlc29sdXRpb24nLFxuICAgICdpbWUtbW9kZScsXG4gICAgJ2luaGVyaXQnLFxuICAgICdpbml0aWFsJyxcbiAgICAnanVzdGlmeS1jb250ZW50JyxcbiAgICAnbGVmdCcsXG4gICAgJ2xldHRlci1zcGFjaW5nJyxcbiAgICAnbGluZS1oZWlnaHQnLFxuICAgICdsaXN0LXN0eWxlJyxcbiAgICAnbGlzdC1zdHlsZS1pbWFnZScsXG4gICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nLFxuICAgICdsaXN0LXN0eWxlLXR5cGUnLFxuICAgICdtYXJnaW4nLFxuICAgICdtYXJnaW4tYm90dG9tJyxcbiAgICAnbWFyZ2luLWxlZnQnLFxuICAgICdtYXJnaW4tcmlnaHQnLFxuICAgICdtYXJnaW4tdG9wJyxcbiAgICAnbWFya3MnLFxuICAgICdtYXNrJyxcbiAgICAnbWF4LWhlaWdodCcsXG4gICAgJ21heC13aWR0aCcsXG4gICAgJ21pbi1oZWlnaHQnLFxuICAgICdtaW4td2lkdGgnLFxuICAgICduYXYtZG93bicsXG4gICAgJ25hdi1pbmRleCcsXG4gICAgJ25hdi1sZWZ0JyxcbiAgICAnbmF2LXJpZ2h0JyxcbiAgICAnbmF2LXVwJyxcbiAgICAnbm9uZScsXG4gICAgJ25vcm1hbCcsXG4gICAgJ29iamVjdC1maXQnLFxuICAgICdvYmplY3QtcG9zaXRpb24nLFxuICAgICdvcGFjaXR5JyxcbiAgICAnb3JkZXInLFxuICAgICdvcnBoYW5zJyxcbiAgICAnb3V0bGluZScsXG4gICAgJ291dGxpbmUtY29sb3InLFxuICAgICdvdXRsaW5lLW9mZnNldCcsXG4gICAgJ291dGxpbmUtc3R5bGUnLFxuICAgICdvdXRsaW5lLXdpZHRoJyxcbiAgICAnb3ZlcmZsb3cnLFxuICAgICdvdmVyZmxvdy13cmFwJyxcbiAgICAnb3ZlcmZsb3cteCcsXG4gICAgJ292ZXJmbG93LXknLFxuICAgICdwYWRkaW5nJyxcbiAgICAncGFkZGluZy1ib3R0b20nLFxuICAgICdwYWRkaW5nLWxlZnQnLFxuICAgICdwYWRkaW5nLXJpZ2h0JyxcbiAgICAncGFkZGluZy10b3AnLFxuICAgICdwYWdlLWJyZWFrLWFmdGVyJyxcbiAgICAncGFnZS1icmVhay1iZWZvcmUnLFxuICAgICdwYWdlLWJyZWFrLWluc2lkZScsXG4gICAgJ3BlcnNwZWN0aXZlJyxcbiAgICAncGVyc3BlY3RpdmUtb3JpZ2luJyxcbiAgICAncG9pbnRlci1ldmVudHMnLFxuICAgICdwb3NpdGlvbicsXG4gICAgJ3F1b3RlcycsXG4gICAgJ3Jlc2l6ZScsXG4gICAgJ3JpZ2h0JyxcbiAgICAndGFiLXNpemUnLFxuICAgICd0YWJsZS1sYXlvdXQnLFxuICAgICd0ZXh0LWFsaWduJyxcbiAgICAndGV4dC1hbGlnbi1sYXN0JyxcbiAgICAndGV4dC1kZWNvcmF0aW9uJyxcbiAgICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJyxcbiAgICAndGV4dC1kZWNvcmF0aW9uLWxpbmUnLFxuICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnLFxuICAgICd0ZXh0LWluZGVudCcsXG4gICAgJ3RleHQtb3ZlcmZsb3cnLFxuICAgICd0ZXh0LXJlbmRlcmluZycsXG4gICAgJ3RleHQtc2hhZG93JyxcbiAgICAndGV4dC10cmFuc2Zvcm0nLFxuICAgICd0ZXh0LXVuZGVybGluZS1wb3NpdGlvbicsXG4gICAgJ3RvcCcsXG4gICAgJ3RyYW5zZm9ybScsXG4gICAgJ3RyYW5zZm9ybS1vcmlnaW4nLFxuICAgICd0cmFuc2Zvcm0tc3R5bGUnLFxuICAgICd0cmFuc2l0aW9uJyxcbiAgICAndHJhbnNpdGlvbi1kZWxheScsXG4gICAgJ3RyYW5zaXRpb24tZHVyYXRpb24nLFxuICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JyxcbiAgICAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLFxuICAgICd1bmljb2RlLWJpZGknLFxuICAgICd2ZXJ0aWNhbC1hbGlnbicsXG4gICAgJ3Zpc2liaWxpdHknLFxuICAgICd3aGl0ZS1zcGFjZScsXG4gICAgJ3dpZG93cycsXG4gICAgJ3dpZHRoJyxcbiAgICAnd29yZC1icmVhaycsXG4gICAgJ3dvcmQtc3BhY2luZycsXG4gICAgJ3dvcmQtd3JhcCcsXG4gICAgJ3otaW5kZXgnXG4gIF07XG5cbiAgLy8gaWxsZWdhbHNcbiAgdmFyIElMTEVHQUwgPSBbXG4gICAgJ1xcXFw/JyxcbiAgICAnKFxcXFxiUmV0dXJuXFxcXGIpJywgLy8gbW9ua2V5XG4gICAgJyhcXFxcYkVuZFxcXFxiKScsIC8vIG1vbmtleVxuICAgICcoXFxcXGJlbmRcXFxcYiknLCAvLyB2YnNjcmlwdFxuICAgICcoXFxcXGJkZWZcXFxcYiknLCAvLyBncmFkbGVcbiAgICAnOycsIC8vIGEgd2hvbGUgbG90IG9mIGxhbmd1YWdlc1xuICAgICcjXFxcXHMnLCAvLyBtYXJrZG93blxuICAgICdcXFxcKlxcXFxzJywgLy8gbWFya2Rvd25cbiAgICAnPT09XFxcXHMnLCAvLyBtYXJrZG93blxuICAgICdcXFxcfCcsXG4gICAgJyUnLCAvLyBwcm9sb2dcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc3R5bCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGtleXdvcmRzOiAnaWYgZWxzZSBmb3IgaW4nLFxuICAgIGlsbGVnYWw6ICcoJyArIElMTEVHQUwuam9pbignfCcpICsgJyknLFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG5cbiAgICAgIC8vIGNvbW1lbnRzXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuXG4gICAgICAvLyBoZXggY29sb3JzXG4gICAgICBIRVhfQ09MT1IsXG5cbiAgICAgIC8vIGNsYXNzIHRhZ1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwuW2EtekEtWl1bYS16QS1aMC05Xy1dKicgKyBMT09LQUhFQURfVEFHX0VORCxcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItY2xhc3MnXG4gICAgICB9LFxuXG4gICAgICAvLyBpZCB0YWdcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcI1thLXpBLVpdW2EtekEtWjAtOV8tXSonICsgTE9PS0FIRUFEX1RBR19FTkQsXG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJ1xuICAgICAgfSxcblxuICAgICAgLy8gdGFnc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBUQUdTLmpvaW4oJ3wnKSArICcpJyArIExPT0tBSEVBRF9UQUdfRU5ELFxuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci10YWcnXG4gICAgICB9LFxuXG4gICAgICAvLyBwc3VlZG8gc2VsZWN0b3JzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnJj86PzpcXFxcYignICsgUFNFVURPX1NFTEVDVE9SUy5qb2luKCd8JykgKyAnKScgKyBMT09LQUhFQURfVEFHX0VORFxuICAgICAgfSxcblxuICAgICAgLy8gQCBrZXl3b3Jkc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcQCgnICsgQVRfS0VZV09SRFMuam9pbignfCcpICsgJylcXFxcYidcbiAgICAgIH0sXG5cbiAgICAgIC8vIHZhcmlhYmxlc1xuICAgICAgVkFSSUFCTEUsXG5cbiAgICAgIC8vIGRpbWVuc2lvblxuICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG5cbiAgICAgIC8vIG51bWJlclxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcblxuICAgICAgLy8gZnVuY3Rpb25zXG4gICAgICAvLyAgLSBvbmx5IGZyb20gYmVnaW5uaW5nIG9mIGxpbmUgKyB3aGl0ZXNwYWNlXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeW2EtekEtWl1bYS16QS1aMC05X1xcLV0qXFxcXCguKlxcXFwpJyxcbiAgICAgICAgaWxsZWdhbDogJ1tcXFxcbl0nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAndGl0bGUnLCBiZWdpbjogJ1xcXFxiW2EtekEtWl1bYS16QS1aMC05X1xcLV0qJ30sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBIRVhfQ09MT1IsXG4gICAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyBhdHRyaWJ1dGVzXG4gICAgICAvLyAgLSBvbmx5IGZyb20gYmVnaW5uaW5nIG9mIGxpbmUgKyB3aGl0ZXNwYWNlXG4gICAgICAvLyAgLSBtdXN0IGhhdmUgd2hpdGVzcGFjZSBhZnRlciBpdFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBBVFRSSUJVVEVTLnJldmVyc2UoKS5qb2luKCd8JykgKyAnKVxcXFxiJyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgLy8gdmFsdWUgY29udGFpbmVyXG4gICAgICAgICAgZW5kOiAvO3wkLyxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgSEVYX0NPTE9SLFxuICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgIF0sXG4gICAgICAgICAgaWxsZWdhbDogL1xcLi8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgREVUQUlMUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXFtcXG4obXVsdGlwYXJ0KT8nLCBlbmQ6ICdcXFxcXVxcbidcbiAgfTtcbiAgdmFyIFRJTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcXFxkezR9LVxcXFxkezJ9LVxcXFxkezJ9KFxcXFxzKylcXFxcZHsyfTpcXFxcZHsyfTpcXFxcZHsyfVxcLlxcXFxkK1onXG4gIH07XG4gIHZhciBQUk9HUkVTU1ZBTFVFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICcoXFxcXCt8LSlcXFxcZCsnXG4gIH07XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICByZWxldmFuY2U6IDEwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXih0ZXN0fHRlc3Rpbmd8c3VjY2Vzc3xzdWNjZXNzZnVsfGZhaWx1cmV8ZXJyb3J8c2tpcHx4ZmFpbHx1eHN1Y2Nlc3MpKDo/KVxcXFxzKyh0ZXN0KT8nIH0sXG4gICAgICB7IGJlZ2luOiAnXnByb2dyZXNzKDo/KShcXFxccyspPyhwb3B8cHVzaCk/JyB9LFxuICAgICAgeyBiZWdpbjogJ150YWdzOicgfSxcbiAgICAgIHsgYmVnaW46ICdedGltZTonIH1cbiAgICBdLFxuICB9O1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIERFVEFJTFMsXG4gICAgICBUSU1FLFxuICAgICAgUFJPR1JFU1NWQUxVRSxcbiAgICAgIEtFWVdPUkRTXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNXSUZUX0tFWVdPUkRTID0ge1xuICAgICAga2V5d29yZDogJyNhdmFpbGFibGUgI2NvbG9yTGl0ZXJhbCAjY29sdW1uICNlbHNlICNlbHNlaWYgI2VuZGlmICNmaWxlICcgK1xuICAgICAgICAnI2ZpbGVMaXRlcmFsICNmdW5jdGlvbiAjaWYgI2ltYWdlTGl0ZXJhbCAjbGluZSAjc2VsZWN0b3IgI3NvdXJjZUxvY2F0aW9uICcgK1xuICAgICAgICAnXyBfX0NPTFVNTl9fIF9fRklMRV9fIF9fRlVOQ1RJT05fXyBfX0xJTkVfXyBBbnkgYXMgYXMhIGFzPyBhc3NvY2lhdGVkdHlwZSAnICtcbiAgICAgICAgJ2Fzc29jaWF0aXZpdHkgYnJlYWsgY2FzZSBjYXRjaCBjbGFzcyBjb250aW51ZSBjb252ZW5pZW5jZSBkZWZhdWx0IGRlZmVyIGRlaW5pdCBkaWRTZXQgZG8gJyArXG4gICAgICAgICdkeW5hbWljIGR5bmFtaWNUeXBlIGVsc2UgZW51bSBleHRlbnNpb24gZmFsbHRocm91Z2ggZmFsc2UgZmlsZXByaXZhdGUgZmluYWwgZm9yIGZ1bmMgJyArXG4gICAgICAgICdnZXQgZ3VhcmQgaWYgaW1wb3J0IGluIGluZGlyZWN0IGluZml4IGluaXQgaW5vdXQgaW50ZXJuYWwgaXMgbGF6eSBsZWZ0IGxldCAnICtcbiAgICAgICAgJ211dGF0aW5nIG5pbCBub25lIG5vbm11dGF0aW5nIG9wZW4gb3BlcmF0b3Igb3B0aW9uYWwgb3ZlcnJpZGUgcG9zdGZpeCBwcmVjZWRlbmNlICcgK1xuICAgICAgICAncHJlZml4IHByaXZhdGUgcHJvdG9jb2wgUHJvdG9jb2wgcHVibGljIHJlcGVhdCByZXF1aXJlZCByZXRocm93cyByZXR1cm4gJyArXG4gICAgICAgICdyaWdodCBzZWxmIFNlbGYgc2V0IHN0YXRpYyBzdHJ1Y3Qgc3Vic2NyaXB0IHN1cGVyIHN3aXRjaCB0aHJvdyB0aHJvd3MgdHJ1ZSAnICtcbiAgICAgICAgJ3RyeSB0cnkhIHRyeT8gVHlwZSB0eXBlYWxpYXMgdW5vd25lZCB2YXIgd2VhayB3aGVyZSB3aGlsZSB3aWxsU2V0JyxcbiAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIG5pbCcsXG4gICAgICBidWlsdF9pbjogJ2FicyBhZHZhbmNlIGFsaWdub2YgYWxpZ25vZlZhbHVlIGFueUdlbmVyYXRvciBhc3NlcnQgYXNzZXJ0aW9uRmFpbHVyZSAnICtcbiAgICAgICAgJ2JyaWRnZUZyb21PYmplY3RpdmVDIGJyaWRnZUZyb21PYmplY3RpdmVDVW5jb25kaXRpb25hbCBicmlkZ2VUb09iamVjdGl2ZUMgJyArXG4gICAgICAgICdicmlkZ2VUb09iamVjdGl2ZUNVbmNvbmRpdGlvbmFsIGMgY29udGFpbnMgY291bnQgY291bnRFbGVtZW50cyBjb3VudExlYWRpbmdaZXJvcyAnICtcbiAgICAgICAgJ2RlYnVnUHJpbnQgZGVidWdQcmludGxuIGRpc3RhbmNlIGRyb3BGaXJzdCBkcm9wTGFzdCBkdW1wIGVuY29kZUJpdHNBc1dvcmRzICcgK1xuICAgICAgICAnZW51bWVyYXRlIGVxdWFsIGZhdGFsRXJyb3IgZmlsdGVyIGZpbmQgZ2V0QnJpZGdlZE9iamVjdGl2ZUNUeXBlIGdldFZhTGlzdCAnICtcbiAgICAgICAgJ2luZGljZXMgaW5zZXJ0aW9uU29ydCBpc0JyaWRnZWRUb09iamVjdGl2ZUMgaXNCcmlkZ2VkVmVyYmF0aW1Ub09iamVjdGl2ZUMgJyArXG4gICAgICAgICdpc1VuaXF1ZWx5UmVmZXJlbmNlZCBpc1VuaXF1ZWx5UmVmZXJlbmNlZE5vbk9iakMgam9pbiBsYXp5IGxleGljb2dyYXBoaWNhbENvbXBhcmUgJyArXG4gICAgICAgICdtYXAgbWF4IG1heEVsZW1lbnQgbWluIG1pbkVsZW1lbnQgbnVtZXJpY0Nhc3Qgb3ZlcmxhcHMgcGFydGl0aW9uIHBvc2l4ICcgK1xuICAgICAgICAncHJlY29uZGl0aW9uIHByZWNvbmRpdGlvbkZhaWx1cmUgcHJpbnQgcHJpbnRsbiBxdWlja1NvcnQgcmVhZExpbmUgcmVkdWNlIHJlZmxlY3QgJyArXG4gICAgICAgICdyZWludGVycHJldENhc3QgcmV2ZXJzZSByb3VuZFVwVG9BbGlnbm1lbnQgc2l6ZW9mIHNpemVvZlZhbHVlIHNvcnQgc3BsaXQgJyArXG4gICAgICAgICdzdGFydHNXaXRoIHN0cmlkZSBzdHJpZGVvZiBzdHJpZGVvZlZhbHVlIHN3YXAgdG9TdHJpbmcgdHJhbnNjb2RlICcgK1xuICAgICAgICAndW5kZXJlc3RpbWF0ZUNvdW50IHVuc2FmZUFkZHJlc3NPZiB1bnNhZmVCaXRDYXN0IHVuc2FmZURvd25jYXN0IHVuc2FmZVVud3JhcCAnICtcbiAgICAgICAgJ3Vuc2FmZVJlZmxlY3Qgd2l0aEV4dGVuZGVkTGlmZXRpbWUgd2l0aE9iamVjdEF0UGx1c1plcm8gd2l0aFVuc2FmZVBvaW50ZXIgJyArXG4gICAgICAgICd3aXRoVW5zYWZlUG9pbnRlclRvT2JqZWN0IHdpdGhVbnNhZmVNdXRhYmxlUG9pbnRlciB3aXRoVW5zYWZlTXV0YWJsZVBvaW50ZXJzICcgK1xuICAgICAgICAnd2l0aFVuc2FmZVBvaW50ZXIgd2l0aFVuc2FmZVBvaW50ZXJzIHdpdGhWYUxpc3QgemlwJ1xuICAgIH07XG5cbiAgdmFyIFRZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFx1MDBDMC1cXHUwMkI4XFwnXSonLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICAvLyBzbGlnaHRseSBtb3JlIHNwZWNpYWwgdG8gc3dpZnRcbiAgdmFyIE9QVElPTkFMX1VTSU5HX1RZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFx1MDBDMC1cXHUwMkI4XFwnXSpbIT9dJ1xuICB9XG4gIHZhciBCTE9DS19DT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICcvXFxcXConLFxuICAgICdcXFxcKi8nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgIH1cbiAgKTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcXFxcXCgvLCBlbmQ6ICdcXFxcKScsXG4gICAga2V5d29yZHM6IFNXSUZUX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXSAvLyBhc3NpZ25lZCBsYXRlclxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXCJcIlwiLywgZW5kOiAvXCJcIlwiL30sXG4gICAgICB7YmVnaW46IC9cIi8sIGVuZDogL1wiL30sXG4gICAgXVxuICB9O1xuICB2YXIgTlVNQkVSUyA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJ1xcXFxiKFtcXFxcZF9dKyhcXFxcLltcXFxcZGVFX10rKT98MHhbYS1mQS1GMC05X10rKFxcXFwuW2EtZkEtRjAtOXBfXSspP3wwYlswMV9dK3wwb1swLTdfXSspXFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIFNVQlNULmNvbnRhaW5zID0gW05VTUJFUlNdO1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IFNXSUZUX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBTVFJJTkcsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBCTE9DS19DT01NRU5ULFxuICAgICAgT1BUSU9OQUxfVVNJTkdfVFlQRSxcbiAgICAgIFRZUEUsXG4gICAgICBOVU1CRVJTLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgYmVnaW46IC9bQS1aYS16JF9dWzAtOUEtWmEteiRfXSovXG4gICAgICAgICAgfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC88LywgZW5kOiAvPi9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogU1dJRlRfS0VZV09SRFMsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAge2JlZ2luOiAnOid9IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaWxsZWdhbDogL1tcIiddL1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogL1xcW3wlL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3RydWN0IHByb3RvY29sIGNsYXNzIGV4dGVuc2lvbiBlbnVtJyxcbiAgICAgICAga2V5d29yZHM6IFNXSUZUX0tFWVdPUkRTLFxuICAgICAgICBlbmQ6ICdcXFxceycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAvW0EtWmEteiRfXVtcXHUwMEMwLVxcdTAyQjgwLTlBLVphLXokX10qL30pXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCAvLyBAYXR0cmlidXRlc1xuICAgICAgICBiZWdpbjogJyhAZGlzY2FyZGFibGVSZXN1bHR8QHdhcm5fdW51c2VkX3Jlc3VsdHxAZXhwb3J0ZWR8QGxhenl8QG5vZXNjYXBlfCcgK1xuICAgICAgICAgICAgICAgICAgJ0BOU0NvcHlpbmd8QE5TTWFuYWdlZHxAb2JqY3xAb2JqY01lbWJlcnN8QGNvbnZlbnRpb258QHJlcXVpcmVkfCcgK1xuICAgICAgICAgICAgICAgICAgJ0Bub3JldHVybnxASUJBY3Rpb258QElCRGVzaWduYWJsZXxASUJJbnNwZWN0YWJsZXxASUJPdXRsZXR8JyArXG4gICAgICAgICAgICAgICAgICAnQGluZml4fEBwcmVmaXh8QHBvc3RmaXh8QGF1dG9jbG9zdXJlfEB0ZXN0YWJsZXxAYXZhaWxhYmxlfCcgK1xuICAgICAgICAgICAgICAgICAgJ0Bub25vYmpjfEBOU0FwcGxpY2F0aW9uTWFpbnxAVUlBcHBsaWNhdGlvbk1haW58QGR5bmFtaWNNZW1iZXJMb29rdXB8JyArXG4gICAgICAgICAgICAgICAgICAnQHByb3BlcnR5V3JhcHBlciknXG5cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbXBvcnQnLCBlbmQ6IC8kLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTElORV9DT01NRU5UX01PREUsIEJMT0NLX0NPTU1FTlRdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQ09NTUVOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogL1xcJG5vb3BcXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBiZWdpbjogL1xcKC8sXG4gICAgICBlbmQ6IC9cXCkvLFxuICAgICAgY29udGFpbnM6IFsnc2VsZicsIHtcbiAgICAgICAgYmVnaW46IC9cXFxcLi9cbiAgICAgIH1dXG4gICAgfV0sXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogL1xcJCg/IW5vb3ApW2EtekEtWl1bX2EtekEtWjAtOV0qLyxcbiAgICBlbmQ6IC9cXCgvLFxuICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgfTtcblxuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvJVtfYS16QS1aMC05Ol0qLyxcbiAgICBlbmQ6ICclJ1xuICB9O1xuXG4gIHZhciBFU0NBUEVfU0VRVUVOQ0UgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogL1xcXFwuL1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIENPTU1FTlQsXG4gICAgICBGVU5DVElPTixcbiAgICAgIFZBUklBQkxFLFxuICAgICAgRVNDQVBFX1NFUVVFTkNFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIExJVEVSQUxTID0gJ3RydWUgZmFsc2UgeWVzIG5vIG51bGwnO1xuXG4gIC8vIERlZmluZSBrZXlzIGFzIHN0YXJ0aW5nIHdpdGggYSB3b3JkIGNoYXJhY3RlclxuICAvLyAuLi5jb250YWluaW5nIHdvcmQgY2hhcnMsIHNwYWNlcywgY29sb25zLCBmb3J3YXJkLXNsYXNoZXMsIGh5cGhlbnMgYW5kIHBlcmlvZHNcbiAgLy8gLi4uYW5kIGVuZGluZyB3aXRoIGEgY29sb24gZm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkgYSBzcGFjZSwgdGFiIG9yIG5ld2xpbmUuXG4gIC8vIFRoZSBZQU1MIHNwZWMgYWxsb3dzIGZvciBtdWNoIG1vcmUgdGhhbiB0aGlzLCBidXQgdGhpcyBjb3ZlcnMgbW9zdCB1c2UtY2FzZXMuXG4gIHZhciBLRVkgPSB7XG4gICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcd1tcXFxcdyA6XFxcXC8uLV0qOig/PVsgXFx0XXwkKScgfSxcbiAgICAgIHsgYmVnaW46ICdcIlxcXFx3W1xcXFx3IDpcXFxcLy4tXSpcIjooPz1bIFxcdF18JCknIH0sIC8vZG91YmxlIHF1b3RlZCBrZXlzXG4gICAgICB7IGJlZ2luOiAnXFwnXFxcXHdbXFxcXHcgOlxcXFwvLi1dKlxcJzooPz1bIFxcdF18JCknIH0gLy9zaW5nbGUgcXVvdGVkIGtleXNcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRFTVBMQVRFX1ZBUklBQkxFUyA9IHtcbiAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXHtcXHsnLCBlbmQ6ICdcXH1cXH0nIH0sIC8vIGppbmphIHRlbXBsYXRlcyBBbnNpYmxlXG4gICAgICB7IGJlZ2luOiAnJVxceycsIGVuZDogJ1xcfScgfSAvLyBSdWJ5IGkxOG5cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogLycvLCBlbmQ6IC8nL30sXG4gICAgICB7YmVnaW46IC9cIi8sIGVuZDogL1wiL30sXG4gICAgICB7YmVnaW46IC9cXFMrL31cbiAgICBdLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBURU1QTEFURV9WQVJJQUJMRVNcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsneW1sJywgJ1lBTUwnLCAneWFtbCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBLRVksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ14tLS1cXHMqJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7IC8vIG11bHRpIGxpbmUgc3RyaW5nXG4gICAgICAgIC8vIEJsb2NrcyBzdGFydCB3aXRoIGEgfCBvciA+IGZvbGxvd2VkIGJ5IGEgbmV3bGluZVxuICAgICAgICAvL1xuICAgICAgICAvLyBJbmRlbnRhdGlvbiBvZiBzdWJzZXF1ZW50IGxpbmVzIG11c3QgYmUgdGhlIHNhbWUgdG9cbiAgICAgICAgLy8gYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBibG9ja1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1tcXFxcfD5dKFswLTldP1srLV0pP1sgXSpcXFxcbiggKilbXFxcXFMgXStcXFxcbihcXFxcMltcXFxcUyBdK1xcXFxuPykqJyxcbiAgICAgIH0sXG4gICAgICB7IC8vIFJ1YnkvUmFpbHMgZXJiXG4gICAgICAgIGJlZ2luOiAnPCVbJT0tXT8nLCBlbmQ6ICdbJS1dPyU+JyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdydWJ5JyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8vIGxvY2FsIHRhZ3NcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGJlZ2luOiAnIScgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICB9LFxuICAgICAgeyAvLyBkYXRhIHR5cGVcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGJlZ2luOiAnISEnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgfSxcbiAgICAgIHsgLy8gZnJhZ21lbnQgaWQgJnJlZlxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcmJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICckJyxcbiAgICAgIH0sXG4gICAgICB7IC8vIGZyYWdtZW50IHJlZmVyZW5jZSAqcmVmXG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ1xcXFwqJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICckJ1xuICAgICAgfSxcbiAgICAgIHsgLy8gYXJyYXkgbGlzdGluZ1xuICAgICAgICBjbGFzc05hbWU6ICdidWxsZXQnLFxuICAgICAgLy8gVE9ETzogcmVtb3ZlIHwkIGhhY2sgd2hlbiB3ZSBoYXZlIHByb3BlciBsb29rLWFoZWFkIHN1cHBvcnRcbiAgICAgIGJlZ2luOiAnXFxcXC0oPz1bIF18JCknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiBMSVRFUkFMUyxcbiAgICAgICAga2V5d29yZHM6IHtsaXRlcmFsOiBMSVRFUkFMU31cbiAgICAgIH0sXG4gICAgICAvLyBudW1iZXJzIGFyZSBhbnkgdmFsaWQgQy1zdHlsZSBudW1iZXIgdGhhdFxuICAgICAgLy8gc2l0IGlzb2xhdGVkIGZyb20gb3RoZXIgd29yZHNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgKyAnXFxcXGInXG4gICAgICB9LFxuICAgICAgU1RSSU5HXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgLy8gdmVyc2lvbiBvZiBmb3JtYXQgYW5kIHRvdGFsIGFtb3VudCBvZiB0ZXN0Y2FzZXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ15UQVAgdmVyc2lvbiAoXFxcXGQrKSQnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ14xXFxcXC5cXFxcLihcXFxcZCspJCcgfVxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIC8vIFlBTUwgYmxvY2tcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcoXFxzKyk/LS0tJCcsIGVuZDogJ1xcXFwuXFxcXC5cXFxcLiQnLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3lhbWwnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG5cdCAgLy8gdGVzdGNhc2UgbnVtYmVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnIChcXFxcZCspICdcbiAgICAgIH0sXG5cdCAgLy8gdGVzdGNhc2Ugc3RhdHVzIGFuZCBkZXNjcmlwdGlvblxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICdeb2snIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ15ub3Qgb2snIH1cbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RrJ10sXG4gICAga2V5d29yZHM6ICdhZnRlciBhcHBlbmQgYXBwbHkgYXJyYXkgYXV0b19leGVjb2sgYXV0b19pbXBvcnQgYXV0b19sb2FkIGF1dG9fbWtpbmRleCAnICtcbiAgICAgICdhdXRvX21raW5kZXhfb2xkIGF1dG9fcXVhbGlmeSBhdXRvX3Jlc2V0IGJnZXJyb3IgYmluYXJ5IGJyZWFrIGNhdGNoIGNkIGNoYW4gY2xvY2sgJyArXG4gICAgICAnY2xvc2UgY29uY2F0IGNvbnRpbnVlIGRkZSBkaWN0IGVuY29kaW5nIGVvZiBlcnJvciBldmFsIGV4ZWMgZXhpdCBleHByIGZibG9ja2VkICcgK1xuICAgICAgJ2Zjb25maWd1cmUgZmNvcHkgZmlsZSBmaWxlZXZlbnQgZmlsZW5hbWUgZmx1c2ggZm9yIGZvcmVhY2ggZm9ybWF0IGdldHMgZ2xvYiBnbG9iYWwgJyArXG4gICAgICAnaGlzdG9yeSBodHRwIGlmIGluY3IgaW5mbyBpbnRlcnAgam9pbiBsYXBwZW5kfDEwIGxhc3NpZ258MTAgbGluZGV4fDEwIGxpbnNlcnR8MTAgbGlzdCAnICtcbiAgICAgICdsbGVuZ3RofDEwIGxvYWQgbHJhbmdlfDEwIGxyZXBlYXR8MTAgbHJlcGxhY2V8MTAgbHJldmVyc2V8MTAgbHNlYXJjaHwxMCBsc2V0fDEwIGxzb3J0fDEwICcrXG4gICAgICAnbWF0aGZ1bmMgbWF0aG9wIG1lbW9yeSBtc2djYXQgbmFtZXNwYWNlIG9wZW4gcGFja2FnZSBwYXJyYXkgcGlkIHBrZzo6Y3JlYXRlIHBrZ19ta0luZGV4ICcrXG4gICAgICAncGxhdGZvcm0gcGxhdGZvcm06OnNoZWxsIHByb2MgcHV0cyBwd2QgcmVhZCByZWZjaGFuIHJlZ2V4cCByZWdpc3RyeSByZWdzdWJ8MTAgcmVuYW1lICcrXG4gICAgICAncmV0dXJuIHNhZmUgc2NhbiBzZWVrIHNldCBzb2NrZXQgc291cmNlIHNwbGl0IHN0cmluZyBzdWJzdCBzd2l0Y2ggdGNsX2VuZE9mV29yZCAnK1xuICAgICAgJ3RjbF9maW5kTGlicmFyeSB0Y2xfc3RhcnRPZk5leHRXb3JkIHRjbF9zdGFydE9mUHJldmlvdXNXb3JkIHRjbF93b3JkQnJlYWtBZnRlciAnK1xuICAgICAgJ3RjbF93b3JkQnJlYWtCZWZvcmUgdGNsdGVzdCB0Y2x2YXJzIHRlbGwgdGltZSB0bSB0cmFjZSB1bmtub3duIHVubG9hZCB1bnNldCB1cGRhdGUgJytcbiAgICAgICd1cGxldmVsIHVwdmFyIHZhcmlhYmxlIHZ3YWl0IHdoaWxlJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCc7WyBcXFxcdF0qIycsICckJyksXG4gICAgICBobGpzLkNPTU1FTlQoJ15bIFxcXFx0XSojJywgJyQnKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3Byb2MnLFxuICAgICAgICBlbmQ6ICdbXFxcXHtdJyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICBiZWdpbjogJ1sgXFxcXHRcXFxcblxcXFxyXSsoOjopP1thLXpBLVpfXSgoOjopP1thLXpBLVowLTlfXSkqJyxcbiAgICAgICAgICAgIGVuZDogJ1sgXFxcXHRcXFxcblxcXFxyXScsXG4gICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcJChcXFxceyk/KDo6KT9bYS16QS1aX10oKDo6KT9bYS16QS1aMC05X10pKlxcXFwoKFthLXpBLVowLTlfXSkqXFxcXCknLFxuICAgICAgICAgICAgZW5kOiAnW15hLXpBLVowLTlfXFxcXH1cXFxcJF0nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwkKFxcXFx7KT8oOjopP1thLXpBLVpfXSgoOjopP1thLXpBLVowLTlfXSkqJyxcbiAgICAgICAgICAgIGVuZDogJyhcXFxcKSk/W15hLXpBLVowLTlfXFxcXH1cXFxcJF0nXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgaGxqcy5DX05VTUJFUl9NT0RFXVxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1BTkQgPSB7XG4gICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICBiZWdpbjogL1xcXFwvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IC9bYS16QS1aXFx1MDQzMC1cXHUwNDRmXFx1MDQxMC1cXHUwNDJmXStbKl0/L30sXG4gICAgICAgICAge2JlZ2luOiAvW15hLXpBLVpcXHUwNDMwLVxcdTA0NGZcXHUwNDEwLVxcdTA0MmYwLTldL31cbiAgICAgICAgXSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsIC8vIGJlY2F1c2UgaXQgbG9va3MgbGlrZSBhdHRyaWJ1dGVzIGluIEhUTUwgdGFnc1xuICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgIHtiZWdpbjogL1xcWy8sIGVuZDogL1xcXS99LFxuICAgICAgICAgICAgICAgIHtiZWdpbjogL1xcey8sIGVuZDogL1xcfS99XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAvXFxzKj1cXHMqLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgICAgYmVnaW46IC8tP1xcZCpcXC4/XFxkKyhwdHxwY3xtbXxjbXxpbnxkZHxjY3xleHxlbSk/L1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT01NQU5ELFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmb3JtdWxhJyxcbiAgICAgICAgY29udGFpbnM6IFtDT01NQU5EXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL1xcJFxcJC8sIGVuZDogL1xcJFxcJC99LFxuICAgICAgICAgIHtiZWdpbjogL1xcJC8sIGVuZDogL1xcJC99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICclJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRfSU5fVFlQRVMgPSAnYm9vbCBieXRlIGkxNiBpMzIgaTY0IGRvdWJsZSBzdHJpbmcgYmluYXJ5JztcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ25hbWVzcGFjZSBjb25zdCB0eXBlZGVmIHN0cnVjdCBlbnVtIHNlcnZpY2UgZXhjZXB0aW9uIHZvaWQgb25ld2F5IHNldCBsaXN0IG1hcCByZXF1aXJlZCBvcHRpb25hbCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgQlVJTFRfSU5fVFlQRVMsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3N0cnVjdCBlbnVtIHNlcnZpY2UgZXhjZXB0aW9uJywgZW5kOiAvXFx7LyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgc3RhcnRzOiB7ZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWV9IC8vIGhhY2s6IGVhdGluZyBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCB0aXRsZVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGIoc2V0fGxpc3R8bWFwKVxcXFxzKjwnLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IEJVSUxUX0lOX1RZUEVTLFxuICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVFBJRCA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnWzEtOV1bMC05XSonLCAvKiBubyBsZWFkaW5nIHplcm9zICovXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBUUExBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICc6W15cXFxcXV0rJ1xuICB9O1xuICB2YXIgVFBEQVRBID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJyhBUnxQfFBBWUxPQUR8UFJ8UnxTUnxSU1J8TEJMfFZSfFVBTE18TUVTU0FHRXxVVE9PTHxVRlJBTUV8VElNRVJ8JyArXG4gICAgJ1RJTUVSX09WRVJGTE9XfEpPSU5UX01BWF9TUEVFRHxSRVNVTUVfUFJPR3xESUFHX1JFQylcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICBjb250YWluczogW1xuICAgICAgJ3NlbGYnLFxuICAgICAgVFBJRCxcbiAgICAgIFRQTEFCRUxcbiAgICBdXG4gIH07XG4gIHZhciBUUElPID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJyhBSXxBT3xESXxET3xGfFJJfFJPfFVJfFVPfEdJfEdPfFNJfFNPKVxcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAnc2VsZicsXG4gICAgICBUUElELFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwgLyogZm9yIHBvcyBzZWN0aW9uIGF0IGJvdHRvbSAqL1xuICAgICAgVFBMQUJFTFxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnQUJPUlQgQUNDIEFESlVTVCBBTkQgQVBfTEQgQlJFQUsgQ0FMTCBDTlQgQ09MIENPTkRJVElPTiBDT05GSUcgREEgREIgJyArXG4gICAgICAgICdESVYgREVURUNUIEVMU0UgRU5EIEVOREZPUiBFUlJfTlVNIEVSUk9SX1BST0cgRklORSBGT1IgR1AgR1VBUkQgSU5DICcgK1xuICAgICAgICAnSUYgSk1QIExJTkVBUl9NQVhfU1BFRUQgTE9DSyBNT0QgTU9OSVRPUiBPRkZTRVQgT2Zmc2V0IE9SIE9WRVJSSURFICcgK1xuICAgICAgICAnUEFVU0UgUFJFRyBQVEggUlRfTEQgUlVOIFNFTEVDVCBTS0lQIFNraXAgVEEgVEIgVE8gVE9PTF9PRkZTRVQgJyArXG4gICAgICAgICdUb29sX09mZnNldCBVRiBVVCBVRlJBTUVfTlVNIFVUT09MX05VTSBVTkxPQ0sgV0FJVCBYIFkgWiBXIFAgUiBTVFJMRU4gJyArXG4gICAgICAgICdTVUJTVFIgRklORFNUUiBWT0ZGU0VUIFBST0cgQVRUUiBNTiBQT1MnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ09OIE9GRiBtYXhfc3BlZWQgTFBPUyBKUE9TIEVOQUJMRSBESVNBQkxFIFNUQVJUIFNUT1AgUkVTRVQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgVFBEQVRBLFxuICAgICAgVFBJTyxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnLyhQUk9HfEFUVFJ8TU58UE9TfEVORClcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIHRoaXMgaXMgZm9yIGNhc2VzIGxpa2UgLENBTEwgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnKENBTEx8UlVOfFBPSU5UX0xPR0lDfExCTClcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIHRoaXMgaXMgZm9yIGNhc2VzIGxpa2UgQ05UMTAwIHdoZXJlIHRoZSBkZWZhdWx0IGxleGVtZXMgZG8gbm90XG4gICAgICAgICAqIHNlcGFyYXRlIHRoZSBrZXl3b3JkIGFuZCB0aGUgbnVtYmVyICovXG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKEFDQ3xDTlR8U2tpcHxPZmZzZXR8UFNQRHxSVF9MRHxBUF9MRHxUb29sX09mZnNldCknXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvKiB0byBjYXRjaCBudW1iZXJzIHRoYXQgZG8gbm90IGhhdmUgYSB3b3JkIGJvdW5kYXJ5IG9uIHRoZSBsZWZ0ICovXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGQrKHNlY3xtc2VjfG1tL3NlY3xjbS9taW58aW5jaC9taW58ZGVnL3NlY3xtbXxpbnxjbSk/XFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJy8vJywgJ1s7JF0nKSxcbiAgICAgIGhsanMuQ09NTUVOVCgnIScsICdbOyRdJyksXG4gICAgICBobGpzLkNPTU1FTlQoJy0tZWc6JywgJyQnKSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFwkW0EtWmEtejAtOV9dKydcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICB9O1xuXG4gIHZhciBGVU5DVElPTl9OQU1FUyA9ICdhdHRyaWJ1dGUgYmxvY2sgY29uc3RhbnQgY3ljbGUgZGF0ZSBkdW1wIGluY2x1ZGUgJyArXG4gICAgICAgICAgICAgICAgICAnbWF4IG1pbiBwYXJlbnQgcmFuZG9tIHJhbmdlIHNvdXJjZSB0ZW1wbGF0ZV9mcm9tX3N0cmluZyc7XG5cbiAgdmFyIEZVTkNUSU9OUyA9IHtcbiAgICBiZWdpbktleXdvcmRzOiBGVU5DVElPTl9OQU1FUyxcbiAgICBrZXl3b3Jkczoge25hbWU6IEZVTkNUSU9OX05BTUVTfSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFBBUkFNU1xuICAgIF1cbiAgfTtcblxuICB2YXIgRklMVEVSID0ge1xuICAgIGJlZ2luOiAvXFx8W0EtWmEtel9dKzo/LyxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhYnMgYmF0Y2ggY2FwaXRhbGl6ZSBjb2x1bW4gY29udmVydF9lbmNvZGluZyBkYXRlIGRhdGVfbW9kaWZ5IGRlZmF1bHQgJyArXG4gICAgICAnZXNjYXBlIGZpbHRlciBmaXJzdCBmb3JtYXQgaW5reV90b19odG1sIGlubGluZV9jc3Mgam9pbiBqc29uX2VuY29kZSBrZXlzIGxhc3QgJyArXG4gICAgICAnbGVuZ3RoIGxvd2VyIG1hcCBtYXJrZG93biBtZXJnZSBubDJiciBudW1iZXJfZm9ybWF0IHJhdyByZWR1Y2UgcmVwbGFjZSAnICtcbiAgICAgICdyZXZlcnNlIHJvdW5kIHNsaWNlIHNvcnQgc3BhY2VsZXNzIHNwbGl0IHN0cmlwdGFncyB0aXRsZSB0cmltIHVwcGVyIHVybF9lbmNvZGUnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBGVU5DVElPTlNcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRBR1MgPSAnYXBwbHkgYXV0b2VzY2FwZSBibG9jayBkZXByZWNhdGVkIGRvIGVtYmVkIGV4dGVuZHMgZmlsdGVyIGZsdXNoIGZvciBmcm9tICcgK1xuICAgICdpZiBpbXBvcnQgaW5jbHVkZSBtYWNybyBzYW5kYm94IHNldCB1c2UgdmVyYmF0aW0gd2l0aCc7XG5cbiAgVEFHUyA9IFRBR1MgKyAnICcgKyBUQUdTLnNwbGl0KCcgJykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiAnZW5kJyArIHR9KS5qb2luKCcgJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NyYWZ0Y21zJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgvXFx7Iy8sIC8jfS8pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xceyUvLCBlbmQ6IC8lfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogL1xcdysvLFxuICAgICAgICAgICAga2V5d29yZHM6IFRBR1MsXG4gICAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbRklMVEVSLCBGVU5DVElPTlNdLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHsvLCBlbmQ6IC99fS8sXG4gICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBGSUxURVIsIEZVTkNUSU9OU11cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXVswLTlBLVphLXokX10qJztcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaW4gaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoICcgK1xuICAgICAgJ2luc3RhbmNlb2Ygd2l0aCB0aHJvdyBjYXNlIGRlZmF1bHQgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgJyArXG4gICAgICAnbGV0IHlpZWxkIGNvbnN0IGNsYXNzIHB1YmxpYyBwcml2YXRlIHByb3RlY3RlZCBnZXQgc2V0IHN1cGVyICcgK1xuICAgICAgJ3N0YXRpYyBpbXBsZW1lbnRzIGVudW0gZXhwb3J0IGltcG9ydCBkZWNsYXJlIHR5cGUgbmFtZXNwYWNlIGFic3RyYWN0ICcgK1xuICAgICAgJ2FzIGZyb20gZXh0ZW5kcyBhc3luYyBhd2FpdCcsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkIE5hTiBJbmZpbml0eScsXG4gICAgYnVpbHRfaW46XG4gICAgICAnZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgJyArXG4gICAgICAnZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgJyArXG4gICAgICAnRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yICcgK1xuICAgICAgJ1R5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5ICcgK1xuICAgICAgJ0Zsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5ICcgK1xuICAgICAgJ1VpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlICcgK1xuICAgICAgJ21vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBhbnkgbnVtYmVyIGJvb2xlYW4gc3RyaW5nIHZvaWQgUHJvbWlzZSdcbiAgfTtcblxuICB2YXIgREVDT1JBVE9SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnQCcgKyBKU19JREVOVF9SRSxcbiAgfTtcblxuICB2YXIgQVJHUyA9XG4gIHtcbiAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgJ3NlbGYnLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG5cbiAgdmFyIFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBERUNPUkFUT1IsXG4gICAgICBBUkdTXG4gICAgXVxuICB9O1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwW2JCXVswMV0rKW4/JyB9LFxuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbb09dWzAtN10rKW4/JyB9LFxuICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICduPycgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdcXFxcJFxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW10gIC8vIGRlZmluZWQgbGF0ZXJcbiAgfTtcbiAgdmFyIEhUTUxfVEVNUExBVEUgPSB7XG4gICAgYmVnaW46ICdodG1sYCcsIGVuZDogJycsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdgJywgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgU1VCU1RcbiAgICAgIF0sXG4gICAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgfVxuICB9O1xuICB2YXIgQ1NTX1RFTVBMQVRFID0ge1xuICAgIGJlZ2luOiAnY3NzYCcsIGVuZDogJycsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdgJywgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgU1VCU1RcbiAgICAgIF0sXG4gICAgICBzdWJMYW5ndWFnZTogJ2NzcycsXG4gICAgfVxuICB9O1xuICB2YXIgVEVNUExBVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFNVQlNUXG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucyA9IFtcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBIVE1MX1RFTVBMQVRFLFxuICAgIENTU19URU1QTEFURSxcbiAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgTlVNQkVSLFxuICAgIGhsanMuUkVHRVhQX01PREVcbiAgXTtcblxuXG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RzJ10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL15cXHMqWydcIl11c2Ugc3RyaWN0WydcIl0vXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIEhUTUxfVEVNUExBVEUsXG4gICAgICBDU1NfVEVNUExBVEUsXG4gICAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTlVNQkVSLFxuICAgICAgeyAvLyBcInZhbHVlXCIgY29udGFpbmVyXG4gICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3xcXFxcYihjYXNlfHJldHVybnx0aHJvdylcXFxcYilcXFxccyonLFxuICAgICAgICBrZXl3b3JkczogJ3JldHVybiB0aHJvdyBjYXNlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLlJFR0VYUF9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFxcXFwoLio/XFxcXCl8JyArIGhsanMuSURFTlRfUkUgKyAnKVxcXFxzKj0+JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccyo9PicsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXChcXHMqXFwpLyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9bXFx7O10vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHsgYmVnaW46IEpTX0lERU5UX1JFIH0pLFxuICAgICAgICAgIFBBUkFNU1xuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAvJS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCAvLyAoKSA9PiB7fSBpcyBtb3JlIHR5cGljYWwgaW4gVHlwZVNjcmlwdFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NvbnN0cnVjdG9yJywgZW5kOiAvW1xceztdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgUEFSQU1TXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IC8vIHByZXZlbnQgcmVmZXJlbmNlcyBsaWtlIG1vZHVsZS5pZCBmcm9tIGJlaW5nIGhpZ2xpZ2h0ZWQgYXMgbW9kdWxlIGRlZmluaXRpb25zXG4gICAgICAgIGJlZ2luOiAvbW9kdWxlXFwuLyxcbiAgICAgICAga2V5d29yZHM6IHsgYnVpbHRfaW46ICdtb2R1bGUnIH0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ21vZHVsZScsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbnRlcmZhY2UnLCBlbmQ6IC9cXHsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogJ2ludGVyZmFjZSBleHRlbmRzJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbKC5dLyAvLyByZWxldmFuY2UgYm9vc3RlciBmb3IgYSBwYXR0ZXJuIGNvbW1vbiB0byBKUyBsaWJzOiBgJChzb21ldGhpbmcpYCBhbmQgYCQuc29tZXRoaW5nYFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLicgKyBobGpzLklERU5UX1JFLCByZWxldmFuY2U6IDAgLy8gaGFjazogcHJldmVudHMgZGV0ZWN0aW9uIG9mIGtleXdvcmRzIGFmdGVyIGRvdHNcbiAgICAgIH0sXG4gICAgICBERUNPUkFUT1IsXG4gICAgICBBUkdTXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgLy8gVmFsdWUgdHlwZXNcbiAgICAgICAgJ2NoYXIgdWNoYXIgdW5pY2hhciBpbnQgdWludCBsb25nIHVsb25nIHNob3J0IHVzaG9ydCBpbnQ4IGludDE2IGludDMyIGludDY0IHVpbnQ4ICcgK1xuICAgICAgICAndWludDE2IHVpbnQzMiB1aW50NjQgZmxvYXQgZG91YmxlIGJvb2wgc3RydWN0IGVudW0gc3RyaW5nIHZvaWQgJyArXG4gICAgICAgIC8vIFJlZmVyZW5jZSB0eXBlc1xuICAgICAgICAnd2VhayB1bm93bmVkIG93bmVkICcgK1xuICAgICAgICAvLyBNb2RpZmllcnNcbiAgICAgICAgJ2FzeW5jIHNpZ25hbCBzdGF0aWMgYWJzdHJhY3QgaW50ZXJmYWNlIG92ZXJyaWRlIHZpcnR1YWwgZGVsZWdhdGUgJyArXG4gICAgICAgIC8vIENvbnRyb2wgU3RydWN0dXJlc1xuICAgICAgICAnaWYgd2hpbGUgZG8gZm9yIGZvcmVhY2ggZWxzZSBzd2l0Y2ggY2FzZSBicmVhayBkZWZhdWx0IHJldHVybiB0cnkgY2F0Y2ggJyArXG4gICAgICAgIC8vIFZpc2liaWxpdHlcbiAgICAgICAgJ3B1YmxpYyBwcml2YXRlIHByb3RlY3RlZCBpbnRlcm5hbCAnICtcbiAgICAgICAgLy8gT3RoZXJcbiAgICAgICAgJ3VzaW5nIG5ldyB0aGlzIGdldCBzZXQgY29uc3Qgc3Rkb3V0IHN0ZGluIHN0ZGVyciB2YXInLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdEQnVzIEdMaWIgQ0NvZGUgR2VlIE9iamVjdCBHdGsgUG9zaXgnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ2ZhbHNlIHRydWUgbnVsbCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSBuYW1lc3BhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1teLDpcXFxcblxcXFxzXFxcXC5dJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInLFxuICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeIycsIGVuZDogJyQnLFxuICAgICAgICByZWxldmFuY2U6IDJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndmInXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYWRkaGFuZGxlciBhZGRyZXNzb2YgYWxpYXMgYW5kIGFuZGFsc28gYWdncmVnYXRlIGFuc2kgYXMgYXN5bmMgYXNzZW1ibHkgYXV0byBhd2FpdCBiaW5hcnkgYnkgYnlyZWYgYnl2YWwgJyArIC8qIGEtYiAqL1xuICAgICAgICAnY2FsbCBjYXNlIGNhdGNoIGNsYXNzIGNvbXBhcmUgY29uc3QgY29udGludWUgY3VzdG9tIGRlY2xhcmUgZGVmYXVsdCBkZWxlZ2F0ZSBkaW0gZGlzdGluY3QgZG8gJyArIC8qIGMtZCAqL1xuICAgICAgICAnZWFjaCBlcXVhbHMgZWxzZSBlbHNlaWYgZW5kIGVudW0gZXJhc2UgZXJyb3IgZXZlbnQgZXhpdCBleHBsaWNpdCBmaW5hbGx5IGZvciBmcmllbmQgZnJvbSBmdW5jdGlvbiAnICsgLyogZS1mICovXG4gICAgICAgICdnZXQgZ2xvYmFsIGdvdG8gZ3JvdXAgaGFuZGxlcyBpZiBpbXBsZW1lbnRzIGltcG9ydHMgaW4gaW5oZXJpdHMgaW50ZXJmYWNlIGludG8gaXMgaXNmYWxzZSBpc25vdCBpc3RydWUgaXRlcmF0b3IgJyArIC8qIGctaSAqL1xuICAgICAgICAnam9pbiBrZXkgbGV0IGxpYiBsaWtlIGxvb3AgbWUgbWlkIG1vZCBtb2R1bGUgbXVzdGluaGVyaXQgbXVzdG92ZXJyaWRlIG15YmFzZSBteWNsYXNzICcgKyAvKiBqLW0gKi9cbiAgICAgICAgJ25hbWVzcGFjZSBuYXJyb3dpbmcgbmV3IG5leHQgbm90IG5vdGluaGVyaXRhYmxlIG5vdG92ZXJyaWRhYmxlICcgKyAvKiBuICovXG4gICAgICAgICdvZiBvZmYgb24gb3BlcmF0b3Igb3B0aW9uIG9wdGlvbmFsIG9yIG9yZGVyIG9yZWxzZSBvdmVybG9hZHMgb3ZlcnJpZGFibGUgb3ZlcnJpZGVzICcgKyAvKiBvICovXG4gICAgICAgICdwYXJhbWFycmF5IHBhcnRpYWwgcHJlc2VydmUgcHJpdmF0ZSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVibGljICcgKyAvKiBwICovXG4gICAgICAgICdyYWlzZWV2ZW50IHJlYWRvbmx5IHJlZGltIHJlbSByZW1vdmVoYW5kbGVyIHJlc3VtZSByZXR1cm4gJyArIC8qIHIgKi9cbiAgICAgICAgJ3NlbGVjdCBzZXQgc2hhZG93cyBzaGFyZWQgc2tpcCBzdGF0aWMgc3RlcCBzdG9wIHN0cnVjdHVyZSBzdHJpY3Qgc3ViIHN5bmNsb2NrICcgKyAvKiBzICovXG4gICAgICAgICd0YWtlIHRleHQgdGhlbiB0aHJvdyB0byB0cnkgdW5pY29kZSB1bnRpbCB1c2luZyB3aGVuIHdoZXJlIHdoaWxlIHdpZGVuaW5nIHdpdGggd2l0aGV2ZW50cyB3cml0ZW9ubHkgeG9yIHlpZWxkJywgLyogdC15ICovXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2Jvb2xlYW4gYnl0ZSBjYm9vbCBjYnl0ZSBjY2hhciBjZGF0ZSBjZGVjIGNkYmwgY2hhciBjaW50IGNsbmcgY29iaiBjc2J5dGUgY3Nob3J0IGNzbmcgY3N0ciBjdHlwZSAnICsgIC8qIGItYyAqL1xuICAgICAgICAnZGF0ZSBkZWNpbWFsIGRpcmVjdGNhc3QgZG91YmxlIGdldHR5cGUgZ2V0eG1sbmFtZXNwYWNlIGlpZiBpbnRlZ2VyIGxvbmcgb2JqZWN0ICcgKyAvKiBkLW8gKi9cbiAgICAgICAgJ3NieXRlIHNob3J0IHNpbmdsZSBzdHJpbmcgdHJ5Y2FzdCB0eXBlb2YgdWludGVnZXIgdWxvbmcgdXNob3J0JywgLyogcy11ICovXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBub3RoaW5nJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogJy8vfHt8fXxlbmRpZnxnb3N1Ynx2YXJpYW50fHdlbmR8XlxcXFwkICcsIC8qIHJlc2VydmVkIGRlcHJlY2F0ZWQga2V5d29yZHMgKi9cbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjb250YWluczogW3tiZWdpbjogJ1wiXCInfV19KSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1xcJycsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnXFwnXFwnXFwnfDwhLS18LS0+JyxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlBIUkFTQUxfV09SRFNfTU9ERV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnPC8/JywgZW5kOiAnPicsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5QSFJBU0FMX1dPUkRTX01PREVdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsc2VpZiBlbmQgcmVnaW9uIGV4dGVybmFsc291cmNlJ31cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndmJzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2NhbGwgY2xhc3MgY29uc3QgZGltIGRvIGxvb3AgZXJhc2UgZXhlY3V0ZSBleGVjdXRlZ2xvYmFsIGV4aXQgZm9yIGVhY2ggbmV4dCBmdW5jdGlvbiAnICtcbiAgICAgICAgJ2lmIHRoZW4gZWxzZSBvbiBlcnJvciBvcHRpb24gZXhwbGljaXQgbmV3IHByaXZhdGUgcHJvcGVydHkgbGV0IGdldCBwdWJsaWMgcmFuZG9taXplICcgK1xuICAgICAgICAncmVkaW0gcmVtIHNlbGVjdCBjYXNlIHNldCBzdG9wIHN1YiB3aGlsZSB3ZW5kIHdpdGggZW5kIHRvIGVsc2VpZiBpcyBvciB4b3IgYW5kIG5vdCAnICtcbiAgICAgICAgJ2NsYXNzX2luaXRpYWxpemUgY2xhc3NfdGVybWluYXRlIGRlZmF1bHQgcHJlc2VydmUgaW4gbWUgYnl2YWwgYnlyZWYgc3RlcCByZXN1bWUgZ290bycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2xjYXNlIG1vbnRoIHZhcnR5cGUgaW5zdHJyZXYgdWJvdW5kIHNldGxvY2FsZSBnZXRvYmplY3QgcmdiIGdldHJlZiBzdHJpbmcgJyArXG4gICAgICAgICd3ZWVrZGF5bmFtZSBybmQgZGF0ZWFkZCBtb250aG5hbWUgbm93IGRheSBtaW51dGUgaXNhcnJheSBjYm9vbCByb3VuZCBmb3JtYXRjdXJyZW5jeSAnICtcbiAgICAgICAgJ2NvbnZlcnNpb25zIGNzbmcgdGltZXZhbHVlIHNlY29uZCB5ZWFyIHNwYWNlIGFicyBjbG5nIHRpbWVzZXJpYWwgZml4cyBsZW4gYXNjICcgK1xuICAgICAgICAnaXNlbXB0eSBtYXRocyBkYXRlc2VyaWFsIGF0biB0aW1lciBpc29iamVjdCBmaWx0ZXIgd2Vla2RheSBkYXRldmFsdWUgY2N1ciBpc2RhdGUgJyArXG4gICAgICAgICdpbnN0ciBkYXRlZGlmZiBmb3JtYXRkYXRldGltZSByZXBsYWNlIGlzbnVsbCByaWdodCBzZ24gYXJyYXkgc251bWVyaWMgbG9nIGNkYmwgaGV4ICcgK1xuICAgICAgICAnY2hyIGxib3VuZCBtc2dib3ggdWNhc2UgZ2V0bG9jYWxlIGNvcyBjZGF0ZSBjYnl0ZSBydHJpbSBqb2luIGhvdXIgb2N0IHR5cGVuYW1lIHRyaW0gJyArXG4gICAgICAgICdzdHJjb21wIGludCBjcmVhdGVvYmplY3QgbG9hZHBpY3R1cmUgdGFuIGZvcm1hdG51bWJlciBtaWQgc2NyaXB0ZW5naW5lYnVpbGR2ZXJzaW9uICcgK1xuICAgICAgICAnc2NyaXB0ZW5naW5lIHNwbGl0IHNjcmlwdGVuZ2luZW1pbm9ydmVyc2lvbiBjaW50IHNpbiBkYXRlcGFydCBsdHJpbSBzcXIgJyArXG4gICAgICAgICdzY3JpcHRlbmdpbmVtYWpvcnZlcnNpb24gdGltZSBkZXJpdmVkIGV2YWwgZGF0ZSBmb3JtYXRwZXJjZW50IGV4cCBpbnB1dGJveCBsZWZ0IGFzY3cgJyArXG4gICAgICAgICdjaHJ3IHJlZ2V4cCBzZXJ2ZXIgcmVzcG9uc2UgcmVxdWVzdCBjc3RyIGVycicsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBudWxsIG5vdGhpbmcgZW1wdHknXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAnLy8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XX0pLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAvJy8sXG4gICAgICAgIC8kLyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8JScsIGVuZDogJyU+JyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICd2YnNjcmlwdCdcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1ZfS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhY2NlcHRfb24gYWxpYXMgYWx3YXlzIGFsd2F5c19jb21iIGFsd2F5c19mZiBhbHdheXNfbGF0Y2ggYW5kIGFzc2VydCBhc3NpZ24gJyArXG4gICAgICAnYXNzdW1lIGF1dG9tYXRpYyBiZWZvcmUgYmVnaW4gYmluZCBiaW5zIGJpbnNvZiBiaXQgYnJlYWsgYnVmfDAgYnVmaWYwIGJ1ZmlmMSAnICtcbiAgICAgICdieXRlIGNhc2UgY2FzZXggY2FzZXogY2VsbCBjaGFuZGxlIGNoZWNrZXIgY2xhc3MgY2xvY2tpbmcgY21vcyBjb25maWcgY29uc3QgJyArXG4gICAgICAnY29uc3RyYWludCBjb250ZXh0IGNvbnRpbnVlIGNvdmVyIGNvdmVyZ3JvdXAgY292ZXJwb2ludCBjcm9zcyBkZWFzc2lnbiBkZWZhdWx0ICcgK1xuICAgICAgJ2RlZnBhcmFtIGRlc2lnbiBkaXNhYmxlIGRpc3QgZG8gZWRnZSBlbHNlIGVuZCBlbmRjYXNlIGVuZGNoZWNrZXIgZW5kY2xhc3MgJyArXG4gICAgICAnZW5kY2xvY2tpbmcgZW5kY29uZmlnIGVuZGZ1bmN0aW9uIGVuZGdlbmVyYXRlIGVuZGdyb3VwIGVuZGludGVyZmFjZSBlbmRtb2R1bGUgJyArXG4gICAgICAnZW5kcGFja2FnZSBlbmRwcmltaXRpdmUgZW5kcHJvZ3JhbSBlbmRwcm9wZXJ0eSBlbmRzcGVjaWZ5IGVuZHNlcXVlbmNlIGVuZHRhYmxlICcgK1xuICAgICAgJ2VuZHRhc2sgZW51bSBldmVudCBldmVudHVhbGx5IGV4cGVjdCBleHBvcnQgZXh0ZW5kcyBleHRlcm4gZmluYWwgZmlyc3RfbWF0Y2ggZm9yICcgK1xuICAgICAgJ2ZvcmNlIGZvcmVhY2ggZm9yZXZlciBmb3JrIGZvcmtqb2luIGZ1bmN0aW9uIGdlbmVyYXRlfDUgZ2VudmFyIGdsb2JhbCBoaWdoejAgaGlnaHoxICcgK1xuICAgICAgJ2lmIGlmZiBpZm5vbmUgaWdub3JlX2JpbnMgaWxsZWdhbF9iaW5zIGltcGxlbWVudHMgaW1wbGllcyBpbXBvcnQgaW5jZGlyIGluY2x1ZGUgJyArXG4gICAgICAnaW5pdGlhbCBpbm91dCBpbnB1dCBpbnNpZGUgaW5zdGFuY2UgaW50IGludGVnZXIgaW50ZXJjb25uZWN0IGludGVyZmFjZSBpbnRlcnNlY3QgJyArXG4gICAgICAnam9pbiBqb2luX2FueSBqb2luX25vbmUgbGFyZ2UgbGV0IGxpYmxpc3QgbGlicmFyeSBsb2NhbCBsb2NhbHBhcmFtIGxvZ2ljIGxvbmdpbnQgJyArXG4gICAgICAnbWFjcm9tb2R1bGUgbWF0Y2hlcyBtZWRpdW0gbW9kcG9ydCBtb2R1bGUgbmFuZCBuZWdlZGdlIG5ldHR5cGUgbmV3IG5leHR0aW1lIG5tb3MgJyArXG4gICAgICAnbm9yIG5vc2hvd2NhbmNlbGxlZCBub3Qgbm90aWYwIG5vdGlmMSBvciBvdXRwdXQgcGFja2FnZSBwYWNrZWQgcGFyYW1ldGVyIHBtb3MgJyArXG4gICAgICAncG9zZWRnZSBwcmltaXRpdmUgcHJpb3JpdHkgcHJvZ3JhbSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVsbDAgcHVsbDEgcHVsbGRvd24gcHVsbHVwICcgK1xuICAgICAgJ3B1bHNlc3R5bGVfb25kZXRlY3QgcHVsc2VzdHlsZV9vbmV2ZW50IHB1cmUgcmFuZCByYW5kYyByYW5kY2FzZSByYW5kc2VxdWVuY2UgcmNtb3MgJyArXG4gICAgICAncmVhbCByZWFsdGltZSByZWYgcmVnIHJlamVjdF9vbiByZWxlYXNlIHJlcGVhdCByZXN0cmljdCByZXR1cm4gcm5tb3MgcnBtb3MgcnRyYW4gJyArXG4gICAgICAncnRyYW5pZjAgcnRyYW5pZjEgc19hbHdheXMgc19ldmVudHVhbGx5IHNfbmV4dHRpbWUgc191bnRpbCBzX3VudGlsX3dpdGggc2NhbGFyZWQgJyArXG4gICAgICAnc2VxdWVuY2Ugc2hvcnRpbnQgc2hvcnRyZWFsIHNob3djYW5jZWxsZWQgc2lnbmVkIHNtYWxsIHNvZnQgc29sdmUgc3BlY2lmeSBzcGVjcGFyYW0gJyArXG4gICAgICAnc3RhdGljIHN0cmluZyBzdHJvbmcgc3Ryb25nMCBzdHJvbmcxIHN0cnVjdCBzdXBlciBzdXBwbHkwIHN1cHBseTEgc3luY19hY2NlcHRfb24gJyArXG4gICAgICAnc3luY19yZWplY3Rfb24gdGFibGUgdGFnZ2VkIHRhc2sgdGhpcyB0aHJvdWdob3V0IHRpbWUgdGltZXByZWNpc2lvbiB0aW1ldW5pdCB0cmFuICcgK1xuICAgICAgJ3RyYW5pZjAgdHJhbmlmMSB0cmkgdHJpMCB0cmkxIHRyaWFuZCB0cmlvciB0cmlyZWcgdHlwZSB0eXBlZGVmIHVuaW9uIHVuaXF1ZSB1bmlxdWUwICcgK1xuICAgICAgJ3Vuc2lnbmVkIHVudGlsIHVudGlsX3dpdGggdW50eXBlZCB1c2UgdXdpcmUgdmFyIHZlY3RvcmVkIHZpcnR1YWwgdm9pZCB3YWl0IHdhaXRfb3JkZXIgJyArXG4gICAgICAnd2FuZCB3ZWFrIHdlYWswIHdlYWsxIHdoaWxlIHdpbGRjYXJkIHdpcmUgd2l0aCB3aXRoaW4gd29yIHhub3IgeG9yJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ251bGwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJyRmaW5pc2ggJHN0b3AgJGV4aXQgJGZhdGFsICRlcnJvciAkd2FybmluZyAkaW5mbyAkcmVhbHRpbWUgJHRpbWUgJHByaW50dGltZXNjYWxlICcgK1xuICAgICAgJyRiaXRzdG9yZWFsICRiaXRzdG9zaG9ydHJlYWwgJGl0b3IgJHNpZ25lZCAkY2FzdCAkYml0cyAkc3RpbWUgJHRpbWVmb3JtYXQgJyArXG4gICAgICAnJHJlYWx0b2JpdHMgJHNob3J0cmVhbHRvYml0cyAkcnRvaSAkdW5zaWduZWQgJGFzc2VydG9uICRhc3NlcnRraWxsICRhc3NlcnRwYXNzb24gJyArXG4gICAgICAnJGFzc2VydGZhaWxvbiAkYXNzZXJ0bm9udmFjdW91c29uICRhc3NlcnRvZmYgJGFzc2VydGNvbnRyb2wgJGFzc2VydHBhc3NvZmYgJyArXG4gICAgICAnJGFzc2VydGZhaWxvZmYgJGFzc2VydHZhY3VvdXNvZmYgJGlzdW5ib3VuZGVkICRzYW1wbGVkICRmZWxsICRjaGFuZ2VkICRwYXN0X2djbGsgJyArXG4gICAgICAnJGZlbGxfZ2NsayAkY2hhbmdlZF9nY2xrICRyaXNpbmdfZ2NsayAkc3RlYWR5X2djbGsgJGNvdmVyYWdlX2NvbnRyb2wgJyArXG4gICAgICAnJGNvdmVyYWdlX2dldCAkY292ZXJhZ2Vfc2F2ZSAkc2V0X2NvdmVyYWdlX2RiX25hbWUgJHJvc2UgJHN0YWJsZSAkcGFzdCAnICtcbiAgICAgICckcm9zZV9nY2xrICRzdGFibGVfZ2NsayAkZnV0dXJlX2djbGsgJGZhbGxpbmdfZ2NsayAkY2hhbmdpbmdfZ2NsayAkZGlzcGxheSAnICtcbiAgICAgICckY292ZXJhZ2VfZ2V0X21heCAkY292ZXJhZ2VfbWVyZ2UgJGdldF9jb3ZlcmFnZSAkbG9hZF9jb3ZlcmFnZV9kYiAkdHlwZW5hbWUgJyArXG4gICAgICAnJHVucGFja2VkX2RpbWVuc2lvbnMgJGxlZnQgJGxvdyAkaW5jcmVtZW50ICRjbG9nMiAkbG4gJGxvZzEwICRleHAgJHNxcnQgJHBvdyAnICtcbiAgICAgICckZmxvb3IgJGNlaWwgJHNpbiAkY29zICR0YW4gJGNvdW50Yml0cyAkb25laG90ICRpc3Vua25vd24gJGZhdGFsICR3YXJuaW5nICcgK1xuICAgICAgJyRkaW1lbnNpb25zICRyaWdodCAkaGlnaCAkc2l6ZSAkYXNpbiAkYWNvcyAkYXRhbiAkYXRhbjIgJGh5cG90ICRzaW5oICRjb3NoICcgK1xuICAgICAgJyR0YW5oICRhc2luaCAkYWNvc2ggJGF0YW5oICRjb3VudG9uZXMgJG9uZWhvdDAgJGVycm9yICRpbmZvICRyYW5kb20gJyArXG4gICAgICAnJGRpc3RfY2hpX3NxdWFyZSAkZGlzdF9lcmxhbmcgJGRpc3RfZXhwb25lbnRpYWwgJGRpc3Rfbm9ybWFsICRkaXN0X3BvaXNzb24gJyArXG4gICAgICAnJGRpc3RfdCAkZGlzdF91bmlmb3JtICRxX2luaXRpYWxpemUgJHFfcmVtb3ZlICRxX2V4YW0gJGFzeW5jJGFuZCRhcnJheSAnICtcbiAgICAgICckYXN5bmMkbmFuZCRhcnJheSAkYXN5bmMkb3IkYXJyYXkgJGFzeW5jJG5vciRhcnJheSAkc3luYyRhbmQkYXJyYXkgJyArXG4gICAgICAnJHN5bmMkbmFuZCRhcnJheSAkc3luYyRvciRhcnJheSAkc3luYyRub3IkYXJyYXkgJHFfYWRkICRxX2Z1bGwgJHBzcHJpbnRmICcgK1xuICAgICAgJyRhc3luYyRhbmQkcGxhbmUgJGFzeW5jJG5hbmQkcGxhbmUgJGFzeW5jJG9yJHBsYW5lICRhc3luYyRub3IkcGxhbmUgJyArXG4gICAgICAnJHN5bmMkYW5kJHBsYW5lICRzeW5jJG5hbmQkcGxhbmUgJHN5bmMkb3IkcGxhbmUgJHN5bmMkbm9yJHBsYW5lICRzeXN0ZW0gJyArXG4gICAgICAnJGRpc3BsYXkgJGRpc3BsYXliICRkaXNwbGF5aCAkZGlzcGxheW8gJHN0cm9iZSAkc3Ryb2JlYiAkc3Ryb2JlaCAkc3Ryb2JlbyAnICtcbiAgICAgICckd3JpdGUgJHJlYWRtZW1iICRyZWFkbWVtaCAkd3JpdGVtZW1oICR2YWx1ZSRwbHVzYXJncyAnICtcbiAgICAgICckZHVtcHZhcnMgJGR1bXBvbiAkZHVtcGxpbWl0ICRkdW1wcG9ydHMgJGR1bXBwb3J0c29uICRkdW1wcG9ydHNsaW1pdCAnICtcbiAgICAgICckd3JpdGViICR3cml0ZWggJHdyaXRlbyAkbW9uaXRvciAkbW9uaXRvcmIgJG1vbml0b3JoICRtb25pdG9ybyAkd3JpdGVtZW1iICcgK1xuICAgICAgJyRkdW1wZmlsZSAkZHVtcG9mZiAkZHVtcGFsbCAkZHVtcGZsdXNoICRkdW1wcG9ydHNvZmYgJGR1bXBwb3J0c2FsbCAnICtcbiAgICAgICckZHVtcHBvcnRzZmx1c2ggJGZjbG9zZSAkZmRpc3BsYXkgJGZkaXNwbGF5YiAkZmRpc3BsYXloICRmZGlzcGxheW8gJyArXG4gICAgICAnJGZzdHJvYmUgJGZzdHJvYmViICRmc3Ryb2JlaCAkZnN0cm9iZW8gJHN3cml0ZSAkc3dyaXRlYiAkc3dyaXRlaCAnICtcbiAgICAgICckc3dyaXRlbyAkZnNjYW5mICRmcmVhZCAkZnNlZWsgJGZmbHVzaCAkZmVvZiAkZm9wZW4gJGZ3cml0ZSAkZndyaXRlYiAnICtcbiAgICAgICckZndyaXRlaCAkZndyaXRlbyAkZm1vbml0b3IgJGZtb25pdG9yYiAkZm1vbml0b3JoICRmbW9uaXRvcm8gJHNmb3JtYXQgJyArXG4gICAgICAnJHNmb3JtYXRmICRmZ2V0YyAkdW5nZXRjICRmZ2V0cyAkc3NjYW5mICRyZXdpbmQgJGZ0ZWxsICRmZXJyb3InXG4gICAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3YnLCAnc3YnLCAnc3ZoJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAga2V5d29yZHM6IFNWX0tFWVdPUkRTLCBsZXhlbWVzOiAvW1xcd1xcJF0rLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICdcXFxcYigoXFxcXGQrXFwnKGJ8aHxvfGR8QnxIfE98RCkpWzAtOXh6WFphLWZBLUZfXSspJ30sXG4gICAgICAgICAge2JlZ2luOiAnXFxcXEIoKFxcJyhifGh8b3xkfEJ8SHxPfEQpKVswLTl4elhaYS1mQS1GX10rKSd9LFxuICAgICAgICAgIHtiZWdpbjogJ1xcXFxiKFswLTlfXSkrJywgcmVsZXZhbmNlOiAwfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLyogcGFyYW1ldGVycyB0byBpbnN0YW5jZXMgKi9cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJyNcXFxcKCg/IXBhcmFtZXRlcikuK1xcXFwpJ30sXG4gICAgICAgICAge2JlZ2luOiAnXFxcXC5cXFxcdysnLCByZWxldmFuY2U6IDB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdkZWZpbmUgX19GSUxFX18gJyArXG4gICAgICAgICAgJ19fTElORV9fIGJlZ2luX2tleXdvcmRzIGNlbGxkZWZpbmUgZGVmYXVsdF9uZXR0eXBlIGRlZmluZSAnICtcbiAgICAgICAgICAnZWxzZSBlbHNpZiBlbmRfa2V5d29yZHMgZW5kY2VsbGRlZmluZSBlbmRpZiBpZmRlZiBpZm5kZWYgJyArXG4gICAgICAgICAgJ2luY2x1ZGUgbGluZSBub3VuY29ubmVjdGVkX2RyaXZlIHByYWdtYSByZXNldGFsbCB0aW1lc2NhbGUgJyArXG4gICAgICAgICAgJ3VuY29ubmVjdGVkX2RyaXZlIHVuZGVmIHVuZGVmaW5lYWxsJ30sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTsgLy8gcmV0dXJuXG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIFZIREwgbnVtZXJpYyBsaXRlcmFscy5cblxuICAvLyBEZWNpbWFsIGxpdGVyYWw6XG4gIHZhciBJTlRFR0VSX1JFID0gJ1xcXFxkKF98XFxcXGQpKic7XG4gIHZhciBFWFBPTkVOVF9SRSA9ICdbZUVdWy0rXT8nICsgSU5URUdFUl9SRTtcbiAgdmFyIERFQ0lNQUxfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnKFxcXFwuJyArIElOVEVHRVJfUkUgKyAnKT8nICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuICAvLyBCYXNlZCBsaXRlcmFsOlxuICB2YXIgQkFTRURfSU5URUdFUl9SRSA9ICdcXFxcdysnO1xuICB2YXIgQkFTRURfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnIycgKyBCQVNFRF9JTlRFR0VSX1JFICsgJyhcXFxcLicgKyBCQVNFRF9JTlRFR0VSX1JFICsgJyk/JyArICcjJyArICcoJyArIEVYUE9ORU5UX1JFICsgJyk/JztcblxuICB2YXIgTlVNQkVSX1JFID0gJ1xcXFxiKCcgKyBCQVNFRF9MSVRFUkFMX1JFICsgJ3wnICsgREVDSU1BTF9MSVRFUkFMX1JFICsgJyknO1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2FicyBhY2Nlc3MgYWZ0ZXIgYWxpYXMgYWxsIGFuZCBhcmNoaXRlY3R1cmUgYXJyYXkgYXNzZXJ0IGFzc3VtZSBhc3N1bWVfZ3VhcmFudGVlIGF0dHJpYnV0ZSAnICtcbiAgICAgICAgJ2JlZ2luIGJsb2NrIGJvZHkgYnVmZmVyIGJ1cyBjYXNlIGNvbXBvbmVudCBjb25maWd1cmF0aW9uIGNvbnN0YW50IGNvbnRleHQgY292ZXIgZGlzY29ubmVjdCAnICtcbiAgICAgICAgJ2Rvd250byBkZWZhdWx0IGVsc2UgZWxzaWYgZW5kIGVudGl0eSBleGl0IGZhaXJuZXNzIGZpbGUgZm9yIGZvcmNlIGZ1bmN0aW9uIGdlbmVyYXRlICcgK1xuICAgICAgICAnZ2VuZXJpYyBncm91cCBndWFyZGVkIGlmIGltcHVyZSBpbiBpbmVydGlhbCBpbm91dCBpcyBsYWJlbCBsaWJyYXJ5IGxpbmthZ2UgbGl0ZXJhbCAnICtcbiAgICAgICAgJ2xvb3AgbWFwIG1vZCBuYW5kIG5ldyBuZXh0IG5vciBub3QgbnVsbCBvZiBvbiBvcGVuIG9yIG90aGVycyBvdXQgcGFja2FnZSBwYXJhbWV0ZXIgcG9ydCAnICtcbiAgICAgICAgJ3Bvc3Rwb25lZCBwcm9jZWR1cmUgcHJvY2VzcyBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVyZSByYW5nZSByZWNvcmQgcmVnaXN0ZXIgcmVqZWN0ICcgK1xuICAgICAgICAncmVsZWFzZSByZW0gcmVwb3J0IHJlc3RyaWN0IHJlc3RyaWN0X2d1YXJhbnRlZSByZXR1cm4gcm9sIHJvciBzZWxlY3Qgc2VxdWVuY2UgJyArXG4gICAgICAgICdzZXZlcml0eSBzaGFyZWQgc2lnbmFsIHNsYSBzbGwgc3JhIHNybCBzdHJvbmcgc3VidHlwZSB0aGVuIHRvIHRyYW5zcG9ydCB0eXBlICcgK1xuICAgICAgICAndW5hZmZlY3RlZCB1bml0cyB1bnRpbCB1c2UgdmFyaWFibGUgdmlldyB2bW9kZSB2cHJvcCB2dW5pdCB3YWl0IHdoZW4gd2hpbGUgd2l0aCB4bm9yIHhvcicsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2Jvb2xlYW4gYml0IGNoYXJhY3RlciAnICtcbiAgICAgICAgJ2ludGVnZXIgdGltZSBkZWxheV9sZW5ndGggbmF0dXJhbCBwb3NpdGl2ZSAnICtcbiAgICAgICAgJ3N0cmluZyBiaXRfdmVjdG9yIGZpbGVfb3Blbl9raW5kIGZpbGVfb3Blbl9zdGF0dXMgJyArXG4gICAgICAgICdzdGRfbG9naWMgc3RkX2xvZ2ljX3ZlY3RvciB1bnNpZ25lZCBzaWduZWQgYm9vbGVhbl92ZWN0b3IgaW50ZWdlcl92ZWN0b3IgJyArXG4gICAgICAgICdzdGRfdWxvZ2ljIHN0ZF91bG9naWNfdmVjdG9yIHVucmVzb2x2ZWRfdW5zaWduZWQgdV91bnNpZ25lZCB1bnJlc29sdmVkX3NpZ25lZCB1X3NpZ25lZCAnICtcbiAgICAgICAgJ3JlYWxfdmVjdG9yIHRpbWVfdmVjdG9yJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdmYWxzZSB0cnVlIG5vdGUgd2FybmluZyBlcnJvciBmYWlsdXJlICcgKyAgLy8gc2V2ZXJpdHlfbGV2ZWxcbiAgICAgICAgJ2xpbmUgdGV4dCBzaWRlIHdpZHRoJyAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0aW9cbiAgICB9LFxuICAgIGlsbGVnYWw6ICd7JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSwgICAgICAvLyBWSERMLTIwMDggYmxvY2sgY29tbWVudGluZy5cbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IE5VTUJFUl9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJyhVfFh8MHwxfFp8V3xMfEh8LSlcXCcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFwnW0EtWmEtel0oXz9bQS1aYS16MC05XSkqJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiAvWyEjQFxcd10rLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgLy8gZXhwcmVzcyB2ZXJzaW9uIGV4Y2VwdDogISAmICogPCA9ID4gISEgIyBAIEBAXG4gICAgICAgICdOfDAgUHwwIFh8MCBhfDAgYWIgYWJjIGFibyBhbCBhbSBhbnwwIGFyIGFyZ2EgYXJnZCBhcmdlIGFyZ2RvIGFyZ2cgYXJnbCBhcmd1IGFzIGF1IGF1ZyBhdW4gYnwwIGJOIGJhIGJhZCBiZCBiZSBiZWwgYmYgYmwgYm0gYm4gYm8gYnAgYnIgYnJlYSBicmVha2EgYnJlYWtkIGJyZWFrbCBicm8gYnVmZG8gYnVmZmVycyBidW4gYncgY3wwIGNOIGNOZiBjYSBjYWJjIGNhZGRiIGNhZCBjYWRkZiBjYWwgY2F0IGNiIGNjIGNjbCBjZCBjZSBjZXggY2YgY2ZpciBjZ2V0YiBjZ2V0ZSBjZyBjaGFuZ2VzIGNoZCBjaGUgY2hlY2t0IGNsIGNsYSBjbG8gY20gY21hcGMgY21lIGNuIGNuZXcgY25mIGNubyBjbm9yZWEgY25vcmVtZSBjbyBjb2wgY29sbyBjb20gY29tYyBjb21wIGNvbiBjb25mIGNvcGUgJytcbiAgICAgICAgJ2NwIGNwZiBjcSBjciBjcyBjc3QgY3UgY3VuYSBjdW5tZSBjdyBkZWxtIGRlYiBkZWJ1Z2cgZGVsYyBkZWxmIGRpZiBkaWZmZyBkaWZmbyBkaWZmcCBkaWZmcHUgZGlmZnMgZGlmZnRoaXMgZGlnIGRpIGRsIGRlbGwgZGogZGxpIGRvIGRvYXV0b2EgZHAgZHIgZHMgZHNwIGV8MCBlYSBlYyBlY2hvZSBlY2hvaCBlY2hvbSBlY2hvbiBlbCBlbHNlaSBlbSBlbiBlbmRmbyBlbmRmIGVuZHQgZW5kdyBlbmUgZXggZXhlIGV4aSBleHUgZnwwIGZpbGVzIGZpbGV0IGZpbiBmaW5hIGZpbmkgZmlyIGZpeCBmbyBmb2xkYyBmb2xkZCBmb2xkZG9jIGZvbGRvIGZvciBmdSBnbyBnciBncmVwYSBndSBndiBoYSBoZWxwZiBoZWxwZyBoZWxwdCBoaSBoaWQgaGlzIGlhIGlhYmMgaWYgaWogaWwgaW0gaW1hcGMgJytcbiAgICAgICAgJ2ltZSBpbm8gaW5vcmVhIGlub3JlbWUgaW50IGlzIGlzcCBpdSBpdW5hIGl1bm1lIGp8MCBqdSBrfDAga2VlcGEga2VlIGtlZXBqIGxOIGxOZiBsfDAgbGFkIGxhZGRiIGxhZGRmIGxhIGxhbiBsYXQgbGIgbGMgbGNoIGxjbCBsY3MgbGUgbGVmdGEgbGV0IGxleCBsZiBsZmlyIGxnZXRiIGxnZXRlIGxnIGxnciBsZ3JlcGEgbGggbGwgbGxhIGxsaSBsbWFrIGxtIGxtYXBjIGxuZSBsbmV3IGxuZiBsbiBsb2FkayBsbyBsb2MgbG9ja3YgbG9sIGxvcGUgbHAgbHBmIGxyIGxzIGx0IGx1IGx1YSBsdWFkIGx1YWYgbHYgbHZpbWdyZXBhIGx3IG18MCBtYSBtYWsgbWFwIG1hcGMgbWFya3MgbWF0IG1lIG1lbnV0IG1lcyBtayBta3MgbWtzcCBta3YgbWt2aWUgbW9kIG16IG16ZiBuYmMgbmIgbmJzIG5ldyBubSBubWFwYyBubWUgbm4gbm5vcmVtZSBub2Egbm8gbm9oIG5vcmVhIG5vcmVtZSBub3JtIG51IG51biBudW5tZSBvbCBvfDAgb20gb21hcGMgb21lIG9uIG9ubyBvbm9yZW1lIG9wdCBvdSBvdW5tZSBvdyBwfDAgJytcbiAgICAgICAgJ3Byb2ZkIHByb2YgcHJvIHByb21wdHIgcGMgcGVkIHBlIHBlcmxkIHBvIHBvcHUgcHAgcHJlIHByZXYgcHMgcHQgcHROIHB0ZiBwdGogcHRsIHB0biBwdHAgcHRyIHB0cyBwdSBwdyBweTMgcHl0aG9uMyBweTNkIHB5M2YgcHkgcHlkIHB5ZiBxdWl0YSBxYSByZWMgcmVkIHJlZGkgcmVkciByZWRyYXdzIHJlZyByZXMgcmV0IHJldHUgcmV3IHJpIHJpZ2h0YiBydWIgcnVieWQgcnVieWYgcnVuZCBydSBydiBzTiBzYW4gc2Egc2FsIHNhdiBzYiBzYk4gc2JhIHNiZiBzYmwgc2JtIHNibiBzYnAgc2JyIHNjcmlwIHNjcmlwdGUgc2NzIHNlIHNldGYgc2V0ZyBzZXRsIHNmIHNmaXIgc2ggc2ltIHNpZyBzaWwgc2wgc2xhIHNtIHNtYXAgc21hcGMgc21lIHNuIHNuaSBzbm8gc25vciBzbm9yZW1lIHNvciAnK1xuICAgICAgICAnc28gc3BlbGxkIHNwZSBzcGVsbGkgc3BlbGxyIHNwZWxsdSBzcGVsbHcgc3Agc3ByIHNyZSBzdCBzdGEgc3RhcnRnIHN0YXJ0ciBzdGFyIHN0b3BpIHN0aiBzdHMgc3VuIHN1bm0gc3VubWUgc3VzIHN2IHN3IHN5IHN5bnRpIHN5bmMgdE4gdGFiTiB0YWJjIHRhYmRvIHRhYmUgdGFiZiB0YWJmaXIgdGFibCB0YWJtIHRhYm5ldyAnK1xuICAgICAgICAndGFibiB0YWJvIHRhYnAgdGFiciB0YWJzIHRhYiB0YSB0YWdzIHRjIHRjbGQgdGNsZiB0ZSB0ZiB0aCB0aiB0bCB0bSB0biB0byB0cCB0ciB0cnkgdHMgdHUgdXwwIHVuZG9qIHVuZG9sIHVuYSB1bmggdW5sIHVubG8gdW5tIHVubWUgdW5zIHVwIHZlIHZlcmIgdmVydCB2aW0gdmltZ3JlcGEgdmkgdml1IHZpZSB2bSB2bWFwYyB2bWUgdm5lIHZuIHZub3JlbWUgdnMgdnUgdnVubWUgd2luZG8gd3wwIHdOIHdhIHdoIHdpIHdpbmMgd2lucCB3biB3cCB3cSB3cWEgd3Mgd3Ugd3YgeHwwIHhhIHhtYXBjIHhtIHhtZSB4biB4bm9yZW1lIHh1IHh1bm1lIHl8MCB6fDAgfiAnK1xuICAgICAgICAvLyBmdWxsIHZlcnNpb25cbiAgICAgICAgJ05leHQgUHJpbnQgYXBwZW5kIGFiYnJldmlhdGUgYWJjbGVhciBhYm92ZWxlZnQgYWxsIGFtZW51IGFub3JlbWVudSBhcmdzIGFyZ2FkZCBhcmdkZWxldGUgYXJnZWRpdCBhcmdnbG9iYWwgYXJnbG9jYWwgYXJndW1lbnQgYXNjaWkgYXV0b2NtZCBhdWdyb3VwIGF1bm1lbnUgYnVmZmVyIGJOZXh0IGJhbGwgYmFkZCBiZGVsZXRlIGJlaGF2ZSBiZWxvd3JpZ2h0IGJmaXJzdCBibGFzdCBibW9kaWZpZWQgYm5leHQgYm90cmlnaHQgYnByZXZpb3VzIGJyZXdpbmQgYnJlYWsgYnJlYWthZGQgYnJlYWtkZWwgYnJlYWtsaXN0IGJyb3dzZSBidW5sb2FkICcrXG4gICAgICAgICdid2lwZW91dCBjaGFuZ2UgY05leHQgY05maWxlIGNhYmJyZXYgY2FiY2xlYXIgY2FkZGJ1ZmZlciBjYWRkZXhwciBjYWRkZmlsZSBjYWxsIGNhdGNoIGNidWZmZXIgY2Nsb3NlIGNlbnRlciBjZXhwciBjZmlsZSBjZmlyc3QgY2dldGJ1ZmZlciBjZ2V0ZXhwciBjZ2V0ZmlsZSBjaGRpciBjaGVja3BhdGggY2hlY2t0aW1lIGNsaXN0IGNsYXN0IGNsb3NlIGNtYXAgY21hcGNsZWFyIGNtZW51IGNuZXh0IGNuZXdlciBjbmZpbGUgY25vcmVtYXAgY25vcmVhYmJyZXYgY25vcmVtZW51IGNvcHkgY29sZGVyIGNvbG9yc2NoZW1lIGNvbW1hbmQgY29tY2xlYXIgY29tcGlsZXIgY29udGludWUgY29uZmlybSBjb3BlbiBjcHJldmlvdXMgY3BmaWxlIGNxdWl0IGNyZXdpbmQgY3Njb3BlIGNzdGFnIGN1bm1hcCAnK1xuICAgICAgICAnY3VuYWJicmV2IGN1bm1lbnUgY3dpbmRvdyBkZWxldGUgZGVsbWFya3MgZGVidWcgZGVidWdncmVlZHkgZGVsY29tbWFuZCBkZWxmdW5jdGlvbiBkaWZmdXBkYXRlIGRpZmZnZXQgZGlmZm9mZiBkaWZmcGF0Y2ggZGlmZnB1dCBkaWZmc3BsaXQgZGlncmFwaHMgZGlzcGxheSBkZWxldGVsIGRqdW1wIGRsaXN0IGRvYXV0b2NtZCBkb2F1dG9hbGwgZGVsZXRlcCBkcm9wIGRzZWFyY2ggZHNwbGl0IGVkaXQgZWFybGllciBlY2hvIGVjaG9lcnIgZWNob2hsIGVjaG9tc2cgZWxzZSBlbHNlaWYgZW1lbnUgZW5kaWYgZW5kZm9yICcrXG4gICAgICAgICdlbmRmdW5jdGlvbiBlbmR0cnkgZW5kd2hpbGUgZW5ldyBleGVjdXRlIGV4aXQgZXh1c2FnZSBmaWxlIGZpbGV0eXBlIGZpbmQgZmluYWxseSBmaW5pc2ggZmlyc3QgZml4ZGVsIGZvbGQgZm9sZGNsb3NlIGZvbGRkb29wZW4gZm9sZGRvY2xvc2VkIGZvbGRvcGVuIGZ1bmN0aW9uIGdsb2JhbCBnb3RvIGdyZXAgZ3JlcGFkZCBndWkgZ3ZpbSBoYXJkY29weSBoZWxwIGhlbHBmaW5kIGhlbHBncmVwIGhlbHB0YWdzIGhpZ2hsaWdodCBoaWRlIGhpc3RvcnkgaW5zZXJ0IGlhYmJyZXYgaWFiY2xlYXIgaWp1bXAgaWxpc3QgaW1hcCAnK1xuICAgICAgICAnaW1hcGNsZWFyIGltZW51IGlub3JlbWFwIGlub3JlYWJicmV2IGlub3JlbWVudSBpbnRybyBpc2VhcmNoIGlzcGxpdCBpdW5tYXAgaXVuYWJicmV2IGl1bm1lbnUgam9pbiBqdW1wcyBrZWVwYWx0IGtlZXBtYXJrcyBrZWVwanVtcHMgbE5leHQgbE5maWxlIGxpc3QgbGFkZGV4cHIgbGFkZGJ1ZmZlciBsYWRkZmlsZSBsYXN0IGxhbmd1YWdlIGxhdGVyIGxidWZmZXIgbGNkIGxjaGRpciBsY2xvc2UgbGNzY29wZSBsZWZ0IGxlZnRhYm92ZSBsZXhwciBsZmlsZSBsZmlyc3QgbGdldGJ1ZmZlciBsZ2V0ZXhwciBsZ2V0ZmlsZSBsZ3JlcCBsZ3JlcGFkZCBsaGVscGdyZXAgbGxhc3QgbGxpc3QgbG1ha2UgbG1hcCBsbWFwY2xlYXIgbG5leHQgbG5ld2VyIGxuZmlsZSBsbm9yZW1hcCBsb2Fka2V5bWFwIGxvYWR2aWV3ICcrXG4gICAgICAgICdsb2NrbWFya3MgbG9ja3ZhciBsb2xkZXIgbG9wZW4gbHByZXZpb3VzIGxwZmlsZSBscmV3aW5kIGx0YWcgbHVubWFwIGx1YWRvIGx1YWZpbGUgbHZpbWdyZXAgbHZpbWdyZXBhZGQgbHdpbmRvdyBtb3ZlIG1hcmsgbWFrZSBtYXBjbGVhciBtYXRjaCBtZW51IG1lbnV0cmFuc2xhdGUgbWVzc2FnZXMgbWtleHJjIG1rc2Vzc2lvbiBta3NwZWxsIG1rdmltcmMgbWt2aWV3IG1vZGUgbXpzY2hlbWUgbXpmaWxlIG5iY2xvc2UgbmJrZXkgbmJzYXJ0IG5leHQgbm1hcCBubWFwY2xlYXIgbm1lbnUgbm5vcmVtYXAgJytcbiAgICAgICAgJ25ub3JlbWVudSBub2F1dG9jbWQgbm9yZW1hcCBub2hsc2VhcmNoIG5vcmVhYmJyZXYgbm9yZW1lbnUgbm9ybWFsIG51bWJlciBudW5tYXAgbnVubWVudSBvbGRmaWxlcyBvcGVuIG9tYXAgb21hcGNsZWFyIG9tZW51IG9ubHkgb25vcmVtYXAgb25vcmVtZW51IG9wdGlvbnMgb3VubWFwIG91bm1lbnUgb3duc3ludGF4IHByaW50IHByb2ZkZWwgcHJvZmlsZSBwcm9tcHRmaW5kIHByb21wdHJlcGwgcGNsb3NlIHBlZGl0IHBlcmwgcGVybGRvIHBvcCBwb3B1cCBwcG9wIHByZXNlcnZlIHByZXZpb3VzIHBzZWFyY2ggcHRhZyBwdE5leHQgJytcbiAgICAgICAgJ3B0Zmlyc3QgcHRqdW1wIHB0bGFzdCBwdG5leHQgcHRwcmV2aW91cyBwdHJld2luZCBwdHNlbGVjdCBwdXQgcHdkIHB5M2RvIHB5M2ZpbGUgcHl0aG9uIHB5ZG8gcHlmaWxlIHF1aXQgcXVpdGFsbCBxYWxsIHJlYWQgcmVjb3ZlciByZWRvIHJlZGlyIHJlZHJhdyByZWRyYXdzdGF0dXMgcmVnaXN0ZXJzIHJlc2l6ZSByZXRhYiByZXR1cm4gcmV3aW5kIHJpZ2h0IHJpZ2h0YmVsb3cgcnVieSBydWJ5ZG8gcnVieWZpbGUgcnVuZG8gcnVudGltZSBydmltaW5mbyBzdWJzdGl0dXRlIHNOZXh0IHNhbmRib3ggc2FyZ3VtZW50IHNhbGwgc2F2ZWFzIHNidWZmZXIgc2JOZXh0IHNiYWxsIHNiZmlyc3Qgc2JsYXN0IHNibW9kaWZpZWQgc2JuZXh0IHNicHJldmlvdXMgc2JyZXdpbmQgc2NyaXB0bmFtZXMgc2NyaXB0ZW5jb2RpbmcgJytcbiAgICAgICAgJ3Njc2NvcGUgc2V0IHNldGZpbGV0eXBlIHNldGdsb2JhbCBzZXRsb2NhbCBzZmluZCBzZmlyc3Qgc2hlbGwgc2ltYWx0IHNpZ24gc2lsZW50IHNsZWVwIHNsYXN0IHNtYWdpYyBzbWFwY2xlYXIgc21lbnUgc25leHQgc25pZmYgc25vbWFnaWMgc25vcmVtYXAgc25vcmVtZW51IHNvcnQgc291cmNlIHNwZWxsZHVtcCBzcGVsbGdvb2Qgc3BlbGxpbmZvIHNwZWxscmVwYWxsIHNwZWxsdW5kbyBzcGVsbHdyb25nIHNwbGl0IHNwcmV2aW91cyBzcmV3aW5kIHN0b3Agc3RhZyBzdGFydGdyZXBsYWNlIHN0YXJ0cmVwbGFjZSAnK1xuICAgICAgICAnc3RhcnRpbnNlcnQgc3RvcGluc2VydCBzdGp1bXAgc3RzZWxlY3Qgc3VuaGlkZSBzdW5tYXAgc3VubWVudSBzdXNwZW5kIHN2aWV3IHN3YXBuYW1lIHN5bnRheCBzeW50aW1lIHN5bmNiaW5kIHROZXh0IHRhYk5leHQgdGFiY2xvc2UgdGFiZWRpdCB0YWJmaW5kIHRhYmZpcnN0IHRhYmxhc3QgdGFibW92ZSB0YWJuZXh0IHRhYm9ubHkgdGFicHJldmlvdXMgdGFicmV3aW5kIHRhZyB0Y2wgdGNsZG8gdGNsZmlsZSB0ZWFyb2ZmIHRmaXJzdCB0aHJvdyB0anVtcCB0bGFzdCB0bWVudSB0bmV4dCB0b3BsZWZ0IHRwcmV2aW91cyAnKyd0cmV3aW5kIHRzZWxlY3QgdHVubWVudSB1bmRvIHVuZG9qb2luIHVuZG9saXN0IHVuYWJicmV2aWF0ZSB1bmhpZGUgdW5sZXQgdW5sb2NrdmFyIHVubWFwIHVubWVudSB1bnNpbGVudCB1cGRhdGUgdmdsb2JhbCB2ZXJzaW9uIHZlcmJvc2UgdmVydGljYWwgdmltZ3JlcCB2aW1ncmVwYWRkIHZpc3VhbCB2aXVzYWdlIHZpZXcgdm1hcCB2bWFwY2xlYXIgdm1lbnUgdm5ldyAnK1xuICAgICAgICAndm5vcmVtYXAgdm5vcmVtZW51IHZzcGxpdCB2dW5tYXAgdnVubWVudSB3cml0ZSB3TmV4dCB3YWxsIHdoaWxlIHdpbnNpemUgd2luY21kIHdpbnBvcyB3bmV4dCB3cHJldmlvdXMgd3FhbGwgd3N2ZXJiIHd1bmRvIHd2aW1pbmZvIHhpdCB4YWxsIHhtYXBjbGVhciB4bWFwIHhtZW51IHhub3JlbWFwIHhub3JlbWVudSB4dW5tYXAgeHVubWVudSB5YW5rJyxcbiAgICAgIGJ1aWx0X2luOiAvL2J1aWx0IGluIGZ1bmNcbiAgICAgICAgJ3N5bklEdHJhbnMgYXRhbjIgcmFuZ2UgbWF0Y2hhcmcgZGlkX2ZpbGV0eXBlIGFzaW4gZmVlZGtleXMgeG9yIGFyZ3YgJyArXG4gICAgICAgICdjb21wbGV0ZV9jaGVjayBhZGQgZ2V0d2lucG9zeCBnZXRxZmxpc3QgZ2V0d2lucG9zeSBzY3JlZW5jb2wgJyArXG4gICAgICAgICdjbGVhcm1hdGNoZXMgZW1wdHkgZXh0ZW5kIGdldGNtZHBvcyBtemV2YWwgZ2FyYmFnZWNvbGxlY3Qgc2V0cmVnICcgK1xuICAgICAgICAnY2VpbCBzcXJ0IGRpZmZfaGxJRCBpbnB1dHNlY3JldCBnZXQgZ2V0ZnBlcm0gZ2V0cGlkIGZpbGV3cml0YWJsZSAnICtcbiAgICAgICAgJ3NoaWZ0d2lkdGggbWF4IHNpbmggaXNkaXJlY3Rvcnkgc3luSUQgc3lzdGVtIGlucHV0cmVzdG9yZSB3aW5saW5lICcgK1xuICAgICAgICAnYXRhbiB2aXN1YWxtb2RlIGlucHV0bGlzdCB0YWJwYWdld2lubnIgcm91bmQgZ2V0cmVndHlwZSBtYXBjaGVjayAnICtcbiAgICAgICAgJ2hhc21hcHRvIGhpc3RkZWwgYXJnaWR4IGZpbmRmaWxlIHNoYTI1NiBleGlzdHMgdG91cHBlciBnZXRjbWRsaW5lICcgK1xuICAgICAgICAndGFnbGlzdCBzdHJpbmcgZ2V0bWF0Y2hlcyBidWZuciBzdHJmdGltZSB3aW53aWR0aCBidWZleGlzdHMgJyArXG4gICAgICAgICdzdHJ0cmFucyB0YWJwYWdlYnVmbGlzdCBzZXRjbWRwb3MgcmVtb3RlX3JlYWQgcHJpbnRmIHNldGxvY2xpc3QgJyArXG4gICAgICAgICdnZXRwb3MgZ2V0bGluZSBidWZ3aW5uciBmbG9hdDJuciBsZW4gZ2V0Y21kdHlwZSBkaWZmX2ZpbGxlciBsdWFldmFsICcgK1xuICAgICAgICAncmVzb2x2ZSBsaWJjYWxsbnIgZm9sZGNsb3NlZGVuZCByZXZlcnNlIGZpbHRlciBoYXNfa2V5IGJ1Zm5hbWUgJyArXG4gICAgICAgICdzdHIyZmxvYXQgc3RybGVuIHNldGxpbmUgZ2V0Y2hhcm1vZCBzZXRidWZ2YXIgaW5kZXggc2VhcmNocG9zICcgK1xuICAgICAgICAnc2hlbGxlc2NhcGUgdW5kb2ZpbGUgZm9sZGNsb3NlZCBzZXRxZmxpc3QgYnVmbGlzdGVkIHN0cmNoYXJzIHN0cjJuciAnICtcbiAgICAgICAgJ3ZpcnRjb2wgZmxvb3IgcmVtb3ZlIHVuZG90cmVlIHJlbW90ZV9leHByIHdpbmhlaWdodCBnZXR0YWJ3aW52YXIgJyArXG4gICAgICAgICdyZWx0aW1lIGN1cnNvciB0YWJwYWdlbnIgZmluZGRpciBsb2NhbHRpbWUgYWNvcyBnZXRsb2NsaXN0IHNlYXJjaCAnICtcbiAgICAgICAgJ3RhbmggbWF0Y2hlbmQgcmVuYW1lIGdldHRhYnZhciBzdHJkaXNwbGF5d2lkdGggdHlwZSBhYnMgcHkzZXZhbCAnICtcbiAgICAgICAgJ3NldHdpbnZhciB0b2xvd2VyIHdpbGRtZW51bW9kZSBsb2cxMCBzcGVsbHN1Z2dlc3QgYnVmbG9hZGVkICcgK1xuICAgICAgICAnc3luY29uY2VhbGVkIG5leHRub25ibGFuayBzZXJ2ZXIyY2xpZW50IGNvbXBsZXRlIHNldHRhYndpbnZhciAnICtcbiAgICAgICAgJ2V4ZWN1dGFibGUgaW5wdXQgd2luY29sIHNldG1hdGNoZXMgZ2V0ZnR5cGUgaGxJRCBpbnB1dHNhdmUgJyArXG4gICAgICAgICdzZWFyY2hwYWlyIG9yIHNjcmVlbnJvdyBsaW5lIHNldHRhYnZhciBoaXN0YWRkIGRlZXBjb3B5IHN0cnBhcnQgJyArXG4gICAgICAgICdyZW1vdGVfcGVlayBhbmQgZXZhbCBnZXRmdGltZSBzdWJtYXRjaCBzY3JlZW5jaGFyIHdpbnNhdmV2aWV3ICcgK1xuICAgICAgICAnbWF0Y2hhZGQgbWtkaXIgc2NyZWVuYXR0ciBnZXRmb250bmFtZSBsaWJjYWxsIHJlbHRpbWVzdHIgZ2V0ZnNpemUgJyArXG4gICAgICAgICd3aW5uciBpbnZlcnQgcG93IGdldGJ1ZmxpbmUgYnl0ZTJsaW5lIHNvdW5kZm9sZCByZXBlYXQgZm5hbWVlc2NhcGUgJyArXG4gICAgICAgICd0YWdmaWxlcyBzaW4gc3Ryd2lkdGggc3BlbGxiYWR3b3JkIHRydW5jIG1hcGFyZyBsb2cgbGlzcGluZGVudCAnICtcbiAgICAgICAgJ2hvc3RuYW1lIHNldHBvcyBnbG9icGF0aCByZW1vdGVfZm9yZWdyb3VuZCBnZXRjaGFyIHN5bklEYXR0ciAnICtcbiAgICAgICAgJ2ZuYW1lbW9kaWZ5IGNzY29wZV9jb25uZWN0aW9uIHN0cmlkeCB3aW5idWZuciBpbmRlbnQgbWluICcgK1xuICAgICAgICAnY29tcGxldGVfYWRkIG5yMmNoYXIgc2VhcmNocGFpcnBvcyBpbnB1dGRpYWxvZyB2YWx1ZXMgbWF0Y2hsaXN0ICcgK1xuICAgICAgICAnaXRlbXMgaGxleGlzdHMgc3RycmlkeCBicm93c2VkaXIgZXhwYW5kIGZtb2QgcGF0aHNob3J0ZW4gbGluZTJieXRlICcgK1xuICAgICAgICAnYXJnYyBjb3VudCBnZXR3aW52YXIgZ2xvYiBmb2xkdGV4dHJlc3VsdCBnZXRyZWcgZm9yZWdyb3VuZCBjb3NoICcgK1xuICAgICAgICAnbWF0Y2hkZWxldGUgaGFzIGNoYXIybnIgc2ltcGxpZnkgaGlzdGdldCBzZWFyY2hkZWNsIGljb252ICcgK1xuICAgICAgICAnd2lucmVzdGNtZCBwdW12aXNpYmxlIHdyaXRlZmlsZSBmb2xkbGV2ZWwgaGFzbG9jYWxkaXIga2V5cyBjb3MgJyArXG4gICAgICAgICdtYXRjaHN0ciBmb2xkdGV4dCBoaXN0bnIgdGFuIHRlbXBuYW1lIGdldGN3ZCBieXRlaWR4IGdldGJ1ZnZhciAnICtcbiAgICAgICAgJ2lzbG9ja2VkIGVzY2FwZSBldmVudGhhbmRsZXIgcmVtb3RlX3NlbmQgc2VydmVybGlzdCB3aW5yZXN0dmlldyAnICtcbiAgICAgICAgJ3N5bnN0YWNrIHB5ZXZhbCBwcmV2bm9uYmxhbmsgcmVhZGZpbGUgY2luZGVudCBmaWxlcmVhZGFibGUgY2hhbmdlbnIgJyArXG4gICAgICAgICdleHAnXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAvOy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgfSxcblxuICAgICAgLypcbiAgICAgIEEgZG91YmxlIHF1b3RlIGNhbiBzdGFydCBlaXRoZXIgYSBzdHJpbmcgb3IgYSBsaW5lIGNvbW1lbnQuIFN0cmluZ3MgYXJlXG4gICAgICBlbmRlZCBiZWZvcmUgdGhlIGVuZCBvZiBhIGxpbmUgYnkgYW5vdGhlciBkb3VibGUgcXVvdGUgYW5kIGNhbiBjb250YWluXG4gICAgICBlc2NhcGVkIGRvdWJsZS1xdW90ZXMgYW5kIHBvc3QtZXNjYXBlZCBsaW5lIGJyZWFrcy5cblxuICAgICAgQWxzbywgYW55IGRvdWJsZSBxdW90ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpcyBhIGNvbW1lbnQgYnV0IHdlXG4gICAgICBkb24ndCBoYW5kbGUgdGhhdCBwcm9wZXJseSBhdCB0aGUgbW9tZW50OiBhbnkgZG91YmxlIHF1b3RlIGluc2lkZSB3aWxsXG4gICAgICB0dXJuIHRoZW0gaW50byBhIHN0cmluZy4gSGFuZGxpbmcgaXQgcHJvcGVybHkgd2lsbCByZXF1aXJlIGEgc21hcnRlclxuICAgICAgcGFyc2VyLlxuICAgICAgKi9cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC9cIihcXFxcXCJ8XFxuXFxcXHxbXlwiXFxuXSkqXCIvXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdcIicsICckJyksXG5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1tid3RnbHNhdl06W1xcd1xcZF9dKi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIGZ1bmN0aW9uIScsIGVuZDogJyQnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogLzxbXFx3LV0rPi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogJ1suJV0/JyArIGhsanMuSURFTlRfUkUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdsb2NrIHJlcCByZXBlIHJlcHogcmVwbmUgcmVwbnogeGFxdWlyZSB4cmVsZWFzZSBibmQgbm9ibmQgJyArXG4gICAgICAgICdhYWEgYWFkIGFhbSBhYXMgYWRjIGFkZCBhbmQgYXJwbCBiYjBfcmVzZXQgYmIxX3Jlc2V0IGJvdW5kIGJzZiBic3IgYnN3YXAgYnQgYnRjIGJ0ciBidHMgY2FsbCBjYncgY2RxIGNkcWUgY2xjIGNsZCBjbGkgY2x0cyBjbWMgY21wIGNtcHNiIGNtcHNkIGNtcHNxIGNtcHN3IGNtcHhjaGcgY21weGNoZzQ4NiBjbXB4Y2hnOGIgY21weGNoZzE2YiBjcHVpZCBjcHVfcmVhZCBjcHVfd3JpdGUgY3FvIGN3ZCBjd2RlIGRhYSBkYXMgZGVjIGRpdiBkbWludCBlbW1zIGVudGVyIGVxdSBmMnhtMSBmYWJzIGZhZGQgZmFkZHAgZmJsZCBmYnN0cCBmY2hzIGZjbGV4IGZjbW92YiBmY21vdmJlIGZjbW92ZSBmY21vdm5iIGZjbW92bmJlIGZjbW92bmUgZmNtb3ZudSBmY21vdnUgZmNvbSBmY29taSBmY29taXAgZmNvbXAgZmNvbXBwIGZjb3MgZmRlY3N0cCBmZGlzaSBmZGl2IGZkaXZwIGZkaXZyIGZkaXZycCBmZW1tcyBmZW5pIGZmcmVlIGZmcmVlcCBmaWFkZCBmaWNvbSBmaWNvbXAgZmlkaXYgZmlkaXZyIGZpbGQgZmltdWwgZmluY3N0cCBmaW5pdCBmaXN0IGZpc3RwIGZpc3R0cCBmaXN1YiBmaXN1YnIgZmxkIGZsZDEgZmxkY3cgZmxkZW52IGZsZGwyZSBmbGRsMnQgZmxkbGcyIGZsZGxuMiBmbGRwaSBmbGR6IGZtdWwgZm11bHAgZm5jbGV4IGZuZGlzaSBmbmVuaSBmbmluaXQgZm5vcCBmbnNhdmUgZm5zdGN3IGZuc3RlbnYgZm5zdHN3IGZwYXRhbiBmcHJlbSBmcHJlbTEgZnB0YW4gZnJuZGludCBmcnN0b3IgZnNhdmUgZnNjYWxlIGZzZXRwbSBmc2luIGZzaW5jb3MgZnNxcnQgZnN0IGZzdGN3IGZzdGVudiBmc3RwIGZzdHN3IGZzdWIgZnN1YnAgZnN1YnIgZnN1YnJwIGZ0c3QgZnVjb20gZnVjb21pIGZ1Y29taXAgZnVjb21wIGZ1Y29tcHAgZnhhbSBmeGNoIGZ4dHJhY3QgZnlsMnggZnlsMnhwMSBobHQgaWJ0cyBpY2VicCBpZGl2IGltdWwgaW4gaW5jIGluY2JpbiBpbnNiIGluc2QgaW5zdyBpbnQgaW50MDEgaW50MSBpbnQwMyBpbnQzIGludG8gaW52ZCBpbnZwY2lkIGludmxwZyBpbnZscGdhIGlyZXQgaXJldGQgaXJldHEgaXJldHcgamN4eiBqZWN4eiBqcmN4eiBqbXAgam1wZSBsYWhmIGxhciBsZHMgbGVhIGxlYXZlIGxlcyBsZmVuY2UgbGZzIGxnZHQgbGdzIGxpZHQgbGxkdCBsbXN3IGxvYWRhbGwgbG9hZGFsbDI4NiBsb2RzYiBsb2RzZCBsb2RzcSBsb2RzdyBsb29wIGxvb3BlIGxvb3BuZSBsb29wbnogbG9vcHogbHNsIGxzcyBsdHIgbWZlbmNlIG1vbml0b3IgbW92IG1vdmQgbW92cSBtb3ZzYiBtb3ZzZCBtb3ZzcSBtb3ZzdyBtb3ZzeCBtb3ZzeGQgbW92enggbXVsIG13YWl0IG5lZyBub3Agbm90IG9yIG91dCBvdXRzYiBvdXRzZCBvdXRzdyBwYWNrc3NkdyBwYWNrc3N3YiBwYWNrdXN3YiBwYWRkYiBwYWRkZCBwYWRkc2IgcGFkZHNpdyBwYWRkc3cgcGFkZHVzYiBwYWRkdXN3IHBhZGR3IHBhbmQgcGFuZG4gcGF1c2UgcGF2ZWIgcGF2Z3VzYiBwY21wZXFiIHBjbXBlcWQgcGNtcGVxdyBwY21wZ3RiIHBjbXBndGQgcGNtcGd0dyBwZGlzdGliIHBmMmlkIHBmYWNjIHBmYWRkIHBmY21wZXEgcGZjbXBnZSBwZmNtcGd0IHBmbWF4IHBmbWluIHBmbXVsIHBmcmNwIHBmcmNwaXQxIHBmcmNwaXQyIHBmcnNxaXQxIHBmcnNxcnQgcGZzdWIgcGZzdWJyIHBpMmZkIHBtYWNocml3IHBtYWRkd2QgcG1hZ3cgcG11bGhyaXcgcG11bGhyd2EgcG11bGhyd2MgcG11bGh3IHBtdWxsdyBwbXZnZXpiIHBtdmx6YiBwbXZuemIgcG12emIgcG9wIHBvcGEgcG9wYWQgcG9wYXcgcG9wZiBwb3BmZCBwb3BmcSBwb3BmdyBwb3IgcHJlZmV0Y2ggcHJlZmV0Y2h3IHBzbGxkIHBzbGxxIHBzbGx3IHBzcmFkIHBzcmF3IHBzcmxkIHBzcmxxIHBzcmx3IHBzdWJiIHBzdWJkIHBzdWJzYiBwc3Vic2l3IHBzdWJzdyBwc3VidXNiIHBzdWJ1c3cgcHN1YncgcHVucGNraGJ3IHB1bnBja2hkcSBwdW5wY2tod2QgcHVucGNrbGJ3IHB1bnBja2xkcSBwdW5wY2tsd2QgcHVzaCBwdXNoYSBwdXNoYWQgcHVzaGF3IHB1c2hmIHB1c2hmZCBwdXNoZnEgcHVzaGZ3IHB4b3IgcmNsIHJjciByZHNociByZG1zciByZHBtYyByZHRzYyByZHRzY3AgcmV0IHJldGYgcmV0biByb2wgcm9yIHJkbSByc2RjIHJzbGR0IHJzbSByc3RzIHNhaGYgc2FsIHNhbGMgc2FyIHNiYiBzY2FzYiBzY2FzZCBzY2FzcSBzY2FzdyBzZmVuY2Ugc2dkdCBzaGwgc2hsZCBzaHIgc2hyZCBzaWR0IHNsZHQgc2tpbml0IHNtaSBzbWludCBzbWludG9sZCBzbXN3IHN0YyBzdGQgc3RpIHN0b3NiIHN0b3NkIHN0b3NxIHN0b3N3IHN0ciBzdWIgc3ZkYyBzdmxkdCBzdnRzIHN3YXBncyBzeXNjYWxsIHN5c2VudGVyIHN5c2V4aXQgc3lzcmV0IHRlc3QgdWQwIHVkMSB1ZDJiIHVkMiB1ZDJhIHVtb3YgdmVyciB2ZXJ3IGZ3YWl0IHdiaW52ZCB3cnNociB3cm1zciB4YWRkIHhidHMgeGNoZyB4bGF0YiB4bGF0IHhvciBjbW92ZSBjbW92eiBjbW92bmUgY21vdm56IGNtb3ZhIGNtb3ZuYmUgY21vdmFlIGNtb3ZuYiBjbW92YiBjbW92bmFlIGNtb3ZiZSBjbW92bmEgY21vdmcgY21vdm5sZSBjbW92Z2UgY21vdm5sIGNtb3ZsIGNtb3ZuZ2UgY21vdmxlIGNtb3ZuZyBjbW92YyBjbW92bmMgY21vdm8gY21vdm5vIGNtb3ZzIGNtb3ZucyBjbW92cCBjbW92cGUgY21vdm5wIGNtb3ZwbyBqZSBqeiBqbmUgam56IGphIGpuYmUgamFlIGpuYiBqYiBqbmFlIGpiZSBqbmEgamcgam5sZSBqZ2Ugam5sIGpsIGpuZ2UgamxlIGpuZyBqYyBqbmMgam8gam5vIGpzIGpucyBqcG8gam5wIGpwZSBqcCBzZXRlIHNldHogc2V0bmUgc2V0bnogc2V0YSBzZXRuYmUgc2V0YWUgc2V0bmIgc2V0bmMgc2V0YiBzZXRuYWUgc2V0Y3NldCBzZXRiZSBzZXRuYSBzZXRnIHNldG5sZSBzZXRnZSBzZXRubCBzZXRsIHNldG5nZSBzZXRsZSBzZXRuZyBzZXRzIHNldG5zIHNldG8gc2V0bm8gc2V0cGUgc2V0cCBzZXRwbyBzZXRucCBhZGRwcyBhZGRzcyBhbmRucHMgYW5kcHMgY21wZXFwcyBjbXBlcXNzIGNtcGxlcHMgY21wbGVzcyBjbXBsdHBzIGNtcGx0c3MgY21wbmVxcHMgY21wbmVxc3MgY21wbmxlcHMgY21wbmxlc3MgY21wbmx0cHMgY21wbmx0c3MgY21wb3JkcHMgY21wb3Jkc3MgY21wdW5vcmRwcyBjbXB1bm9yZHNzIGNtcHBzIGNtcHNzIGNvbWlzcyBjdnRwaTJwcyBjdnRwczJwaSBjdnRzaTJzcyBjdnRzczJzaSBjdnR0cHMycGkgY3Z0dHNzMnNpIGRpdnBzIGRpdnNzIGxkbXhjc3IgbWF4cHMgbWF4c3MgbWlucHMgbWluc3MgbW92YXBzIG1vdmhwcyBtb3ZsaHBzIG1vdmxwcyBtb3ZobHBzIG1vdm1za3BzIG1vdm50cHMgbW92c3MgbW92dXBzIG11bHBzIG11bHNzIG9ycHMgcmNwcHMgcmNwc3MgcnNxcnRwcyByc3FydHNzIHNodWZwcyBzcXJ0cHMgc3FydHNzIHN0bXhjc3Igc3VicHMgc3Vic3MgdWNvbWlzcyB1bnBja2hwcyB1bnBja2xwcyB4b3JwcyBmeHJzdG9yIGZ4cnN0b3I2NCBmeHNhdmUgZnhzYXZlNjQgeGdldGJ2IHhzZXRidiB4c2F2ZSB4c2F2ZTY0IHhzYXZlb3B0IHhzYXZlb3B0NjQgeHJzdG9yIHhyc3RvcjY0IHByZWZldGNobnRhIHByZWZldGNodDAgcHJlZmV0Y2h0MSBwcmVmZXRjaHQyIG1hc2ttb3ZxIG1vdm50cSBwYXZnYiBwYXZndyBwZXh0cncgcGluc3J3IHBtYXhzdyBwbWF4dWIgcG1pbnN3IHBtaW51YiBwbW92bXNrYiBwbXVsaHV3IHBzYWRidyBwc2h1ZncgcGYyaXcgcGZuYWNjIHBmcG5hY2MgcGkyZncgcHN3YXBkIG1hc2ttb3ZkcXUgY2xmbHVzaCBtb3ZudGRxIG1vdm50aSBtb3ZudHBkIG1vdmRxYSBtb3ZkcXUgbW92ZHEycSBtb3ZxMmRxIHBhZGRxIHBtdWx1ZHEgcHNodWZkIHBzaHVmaHcgcHNodWZsdyBwc2xsZHEgcHNybGRxIHBzdWJxIHB1bnBja2hxZHEgcHVucGNrbHFkcSBhZGRwZCBhZGRzZCBhbmRucGQgYW5kcGQgY21wZXFwZCBjbXBlcXNkIGNtcGxlcGQgY21wbGVzZCBjbXBsdHBkIGNtcGx0c2QgY21wbmVxcGQgY21wbmVxc2QgY21wbmxlcGQgY21wbmxlc2QgY21wbmx0cGQgY21wbmx0c2QgY21wb3JkcGQgY21wb3Jkc2QgY21wdW5vcmRwZCBjbXB1bm9yZHNkIGNtcHBkIGNvbWlzZCBjdnRkcTJwZCBjdnRkcTJwcyBjdnRwZDJkcSBjdnRwZDJwaSBjdnRwZDJwcyBjdnRwaTJwZCBjdnRwczJkcSBjdnRwczJwZCBjdnRzZDJzaSBjdnRzZDJzcyBjdnRzaTJzZCBjdnRzczJzZCBjdnR0cGQycGkgY3Z0dHBkMmRxIGN2dHRwczJkcSBjdnR0c2Qyc2kgZGl2cGQgZGl2c2QgbWF4cGQgbWF4c2QgbWlucGQgbWluc2QgbW92YXBkIG1vdmhwZCBtb3ZscGQgbW92bXNrcGQgbW92dXBkIG11bHBkIG11bHNkIG9ycGQgc2h1ZnBkIHNxcnRwZCBzcXJ0c2Qgc3VicGQgc3Vic2QgdWNvbWlzZCB1bnBja2hwZCB1bnBja2xwZCB4b3JwZCBhZGRzdWJwZCBhZGRzdWJwcyBoYWRkcGQgaGFkZHBzIGhzdWJwZCBoc3VicHMgbGRkcXUgbW92ZGR1cCBtb3ZzaGR1cCBtb3ZzbGR1cCBjbGdpIHN0Z2kgdm1jYWxsIHZtY2xlYXIgdm1mdW5jIHZtbGF1bmNoIHZtbG9hZCB2bW1jYWxsIHZtcHRybGQgdm1wdHJzdCB2bXJlYWQgdm1yZXN1bWUgdm1ydW4gdm1zYXZlIHZtd3JpdGUgdm14b2ZmIHZteG9uIGludmVwdCBpbnZ2cGlkIHBhYnNiIHBhYnN3IHBhYnNkIHBhbGlnbnIgcGhhZGR3IHBoYWRkZCBwaGFkZHN3IHBoc3VidyBwaHN1YmQgcGhzdWJzdyBwbWFkZHVic3cgcG11bGhyc3cgcHNodWZiIHBzaWduYiBwc2lnbncgcHNpZ25kIGV4dHJxIGluc2VydHEgbW92bnRzZCBtb3ZudHNzIGx6Y250IGJsZW5kcGQgYmxlbmRwcyBibGVuZHZwZCBibGVuZHZwcyBkcHBkIGRwcHMgZXh0cmFjdHBzIGluc2VydHBzIG1vdm50ZHFhIG1wc2FkYncgcGFja3VzZHcgcGJsZW5kdmIgcGJsZW5kdyBwY21wZXFxIHBleHRyYiBwZXh0cmQgcGV4dHJxIHBobWlucG9zdXcgcGluc3JiIHBpbnNyZCBwaW5zcnEgcG1heHNiIHBtYXhzZCBwbWF4dWQgcG1heHV3IHBtaW5zYiBwbWluc2QgcG1pbnVkIHBtaW51dyBwbW92c3hidyBwbW92c3hiZCBwbW92c3hicSBwbW92c3h3ZCBwbW92c3h3cSBwbW92c3hkcSBwbW92enhidyBwbW92enhiZCBwbW92enhicSBwbW92enh3ZCBwbW92enh3cSBwbW92enhkcSBwbXVsZHEgcG11bGxkIHB0ZXN0IHJvdW5kcGQgcm91bmRwcyByb3VuZHNkIHJvdW5kc3MgY3JjMzIgcGNtcGVzdHJpIHBjbXBlc3RybSBwY21waXN0cmkgcGNtcGlzdHJtIHBjbXBndHEgcG9wY250IGdldHNlYyBwZnJjcHYgcGZyc3FydHYgbW92YmUgYWVzZW5jIGFlc2VuY2xhc3QgYWVzZGVjIGFlc2RlY2xhc3QgYWVzaW1jIGFlc2tleWdlbmFzc2lzdCB2YWVzZW5jIHZhZXNlbmNsYXN0IHZhZXNkZWMgdmFlc2RlY2xhc3QgdmFlc2ltYyB2YWVza2V5Z2VuYXNzaXN0IHZhZGRwZCB2YWRkcHMgdmFkZHNkIHZhZGRzcyB2YWRkc3VicGQgdmFkZHN1YnBzIHZhbmRwZCB2YW5kcHMgdmFuZG5wZCB2YW5kbnBzIHZibGVuZHBkIHZibGVuZHBzIHZibGVuZHZwZCB2YmxlbmR2cHMgdmJyb2FkY2FzdHNzIHZicm9hZGNhc3RzZCB2YnJvYWRjYXN0ZjEyOCB2Y21wZXFfb3NwZCB2Y21wZXFwZCB2Y21wbHRfb3NwZCB2Y21wbHRwZCB2Y21wbGVfb3NwZCB2Y21wbGVwZCB2Y21wdW5vcmRfcXBkIHZjbXB1bm9yZHBkIHZjbXBuZXFfdXFwZCB2Y21wbmVxcGQgdmNtcG5sdF91c3BkIHZjbXBubHRwZCB2Y21wbmxlX3VzcGQgdmNtcG5sZXBkIHZjbXBvcmRfcXBkIHZjbXBvcmRwZCB2Y21wZXFfdXFwZCB2Y21wbmdlX3VzcGQgdmNtcG5nZXBkIHZjbXBuZ3RfdXNwZCB2Y21wbmd0cGQgdmNtcGZhbHNlX29xcGQgdmNtcGZhbHNlcGQgdmNtcG5lcV9vcXBkIHZjbXBnZV9vc3BkIHZjbXBnZXBkIHZjbXBndF9vc3BkIHZjbXBndHBkIHZjbXB0cnVlX3VxcGQgdmNtcHRydWVwZCB2Y21wbHRfb3FwZCB2Y21wbGVfb3FwZCB2Y21wdW5vcmRfc3BkIHZjbXBuZXFfdXNwZCB2Y21wbmx0X3VxcGQgdmNtcG5sZV91cXBkIHZjbXBvcmRfc3BkIHZjbXBlcV91c3BkIHZjbXBuZ2VfdXFwZCB2Y21wbmd0X3VxcGQgdmNtcGZhbHNlX29zcGQgdmNtcG5lcV9vc3BkIHZjbXBnZV9vcXBkIHZjbXBndF9vcXBkIHZjbXB0cnVlX3VzcGQgdmNtcHBkIHZjbXBlcV9vc3BzIHZjbXBlcXBzIHZjbXBsdF9vc3BzIHZjbXBsdHBzIHZjbXBsZV9vc3BzIHZjbXBsZXBzIHZjbXB1bm9yZF9xcHMgdmNtcHVub3JkcHMgdmNtcG5lcV91cXBzIHZjbXBuZXFwcyB2Y21wbmx0X3VzcHMgdmNtcG5sdHBzIHZjbXBubGVfdXNwcyB2Y21wbmxlcHMgdmNtcG9yZF9xcHMgdmNtcG9yZHBzIHZjbXBlcV91cXBzIHZjbXBuZ2VfdXNwcyB2Y21wbmdlcHMgdmNtcG5ndF91c3BzIHZjbXBuZ3RwcyB2Y21wZmFsc2Vfb3FwcyB2Y21wZmFsc2VwcyB2Y21wbmVxX29xcHMgdmNtcGdlX29zcHMgdmNtcGdlcHMgdmNtcGd0X29zcHMgdmNtcGd0cHMgdmNtcHRydWVfdXFwcyB2Y21wdHJ1ZXBzIHZjbXBsdF9vcXBzIHZjbXBsZV9vcXBzIHZjbXB1bm9yZF9zcHMgdmNtcG5lcV91c3BzIHZjbXBubHRfdXFwcyB2Y21wbmxlX3VxcHMgdmNtcG9yZF9zcHMgdmNtcGVxX3VzcHMgdmNtcG5nZV91cXBzIHZjbXBuZ3RfdXFwcyB2Y21wZmFsc2Vfb3NwcyB2Y21wbmVxX29zcHMgdmNtcGdlX29xcHMgdmNtcGd0X29xcHMgdmNtcHRydWVfdXNwcyB2Y21wcHMgdmNtcGVxX29zc2QgdmNtcGVxc2QgdmNtcGx0X29zc2QgdmNtcGx0c2QgdmNtcGxlX29zc2QgdmNtcGxlc2QgdmNtcHVub3JkX3FzZCB2Y21wdW5vcmRzZCB2Y21wbmVxX3Vxc2QgdmNtcG5lcXNkIHZjbXBubHRfdXNzZCB2Y21wbmx0c2QgdmNtcG5sZV91c3NkIHZjbXBubGVzZCB2Y21wb3JkX3FzZCB2Y21wb3Jkc2QgdmNtcGVxX3Vxc2QgdmNtcG5nZV91c3NkIHZjbXBuZ2VzZCB2Y21wbmd0X3Vzc2QgdmNtcG5ndHNkIHZjbXBmYWxzZV9vcXNkIHZjbXBmYWxzZXNkIHZjbXBuZXFfb3FzZCB2Y21wZ2Vfb3NzZCB2Y21wZ2VzZCB2Y21wZ3Rfb3NzZCB2Y21wZ3RzZCB2Y21wdHJ1ZV91cXNkIHZjbXB0cnVlc2QgdmNtcGx0X29xc2QgdmNtcGxlX29xc2QgdmNtcHVub3JkX3NzZCB2Y21wbmVxX3Vzc2QgdmNtcG5sdF91cXNkIHZjbXBubGVfdXFzZCB2Y21wb3JkX3NzZCB2Y21wZXFfdXNzZCB2Y21wbmdlX3Vxc2QgdmNtcG5ndF91cXNkIHZjbXBmYWxzZV9vc3NkIHZjbXBuZXFfb3NzZCB2Y21wZ2Vfb3FzZCB2Y21wZ3Rfb3FzZCB2Y21wdHJ1ZV91c3NkIHZjbXBzZCB2Y21wZXFfb3NzcyB2Y21wZXFzcyB2Y21wbHRfb3NzcyB2Y21wbHRzcyB2Y21wbGVfb3NzcyB2Y21wbGVzcyB2Y21wdW5vcmRfcXNzIHZjbXB1bm9yZHNzIHZjbXBuZXFfdXFzcyB2Y21wbmVxc3MgdmNtcG5sdF91c3NzIHZjbXBubHRzcyB2Y21wbmxlX3Vzc3MgdmNtcG5sZXNzIHZjbXBvcmRfcXNzIHZjbXBvcmRzcyB2Y21wZXFfdXFzcyB2Y21wbmdlX3Vzc3MgdmNtcG5nZXNzIHZjbXBuZ3RfdXNzcyB2Y21wbmd0c3MgdmNtcGZhbHNlX29xc3MgdmNtcGZhbHNlc3MgdmNtcG5lcV9vcXNzIHZjbXBnZV9vc3NzIHZjbXBnZXNzIHZjbXBndF9vc3NzIHZjbXBndHNzIHZjbXB0cnVlX3Vxc3MgdmNtcHRydWVzcyB2Y21wbHRfb3FzcyB2Y21wbGVfb3FzcyB2Y21wdW5vcmRfc3NzIHZjbXBuZXFfdXNzcyB2Y21wbmx0X3Vxc3MgdmNtcG5sZV91cXNzIHZjbXBvcmRfc3NzIHZjbXBlcV91c3NzIHZjbXBuZ2VfdXFzcyB2Y21wbmd0X3Vxc3MgdmNtcGZhbHNlX29zc3MgdmNtcG5lcV9vc3NzIHZjbXBnZV9vcXNzIHZjbXBndF9vcXNzIHZjbXB0cnVlX3Vzc3MgdmNtcHNzIHZjb21pc2QgdmNvbWlzcyB2Y3Z0ZHEycGQgdmN2dGRxMnBzIHZjdnRwZDJkcSB2Y3Z0cGQycHMgdmN2dHBzMmRxIHZjdnRwczJwZCB2Y3Z0c2Qyc2kgdmN2dHNkMnNzIHZjdnRzaTJzZCB2Y3Z0c2kyc3MgdmN2dHNzMnNkIHZjdnRzczJzaSB2Y3Z0dHBkMmRxIHZjdnR0cHMyZHEgdmN2dHRzZDJzaSB2Y3Z0dHNzMnNpIHZkaXZwZCB2ZGl2cHMgdmRpdnNkIHZkaXZzcyB2ZHBwZCB2ZHBwcyB2ZXh0cmFjdGYxMjggdmV4dHJhY3RwcyB2aGFkZHBkIHZoYWRkcHMgdmhzdWJwZCB2aHN1YnBzIHZpbnNlcnRmMTI4IHZpbnNlcnRwcyB2bGRkcXUgdmxkcXF1IHZsZG14Y3NyIHZtYXNrbW92ZHF1IHZtYXNrbW92cHMgdm1hc2ttb3ZwZCB2bWF4cGQgdm1heHBzIHZtYXhzZCB2bWF4c3Mgdm1pbnBkIHZtaW5wcyB2bWluc2Qgdm1pbnNzIHZtb3ZhcGQgdm1vdmFwcyB2bW92ZCB2bW92cSB2bW92ZGR1cCB2bW92ZHFhIHZtb3ZxcWEgdm1vdmRxdSB2bW92cXF1IHZtb3ZobHBzIHZtb3ZocGQgdm1vdmhwcyB2bW92bGhwcyB2bW92bHBkIHZtb3ZscHMgdm1vdm1za3BkIHZtb3Ztc2twcyB2bW92bnRkcSB2bW92bnRxcSB2bW92bnRkcWEgdm1vdm50cGQgdm1vdm50cHMgdm1vdnNkIHZtb3ZzaGR1cCB2bW92c2xkdXAgdm1vdnNzIHZtb3Z1cGQgdm1vdnVwcyB2bXBzYWRidyB2bXVscGQgdm11bHBzIHZtdWxzZCB2bXVsc3Mgdm9ycGQgdm9ycHMgdnBhYnNiIHZwYWJzdyB2cGFic2QgdnBhY2tzc3diIHZwYWNrc3NkdyB2cGFja3Vzd2IgdnBhY2t1c2R3IHZwYWRkYiB2cGFkZHcgdnBhZGRkIHZwYWRkcSB2cGFkZHNiIHZwYWRkc3cgdnBhZGR1c2IgdnBhZGR1c3cgdnBhbGlnbnIgdnBhbmQgdnBhbmRuIHZwYXZnYiB2cGF2Z3cgdnBibGVuZHZiIHZwYmxlbmR3IHZwY21wZXN0cmkgdnBjbXBlc3RybSB2cGNtcGlzdHJpIHZwY21waXN0cm0gdnBjbXBlcWIgdnBjbXBlcXcgdnBjbXBlcWQgdnBjbXBlcXEgdnBjbXBndGIgdnBjbXBndHcgdnBjbXBndGQgdnBjbXBndHEgdnBlcm1pbHBkIHZwZXJtaWxwcyB2cGVybTJmMTI4IHZwZXh0cmIgdnBleHRydyB2cGV4dHJkIHZwZXh0cnEgdnBoYWRkdyB2cGhhZGRkIHZwaGFkZHN3IHZwaG1pbnBvc3V3IHZwaHN1YncgdnBoc3ViZCB2cGhzdWJzdyB2cGluc3JiIHZwaW5zcncgdnBpbnNyZCB2cGluc3JxIHZwbWFkZHdkIHZwbWFkZHVic3cgdnBtYXhzYiB2cG1heHN3IHZwbWF4c2QgdnBtYXh1YiB2cG1heHV3IHZwbWF4dWQgdnBtaW5zYiB2cG1pbnN3IHZwbWluc2QgdnBtaW51YiB2cG1pbnV3IHZwbWludWQgdnBtb3Ztc2tiIHZwbW92c3hidyB2cG1vdnN4YmQgdnBtb3ZzeGJxIHZwbW92c3h3ZCB2cG1vdnN4d3EgdnBtb3ZzeGRxIHZwbW92enhidyB2cG1vdnp4YmQgdnBtb3Z6eGJxIHZwbW92enh3ZCB2cG1vdnp4d3EgdnBtb3Z6eGRxIHZwbXVsaHV3IHZwbXVsaHJzdyB2cG11bGh3IHZwbXVsbHcgdnBtdWxsZCB2cG11bHVkcSB2cG11bGRxIHZwb3IgdnBzYWRidyB2cHNodWZiIHZwc2h1ZmQgdnBzaHVmaHcgdnBzaHVmbHcgdnBzaWduYiB2cHNpZ253IHZwc2lnbmQgdnBzbGxkcSB2cHNybGRxIHZwc2xsdyB2cHNsbGQgdnBzbGxxIHZwc3JhdyB2cHNyYWQgdnBzcmx3IHZwc3JsZCB2cHNybHEgdnB0ZXN0IHZwc3ViYiB2cHN1YncgdnBzdWJkIHZwc3VicSB2cHN1YnNiIHZwc3Vic3cgdnBzdWJ1c2IgdnBzdWJ1c3cgdnB1bnBja2hidyB2cHVucGNraHdkIHZwdW5wY2toZHEgdnB1bnBja2hxZHEgdnB1bnBja2xidyB2cHVucGNrbHdkIHZwdW5wY2tsZHEgdnB1bnBja2xxZHEgdnB4b3IgdnJjcHBzIHZyY3BzcyB2cnNxcnRwcyB2cnNxcnRzcyB2cm91bmRwZCB2cm91bmRwcyB2cm91bmRzZCB2cm91bmRzcyB2c2h1ZnBkIHZzaHVmcHMgdnNxcnRwZCB2c3FydHBzIHZzcXJ0c2QgdnNxcnRzcyB2c3RteGNzciB2c3VicGQgdnN1YnBzIHZzdWJzZCB2c3Vic3MgdnRlc3RwcyB2dGVzdHBkIHZ1Y29taXNkIHZ1Y29taXNzIHZ1bnBja2hwZCB2dW5wY2tocHMgdnVucGNrbHBkIHZ1bnBja2xwcyB2eG9ycGQgdnhvcnBzIHZ6ZXJvYWxsIHZ6ZXJvdXBwZXIgcGNsbXVsbHFscWRxIHBjbG11bGhxbHFkcSBwY2xtdWxscWhxZHEgcGNsbXVsaHFocWRxIHBjbG11bHFkcSB2cGNsbXVsbHFscWRxIHZwY2xtdWxocWxxZHEgdnBjbG11bGxxaHFkcSB2cGNsbXVsaHFocWRxIHZwY2xtdWxxZHEgdmZtYWRkMTMycHMgdmZtYWRkMTMycGQgdmZtYWRkMzEycHMgdmZtYWRkMzEycGQgdmZtYWRkMjEzcHMgdmZtYWRkMjEzcGQgdmZtYWRkMTIzcHMgdmZtYWRkMTIzcGQgdmZtYWRkMjMxcHMgdmZtYWRkMjMxcGQgdmZtYWRkMzIxcHMgdmZtYWRkMzIxcGQgdmZtYWRkc3ViMTMycHMgdmZtYWRkc3ViMTMycGQgdmZtYWRkc3ViMzEycHMgdmZtYWRkc3ViMzEycGQgdmZtYWRkc3ViMjEzcHMgdmZtYWRkc3ViMjEzcGQgdmZtYWRkc3ViMTIzcHMgdmZtYWRkc3ViMTIzcGQgdmZtYWRkc3ViMjMxcHMgdmZtYWRkc3ViMjMxcGQgdmZtYWRkc3ViMzIxcHMgdmZtYWRkc3ViMzIxcGQgdmZtc3ViMTMycHMgdmZtc3ViMTMycGQgdmZtc3ViMzEycHMgdmZtc3ViMzEycGQgdmZtc3ViMjEzcHMgdmZtc3ViMjEzcGQgdmZtc3ViMTIzcHMgdmZtc3ViMTIzcGQgdmZtc3ViMjMxcHMgdmZtc3ViMjMxcGQgdmZtc3ViMzIxcHMgdmZtc3ViMzIxcGQgdmZtc3ViYWRkMTMycHMgdmZtc3ViYWRkMTMycGQgdmZtc3ViYWRkMzEycHMgdmZtc3ViYWRkMzEycGQgdmZtc3ViYWRkMjEzcHMgdmZtc3ViYWRkMjEzcGQgdmZtc3ViYWRkMTIzcHMgdmZtc3ViYWRkMTIzcGQgdmZtc3ViYWRkMjMxcHMgdmZtc3ViYWRkMjMxcGQgdmZtc3ViYWRkMzIxcHMgdmZtc3ViYWRkMzIxcGQgdmZubWFkZDEzMnBzIHZmbm1hZGQxMzJwZCB2Zm5tYWRkMzEycHMgdmZubWFkZDMxMnBkIHZmbm1hZGQyMTNwcyB2Zm5tYWRkMjEzcGQgdmZubWFkZDEyM3BzIHZmbm1hZGQxMjNwZCB2Zm5tYWRkMjMxcHMgdmZubWFkZDIzMXBkIHZmbm1hZGQzMjFwcyB2Zm5tYWRkMzIxcGQgdmZubXN1YjEzMnBzIHZmbm1zdWIxMzJwZCB2Zm5tc3ViMzEycHMgdmZubXN1YjMxMnBkIHZmbm1zdWIyMTNwcyB2Zm5tc3ViMjEzcGQgdmZubXN1YjEyM3BzIHZmbm1zdWIxMjNwZCB2Zm5tc3ViMjMxcHMgdmZubXN1YjIzMXBkIHZmbm1zdWIzMjFwcyB2Zm5tc3ViMzIxcGQgdmZtYWRkMTMyc3MgdmZtYWRkMTMyc2QgdmZtYWRkMzEyc3MgdmZtYWRkMzEyc2QgdmZtYWRkMjEzc3MgdmZtYWRkMjEzc2QgdmZtYWRkMTIzc3MgdmZtYWRkMTIzc2QgdmZtYWRkMjMxc3MgdmZtYWRkMjMxc2QgdmZtYWRkMzIxc3MgdmZtYWRkMzIxc2QgdmZtc3ViMTMyc3MgdmZtc3ViMTMyc2QgdmZtc3ViMzEyc3MgdmZtc3ViMzEyc2QgdmZtc3ViMjEzc3MgdmZtc3ViMjEzc2QgdmZtc3ViMTIzc3MgdmZtc3ViMTIzc2QgdmZtc3ViMjMxc3MgdmZtc3ViMjMxc2QgdmZtc3ViMzIxc3MgdmZtc3ViMzIxc2QgdmZubWFkZDEzMnNzIHZmbm1hZGQxMzJzZCB2Zm5tYWRkMzEyc3MgdmZubWFkZDMxMnNkIHZmbm1hZGQyMTNzcyB2Zm5tYWRkMjEzc2QgdmZubWFkZDEyM3NzIHZmbm1hZGQxMjNzZCB2Zm5tYWRkMjMxc3MgdmZubWFkZDIzMXNkIHZmbm1hZGQzMjFzcyB2Zm5tYWRkMzIxc2QgdmZubXN1YjEzMnNzIHZmbm1zdWIxMzJzZCB2Zm5tc3ViMzEyc3MgdmZubXN1YjMxMnNkIHZmbm1zdWIyMTNzcyB2Zm5tc3ViMjEzc2QgdmZubXN1YjEyM3NzIHZmbm1zdWIxMjNzZCB2Zm5tc3ViMjMxc3MgdmZubXN1YjIzMXNkIHZmbm1zdWIzMjFzcyB2Zm5tc3ViMzIxc2QgcmRmc2Jhc2UgcmRnc2Jhc2UgcmRyYW5kIHdyZnNiYXNlIHdyZ3NiYXNlIHZjdnRwaDJwcyB2Y3Z0cHMycGggYWRjeCBhZG94IHJkc2VlZCBjbGFjIHN0YWMgeHN0b3JlIHhjcnlwdGVjYiB4Y3J5cHRjYmMgeGNyeXB0Y3RyIHhjcnlwdGNmYiB4Y3J5cHRvZmIgbW9udG11bCB4c2hhMSB4c2hhMjU2IGxsd3BjYiBzbHdwY2IgbHdwdmFsIGx3cGlucyB2Zm1hZGRwZCB2Zm1hZGRwcyB2Zm1hZGRzZCB2Zm1hZGRzcyB2Zm1hZGRzdWJwZCB2Zm1hZGRzdWJwcyB2Zm1zdWJhZGRwZCB2Zm1zdWJhZGRwcyB2Zm1zdWJwZCB2Zm1zdWJwcyB2Zm1zdWJzZCB2Zm1zdWJzcyB2Zm5tYWRkcGQgdmZubWFkZHBzIHZmbm1hZGRzZCB2Zm5tYWRkc3MgdmZubXN1YnBkIHZmbm1zdWJwcyB2Zm5tc3Vic2QgdmZubXN1YnNzIHZmcmN6cGQgdmZyY3pwcyB2ZnJjenNkIHZmcmN6c3MgdnBjbW92IHZwY29tYiB2cGNvbWQgdnBjb21xIHZwY29tdWIgdnBjb211ZCB2cGNvbXVxIHZwY29tdXcgdnBjb213IHZwaGFkZGJkIHZwaGFkZGJxIHZwaGFkZGJ3IHZwaGFkZGRxIHZwaGFkZHViZCB2cGhhZGR1YnEgdnBoYWRkdWJ3IHZwaGFkZHVkcSB2cGhhZGR1d2QgdnBoYWRkdXdxIHZwaGFkZHdkIHZwaGFkZHdxIHZwaHN1YmJ3IHZwaHN1YmRxIHZwaHN1YndkIHZwbWFjc2RkIHZwbWFjc2RxaCB2cG1hY3NkcWwgdnBtYWNzc2RkIHZwbWFjc3NkcWggdnBtYWNzc2RxbCB2cG1hY3Nzd2QgdnBtYWNzc3d3IHZwbWFjc3dkIHZwbWFjc3d3IHZwbWFkY3Nzd2QgdnBtYWRjc3dkIHZwcGVybSB2cHJvdGIgdnByb3RkIHZwcm90cSB2cHJvdHcgdnBzaGFiIHZwc2hhZCB2cHNoYXEgdnBzaGF3IHZwc2hsYiB2cHNobGQgdnBzaGxxIHZwc2hsdyB2YnJvYWRjYXN0aTEyOCB2cGJsZW5kZCB2cGJyb2FkY2FzdGIgdnBicm9hZGNhc3R3IHZwYnJvYWRjYXN0ZCB2cGJyb2FkY2FzdHEgdnBlcm1kIHZwZXJtcGQgdnBlcm1wcyB2cGVybXEgdnBlcm0yaTEyOCB2ZXh0cmFjdGkxMjggdmluc2VydGkxMjggdnBtYXNrbW92ZCB2cG1hc2ttb3ZxIHZwc2xsdmQgdnBzbGx2cSB2cHNyYXZkIHZwc3JsdmQgdnBzcmx2cSB2Z2F0aGVyZHBkIHZnYXRoZXJxcGQgdmdhdGhlcmRwcyB2Z2F0aGVycXBzIHZwZ2F0aGVyZGQgdnBnYXRoZXJxZCB2cGdhdGhlcmRxIHZwZ2F0aGVycXEgeGFib3J0IHhiZWdpbiB4ZW5kIHh0ZXN0IGFuZG4gYmV4dHIgYmxjaSBibGNpYyBibHNpIGJsc2ljIGJsY2ZpbGwgYmxzZmlsbCBibGNtc2sgYmxzbXNrIGJsc3IgYmxjcyBiemhpIG11bHggcGRlcCBwZXh0IHJvcnggc2FyeCBzaGx4IHNocnggdHpjbnQgdHptc2sgdDFtc2tjIHZhbGlnbmQgdmFsaWducSB2YmxlbmRtcGQgdmJsZW5kbXBzIHZicm9hZGNhc3RmMzJ4NCB2YnJvYWRjYXN0ZjY0eDQgdmJyb2FkY2FzdGkzMng0IHZicm9hZGNhc3RpNjR4NCB2Y29tcHJlc3NwZCB2Y29tcHJlc3NwcyB2Y3Z0cGQydWRxIHZjdnRwczJ1ZHEgdmN2dHNkMnVzaSB2Y3Z0c3MydXNpIHZjdnR0cGQydWRxIHZjdnR0cHMydWRxIHZjdnR0c2QydXNpIHZjdnR0c3MydXNpIHZjdnR1ZHEycGQgdmN2dHVkcTJwcyB2Y3Z0dXNpMnNkIHZjdnR1c2kyc3MgdmV4cGFuZHBkIHZleHBhbmRwcyB2ZXh0cmFjdGYzMng0IHZleHRyYWN0ZjY0eDQgdmV4dHJhY3RpMzJ4NCB2ZXh0cmFjdGk2NHg0IHZmaXh1cGltbXBkIHZmaXh1cGltbXBzIHZmaXh1cGltbXNkIHZmaXh1cGltbXNzIHZnZXRleHBwZCB2Z2V0ZXhwcHMgdmdldGV4cHNkIHZnZXRleHBzcyB2Z2V0bWFudHBkIHZnZXRtYW50cHMgdmdldG1hbnRzZCB2Z2V0bWFudHNzIHZpbnNlcnRmMzJ4NCB2aW5zZXJ0ZjY0eDQgdmluc2VydGkzMng0IHZpbnNlcnRpNjR4NCB2bW92ZHFhMzIgdm1vdmRxYTY0IHZtb3ZkcXUzMiB2bW92ZHF1NjQgdnBhYnNxIHZwYW5kZCB2cGFuZG5kIHZwYW5kbnEgdnBhbmRxIHZwYmxlbmRtZCB2cGJsZW5kbXEgdnBjbXBsdGQgdnBjbXBsZWQgdnBjbXBuZXFkIHZwY21wbmx0ZCB2cGNtcG5sZWQgdnBjbXBkIHZwY21wbHRxIHZwY21wbGVxIHZwY21wbmVxcSB2cGNtcG5sdHEgdnBjbXBubGVxIHZwY21wcSB2cGNtcGVxdWQgdnBjbXBsdHVkIHZwY21wbGV1ZCB2cGNtcG5lcXVkIHZwY21wbmx0dWQgdnBjbXBubGV1ZCB2cGNtcHVkIHZwY21wZXF1cSB2cGNtcGx0dXEgdnBjbXBsZXVxIHZwY21wbmVxdXEgdnBjbXBubHR1cSB2cGNtcG5sZXVxIHZwY21wdXEgdnBjb21wcmVzc2QgdnBjb21wcmVzc3EgdnBlcm1pMmQgdnBlcm1pMnBkIHZwZXJtaTJwcyB2cGVybWkycSB2cGVybXQyZCB2cGVybXQycGQgdnBlcm10MnBzIHZwZXJtdDJxIHZwZXhwYW5kZCB2cGV4cGFuZHEgdnBtYXhzcSB2cG1heHVxIHZwbWluc3EgdnBtaW51cSB2cG1vdmRiIHZwbW92ZHcgdnBtb3ZxYiB2cG1vdnFkIHZwbW92cXcgdnBtb3ZzZGIgdnBtb3ZzZHcgdnBtb3ZzcWIgdnBtb3ZzcWQgdnBtb3ZzcXcgdnBtb3Z1c2RiIHZwbW92dXNkdyB2cG1vdnVzcWIgdnBtb3Z1c3FkIHZwbW92dXNxdyB2cG9yZCB2cG9ycSB2cHJvbGQgdnByb2xxIHZwcm9sdmQgdnByb2x2cSB2cHJvcmQgdnByb3JxIHZwcm9ydmQgdnByb3J2cSB2cHNjYXR0ZXJkZCB2cHNjYXR0ZXJkcSB2cHNjYXR0ZXJxZCB2cHNjYXR0ZXJxcSB2cHNyYXEgdnBzcmF2cSB2cHRlcm5sb2dkIHZwdGVybmxvZ3EgdnB0ZXN0bWQgdnB0ZXN0bXEgdnB0ZXN0bm1kIHZwdGVzdG5tcSB2cHhvcmQgdnB4b3JxIHZyY3AxNHBkIHZyY3AxNHBzIHZyY3AxNHNkIHZyY3AxNHNzIHZybmRzY2FsZXBkIHZybmRzY2FsZXBzIHZybmRzY2FsZXNkIHZybmRzY2FsZXNzIHZyc3FydDE0cGQgdnJzcXJ0MTRwcyB2cnNxcnQxNHNkIHZyc3FydDE0c3MgdnNjYWxlZnBkIHZzY2FsZWZwcyB2c2NhbGVmc2QgdnNjYWxlZnNzIHZzY2F0dGVyZHBkIHZzY2F0dGVyZHBzIHZzY2F0dGVycXBkIHZzY2F0dGVycXBzIHZzaHVmZjMyeDQgdnNodWZmNjR4MiB2c2h1ZmkzMng0IHZzaHVmaTY0eDIga2FuZG53IGthbmR3IGttb3Z3IGtub3R3IGtvcnRlc3R3IGtvcncga3NoaWZ0bHcga3NoaWZ0cncga3VucGNrYncga3hub3J3IGt4b3J3IHZwYnJvYWRjYXN0bWIycSB2cGJyb2FkY2FzdG13MmQgdnBjb25mbGljdGQgdnBjb25mbGljdHEgdnBsemNudGQgdnBsemNudHEgdmV4cDJwZCB2ZXhwMnBzIHZyY3AyOHBkIHZyY3AyOHBzIHZyY3AyOHNkIHZyY3AyOHNzIHZyc3FydDI4cGQgdnJzcXJ0MjhwcyB2cnNxcnQyOHNkIHZyc3FydDI4c3MgdmdhdGhlcnBmMGRwZCB2Z2F0aGVycGYwZHBzIHZnYXRoZXJwZjBxcGQgdmdhdGhlcnBmMHFwcyB2Z2F0aGVycGYxZHBkIHZnYXRoZXJwZjFkcHMgdmdhdGhlcnBmMXFwZCB2Z2F0aGVycGYxcXBzIHZzY2F0dGVycGYwZHBkIHZzY2F0dGVycGYwZHBzIHZzY2F0dGVycGYwcXBkIHZzY2F0dGVycGYwcXBzIHZzY2F0dGVycGYxZHBkIHZzY2F0dGVycGYxZHBzIHZzY2F0dGVycGYxcXBkIHZzY2F0dGVycGYxcXBzIHByZWZldGNod3QxIGJuZG1rIGJuZGNsIGJuZGN1IGJuZGNuIGJuZG1vdiBibmRsZHggYm5kc3R4IHNoYTFybmRzNCBzaGExbmV4dGUgc2hhMW1zZzEgc2hhMW1zZzIgc2hhMjU2cm5kczIgc2hhMjU2bXNnMSBzaGEyNTZtc2cyIGhpbnRfbm9wMCBoaW50X25vcDEgaGludF9ub3AyIGhpbnRfbm9wMyBoaW50X25vcDQgaGludF9ub3A1IGhpbnRfbm9wNiBoaW50X25vcDcgaGludF9ub3A4IGhpbnRfbm9wOSBoaW50X25vcDEwIGhpbnRfbm9wMTEgaGludF9ub3AxMiBoaW50X25vcDEzIGhpbnRfbm9wMTQgaGludF9ub3AxNSBoaW50X25vcDE2IGhpbnRfbm9wMTcgaGludF9ub3AxOCBoaW50X25vcDE5IGhpbnRfbm9wMjAgaGludF9ub3AyMSBoaW50X25vcDIyIGhpbnRfbm9wMjMgaGludF9ub3AyNCBoaW50X25vcDI1IGhpbnRfbm9wMjYgaGludF9ub3AyNyBoaW50X25vcDI4IGhpbnRfbm9wMjkgaGludF9ub3AzMCBoaW50X25vcDMxIGhpbnRfbm9wMzIgaGludF9ub3AzMyBoaW50X25vcDM0IGhpbnRfbm9wMzUgaGludF9ub3AzNiBoaW50X25vcDM3IGhpbnRfbm9wMzggaGludF9ub3AzOSBoaW50X25vcDQwIGhpbnRfbm9wNDEgaGludF9ub3A0MiBoaW50X25vcDQzIGhpbnRfbm9wNDQgaGludF9ub3A0NSBoaW50X25vcDQ2IGhpbnRfbm9wNDcgaGludF9ub3A0OCBoaW50X25vcDQ5IGhpbnRfbm9wNTAgaGludF9ub3A1MSBoaW50X25vcDUyIGhpbnRfbm9wNTMgaGludF9ub3A1NCBoaW50X25vcDU1IGhpbnRfbm9wNTYgaGludF9ub3A1NyBoaW50X25vcDU4IGhpbnRfbm9wNTkgaGludF9ub3A2MCBoaW50X25vcDYxIGhpbnRfbm9wNjIgaGludF9ub3A2MycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLy8gSW5zdHJ1Y3Rpb24gcG9pbnRlclxuICAgICAgICAnaXAgZWlwIHJpcCAnICtcbiAgICAgICAgLy8gOC1iaXQgcmVnaXN0ZXJzXG4gICAgICAgICdhbCBhaCBibCBiaCBjbCBjaCBkbCBkaCBzaWwgZGlsIGJwbCBzcGwgcjhiIHI5YiByMTBiIHIxMWIgcjEyYiByMTNiIHIxNGIgcjE1YiAnICtcbiAgICAgICAgLy8gMTYtYml0IHJlZ2lzdGVyc1xuICAgICAgICAnYXggYnggY3ggZHggc2kgZGkgYnAgc3Agcjh3IHI5dyByMTB3IHIxMXcgcjEydyByMTN3IHIxNHcgcjE1dyAnICtcbiAgICAgICAgLy8gMzItYml0IHJlZ2lzdGVyc1xuICAgICAgICAnZWF4IGVieCBlY3ggZWR4IGVzaSBlZGkgZWJwIGVzcCBlaXAgcjhkIHI5ZCByMTBkIHIxMWQgcjEyZCByMTNkIHIxNGQgcjE1ZCAnICtcbiAgICAgICAgLy8gNjQtYml0IHJlZ2lzdGVyc1xuICAgICAgICAncmF4IHJieCByY3ggcmR4IHJzaSByZGkgcmJwIHJzcCByOCByOSByMTAgcjExIHIxMiByMTMgcjE0IHIxNSAnICtcbiAgICAgICAgLy8gU2VnbWVudCByZWdpc3RlcnNcbiAgICAgICAgJ2NzIGRzIGVzIGZzIGdzIHNzICcgK1xuICAgICAgICAvLyBGbG9hdGluZyBwb2ludCBzdGFjayByZWdpc3RlcnNcbiAgICAgICAgJ3N0IHN0MCBzdDEgc3QyIHN0MyBzdDQgc3Q1IHN0NiBzdDcgJyArXG4gICAgICAgIC8vIE1NWCBSZWdpc3RlcnNcbiAgICAgICAgJ21tMCBtbTEgbW0yIG1tMyBtbTQgbW01IG1tNiBtbTcgJyArXG4gICAgICAgIC8vIFNTRSByZWdpc3RlcnNcbiAgICAgICAgJ3htbTAgIHhtbTEgIHhtbTIgIHhtbTMgIHhtbTQgIHhtbTUgIHhtbTYgIHhtbTcgIHhtbTggIHhtbTkgeG1tMTAgIHhtbTExIHhtbTEyIHhtbTEzIHhtbTE0IHhtbTE1ICcgK1xuICAgICAgICAneG1tMTYgeG1tMTcgeG1tMTggeG1tMTkgeG1tMjAgeG1tMjEgeG1tMjIgeG1tMjMgeG1tMjQgeG1tMjUgeG1tMjYgeG1tMjcgeG1tMjggeG1tMjkgeG1tMzAgeG1tMzEgJyArXG4gICAgICAgIC8vIEFWWCByZWdpc3RlcnNcbiAgICAgICAgJ3ltbTAgIHltbTEgIHltbTIgIHltbTMgIHltbTQgIHltbTUgIHltbTYgIHltbTcgIHltbTggIHltbTkgeW1tMTAgIHltbTExIHltbTEyIHltbTEzIHltbTE0IHltbTE1ICcgK1xuICAgICAgICAneW1tMTYgeW1tMTcgeW1tMTggeW1tMTkgeW1tMjAgeW1tMjEgeW1tMjIgeW1tMjMgeW1tMjQgeW1tMjUgeW1tMjYgeW1tMjcgeW1tMjggeW1tMjkgeW1tMzAgeW1tMzEgJyArXG4gICAgICAgIC8vIEFWWC01MTJGIHJlZ2lzdGVyc1xuICAgICAgICAnem1tMCAgem1tMSAgem1tMiAgem1tMyAgem1tNCAgem1tNSAgem1tNiAgem1tNyAgem1tOCAgem1tOSB6bW0xMCAgem1tMTEgem1tMTIgem1tMTMgem1tMTQgem1tMTUgJyArXG4gICAgICAgICd6bW0xNiB6bW0xNyB6bW0xOCB6bW0xOSB6bW0yMCB6bW0yMSB6bW0yMiB6bW0yMyB6bW0yNCB6bW0yNSB6bW0yNiB6bW0yNyB6bW0yOCB6bW0yOSB6bW0zMCB6bW0zMSAnICtcbiAgICAgICAgLy8gQVZYLTUxMkYgbWFzayByZWdpc3RlcnNcbiAgICAgICAgJ2swIGsxIGsyIGszIGs0IGs1IGs2IGs3ICcgK1xuICAgICAgICAvLyBCb3VuZCAoTVBYKSByZWdpc3RlclxuICAgICAgICAnYm5kMCBibmQxIGJuZDIgYm5kMyAnICtcbiAgICAgICAgLy8gU3BlY2lhbCByZWdpc3RlclxuICAgICAgICAnY3IwIGNyMSBjcjIgY3IzIGNyNCBjcjggZHIwIGRyMSBkcjIgZHIzIGRyOCB0cjMgdHI0IHRyNSB0cjYgdHI3ICcgK1xuICAgICAgICAvLyBOQVNNIGFsdHJlZyBwYWNrYWdlXG4gICAgICAgICdyMCByMSByMiByMyByNCByNSByNiByNyByMGIgcjFiIHIyYiByM2IgcjRiIHI1YiByNmIgcjdiICcgK1xuICAgICAgICAncjB3IHIxdyByMncgcjN3IHI0dyByNXcgcjZ3IHI3dyByMGQgcjFkIHIyZCByM2QgcjRkIHI1ZCByNmQgcjdkICcgK1xuICAgICAgICAncjBoIHIxaCByMmggcjNoICcgK1xuICAgICAgICAncjBsIHIxbCByMmwgcjNsIHI0bCByNWwgcjZsIHI3bCByOGwgcjlsIHIxMGwgcjExbCByMTJsIHIxM2wgcjE0bCByMTVsICcgK1xuXG4gICAgICAgICdkYiBkdyBkZCBkcSBkdCBkZHEgZG8gZHkgZHogJyArXG4gICAgICAgICdyZXNiIHJlc3cgcmVzZCByZXNxIHJlc3QgcmVzZHEgcmVzbyByZXN5IHJlc3ogJyArXG4gICAgICAgICdpbmNiaW4gZXF1IHRpbWVzICcgK1xuICAgICAgICAnYnl0ZSB3b3JkIGR3b3JkIHF3b3JkIG5vc3BsaXQgcmVsIGFicyBzZWcgd3J0IHN0cmljdCBuZWFyIGZhciBhMzIgcHRyJyxcblxuICAgICAgbWV0YTpcbiAgICAgICAgJyVkZWZpbmUgJXhkZWZpbmUgJSsgJXVuZGVmICVkZWZzdHIgJWRlZnRvayAlYXNzaWduICVzdHJjYXQgJXN0cmxlbiAlc3Vic3RyICVyb3RhdGUgJWVsaWYgJWVsc2UgJWVuZGlmICcgK1xuICAgICAgICAnJWlmICVpZm1hY3JvICVpZmN0eCAlaWZpZG4gJWlmaWRuaSAlaWZpZCAlaWZudW0gJWlmc3RyICVpZnRva2VuICVpZmVtcHR5ICVpZmVudiAlZXJyb3IgJXdhcm5pbmcgJWZhdGFsICVyZXAgJyArXG4gICAgICAgICclZW5kcmVwICVpbmNsdWRlICVwdXNoICVwb3AgJXJlcGwgJXBhdGhzZWFyY2ggJWRlcGVuZCAldXNlICVhcmcgJXN0YWNrc2l6ZSAlbG9jYWwgJWxpbmUgJWNvbW1lbnQgJWVuZGNvbW1lbnQgJyArXG4gICAgICAgICcubm9saXN0ICcgK1xuICAgICAgICAnX19GSUxFX18gX19MSU5FX18gX19TRUNUX18gIF9fQklUU19fIF9fT1VUUFVUX0ZPUk1BVF9fIF9fREFURV9fIF9fVElNRV9fIF9fREFURV9OVU1fXyBfX1RJTUVfTlVNX18gJyArXG4gICAgICAgICdfX1VUQ19EQVRFX18gX19VVENfVElNRV9fIF9fVVRDX0RBVEVfTlVNX18gX19VVENfVElNRV9OVU1fXyAgX19QQVNTX18gc3RydWMgZW5kc3RydWMgaXN0cnVjIGF0IGllbmQgJyArXG4gICAgICAgICdhbGlnbiBhbGlnbmIgc2VjdGFsaWduIGRheiBub2RheiB1cCBkb3duIHplcm8gZGVmYXVsdCBvcHRpb24gYXNzdW1lIHB1YmxpYyAnICtcblxuICAgICAgICAnYml0cyB1c2UxNiB1c2UzMiB1c2U2NCBkZWZhdWx0IHNlY3Rpb24gc2VnbWVudCBhYnNvbHV0ZSBleHRlcm4gZ2xvYmFsIGNvbW1vbiBjcHUgZmxvYXQgJyArXG4gICAgICAgICdfX3V0ZjE2X18gX191dGYxNmxlX18gX191dGYxNmJlX18gX191dGYzMl9fIF9fdXRmMzJsZV9fIF9fdXRmMzJiZV9fICcgK1xuICAgICAgICAnX19mbG9hdDhfXyBfX2Zsb2F0MTZfXyBfX2Zsb2F0MzJfXyBfX2Zsb2F0NjRfXyBfX2Zsb2F0ODBtX18gX19mbG9hdDgwZV9fIF9fZmxvYXQxMjhsX18gX19mbG9hdDEyOGhfXyAnICtcbiAgICAgICAgJ19fSW5maW5pdHlfXyBfX1FOYU5fXyBfX1NOYU5fXyBJbmYgTmFOIFFOYU4gU05hTiBmbG9hdDggZmxvYXQxNiBmbG9hdDMyIGZsb2F0NjQgZmxvYXQ4MG0gZmxvYXQ4MGUgJyArXG4gICAgICAgICdmbG9hdDEyOGwgZmxvYXQxMjhoIF9fRkxPQVRfREFaX18gX19GTE9BVF9ST1VORF9fIF9fRkxPQVRfXydcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICc7JyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgLy8gRmxvYXQgbnVtYmVyIGFuZCB4ODcgQkNEXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OihbMC05XVswLTlfXSopP1xcXFwuWzAtOV9dKig/OltlRV1bKy1dP1swLTlfXSspP3wnICtcbiAgICAgICAgICAgICAgICAgICAnKDBbWHhdKT9bMC05XVswLTlfXSpcXFxcLj9bMC05X10qKD86W3BQXSg/OlsrLV0/WzAtOV9dKyk/KT8pXFxcXGInLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcblxuICAgICAgICAgIC8vIEhleCBudW1iZXIgaW4gJFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcJFswLTldWzAtOUEtRmEtZl0qJywgcmVsZXZhbmNlOiAwIH0sXG5cbiAgICAgICAgICAvLyBOdW1iZXIgaW4gSCxELFQsUSxPLEIsWSBzdWZmaXhcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIoPzpbMC05QS1GYS1mXVswLTlBLUZhLWZfXSpbSGhdfFswLTldWzAtOV9dKltEZFR0XT98WzAtN11bMC03X10qW1FxT29dfFswLTFdWzAtMV9dKltCYll5XSlcXFxcYicgfSxcblxuICAgICAgICAgIC8vIE51bWJlciBpbiBYLEQsVCxRLE8sQixZIHByZWZpeFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYig/OjBbWHhdWzAtOUEtRmEtZl9dK3wwW0RkVHRdWzAtOV9dK3wwW1FxT29dWzAtN19dK3wwW0JiWXldWzAtMV9dKylcXFxcYid9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBEb3VibGUgcXVvdGUgc3RyaW5nXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIC8vIFNpbmdsZS1xdW90ZWQgc3RyaW5nXG4gICAgICAgICAgeyBiZWdpbjogJ1xcJycsIGVuZDogJ1teXFxcXFxcXFxdXFwnJyB9LFxuICAgICAgICAgIC8vIEJhY2txdW90ZWQgc3RyaW5nXG4gICAgICAgICAgeyBiZWdpbjogJ2AnLCBlbmQ6ICdbXlxcXFxcXFxcXWAnIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIC8vIEdsb2JhbCBsYWJlbCBhbmQgbG9jYWwgbGFiZWxcbiAgICAgICAgICB7IGJlZ2luOiAnXlxcXFxzKltBLVphLXouXz9dW0EtWmEtejAtOV8kI0B+Lj9dKig6fFxcXFxzK2xhYmVsKScgfSxcbiAgICAgICAgICAvLyBNYWNyby1sb2NhbCBsYWJlbFxuICAgICAgICAgIHsgYmVnaW46ICdeXFxcXHMqJSVbQS1aYS16MC05XyQjQH4uP10qOicgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBNYWNybyBwYXJhbWV0ZXJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICBiZWdpbjogJyVbMC05XSsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBNYWNybyBwYXJhbWV0ZXJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICBiZWdpbjogJyUhXFxTKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXlxccypcXC5bXFx3Xy1dKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRJTl9NT0RVTEVTID1cbiAgICAnT2JqZWN0TG9hZGVyIEFuaW1hdGUgTW92aWVDcmVkaXRzIFNsaWRlcyBGaWx0ZXJzIFNoYWRpbmcgTWF0ZXJpYWxzIExlbnNGbGFyZSBNYXBwaW5nIFZMQ0F1ZGlvVmlkZW8gJyArXG4gICAgJ1N0ZXJlb0RlY29kZXIgUG9pbnRDbG91ZCBOZXR3b3JrQWNjZXNzIFJlbW90ZUNvbnRyb2wgUmVnRXhwIENocm9tYUtleSBTbm93ZmFsbCBOb2RlSlMgU3BlZWNoIENoYXJ0cyc7XG5cbiAgdmFyIFhMX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaWYgdGhlbiBlbHNlIGRvIHdoaWxlIHVudGlsIGZvciBsb29wIGltcG9ydCB3aXRoIGlzIGFzIHdoZXJlIHdoZW4gYnkgZGF0YSBjb25zdGFudCAnICtcbiAgICAgICdpbnRlZ2VyIHJlYWwgdGV4dCBuYW1lIGJvb2xlYW4gc3ltYm9sIGluZml4IHByZWZpeCBwb3N0Zml4IGJsb2NrIHRyZWUnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBuaWwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2luIG1vZCByZW0gYW5kIG9yIHhvciBub3QgYWJzIHNpZ24gZmxvb3IgY2VpbCBzcXJ0IHNpbiBjb3MgdGFuIGFzaW4gJyArXG4gICAgICAnYWNvcyBhdGFuIGV4cCBleHBtMSBsb2cgbG9nMiBsb2cxMCBsb2cxcCBwaSBhdCB0ZXh0X2xlbmd0aCB0ZXh0X3JhbmdlICcgK1xuICAgICAgJ3RleHRfZmluZCB0ZXh0X3JlcGxhY2UgY29udGFpbnMgcGFnZSBzbGlkZSBiYXNpY19zbGlkZSB0aXRsZV9zbGlkZSAnICtcbiAgICAgICd0aXRsZSBzdWJ0aXRsZSBmYWRlX2luIGZhZGVfb3V0IGZhZGVfYXQgY2xlYXJfY29sb3IgY29sb3IgbGluZV9jb2xvciAnICtcbiAgICAgICdsaW5lX3dpZHRoIHRleHR1cmVfd3JhcCB0ZXh0dXJlX3RyYW5zZm9ybSB0ZXh0dXJlIHNjYWxlXz94IHNjYWxlXz95ICcgK1xuICAgICAgJ3NjYWxlXz96PyB0cmFuc2xhdGVfP3ggdHJhbnNsYXRlXz95IHRyYW5zbGF0ZV8/ej8gcm90YXRlXz94IHJvdGF0ZV8/eSAnICtcbiAgICAgICdyb3RhdGVfP3o/IHJlY3RhbmdsZSBjaXJjbGUgZWxsaXBzZSBzcGhlcmUgcGF0aCBsaW5lX3RvIG1vdmVfdG8gJyArXG4gICAgICAncXVhZF90byBjdXJ2ZV90byB0aGVtZSBiYWNrZ3JvdW5kIGNvbnRlbnRzIGxvY2FsbHkgdGltZSBtb3VzZV8/eCAnICtcbiAgICAgICdtb3VzZV8/eSBtb3VzZV9idXR0b25zICcgK1xuICAgICAgQlVJTFRJTl9NT0RVTEVTXG4gIH07XG5cbiAgdmFyIERPVUJMRV9RVU9URV9URVhUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJywgaWxsZWdhbDogJ1xcXFxuJ1xuICB9O1xuICB2YXIgU0lOR0xFX1FVT1RFX1RFWFQgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsIGlsbGVnYWw6ICdcXFxcbidcbiAgfTtcbiAgdmFyIExPTkdfVEVYVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnPDwnLCBlbmQ6ICc+PidcbiAgfTtcbiAgdmFyIEJBU0VEX05VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnWzAtOV0rI1swLTlBLVpfXSsoXFxcXC5bMC05LUEtWl9dKyk/Iz8oW0VlXVsrLV0/WzAtOV0rKT8nXG4gIH07XG4gIHZhciBJTVBPUlQgPSB7XG4gICAgYmVnaW5LZXl3b3JkczogJ2ltcG9ydCcsIGVuZDogJyQnLFxuICAgIGtleXdvcmRzOiBYTF9LRVlXT1JEUyxcbiAgICBjb250YWluczogW0RPVUJMRV9RVU9URV9URVhUXVxuICB9O1xuICB2YXIgRlVOQ1RJT05fREVGSU5JVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW46IC9bYS16XVteXFxuXSotPi8sIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6IC8tPi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtzdGFydHM6IHtcbiAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBYTF9LRVlXT1JEU1xuICAgICAgfX0pXG4gICAgXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndGFvJ10sXG4gICAgbGV4ZW1lczogL1thLXpBLVpdW2EtekEtWjAtOV8/XSovLFxuICAgIGtleXdvcmRzOiBYTF9LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIERPVUJMRV9RVU9URV9URVhULFxuICAgIFNJTkdMRV9RVU9URV9URVhULFxuICAgIExPTkdfVEVYVCxcbiAgICBGVU5DVElPTl9ERUZJTklUSU9OLFxuICAgIElNUE9SVCxcbiAgICBCQVNFRF9OVU1CRVIsXG4gICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIHNlZSBodHRwczovL3d3dy53My5vcmcvVFIveHF1ZXJ5LyNpZC10ZXJtaW5hbC1kZWxpbWl0YXRpb25cbiAgdmFyIEtFWVdPUkRTID0gJ21vZHVsZSBzY2hlbWEgbmFtZXNwYWNlIGJvdW5kYXJ5LXNwYWNlIHByZXNlcnZlIG5vLXByZXNlcnZlIHN0cmlwIGRlZmF1bHQgY29sbGF0aW9uIGJhc2UtdXJpIG9yZGVyaW5nIGNvbnRleHQgZGVjaW1hbC1mb3JtYXQgZGVjaW1hbC1zZXBhcmF0b3IgY29weS1uYW1lc3BhY2VzIGVtcHR5LXNlcXVlbmNlIGV4Y2VwdCBleHBvbmVudC1zZXBhcmF0b3IgZXh0ZXJuYWwgZ3JvdXBpbmctc2VwYXJhdG9yIGluaGVyaXQgbm8taW5oZXJpdCBsYXggbWludXMtc2lnbiBwZXItbWlsbGUgcGVyY2VudCBzY2hlbWEtYXR0cmlidXRlIHNjaGVtYS1lbGVtZW50IHN0cmljdCB1bm9yZGVyZWQgemVyby1kaWdpdCAnICtcbiAgJ2RlY2xhcmUgaW1wb3J0IG9wdGlvbiBmdW5jdGlvbiB2YWxpZGF0ZSB2YXJpYWJsZSAnICtcbiAgJ2ZvciBhdCBpbiBsZXQgd2hlcmUgb3JkZXIgZ3JvdXAgYnkgcmV0dXJuIGlmIHRoZW4gZWxzZSAnICtcbiAgJ3R1bWJsaW5nIHNsaWRpbmcgd2luZG93IHN0YXJ0IHdoZW4gb25seSBlbmQgcHJldmlvdXMgbmV4dCBzdGFibGUgJyArXG4gICdhc2NlbmRpbmcgZGVzY2VuZGluZyBhbGxvd2luZyBlbXB0eSBncmVhdGVzdCBsZWFzdCBzb21lIGV2ZXJ5IHNhdGlzZmllcyBzd2l0Y2ggY2FzZSB0eXBlc3dpdGNoIHRyeSBjYXRjaCAnICtcbiAgJ2FuZCBvciB0byB1bmlvbiBpbnRlcnNlY3QgaW5zdGFuY2Ugb2YgdHJlYXQgYXMgY2FzdGFibGUgY2FzdCBtYXAgYXJyYXkgJyArXG4gICdkZWxldGUgaW5zZXJ0IGludG8gcmVwbGFjZSB2YWx1ZSByZW5hbWUgY29weSBtb2RpZnkgdXBkYXRlJztcblxuICAvLyBOb2RlIFR5cGVzIChzb3J0ZWQgYnkgaW5oZXJpdGFuY2UpXG4gIC8vIGF0b21pYyB0eXBlcyAoc29ydGVkIGJ5IGluaGVyaXRhbmNlKVxuICB2YXIgVFlQRSA9ICdpdGVtIGRvY3VtZW50LW5vZGUgbm9kZSBhdHRyaWJ1dGUgZG9jdW1lbnQgZWxlbWVudCBjb21tZW50IG5hbWVzcGFjZSBuYW1lc3BhY2Utbm9kZSBwcm9jZXNzaW5nLWluc3RydWN0aW9uIHRleHQgY29uc3RydWN0aW9uICcgK1xuICAneHM6YW55QXRvbWljVHlwZSB4czp1bnR5cGVkQXRvbWljIHhzOmR1cmF0aW9uIHhzOnRpbWUgeHM6ZGVjaW1hbCB4czpmbG9hdCB4czpkb3VibGUgeHM6Z1llYXJNb250aCB4czpnWWVhciB4czpnTW9udGhEYXkgeHM6Z01vbnRoIHhzOmdEYXkgeHM6Ym9vbGVhbiB4czpiYXNlNjRCaW5hcnkgeHM6aGV4QmluYXJ5IHhzOmFueVVSSSB4czpRTmFtZSB4czpOT1RBVElPTiB4czpkYXRlVGltZSB4czpkYXRlVGltZVN0YW1wIHhzOmRhdGUgeHM6c3RyaW5nIHhzOm5vcm1hbGl6ZWRTdHJpbmcgeHM6dG9rZW4geHM6bGFuZ3VhZ2UgeHM6Tk1UT0tFTiB4czpOYW1lIHhzOk5DTmFtZSB4czpJRCB4czpJRFJFRiB4czpFTlRJVFkgeHM6aW50ZWdlciB4czpub25Qb3NpdGl2ZUludGVnZXIgeHM6bmVnYXRpdmVJbnRlZ2VyIHhzOmxvbmcgeHM6aW50IHhzOnNob3J0IHhzOmJ5dGUgeHM6bm9uTmVnYXRpdmVJbnRlZ2VyIHhzOnVuaXNpZ25lZExvbmcgeHM6dW5zaWduZWRJbnQgeHM6dW5zaWduZWRTaG9ydCB4czp1bnNpZ25lZEJ5dGUgeHM6cG9zaXRpdmVJbnRlZ2VyIHhzOnllYXJNb250aER1cmF0aW9uIHhzOmRheVRpbWVEdXJhdGlvbic7XG5cbiAgdmFyIExJVEVSQUwgPSAnZXEgbmUgbHQgbGUgZ3QgZ2UgaXMgJyArXG4gICAgJ3NlbGY6OiBjaGlsZDo6IGRlc2NlbmRhbnQ6OiBkZXNjZW5kYW50LW9yLXNlbGY6OiBhdHRyaWJ1dGU6OiBmb2xsb3dpbmc6OiBmb2xsb3dpbmctc2libGluZzo6IHBhcmVudDo6IGFuY2VzdG9yOjogYW5jZXN0b3Itb3Itc2VsZjo6IHByZWNlZGluZzo6IHByZWNlZGluZy1zaWJsaW5nOjogJyArXG4gICAgJ05hTic7XG5cbiAgLy8gZnVuY3Rpb25zIChUT0RPOiBmaW5kIHJlZ2V4IGZvciBvcDogd2l0aG91dCBicmVha2luZyBidWlsZClcbiAgdmFyIEJVSUxUX0lOID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICB2YXJpYW50czogW3tcbiAgICAgIGJlZ2luOiAvXFxiYXJyYXlcXDovLFxuICAgICAgZW5kOiAvKD86YXBwZW5kfGZpbHRlcnxmbGF0dGVufGZvbGRcXC0oPzpsZWZ0fHJpZ2h0KXxmb3ItZWFjaCg/OlxcLXBhaXIpP3xnZXR8aGVhZHxpbnNlcnRcXC1iZWZvcmV8am9pbnxwdXR8cmVtb3ZlfHJldmVyc2V8c2l6ZXxzb3J0fHN1YmFycmF5fHRhaWwpXFxiL1xuICAgIH0sIHtcbiAgICAgIGJlZ2luOiAvXFxibWFwXFw6LyxcbiAgICAgIGVuZDogLyg/OmNvbnRhaW5zfGVudHJ5fGZpbmR8Zm9yXFwtZWFjaHxnZXR8a2V5c3xtZXJnZXxwdXR8cmVtb3ZlfHNpemUpXFxiL1xuICAgIH0sIHtcbiAgICAgIGJlZ2luOiAvXFxibWF0aFxcOi8sXG4gICAgICBlbmQ6IC8oPzphKD86Y29zfHNpbnx0YW5bMl0/KXxjb3N8ZXhwKD86MTApP3xsb2coPzoxMCk/fHBpfHBvd3xzaW58c3FydHx0YW4pXFxiL1xuICAgIH0sIHtcbiAgICAgIGJlZ2luOiAvXFxib3BcXDovLFxuICAgICAgZW5kOiAvXFwoLyxcbiAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYmZuXFw6LyxcbiAgICAgIGVuZDogL1xcKC8sXG4gICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgfSxcbi8vIGRvIG5vdCBoaWdobGlnaHQgaW5idWlsdCBzdHJpbmdzIGFzIHZhcmlhYmxlIG9yIHhtbCBlbGVtZW50IG5hbWVzXG4gICAge1xuICAgICAgYmVnaW46IC9bXjxcXC9cXCRcXDonXCItXVxcYig/OmFic3xhY2N1bXVsYXRvclxcLSg/OmFmdGVyfGJlZm9yZSl8YWRqdXN0XFwtKD86ZGF0ZSg/OlRpbWUpP3x0aW1lKVxcLXRvXFwtdGltZXpvbmV8YW5hbHl6ZVxcLXN0cmluZ3xhcHBseXxhdmFpbGFibGVcXC0oPzplbnZpcm9ubWVudFxcLXZhcmlhYmxlc3xzeXN0ZW1cXC1wcm9wZXJ0aWVzKXxhdmd8YmFzZVxcLXVyaXxib29sZWFufGNlaWxpbmd8Y29kZXBvaW50cz9cXC0oPzplcXVhbHx0b1xcLXN0cmluZyl8Y29sbGF0aW9uXFwta2V5fGNvbGxlY3Rpb258Y29tcGFyZXxjb25jYXR8Y29udGFpbnMoPzpcXC10b2tlbik/fGNvcHlcXC1vZnxjb3VudHxjdXJyZW50KD86XFwtKT8oPzpkYXRlKD86VGltZSk/fHRpbWV8Z3JvdXAoPzppbmdcXC1rZXkpP3xvdXRwdXRcXC11cml8bWVyZ2VcXC0oPzpncm91cHxrZXkpKT9kYXRhfGRhdGVUaW1lfGRheXM/XFwtZnJvbVxcLSg/OmRhdGUoPzpUaW1lKT98ZHVyYXRpb24pfGRlZXBcXC1lcXVhbHxkZWZhdWx0XFwtKD86Y29sbGF0aW9ufGxhbmd1YWdlKXxkaXN0aW5jdFxcLXZhbHVlc3xkb2N1bWVudCg/OlxcLXVyaSk/fGRvYyg/OlxcLWF2YWlsYWJsZSk/fGVsZW1lbnRcXC0oPzphdmFpbGFibGV8d2l0aFxcLWlkKXxlbXB0eXxlbmNvZGVcXC1mb3JcXC11cml8ZW5kc1xcLXdpdGh8ZW52aXJvbm1lbnRcXC12YXJpYWJsZXxlcnJvcnxlc2NhcGVcXC1odG1sXFwtdXJpfGV4YWN0bHlcXC1vbmV8ZXhpc3RzfGZhbHNlfGZpbHRlcnxmbG9vcnxmb2xkXFwtKD86bGVmdHxyaWdodCl8Zm9yXFwtZWFjaCg/OlxcLXBhaXIpP3xmb3JtYXRcXC0oPzpkYXRlKD86VGltZSk/fHRpbWV8aW50ZWdlcnxudW1iZXIpfGZ1bmN0aW9uXFwtKD86YXJpdHl8YXZhaWxhYmxlfGxvb2t1cHxuYW1lKXxnZW5lcmF0ZVxcLWlkfGhhc1xcLWNoaWxkcmVufGhlYWR8aG91cnNcXC1mcm9tXFwtKD86ZGF0ZVRpbWV8ZHVyYXRpb258dGltZSl8aWQoPzpyZWYpP3xpbXBsaWNpdFxcLXRpbWV6b25lfGluXFwtc2NvcGVcXC1wcmVmaXhlc3xpbmRleFxcLW9mfGlubmVybW9zdHxpbnNlcnRcXC1iZWZvcmV8aXJpXFwtdG9cXC11cml8anNvblxcLSg/OmRvY3x0b1xcLXhtbCl8a2V5fGxhbmd8bGFzdHxsb2FkXFwteHF1ZXJ5XFwtbW9kdWxlfGxvY2FsXFwtbmFtZSg/OlxcLWZyb21cXC1RTmFtZSk/fCg/Omxvd2VyfHVwcGVyKVxcLWNhc2V8bWF0Y2hlc3xtYXh8bWludXRlc1xcLWZyb21cXC0oPzpkYXRlVGltZXxkdXJhdGlvbnx0aW1lKXxtaW58bW9udGhzP1xcLWZyb21cXC0oPzpkYXRlKD86VGltZSk/fGR1cmF0aW9uKXxuYW1lKD86c3BhY2VcXC11cmlcXC0/KD86Zm9yXFwtcHJlZml4fGZyb21cXC1RTmFtZSk/KT98bmlsbGVkfG5vZGVcXC1uYW1lfG5vcm1hbGl6ZVxcLSg/OnNwYWNlfHVuaWNvZGUpfG5vdHxudW1iZXJ8b25lXFwtb3JcXC1tb3JlfG91dGVybW9zdHxwYXJzZVxcLSg/OmlldGZcXC1kYXRlfGpzb24pfHBhdGh8cG9zaXRpb258KD86cHJlZml4XFwtZnJvbVxcLSk/UU5hbWV8cmFuZG9tXFwtbnVtYmVyXFwtZ2VuZXJhdG9yfHJlZ2V4XFwtZ3JvdXB8cmVtb3ZlfHJlcGxhY2V8cmVzb2x2ZVxcLSg/OlFOYW1lfHVyaSl8cmV2ZXJzZXxyb290fHJvdW5kKD86XFwtaGFsZlxcLXRvXFwtZXZlbik/fHNlY29uZHNcXC1mcm9tXFwtKD86ZGF0ZVRpbWV8ZHVyYXRpb258dGltZSl8c25hcHNob3R8c29ydHxzdGFydHNcXC13aXRofHN0YXRpY1xcLWJhc2VcXC11cml8c3RyZWFtXFwtYXZhaWxhYmxlfHN0cmluZ1xcLT8oPzpqb2lufGxlbmd0aHx0b1xcLWNvZGVwb2ludHMpP3xzdWJzZXF1ZW5jZXxzdWJzdHJpbmdcXC0/KD86YWZ0ZXJ8YmVmb3JlKT98c3VtfHN5c3RlbVxcLXByb3BlcnR5fHRhaWx8dGltZXpvbmVcXC1mcm9tXFwtKD86ZGF0ZSg/OlRpbWUpP3x0aW1lKXx0b2tlbml6ZXx0cmFjZXx0cmFucyg/OmZvcm18bGF0ZSl8dHJ1ZXx0eXBlXFwtYXZhaWxhYmxlfHVub3JkZXJlZHx1bnBhcnNlZFxcLSg/OmVudGl0eXx0ZXh0KT9cXC0/KD86cHVibGljXFwtaWR8dXJpfGF2YWlsYWJsZXxsaW5lcyk/fHVyaVxcLWNvbGxlY3Rpb258eG1sXFwtdG9cXC1qc29ufHllYXJzP1xcLWZyb21cXC0oPzpkYXRlKD86VGltZSk/fGR1cmF0aW9uKXx6ZXJvXFwtb3JcXC1vbmUpXFxiLyxcbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYmxvY2FsXFw6LyxcbiAgICAgIGVuZDogL1xcKC8sXG4gICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgfSwge1xuICAgICAgYmVnaW46IC9cXGJ6aXBcXDovLFxuICAgICAgZW5kOiAvKD86emlwXFwtZmlsZXwoPzp4bWx8aHRtbHx0ZXh0fGJpbmFyeSlcXC1lbnRyeXwgKD86dXBkYXRlXFwtKT9lbnRyaWVzKVxcYi9cbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYig/OnV0aWx8ZGJ8ZnVuY3R4fGFwcHx4ZG1wfHhtbGRiKVxcOi8sXG4gICAgICBlbmQ6IC9cXCgvLFxuICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgIH1cbiAgXVxuICB9O1xuXG4gIHZhciBUSVRMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgYmVnaW46IC9cXGJ4cXVlcnkgdmVyc2lvbiBcIlsxM11cXC5bMDFdXCJcXHM/KD86ZW5jb2RpbmcgXCIuK1wiKT8vLFxuICAgIGVuZDogLzsvXG4gIH07XG5cbiAgdmFyIFZBUiA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9bXFwkXVtcXHctOl0rL1xuICB9O1xuXG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJyhcXFxcYjBbMC03X10rKXwoXFxcXGIweFswLTlhLWZBLUZfXSspfChcXFxcYlsxLTldWzAtOV9dKihcXFxcLlswLTlfXSspPyl8WzBfXVxcXFxiJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFt7XG4gICAgICAgIGJlZ2luOiAvXCIvLFxuICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgIGJlZ2luOiAvXCJcIi8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLycvLFxuICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgYmVnaW46IC8nJy8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1dXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBBTk5PVEFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAvJVtcXHctOl0rL1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0ge1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIGJlZ2luOiAnXFxcXCg6JyxcbiAgICBlbmQ6ICc6XFxcXCknLFxuICAgIHJlbGV2YW5jZTogMTAsXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgYmVnaW46ICdAXFxcXHcrJ1xuICAgIH1dXG4gIH07XG5cbiAgLy8gc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi94cXVlcnkvI2lkLWNvbXB1dGVkQ29uc3RydWN0b3JzXG4gIC8vIG1vY2hhOiBjb21wdXRlZF9pbmJ1aWx0XG4gIC8vIHNlZSBodHRwczovL3d3dy5yZWdleHBhbC5jb20vP2ZhbT05OTc0OVxuICB2YXIgQ09NUFVURUQgPSB7XG4gICAgYmVnaW5LZXl3b3JkczogJ2VsZW1lbnQgYXR0cmlidXRlIGNvbW1lbnQgZG9jdW1lbnQgcHJvY2Vzc2luZy1pbnN0cnVjdGlvbicsXG4gICAgZW5kOiAneycsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZVxuICB9O1xuXG4gIC8vIG1vY2hhOiBkaXJlY3RfbWV0aG9kXG4gICAgdmFyIERJUkVDVCA9IHtcbiAgICAgIGJlZ2luOiAvPChbXFx3XFwuXzpcXC1dKykoKFxccyouKik9KCd8XCIpLiooJ3xcIikpPz4vLFxuICAgICAgZW5kOiAvKFxcL1tcXHdcXC5fOlxcLV0rPikvLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgIGJlZ2luOiAneycsXG4gICAgICAgIGVuZDogJ30nLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3hxdWVyeSdcbiAgICAgIH0sICdzZWxmJ11cbiAgICB9O1xuXG5cbiAgdmFyIENPTlRBSU5TID0gW1xuICAgIFZBUixcbiAgICBCVUlMVF9JTixcbiAgICBTVFJJTkcsXG4gICAgTlVNQkVSLFxuICAgIENPTU1FTlQsXG4gICAgQU5OT1RBVElPTixcbiAgICBUSVRMRSxcbiAgICBDT01QVVRFRCxcbiAgICBESVJFQ1RcbiAgXTtcblxuXG5cbiAgICB2YXIgTUVUSE9EID0ge1xuICAgICAgYmVnaW46ICd7JyxcbiAgICAgIGVuZDogJ30nLFxuICAgICAgY29udGFpbnM6IENPTlRBSU5TXG4gICAgfTtcblxuXG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3hwYXRoJywgJ3hxJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAgbGV4ZW1lczogL1thLXpBLVpcXCRdW2EtekEtWjAtOV86XFwtXSovLFxuICAgIGlsbGVnYWw6IC8ocHJvYyl8KGFic3RyYWN0KXwoZXh0ZW5kcyl8KHVudGlsKXwoIykvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIHR5cGU6IFRZUEUsXG4gICAgICBsaXRlcmFsOiBMSVRFUkFMXG4gICAgfSxcbiAgICBjb250YWluczogQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdiXCInLCBlbmQ6ICdcIidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYlxcJycsIGVuZDogJ1xcJydcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSlcbiAgICBdXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7dmFyaWFudHM6IFtobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgaGxqcy5DX05VTUJFUl9NT0RFXX07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd6ZXAnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOlxuICAgICAgJ2FuZCBpbmNsdWRlX29uY2UgbGlzdCBhYnN0cmFjdCBnbG9iYWwgcHJpdmF0ZSBlY2hvIGludGVyZmFjZSBhcyBzdGF0aWMgZW5kc3dpdGNoICcgK1xuICAgICAgJ2FycmF5IG51bGwgaWYgZW5kd2hpbGUgb3IgY29uc3QgZm9yIGVuZGZvcmVhY2ggc2VsZiB2YXIgbGV0IHdoaWxlIGlzc2V0IHB1YmxpYyAnICtcbiAgICAgICdwcm90ZWN0ZWQgZXhpdCBmb3JlYWNoIHRocm93IGVsc2VpZiBpbmNsdWRlIF9fRklMRV9fIGVtcHR5IHJlcXVpcmVfb25jZSBkbyB4b3IgJyArXG4gICAgICAncmV0dXJuIHBhcmVudCBjbG9uZSB1c2UgX19DTEFTU19fIF9fTElORV9fIGVsc2UgYnJlYWsgcHJpbnQgZXZhbCBuZXcgJyArXG4gICAgICAnY2F0Y2ggX19NRVRIT0RfXyBjYXNlIGV4Y2VwdGlvbiBkZWZhdWx0IGRpZSByZXF1aXJlIF9fRlVOQ1RJT05fXyAnICtcbiAgICAgICdlbmRkZWNsYXJlIGZpbmFsIHRyeSBzd2l0Y2ggY29udGludWUgZW5kZm9yIGVuZGlmIGRlY2xhcmUgdW5zZXQgdHJ1ZSBmYWxzZSAnICtcbiAgICAgICd0cmFpdCBnb3RvIGluc3RhbmNlb2YgaW5zdGVhZG9mIF9fRElSX18gX19OQU1FU1BBQ0VfXyAnICtcbiAgICAgICd5aWVsZCBmaW5hbGx5IGludCB1aW50IGxvbmcgdWxvbmcgY2hhciB1Y2hhciBkb3VibGUgZmxvYXQgYm9vbCBib29sZWFuIHN0cmluZycgK1xuICAgICAgJ2xpa2VseSB1bmxpa2VseScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXConLFxuICAgICAgICAnXFxcXCovJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdfX2hhbHRfY29tcGlsZXIuKz87JyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHtcbiAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICBrZXl3b3JkczogJ19faGFsdF9jb21waWxlcicsXG4gICAgICAgICAgbGV4ZW1lczogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnPDw8W1xcJ1wiXT9cXFxcdytbXFwnXCJdPyQnLCBlbmQ6ICdeXFxcXHcrOycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gc3dhbGxvdyBjb21wb3NlZCBpZGVudGlmaWVycyB0byBhdm9pZCBwYXJzaW5nIHRoZW0gYXMga2V5d29yZHNcbiAgICAgICAgYmVnaW46IC8oOjp8LT4pK1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWjAtOV9cXHg3Zi1cXHhmZl0qL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9bO3tdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFwkfFxcXFxbfCUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIE5VTUJFUlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6IC9bOlxcKFxcJFwiXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2JlZ2luS2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmFtZXNwYWNlJywgZW5kOiAnOycsXG4gICAgICAgIGlsbGVnYWw6IC9bXFwuJ10vLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3VzZScsIGVuZDogJzsnLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc9PicgLy8gTm8gbWFya3VwLCBqdXN0IGEgcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBOVU1CRVJcbiAgICBdXG4gIH07XG59OyIsImNvbnN0IHZpc2l0ID0gcmVxdWlyZSgndW5pc3QtdXRpbC12aXNpdCcpO1xuXG5mdW5jdGlvbiBkZWFsTGFiZWxDaGlsZHJlbihsaXN0Q2hpbGQpIHtcbiAgbGV0IHQgPSBbXTtcbiAgaWYgKGxpc3RDaGlsZFswXS50eXBlID09PSAncGFyYWdyYXBoJykge1xuICAgIHQgPSBsaXN0Q2hpbGRbMF0uY2hpbGRyZW47XG4gIH1cbiAgdFswXS52YWx1ZSA9IHRbMF0udmFsdWUudHJpbSgpO1xuICBpZiAobGlzdENoaWxkW2xpc3RDaGlsZC5sZW5ndGggLSAxXS50eXBlID09PSAnYmxvY2txdW90ZScpIHtcbiAgICBsaXN0Q2hpbGRbbGlzdENoaWxkLmxlbmd0aCAtIDFdLnR5cGUgPSAnZGl2JztcbiAgICBsaXN0Q2hpbGRbbGlzdENoaWxkLmxlbmd0aCAtIDFdLmRhdGEgPSB7XG4gICAgICBoTmFtZTogJ2Jsb2NrcXVvdGUnLFxuICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnaGlkZW5fYmxvY2tfcXVvdGUnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIHQgPSB0LmNvbmNhdChsaXN0Q2hpbGQuc2xpY2UoMSkpO1xuICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gdmlzaXRMaXN0KGFzdCkge1xuICBsZXQgbmJNQyA9IDA7XG4gIHJldHVybiB2aXNpdChhc3QsICdsaXN0Jywgbm9kZSA9PiB7XG4gICAgbGV0IGlzTXVsdGlwbGVDaG9pc2UgPSB0cnVlO1xuICAgIGxldCBuYlEgPSAwO1xuICAgIGNvbnN0IHRhYiA9IFtdO1xuXG4gICAgQXJyYXkuZnJvbShub2RlLmNoaWxkcmVuKS5mb3JFYWNoKG5vZGVDID0+IHtcbiAgICAgIGlmIChub2RlQy5jaGlsZHJlbiAmJiBub2RlQy5jaGlsZHJlblswXS50eXBlID09PSAncGFyYWdyYXBoJykge1xuICAgICAgICBpZiAobm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW4gJiYgbm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWUpIHtcbiAgICAgICAgICBpZiAoJ34hPScuaW5kZXhPZihub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlblswXS52YWx1ZVswXSkgPCAwKSB7XG4gICAgICAgICAgICBpc011bHRpcGxlQ2hvaXNlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzTXVsdGlwbGVDaG9pc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXNNdWx0aXBsZUNob2lzZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChpc011bHRpcGxlQ2hvaXNlKSB7XG4gICAgICBBcnJheS5mcm9tKG5vZGUuY2hpbGRyZW4pLmZvckVhY2gobm9kZUMgPT4ge1xuICAgICAgICBpZiAobm9kZUMuY2hpbGRyZW5bMF0udHlwZSA9PT0gJ3BhcmFncmFwaCcpIHtcbiAgICAgICAgICBpZiAobm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWVbMF0gPT09ICd+Jykge1xuICAgICAgICAgICAgdGFiLnB1c2goMC41KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVDLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLnZhbHVlWzBdID09PSAnIScpIHtcbiAgICAgICAgICAgIHRhYi5wdXNoKDApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YWIucHVzaCgxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWUgPSBgJHtub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlblswXS52YWx1ZS5zbGljZSgxKX1cXHJgO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG5vZGUudHlwZSA9ICdtYyc7XG4gICAgICBub2RlLmRhdGEgPSB7XG4gICAgICAgIGhOYW1lOiAnZmllbGRzZXQnLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ21jIGNoZWNrJyxcbiAgICAgICAgICBpZDogYG1jXyR7bmJNQ31gLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBbe1xuICAgICAgICB0eXBlOiAnbGlzdC1pdGVtLW1jJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAndWwnLFxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogbm9kZS5jaGlsZHJlbi5tYXAoeCA9PiAoe3R5cGU6ICdpbnB1dC1saXN0LWl0ZW0nLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGhOYW1lOiAnbGknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHt0eXBlOiAnaW5wdXQtbGlzdC1pbnB1dCcsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBoTmFtZTogJ2lucHV0JyxcbiAgICAgICAgICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogeC5jaGVja2VkLFxuICAgICAgICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgICAgICAgIGlkOiBgbWNfJHtuYk1DfV8ke25iUX1gLFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnIX49J1t0YWJbbmJRXSAqIDJdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH19LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQtbGlzdC1sYWJlbCcsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBoTmFtZTogJ2xhYmVsJyxcbiAgICAgICAgICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgZm9yOiBgbWNfJHtuYk1DfV8ke25iUSsrfWAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IGRlYWxMYWJlbENoaWxkcmVuKHguY2hpbGRyZW4pLFxuICAgICAgICAgICAgfV0sXG4gICAgICAgIH0pKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdmaWVsZC1idXR0b24nLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaE5hbWU6ICdpbnB1dCcsXG4gICAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG9uY2xpY2s6IGBjaGVjaygnbWNfJHtuYk1DfScsWyR7U3RyaW5nKHRhYil9XSlgLFxuICAgICAgICAgICAgdmFsdWU6ICdWYWxpZGF0ZScsXG4gICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIG5iTUMrKztcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRyYW5zZm9ybWVyIHdoaWNoIGFjc3Qgb24gdGhlIE1EQVNUIHRyZWUgYW5kIGdpdmVuIFZGaWxlLlxuICpcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlmaWVkanMvdW5pZmllZCNmdW5jdGlvbi10cmFuc2Zvcm1lcm5vZGUtZmlsZS1uZXh0XG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc3ludGF4LXRyZWUvbWRhc3RcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS92ZmlsZS92ZmlsZVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIG11bHRpcGxlQ2hvaXNlKCkge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFzdCBNREFTVFxuICAgKiBAcGFyYW0ge3ZGaWxlfSB2RmlsZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBuZXh0XG4gICAqIEByZXR1cm4ge29iamVjdH1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiAoYXN0LCB2RmlsZSwgbmV4dCkgeyAvLyBUcmFuc2Zvcm1lclxuICAgIHZpc2l0TGlzdChhc3QpO1xuXG4gICAgaWYgKHR5cGVvZiBuZXh0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gbmV4dChudWxsLCBhc3QsIHZGaWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXN0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG11bHRpcGxlQ2hvaXNlO1xuIiwiJ3VzZSBzdHJpY3QnOyAvLyBBIHZhbGlkIG91dHB1dCB3aGljaCBtZWFucyBub3RoaW5nIGhhcyBiZWVuIHBhcnNlZC5cbi8vIFVzZWQgYXMgZXJyb3IgcmV0dXJuIC8gaW52YWxpZCBvdXRwdXRcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIG5vdGhpbmdIYXBwZW5kID0ge1xuICBwcm9wOiB7fSxcbiAgZWF0ZW46ICcnXG59O1xudmFyIGRlZmF1bHRDb25maWcgPSB7XG4gIGRlZmF1bHRWYWx1ZTogZnVuY3Rpb24gZGVmYXVsdFZhbHVlKCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gLy8gSXRzIGEgZnVuY3Rpb25cblxufTtcblxuZnVuY3Rpb24gcGFyc2UodmFsdWUsIGluZGV4TmV4dCwgdXNlckNvbmZpZykge1xuICAvLyBNYWluIGZ1bmN0aW9uXG4gIHZhciBsZXRzRWF0ID0gJyc7XG4gIHZhciBzdG9wT25CcmFjZSA9IGZhbHNlO1xuICB2YXIgZXJyb3JEZXRlY3RlZCA9IGZhbHNlO1xuXG4gIHZhciBjb25maWcgPSBfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0Q29uZmlnLCB7fSwgdXNlckNvbmZpZyk7IC8vIE1ha2UgZGVmYXVsdFZhbHVlIGEgZnVuY3Rpb24gaWYgaXQgaXNuJ3RcblxuXG4gIGlmICh0eXBlb2YgY29uZmlnLmRlZmF1bHRWYWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBkZWZhdWx0VmFsdWUgPSBjb25maWcuZGVmYXVsdFZhbHVlO1xuXG4gICAgY29uZmlnLmRlZmF1bHRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIHZhciBwcm9wID0ge307XG4gIC8qIFRoZXkgYXJlIGF0IGxlYXN0IG9uZSBsYWJlbCBhbmQgYXQgYmVzdCB0d28gKi9cblxuICAvKiBla3FzZGYgPC0gb25lIGxhYmVsXG4gICAqIHFzZGZxc2ZkPXFzZGZxc2RmIDwtIHR3byAqL1xuXG4gIHZhciBsYWJlbEZpcnN0ID0gJyc7XG4gIHZhciBsYWJlbFNlY29uZDtcblxuICBpZiAoaW5kZXhOZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICBpbmRleE5leHQgPSAwO1xuICB9XG4gIC8qIDMgdHlwZXMgOlxuICAgKiAuYXpjdiA8LSBjbGFzc1xuICAgKiAjcG9pIDwtIGlkXG4gICAqIGRmZ2g9emVydCA8LSBrZXlcbiAgICogamtqIDwtIHRoaXMgaXMgYWxzbyBhIGtleSBidXQgd2l0aCBhIHVzZXIgZGVmaW5lZCB2YWx1ZSAoZGVmYXVsdCBpcyB1bmRlZmluZWQpXG4gICAqIGpraj0gPC0gdGhpcyBpcyBhbHNvIGEga2V5IGJ1dCB3aXRoIGEgZW1wdHkgdmFsdWVcbiAgICovXG5cblxuICB2YXIgdHlwZTtcbiAgdmFyIGZvcmJpZGVuQ2hhcmFjdGVycyA9ICdcXG5cXHJ7fSc7IC8vIEEgZnVuY3Rpb24gdGhhdCBkZXRlY3QgaWYgaXQncyB0aW1lIHRvIGVuZCB0aGUgcGFyc2luZ1xuXG4gIHZhciBzaG91bGRTdG9wID0gZnVuY3Rpb24gc2hvdWxkU3RvcCgpIHtcbiAgICBpZiAoaW5kZXhOZXh0ID49IHZhbHVlLmxlbmd0aCB8fCBmb3JiaWRlbkNoYXJhY3RlcnMuaW5kZXhPZih2YWx1ZVtpbmRleE5leHRdKSA+IC0xKSB7XG4gICAgICBpZiAoc3RvcE9uQnJhY2UgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ30nKSB7XG4gICAgICAgIGVycm9yRGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVbaW5kZXhOZXh0XSA9PT0gJ30nICYmIHN0b3BPbkJyYWNlO1xuICB9O1xuXG4gIHZhciBlYXRlbiA9ICcnOyAvLyBDb3VwbGUgb2YgZnVuY3Rpb25zIHRoYXQgcGFyc2Ugc2FtZSBraW5kcyBvZiBjaGFyYWN0ZXJzXG4gIC8vIFVzZWQgdG8gcGFyc2Ugc3BhY2VzIG9yIGlkZW50aWZpZXJzXG5cbiAgdmFyIGVhdCA9IGZ1bmN0aW9uIGVhdChjaGFycykge1xuICAgIGVhdGVuID0gJyc7XG5cbiAgICB3aGlsZSAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmIGZvcmJpZGVuQ2hhcmFjdGVycy5pbmRleE9mKHZhbHVlLmNoYXJBdChpbmRleE5leHQpKSA8IDAgJiYgY2hhcnMuaW5kZXhPZih2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSkgPj0gMCkge1xuICAgICAgbGV0c0VhdCArPSB2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KTtcbiAgICAgIGVhdGVuICs9IHZhbHVlLmNoYXJBdChpbmRleE5leHQpO1xuICAgICAgaW5kZXhOZXh0Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFN0b3AoKTtcbiAgfTtcblxuICB2YXIgZWF0VW50aWwgPSBmdW5jdGlvbiBlYXRVbnRpbChjaGFycykge1xuICAgIGVhdGVuID0gJyc7XG5cbiAgICB3aGlsZSAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmIGZvcmJpZGVuQ2hhcmFjdGVycy5pbmRleE9mKHZhbHVlLmNoYXJBdChpbmRleE5leHQpKSA8IDAgJiYgY2hhcnMuaW5kZXhPZih2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSkgPCAwKSB7XG4gICAgICBsZXRzRWF0ICs9IHZhbHVlLmNoYXJBdChpbmRleE5leHQpO1xuICAgICAgZWF0ZW4gKz0gdmFsdWUuY2hhckF0KGluZGV4TmV4dCk7XG4gICAgICBpbmRleE5leHQrKztcbiAgICB9IC8vIFVnbHkgYnV0IGtlZXAgdGhlIG1haW4gbG9vcCByZWFkYWJsZVxuICAgIC8vIFNldCB0aGUgbGFiZWwgaXQgc2hvdWxkIHNldFxuXG5cbiAgICBpZiAobGFiZWxGaXJzdCkge1xuICAgICAgbGFiZWxTZWNvbmQgPSBlYXRlbjtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFiZWxGaXJzdCA9IGVhdGVuO1xuICAgIH1cblxuICAgIHJldHVybiBzaG91bGRTdG9wKCk7XG4gIH07IC8vIEluIHF1b3RlLCBldmVyeSBjaGFyYWN0ZXIgaXMgdmFsaWQgZXhjZXB0IHRoZSB1bmVzY2FwZWQgcXVvdGVzIGFuZCBDUiBvciBMRlxuICAvLyBTYW1lIGZ1bmN0aW9uIGZvciBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZVxuXG5cbiAgdmFyIGVhdEluUXVvdGUgPSBmdW5jdGlvbiBlYXRJblF1b3RlKHF1b3RlKSB7XG4gICAgZWF0ZW4gPSAnJzsgLy8gRmlyc3QgY2hlY2sgc28gdmFsdWVbaW5kZXhOZXh0LTFdIHdpbGwgYWx3YXlzIGJlIHZhbGlkXG5cbiAgICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gcXVvdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmICEocXVvdGUgPT09IHZhbHVlW2luZGV4TmV4dF0gJiYgdmFsdWVbaW5kZXhOZXh0IC0gMV0gIT09ICdcXFxcJykgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ1xcbicgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ1xccicpIHtcbiAgICAgIGxldHNFYXQgKz0gdmFsdWUuY2hhckF0KGluZGV4TmV4dCk7XG4gICAgICBlYXRlbiArPSB2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KTtcbiAgICAgIGluZGV4TmV4dCsrO1xuICAgIH0gLy8gSWYgd2UgZW5jb3VudGVyIGFuIEVPTCwgdGhlcmUgaXMgYW4gZXJyb3JcbiAgICAvLyBXZSBhcmUgd2FpdGluZyBmb3IgYSBxdW90ZVxuXG5cbiAgICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gJ1xcbicgfHwgdmFsdWVbaW5kZXhOZXh0XSA9PT0gJ1xccicgfHwgaW5kZXhOZXh0ID49IHZhbHVlLmxlbmd0aCkge1xuICAgICAgZXJyb3JEZXRlY3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIFVnbHkgYnV0IGtlZXAgdGhlIG1haW4gbG9vcCByZWFkYWJsZVxuXG5cbiAgICBpZiAobGFiZWxGaXJzdCkge1xuICAgICAgbGFiZWxTZWNvbmQgPSBlYXRlbi5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhYmVsRmlyc3QgPSBlYXRlbi5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFN0b3AoKTtcbiAgfTsgLy8gSXQncyByZWFsbHkgY29tbW9uIHRvIGVhdCBvbmx5IG9uZSBjaGFyYWN0ZXIgc28gbGV0J3MgbWFrZSBpdCBhIGZ1bmN0aW9uXG5cblxuICB2YXIgZWF0T25lID0gZnVuY3Rpb24gZWF0T25lKGMsIHNraXBTdG9wQ2hlY2spIHtcbiAgICAvLyBNaWFtICFcbiAgICBsZXRzRWF0ICs9IGM7XG4gICAgaW5kZXhOZXh0Kys7XG4gICAgcmV0dXJuIHNraXBTdG9wQ2hlY2sgPyBmYWxzZSA6IHNob3VsZFN0b3AoKTtcbiAgfTsgLy8gQ29tbW9uIHBhcnNpbmcgb2YgcXVvdGVzXG5cblxuICB2YXIgZWF0UXVvdGUgPSBmdW5jdGlvbiBlYXRRdW90ZShxKSB7XG4gICAgZWF0T25lKHEsIHRydWUpO1xuICAgIGVhdEluUXVvdGUocSwgdHJ1ZSk7XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgIT09IHEpIHtcbiAgICAgIHJldHVybiBub3RoaW5nSGFwcGVuZDtcbiAgICB9XG5cbiAgICBpZiAoZWF0T25lKHEpKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpZFNldEJ5S2V5ID0gZmFsc2U7XG5cbiAgdmFyIGFkZEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIGFkZEF0dHJpYnV0ZSgpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2lkJzpcbiAgICAgICAgLy8gSURcbiAgICAgICAgaWYgKGlkU2V0QnlLZXkpIHtcbiAgICAgICAgICBwcm9wLmlkID0gbGFiZWxGaXJzdDtcbiAgICAgICAgICBpZFNldEJ5S2V5ID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvcC5pZCA9IHByb3AuaWQgfHwgbGFiZWxGaXJzdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjbGFzcyc6XG4gICAgICAgIGlmICghcHJvcFtcImNsYXNzXCJdKSB7XG4gICAgICAgICAgcHJvcFtcImNsYXNzXCJdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcFtcImNsYXNzXCJdLmluZGV4T2YobGFiZWxGaXJzdCkgPCAwKSB7XG4gICAgICAgICAgcHJvcFtcImNsYXNzXCJdLnB1c2gobGFiZWxGaXJzdCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAna2V5JzpcbiAgICAgICAgaWYgKCFsYWJlbEZpcnN0KSB7XG4gICAgICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEobGFiZWxGaXJzdCBpbiBwcm9wKSkge1xuICAgICAgICAgIGlmIChsYWJlbFNlY29uZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBIZXJlLCB3ZSBoYXZlIGFuIGF0dHJpYnV0ZSB3aXRob3V0IHZhbHVlXG4gICAgICAgICAgICAvLyBzbyBpdCdzIHVzZXIgZGVmaW5lZFxuICAgICAgICAgICAgcHJvcFtsYWJlbEZpcnN0XSA9IGNvbmZpZy5kZWZhdWx0VmFsdWUobGFiZWxGaXJzdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3BbbGFiZWxGaXJzdF0gPSBsYWJlbEZpcnN0ID09PSAnY2xhc3MnID8gW2xhYmVsU2Vjb25kXSA6IGxhYmVsU2Vjb25kO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChsYWJlbEZpcnN0ID09PSAnaWQnKSB7XG4gICAgICAgICAgICBpZFNldEJ5S2V5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobGFiZWxGaXJzdCA9PT0gJ2NsYXNzJyAmJiBCb29sZWFuKGxhYmVsU2Vjb25kKSkge1xuICAgICAgICAgIHByb3BbXCJjbGFzc1wiXS5wdXNoKGxhYmVsU2Vjb25kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cblxuICAgIHR5cGUgPSB1bmRlZmluZWQ7XG4gICAgbGFiZWxGaXJzdCA9ICcnO1xuICAgIGxhYmVsU2Vjb25kID0gdW5kZWZpbmVkO1xuICB9O1xuICAvKiogKioqKioqKioqKioqKioqKioqKioqKiogU3RhcnQgcGFyc2luZyAqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbiAgLy8gTGV0J3MgY2hlY2sgZm9yIGxlYWRpbmcgc3BhY2VzIGZpcnN0XG5cblxuICBlYXQoJyBcXHRcXHYnKTtcblxuICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gJ3snKSB7XG4gICAgZWF0T25lKCd7Jyk7XG4gICAgc3RvcE9uQnJhY2UgPSB0cnVlO1xuICB9XG5cbiAgd2hpbGUgKCFzaG91bGRTdG9wKCkpIHtcbiAgICAvLyBNYWluIGxvb3Agd2hpY2ggZXh0cmFjdCBhdHRyaWJ1dGVzXG4gICAgaWYgKGVhdCgnIFxcdFxcdicpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgPT09ICcuJykge1xuICAgICAgLy8gQ2xhc3Nlc1xuICAgICAgdHlwZSA9ICdjbGFzcyc7XG5cbiAgICAgIGlmIChlYXRPbmUoJy4nKSkge1xuICAgICAgICBlcnJvckRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJyMnKSB7XG4gICAgICAvLyBJRFxuICAgICAgdHlwZSA9ICdpZCc7XG5cbiAgICAgIGlmIChlYXRPbmUoJyMnKSkge1xuICAgICAgICBlcnJvckRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEtleVxuICAgICAgdHlwZSA9ICdrZXknO1xuICAgIH0gLy8gRXh0cmFjdCBuYW1lXG5cblxuICAgIGlmIChlYXRVbnRpbCgnPVxcdFxcYlxcdiDCoCcpIHx8ICFsYWJlbEZpcnN0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgPT09ICc9JyAmJiB0eXBlID09PSAna2V5Jykge1xuICAgICAgLy8gU2V0IGxhYmVsU2Vjb25kXG4gICAgICBpZiAoZWF0T25lKCc9JykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJ1wiJykge1xuICAgICAgICB2YXIgcmV0ID0gZWF0UXVvdGUoJ1wiJyk7XG5cbiAgICAgICAgaWYgKHJldCA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmIChyZXQgPT09IG5vdGhpbmdIYXBwZW5kKSB7XG4gICAgICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmNoYXJBdChpbmRleE5leHQpID09PSAnXFwnJykge1xuICAgICAgICB2YXIgX3JldCA9IGVhdFF1b3RlKCdcXCcnKTtcblxuICAgICAgICBpZiAoX3JldCA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmIChfcmV0ID09PSBub3RoaW5nSGFwcGVuZCkge1xuICAgICAgICAgIHJldHVybiBub3RoaW5nSGFwcGVuZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlYXRVbnRpbCgnIFxcdFxcblxcclxcdj19JykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSAvLyBBZGQgdGhlIHBhcnNlZCBhdHRyaWJ1dGUgdG8gdGhlIG91dHB1dCBwcm9wIHdpdGggdGhlIGFkIGhvYyB0eXBlXG5cblxuICAgIGFkZEF0dHJpYnV0ZSgpO1xuICB9XG5cbiAgYWRkQXR0cmlidXRlKCk7XG5cbiAgaWYgKHN0b3BPbkJyYWNlKSB7XG4gICAgaWYgKGluZGV4TmV4dCA8IHZhbHVlLmxlbmd0aCAmJiB2YWx1ZVtpbmRleE5leHRdID09PSAnfScpIHtcbiAgICAgIHN0b3BPbkJyYWNlID0gZmFsc2U7XG4gICAgICBlYXRPbmUoJ30nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvckRldGVjdGVkID8gbm90aGluZ0hhcHBlbmQgOiB7XG4gICAgcHJvcDogcHJvcCxcbiAgICBlYXRlbjogbGV0c0VhdFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIHBhcnNlQXR0ciA9IHJlcXVpcmUoJ21kLWF0dHItcGFyc2VyJyk7XG5cbnZhciBTVEFSVCA9ICdbX18nO1xudmFyIEVORCA9ICdfX10nO1xuLyogRnVuY3Rpb24gdXNlZCB0byBsb2NhdGUgdGhlIHN0YXJ0IG9mIGEgbGluZSBpbnB1dCBmaWxlZFxuICogVXNlZCBieSByZW1hcmtcbiAqL1xuXG5mdW5jdGlvbiBsb2NhdG9yKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZihTVEFSVCwgZnJvbUluZGV4KTtcbiAgcmV0dXJuIGluZGV4O1xufVxuLyogRnVudGlvbiB3aGljaCBpcyBleHBvcnRlZCAqL1xuXG5cbmZ1bmN0aW9uIHBsdWdpbigpIHtcbiAgLyogVmVyaWZpZSBpZiBpdCdzIHRoZSBzeW50YXggb2YgYSBsaW5lIGlucHV0IGFuZCByZXR1cm4gYSBsaW5lIGlucHV0IG5vZGUgKi9cbiAgZnVuY3Rpb24gaW5saW5lVG9rZW5pemVyKGVhdCwgdmFsdWUpIHtcbiAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoU1RBUlQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHN1YnZhbHVlID0gJyc7XG4gICAgdmFyIGluZGV4ID0gU1RBUlQubGVuZ3RoO1xuICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgLyogVHJ5IHRvIGxvY2FsZSB0aGUgZW5kIG9mIHRoZSBsaW5lIGlucHV0ICovXG5cbiAgICB3aGlsZSAoIXZhbHVlLnN0YXJ0c1dpdGgoRU5ELCBpbmRleCkgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHN1YnZhbHVlICs9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSAnXFxuJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICB2YXIgbGV0c0VhdCA9ICcnO1xuICAgIHZhciBwcm9wID0ge1xuICAgICAgLyoga2V5OiB1bmRlZmluZWQge30gIGNsYXNzOiB1bmRlZmluZWQgW10gaWQ6IHVuZGVmaW5lZCAqL1xuICAgIH07XG4gICAgLyogUGFyc2UgdGhlIGF0dHJpYnV0ZXMgaWYgYW55IHdpdGggbWQtYXR0ci1wYXJzZXIgKi9cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXggKyBFTkQubGVuZ3RoKSA9PT0gJ3snKSB7XG4gICAgICB2YXIgcmVzID0gcGFyc2VBdHRyKHZhbHVlLCBpbmRleCArIEVORC5sZW5ndGgpO1xuICAgICAgbGV0c0VhdCA9IHJlcy5lYXRlbjtcbiAgICAgIHByb3AgPSByZXMucHJvcDtcbiAgICB9XG4gICAgLyogQWxsb3cgc29tZSBvdGhlciBraW5kIG9mIGlucHV0ICovXG5cblxuICAgIGlmIChwcm9wLnR5cGUgIT09ICdwYXNzd29yZCcpIHtcbiAgICAgIHByb3AudHlwZSA9ICd0ZXh0JztcbiAgICB9XG4gICAgLyogVW5kZXJzY29yZXMgaW4gdGhlIHBsYWNlaG9sZGVyIGJlY29tZSB3aGl0ZXNwYWNlcyAqL1xuXG5cbiAgICBwcm9wLnBsYWNlaG9sZGVyID0gc3VidmFsdWUucmVwbGFjZSgvXl8qL2csICcnKS5yZXBsYWNlKC9fKiQvZywgJycpIHx8IHVuZGVmaW5lZDtcblxuICAgIGlmIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGVhdChTVEFSVCArIHN1YnZhbHVlICsgRU5EICsgbGV0c0VhdCkoe1xuICAgICAgICB0eXBlOiAnbGluZS1pbnB1dCcsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAnaW5wdXQnLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiBwcm9wXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaW5saW5lVG9rZW5pemVyLmxvY2F0b3IgPSBsb2NhdG9yO1xuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBpbmxpbmVUb2tlbml6ZXJcblxuICB2YXIgaW5saW5lVG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuaW5saW5lVG9rZW5pemVycztcbiAgdmFyIGlubGluZU1ldGhvZHMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZU1ldGhvZHM7XG4gIGlubGluZVRva2VuaXplcnMuaW5wdXQgPSBpbmxpbmVUb2tlbml6ZXI7XG4gIGlubGluZU1ldGhvZHMuc3BsaWNlKGlubGluZU1ldGhvZHMuaW5kZXhPZigndXJsJyksIDAsICdpbnB1dCcpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyOyAvLyBTdHJpbmdpZnlcblxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICB2YXIgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnM7XG5cbiAgICB2aXNpdG9ycy5saW5laW5wdXQgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIFwiW19fXCIuY29uY2F0KHRoaXMuYWxsKG5vZGUpLmpvaW4oJycpLCBcIl9fXVwiKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgU1RBUlQgPSAnWyc7XG5jb25zdCBFTkRfUkdYID0gLyhcXHwgKlt2Vl0gKl0pKHtbXlxcbl0qfSk/LztcblxuY29uc3QgcGFyc2VBdHRyID0gcmVxdWlyZSgnbWQtYXR0ci1wYXJzZXInKTtcbi8qIFRoZSBmdW5jdGlvbiB0aGF0IGxvY2F0ZSBhIHRleHQgaW5wdXRcbiAqIFVzZWQgYnkgcmVtYXJrXG4gKi9cblxuXG5mdW5jdGlvbiBsb2NhdG9yKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgY29uc3QgaW5kZXggPSB2YWx1ZS5pbmRleE9mKFNUQVJULCBmcm9tSW5kZXgpO1xuICByZXR1cm4gaW5kZXg7XG59XG4vKiBUaGUgbWFpbiBwbHVnaW4gZnVuY3Rpb24gKi9cblxuXG5mdW5jdGlvbiBwbHVnaW4oKSB7XG4gIGxldCBFTkQgPSAnfHZdJzsgLy8gVGhlIGRlZmF1bHQgdmFsdWUgaXNuJ3QgaW1wb3J0YW50XG4gIC8vIEZ1bmN0aW9uIHRoYXQgY2hlY2sgdGhlIHN5bnRheCBhbmQgcmV0dXJuIGEgdGV4dCBpbnB1dCBub2RlXG5cbiAgZnVuY3Rpb24gaW5saW5lVG9rZW5pemVyKGVhdCwgdmFsdWUpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5nZm0gfHwgIXZhbHVlLnN0YXJ0c1dpdGgoU1RBUlQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHN1YnZhbHVlID0gJyc7XG4gICAgbGV0IGluZGV4ID0gMTtcbiAgICBjb25zdCB7XG4gICAgICBsZW5ndGhcbiAgICB9ID0gdmFsdWU7XG4gICAgLyogTm90IHN1cmUgYWJvdXQgdGhhdCAuLi4gKi9cblxuICAgIGNvbnN0IG5vdyA9IGVhdC5ub3coKTtcbiAgICBub3cuY29sdW1uICs9IDI7XG4gICAgbm93Lm9mZnNldCArPSAyOyAvLyBFeHRyYWN0IHRoZSBvcHRpb25zXG5cbiAgICBsZXQgcmV0ID0gbnVsbDtcblxuICAgIGlmICgocmV0ID0gdmFsdWUuc3Vic3RyKDEpLm1hdGNoKEVORF9SR1gpKSAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgICAgc3VidmFsdWUgKz0gdmFsdWUuc3Vic3RyKDEsIHJldC5pbmRleCk7XG4gICAgICBFTkQgPSByZXRbMV07XG4gICAgICBpbmRleCArPSByZXQuaW5kZXggKyBFTkQubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBFeHRyYWN0IHRoZSBhdHRyaWJ1dGVzXG5cblxuICAgIGxldCBsZXRzRWF0ID0gJyc7XG4gICAgbGV0IHByb3AgPSB7XG4gICAgICAvKiBjbGFzczogdW5kZWZpbmVkICBbXSAsIGlkOiB1bmRlZmluZWQgKi9cbiAgICB9O1xuXG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgPT09ICd7Jykge1xuICAgICAgY29uc3QgcmVzID0gcGFyc2VBdHRyKHZhbHVlLCBpbmRleCk7XG4gICAgICBsZXRzRWF0ID0gcmVzLmVhdGVuO1xuICAgICAgaW5kZXggKz0gbGV0c0VhdC5sZW5ndGg7XG4gICAgICBwcm9wID0gcmVzLnByb3A7XG4gICAgfSAvLyBSZXR1cm4gdGhlIHNlbGVjdCBub2RlXG5cblxuICAgIGlmIChpbmRleCA8PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBlYXQoU1RBUlQgKyBzdWJ2YWx1ZSArIEVORCArIGxldHNFYXQpKHtcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAnc2VsZWN0JyxcbiAgICAgICAgICBoUHJvcGVydGllczogcHJvcCxcbiAgICAgICAgICBoQ2hpbGRyZW46IHN1YnZhbHVlLnNwbGl0KCd8JykuZmlsdGVyKHggPT4geCkubWFwKHVudHJpbSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gdW50cmltLnRyaW0oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgICAgICAgICAgdGFnTmFtZTogJ29wdGlvbicsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGV4dFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRleHRcbiAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpbmxpbmVUb2tlbml6ZXIubG9jYXRvciA9IGxvY2F0b3I7XG4gIGNvbnN0IHtcbiAgICBQYXJzZXJcbiAgfSA9IHRoaXM7IC8vIEluamVjdCBpbmxpbmVUb2tlbml6ZXJcblxuICBjb25zdCB7XG4gICAgaW5saW5lVG9rZW5pemVyc1xuICB9ID0gUGFyc2VyLnByb3RvdHlwZTtcbiAgY29uc3Qge1xuICAgIGlubGluZU1ldGhvZHNcbiAgfSA9IFBhcnNlci5wcm90b3R5cGU7XG4gIGlubGluZVRva2VuaXplcnMuc2VsZWN0ID0gaW5saW5lVG9rZW5pemVyO1xuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3VybCcpLCAwLCAnc2VsZWN0Jyk7XG4gIGNvbnN0IHtcbiAgICBDb21waWxlclxuICB9ID0gdGhpczsgLy8gU3RyaW5naWZ5XG5cbiAgaWYgKENvbXBpbGVyKSB7XG4gICAgY29uc3Qge1xuICAgICAgdmlzaXRvcnNcbiAgICB9ID0gQ29tcGlsZXIucHJvdG90eXBlO1xuXG4gICAgdmlzaXRvcnMubGluZXNlbGVjdCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gU1RBUlQgKyB0aGlzLmFsbChub2RlKS5qb2luKCcnKSArIEVORDtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgU1RBUlQgPSAvXihcXFtfK1xcbikvZztcbmNvbnN0IEVORCA9IC8oXytdKS9nO1xuXG5jb25zdCBwYXJzZUF0dHIgPSByZXF1aXJlKCdtZC1hdHRyLXBhcnNlcicpO1xuXG5mdW5jdGlvbiBsb2NhdG9yKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgY29uc3QgaW5kZXggPSB2YWx1ZS5pbmRleE9mKFNUQVJULCBmcm9tSW5kZXgpO1xuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIHBsdWdpbigpIHtcbiAgZnVuY3Rpb24gYmxvY2tUb2tlbml6ZXIoZWF0LCB2YWx1ZSkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmdmbSB8fCB2YWx1ZS5zZWFyY2goU1RBUlQpICE9PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHByb3AgPSB7XG4gICAgICBjbGFzczogdW5kZWZpbmVkXG4gICAgICAvKiBbXSAqL1xuICAgICAgLFxuICAgICAgaWQ6IHVuZGVmaW5lZFxuICAgIH07XG4gICAgbGV0IGVhdGVuID0gJyc7XG5cbiAgICBpZiAodmFsdWUuc2VhcmNoKEVORCkgPiAwKSB7XG4gICAgICBpZiAodmFsdWUuc2VhcmNoKEVORCkgKyB2YWx1ZS5tYXRjaChFTkQpWzBdLmxlbmd0aCA8IHZhbHVlLmxlbmd0aCAmJiB2YWx1ZS5jaGFyQXQodmFsdWUuc2VhcmNoKEVORCkgKyB2YWx1ZS5tYXRjaChFTkQpWzBdLmxlbmd0aCkgPT09ICd7Jykge1xuICAgICAgICBjb25zdCByZXMgPSBwYXJzZUF0dHIodmFsdWUsIHZhbHVlLnNlYXJjaChFTkQpICsgdmFsdWUubWF0Y2goRU5EKVswXS5sZW5ndGgpO1xuICAgICAgICBlYXRlbiA9IHJlcy5lYXRlbjtcbiAgICAgICAgcHJvcCA9IHJlcy5wcm9wO1xuICAgICAgfVxuXG4gICAgICBsZXQgZW5kID0gdmFsdWUuc2VhcmNoKEVORCk7XG5cbiAgICAgIGlmIChlbmQgIT09IHZhbHVlLm1hdGNoKFNUQVJUKVswXS5sZW5ndGgpIHtcbiAgICAgICAgZW5kIC09IDE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHQgPSBlYXQodmFsdWUuc2xpY2UoMCwgdmFsdWUuc2VhcmNoKEVORCkgKyB2YWx1ZS5tYXRjaChFTkQpWzBdLmxlbmd0aCkgKyBlYXRlbikoe1xuICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaE5hbWU6ICdURVhUQVJFQScsXG4gICAgICAgICAgaFByb3BlcnRpZXM6IHByb3AsXG4gICAgICAgICAgaENoaWxkcmVuOiBbe1xuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnNsaWNlKHZhbHVlLm1hdGNoKFNUQVJUKVswXS5sZW5ndGgsIGVuZClcbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYmxvY2tUb2tlbml6ZXIubG9jYXRvciA9IGxvY2F0b3I7XG4gIGNvbnN0IHtcbiAgICBQYXJzZXJcbiAgfSA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBibG9ja1Rva2VuaXplcnNcbiAgfSA9IFBhcnNlci5wcm90b3R5cGU7XG4gIGNvbnN0IHtcbiAgICBibG9ja01ldGhvZHNcbiAgfSA9IFBhcnNlci5wcm90b3R5cGU7XG4gIGJsb2NrVG9rZW5pemVycy50ZXh0aW5wdXQgPSBibG9ja1Rva2VuaXplcjtcbiAgYmxvY2tNZXRob2RzLnNwbGljZShibG9ja01ldGhvZHMuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgJ3RleHRpbnB1dCcpO1xuICBjb25zdCB7XG4gICAgQ29tcGlsZXJcbiAgfSA9IHRoaXM7IC8vIFN0cmluZ2lmeVxuXG4gIGlmIChDb21waWxlcikge1xuICAgIGNvbnN0IHtcbiAgICAgIHZpc2l0b3JzXG4gICAgfSA9IENvbXBpbGVyLnByb3RvdHlwZTtcblxuICAgIHZpc2l0b3JzLnRleHRpbnB1dCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gYFtfXyR7dGhpcy5hbGwobm9kZSkuam9pbignJyl9X19dYDtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgVU5ERUZJTkVEX0NPREVfUE9JTlRTID0gW1xuICAgIDB4ZmZmZSxcbiAgICAweGZmZmYsXG4gICAgMHgxZmZmZSxcbiAgICAweDFmZmZmLFxuICAgIDB4MmZmZmUsXG4gICAgMHgyZmZmZixcbiAgICAweDNmZmZlLFxuICAgIDB4M2ZmZmYsXG4gICAgMHg0ZmZmZSxcbiAgICAweDRmZmZmLFxuICAgIDB4NWZmZmUsXG4gICAgMHg1ZmZmZixcbiAgICAweDZmZmZlLFxuICAgIDB4NmZmZmYsXG4gICAgMHg3ZmZmZSxcbiAgICAweDdmZmZmLFxuICAgIDB4OGZmZmUsXG4gICAgMHg4ZmZmZixcbiAgICAweDlmZmZlLFxuICAgIDB4OWZmZmYsXG4gICAgMHhhZmZmZSxcbiAgICAweGFmZmZmLFxuICAgIDB4YmZmZmUsXG4gICAgMHhiZmZmZixcbiAgICAweGNmZmZlLFxuICAgIDB4Y2ZmZmYsXG4gICAgMHhkZmZmZSxcbiAgICAweGRmZmZmLFxuICAgIDB4ZWZmZmUsXG4gICAgMHhlZmZmZixcbiAgICAweGZmZmZlLFxuICAgIDB4ZmZmZmYsXG4gICAgMHgxMGZmZmUsXG4gICAgMHgxMGZmZmZcbl07XG5cbmV4cG9ydHMuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSID0gJ1xcdUZGRkQnO1xuXG5leHBvcnRzLkNPREVfUE9JTlRTID0ge1xuICAgIEVPRjogLTEsXG4gICAgTlVMTDogMHgwMCxcbiAgICBUQUJVTEFUSU9OOiAweDA5LFxuICAgIENBUlJJQUdFX1JFVFVSTjogMHgwZCxcbiAgICBMSU5FX0ZFRUQ6IDB4MGEsXG4gICAgRk9STV9GRUVEOiAweDBjLFxuICAgIFNQQUNFOiAweDIwLFxuICAgIEVYQ0xBTUFUSU9OX01BUks6IDB4MjEsXG4gICAgUVVPVEFUSU9OX01BUks6IDB4MjIsXG4gICAgTlVNQkVSX1NJR046IDB4MjMsXG4gICAgQU1QRVJTQU5EOiAweDI2LFxuICAgIEFQT1NUUk9QSEU6IDB4MjcsXG4gICAgSFlQSEVOX01JTlVTOiAweDJkLFxuICAgIFNPTElEVVM6IDB4MmYsXG4gICAgRElHSVRfMDogMHgzMCxcbiAgICBESUdJVF85OiAweDM5LFxuICAgIFNFTUlDT0xPTjogMHgzYixcbiAgICBMRVNTX1RIQU5fU0lHTjogMHgzYyxcbiAgICBFUVVBTFNfU0lHTjogMHgzZCxcbiAgICBHUkVBVEVSX1RIQU5fU0lHTjogMHgzZSxcbiAgICBRVUVTVElPTl9NQVJLOiAweDNmLFxuICAgIExBVElOX0NBUElUQUxfQTogMHg0MSxcbiAgICBMQVRJTl9DQVBJVEFMX0Y6IDB4NDYsXG4gICAgTEFUSU5fQ0FQSVRBTF9YOiAweDU4LFxuICAgIExBVElOX0NBUElUQUxfWjogMHg1YSxcbiAgICBSSUdIVF9TUVVBUkVfQlJBQ0tFVDogMHg1ZCxcbiAgICBHUkFWRV9BQ0NFTlQ6IDB4NjAsXG4gICAgTEFUSU5fU01BTExfQTogMHg2MSxcbiAgICBMQVRJTl9TTUFMTF9GOiAweDY2LFxuICAgIExBVElOX1NNQUxMX1g6IDB4NzgsXG4gICAgTEFUSU5fU01BTExfWjogMHg3YSxcbiAgICBSRVBMQUNFTUVOVF9DSEFSQUNURVI6IDB4ZmZmZFxufTtcblxuZXhwb3J0cy5DT0RFX1BPSU5UX1NFUVVFTkNFUyA9IHtcbiAgICBEQVNIX0RBU0hfU1RSSU5HOiBbMHgyZCwgMHgyZF0sIC8vLS1cbiAgICBET0NUWVBFX1NUUklORzogWzB4NDQsIDB4NGYsIDB4NDMsIDB4NTQsIDB4NTksIDB4NTAsIDB4NDVdLCAvL0RPQ1RZUEVcbiAgICBDREFUQV9TVEFSVF9TVFJJTkc6IFsweDViLCAweDQzLCAweDQ0LCAweDQxLCAweDU0LCAweDQxLCAweDViXSwgLy9bQ0RBVEFbXG4gICAgU0NSSVBUX1NUUklORzogWzB4NzMsIDB4NjMsIDB4NzIsIDB4NjksIDB4NzAsIDB4NzRdLCAvL3NjcmlwdFxuICAgIFBVQkxJQ19TVFJJTkc6IFsweDUwLCAweDU1LCAweDQyLCAweDRjLCAweDQ5LCAweDQzXSwgLy9QVUJMSUNcbiAgICBTWVNURU1fU1RSSU5HOiBbMHg1MywgMHg1OSwgMHg1MywgMHg1NCwgMHg0NSwgMHg0ZF0gLy9TWVNURU1cbn07XG5cbi8vU3Vycm9nYXRlc1xuZXhwb3J0cy5pc1N1cnJvZ2F0ZSA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgcmV0dXJuIGNwID49IDB4ZDgwMCAmJiBjcCA8PSAweGRmZmY7XG59O1xuXG5leHBvcnRzLmlzU3Vycm9nYXRlUGFpciA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgcmV0dXJuIGNwID49IDB4ZGMwMCAmJiBjcCA8PSAweGRmZmY7XG59O1xuXG5leHBvcnRzLmdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQgPSBmdW5jdGlvbihjcDEsIGNwMikge1xuICAgIHJldHVybiAoY3AxIC0gMHhkODAwKSAqIDB4NDAwICsgMHgyNDAwICsgY3AyO1xufTtcblxuLy9OT1RFOiBleGNsdWRpbmcgTlVMTCBhbmQgQVNDSUkgd2hpdGVzcGFjZVxuZXhwb3J0cy5pc0NvbnRyb2xDb2RlUG9pbnQgPSBmdW5jdGlvbihjcCkge1xuICAgIHJldHVybiAoXG4gICAgICAgIChjcCAhPT0gMHgyMCAmJiBjcCAhPT0gMHgwYSAmJiBjcCAhPT0gMHgwZCAmJiBjcCAhPT0gMHgwOSAmJiBjcCAhPT0gMHgwYyAmJiBjcCA+PSAweDAxICYmIGNwIDw9IDB4MWYpIHx8XG4gICAgICAgIChjcCA+PSAweDdmICYmIGNwIDw9IDB4OWYpXG4gICAgKTtcbn07XG5cbmV4cG9ydHMuaXNVbmRlZmluZWRDb2RlUG9pbnQgPSBmdW5jdGlvbihjcCkge1xuICAgIHJldHVybiAoY3AgPj0gMHhmZGQwICYmIGNwIDw9IDB4ZmRlZikgfHwgVU5ERUZJTkVEX0NPREVfUE9JTlRTLmluZGV4T2YoY3ApID4gLTE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbTogJ2NvbnRyb2wtY2hhcmFjdGVyLWluLWlucHV0LXN0cmVhbScsXG4gICAgbm9uY2hhcmFjdGVySW5JbnB1dFN0cmVhbTogJ25vbmNoYXJhY3Rlci1pbi1pbnB1dC1zdHJlYW0nLFxuICAgIHN1cnJvZ2F0ZUluSW5wdXRTdHJlYW06ICdzdXJyb2dhdGUtaW4taW5wdXQtc3RyZWFtJyxcbiAgICBub25Wb2lkSHRtbEVsZW1lbnRTdGFydFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXM6ICdub24tdm9pZC1odG1sLWVsZW1lbnQtc3RhcnQtdGFnLXdpdGgtdHJhaWxpbmctc29saWR1cycsXG4gICAgZW5kVGFnV2l0aEF0dHJpYnV0ZXM6ICdlbmQtdGFnLXdpdGgtYXR0cmlidXRlcycsXG4gICAgZW5kVGFnV2l0aFRyYWlsaW5nU29saWR1czogJ2VuZC10YWctd2l0aC10cmFpbGluZy1zb2xpZHVzJyxcbiAgICB1bmV4cGVjdGVkU29saWR1c0luVGFnOiAndW5leHBlY3RlZC1zb2xpZHVzLWluLXRhZycsXG4gICAgdW5leHBlY3RlZE51bGxDaGFyYWN0ZXI6ICd1bmV4cGVjdGVkLW51bGwtY2hhcmFjdGVyJyxcbiAgICB1bmV4cGVjdGVkUXVlc3Rpb25NYXJrSW5zdGVhZE9mVGFnTmFtZTogJ3VuZXhwZWN0ZWQtcXVlc3Rpb24tbWFyay1pbnN0ZWFkLW9mLXRhZy1uYW1lJyxcbiAgICBpbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWU6ICdpbnZhbGlkLWZpcnN0LWNoYXJhY3Rlci1vZi10YWctbmFtZScsXG4gICAgdW5leHBlY3RlZEVxdWFsc1NpZ25CZWZvcmVBdHRyaWJ1dGVOYW1lOiAndW5leHBlY3RlZC1lcXVhbHMtc2lnbi1iZWZvcmUtYXR0cmlidXRlLW5hbWUnLFxuICAgIG1pc3NpbmdFbmRUYWdOYW1lOiAnbWlzc2luZy1lbmQtdGFnLW5hbWUnLFxuICAgIHVuZXhwZWN0ZWRDaGFyYWN0ZXJJbkF0dHJpYnV0ZU5hbWU6ICd1bmV4cGVjdGVkLWNoYXJhY3Rlci1pbi1hdHRyaWJ1dGUtbmFtZScsXG4gICAgdW5rbm93bk5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlOiAndW5rbm93bi1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICBtaXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2U6ICdtaXNzaW5nLXNlbWljb2xvbi1hZnRlci1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICB1bmV4cGVjdGVkQ2hhcmFjdGVyQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcjogJ3VuZXhwZWN0ZWQtY2hhcmFjdGVyLWFmdGVyLWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXInLFxuICAgIHVuZXhwZWN0ZWRDaGFyYWN0ZXJJblVucXVvdGVkQXR0cmlidXRlVmFsdWU6ICd1bmV4cGVjdGVkLWNoYXJhY3Rlci1pbi11bnF1b3RlZC1hdHRyaWJ1dGUtdmFsdWUnLFxuICAgIGVvZkJlZm9yZVRhZ05hbWU6ICdlb2YtYmVmb3JlLXRhZy1uYW1lJyxcbiAgICBlb2ZJblRhZzogJ2VvZi1pbi10YWcnLFxuICAgIG1pc3NpbmdBdHRyaWJ1dGVWYWx1ZTogJ21pc3NpbmctYXR0cmlidXRlLXZhbHVlJyxcbiAgICBtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzOiAnbWlzc2luZy13aGl0ZXNwYWNlLWJldHdlZW4tYXR0cmlidXRlcycsXG4gICAgbWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkOiAnbWlzc2luZy13aGl0ZXNwYWNlLWFmdGVyLWRvY3R5cGUtcHVibGljLWtleXdvcmQnLFxuICAgIG1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyczpcbiAgICAgICAgJ21pc3Npbmctd2hpdGVzcGFjZS1iZXR3ZWVuLWRvY3R5cGUtcHVibGljLWFuZC1zeXN0ZW0taWRlbnRpZmllcnMnLFxuICAgIG1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZDogJ21pc3Npbmctd2hpdGVzcGFjZS1hZnRlci1kb2N0eXBlLXN5c3RlbS1rZXl3b3JkJyxcbiAgICBtaXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllcjogJ21pc3NpbmctcXVvdGUtYmVmb3JlLWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXInLFxuICAgIG1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyOiAnbWlzc2luZy1xdW90ZS1iZWZvcmUtZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllcicsXG4gICAgbWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyOiAnbWlzc2luZy1kb2N0eXBlLXB1YmxpYy1pZGVudGlmaWVyJyxcbiAgICBtaXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXI6ICdtaXNzaW5nLWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXInLFxuICAgIGFicnVwdERvY3R5cGVQdWJsaWNJZGVudGlmaWVyOiAnYWJydXB0LWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXInLFxuICAgIGFicnVwdERvY3R5cGVTeXN0ZW1JZGVudGlmaWVyOiAnYWJydXB0LWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXInLFxuICAgIGNkYXRhSW5IdG1sQ29udGVudDogJ2NkYXRhLWluLWh0bWwtY29udGVudCcsXG4gICAgaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50OiAnaW5jb3JyZWN0bHktb3BlbmVkLWNvbW1lbnQnLFxuICAgIGVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dDogJ2VvZi1pbi1zY3JpcHQtaHRtbC1jb21tZW50LWxpa2UtdGV4dCcsXG4gICAgZW9mSW5Eb2N0eXBlOiAnZW9mLWluLWRvY3R5cGUnLFxuICAgIG5lc3RlZENvbW1lbnQ6ICduZXN0ZWQtY29tbWVudCcsXG4gICAgYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50OiAnYWJydXB0LWNsb3Npbmctb2YtZW1wdHktY29tbWVudCcsXG4gICAgZW9mSW5Db21tZW50OiAnZW9mLWluLWNvbW1lbnQnLFxuICAgIGluY29ycmVjdGx5Q2xvc2VkQ29tbWVudDogJ2luY29ycmVjdGx5LWNsb3NlZC1jb21tZW50JyxcbiAgICBlb2ZJbkNkYXRhOiAnZW9mLWluLWNkYXRhJyxcbiAgICBhYnNlbmNlT2ZEaWdpdHNJbk51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2U6ICdhYnNlbmNlLW9mLWRpZ2l0cy1pbi1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIG51bGxDaGFyYWN0ZXJSZWZlcmVuY2U6ICdudWxsLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIHN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZTogJ3N1cnJvZ2F0ZS1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICBjaGFyYWN0ZXJSZWZlcmVuY2VPdXRzaWRlVW5pY29kZVJhbmdlOiAnY2hhcmFjdGVyLXJlZmVyZW5jZS1vdXRzaWRlLXVuaWNvZGUtcmFuZ2UnLFxuICAgIGNvbnRyb2xDaGFyYWN0ZXJSZWZlcmVuY2U6ICdjb250cm9sLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIG5vbmNoYXJhY3RlckNoYXJhY3RlclJlZmVyZW5jZTogJ25vbmNoYXJhY3Rlci1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICBtaXNzaW5nV2hpdGVzcGFjZUJlZm9yZURvY3R5cGVOYW1lOiAnbWlzc2luZy13aGl0ZXNwYWNlLWJlZm9yZS1kb2N0eXBlLW5hbWUnLFxuICAgIG1pc3NpbmdEb2N0eXBlTmFtZTogJ21pc3NpbmctZG9jdHlwZS1uYW1lJyxcbiAgICBpbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lOiAnaW52YWxpZC1jaGFyYWN0ZXItc2VxdWVuY2UtYWZ0ZXItZG9jdHlwZS1uYW1lJyxcbiAgICBkdXBsaWNhdGVBdHRyaWJ1dGU6ICdkdXBsaWNhdGUtYXR0cmlidXRlJyxcbiAgICBub25Db25mb3JtaW5nRG9jdHlwZTogJ25vbi1jb25mb3JtaW5nLWRvY3R5cGUnLFxuICAgIG1pc3NpbmdEb2N0eXBlOiAnbWlzc2luZy1kb2N0eXBlJyxcbiAgICBtaXNwbGFjZWREb2N0eXBlOiAnbWlzcGxhY2VkLWRvY3R5cGUnLFxuICAgIGVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50OiAnZW5kLXRhZy13aXRob3V0LW1hdGNoaW5nLW9wZW4tZWxlbWVudCcsXG4gICAgY2xvc2luZ09mRWxlbWVudFdpdGhPcGVuQ2hpbGRFbGVtZW50czogJ2Nsb3Npbmctb2YtZWxlbWVudC13aXRoLW9wZW4tY2hpbGQtZWxlbWVudHMnLFxuICAgIGRpc2FsbG93ZWRDb250ZW50SW5Ob3NjcmlwdEluSGVhZDogJ2Rpc2FsbG93ZWQtY29udGVudC1pbi1ub3NjcmlwdC1pbi1oZWFkJyxcbiAgICBvcGVuRWxlbWVudHNMZWZ0QWZ0ZXJFb2Y6ICdvcGVuLWVsZW1lbnRzLWxlZnQtYWZ0ZXItZW9mJyxcbiAgICBhYmFuZG9uZWRIZWFkRWxlbWVudENoaWxkOiAnYWJhbmRvbmVkLWhlYWQtZWxlbWVudC1jaGlsZCcsXG4gICAgbWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudDogJ21pc3BsYWNlZC1zdGFydC10YWctZm9yLWhlYWQtZWxlbWVudCcsXG4gICAgbmVzdGVkTm9zY3JpcHRJbkhlYWQ6ICduZXN0ZWQtbm9zY3JpcHQtaW4taGVhZCcsXG4gICAgZW9mSW5FbGVtZW50VGhhdENhbkNvbnRhaW5Pbmx5VGV4dDogJ2VvZi1pbi1lbGVtZW50LXRoYXQtY2FuLWNvbnRhaW4tb25seS10ZXh0J1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdW5pY29kZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91bmljb2RlJyk7XG5jb25zdCBFUlIgPSByZXF1aXJlKCcuLi9jb21tb24vZXJyb3ItY29kZXMnKTtcblxuLy9BbGlhc2VzXG5jb25zdCAkID0gdW5pY29kZS5DT0RFX1BPSU5UUztcblxuLy9Db25zdFxuY29uc3QgREVGQVVMVF9CVUZGRVJfV0FURVJMSU5FID0gMSA8PCAxNjtcblxuLy9QcmVwcm9jZXNzb3Jcbi8vTk9URTogSFRNTCBpbnB1dCBwcmVwcm9jZXNzaW5nXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0pXG5jbGFzcyBQcmVwcm9jZXNzb3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmh0bWwgPSBudWxsO1xuXG4gICAgICAgIHRoaXMucG9zID0gLTE7XG4gICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IC0xO1xuICAgICAgICB0aGlzLmxhc3RDaGFyUG9zID0gLTE7XG5cbiAgICAgICAgdGhpcy5nYXBTdGFjayA9IFtdO1xuXG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5sYXN0Q2h1bmtXcml0dGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1ZmZlcldhdGVybGluZSA9IERFRkFVTFRfQlVGRkVSX1dBVEVSTElORTtcbiAgICB9XG5cbiAgICBfZXJyKCkge1xuICAgICAgICAvLyBOT1RFOiBlcnIgcmVwb3J0aW5nIGlzIG5vb3AgYnkgZGVmYXVsdC4gRW5hYmxlZCBieSBtaXhpbi5cbiAgICB9XG5cbiAgICBfYWRkR2FwKCkge1xuICAgICAgICB0aGlzLmdhcFN0YWNrLnB1c2godGhpcy5sYXN0R2FwUG9zKTtcbiAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gdGhpcy5wb3M7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NTdXJyb2dhdGUoY3ApIHtcbiAgICAgICAgLy9OT1RFOiB0cnkgdG8gcGVlayBhIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGlmICh0aGlzLnBvcyAhPT0gdGhpcy5sYXN0Q2hhclBvcykge1xuICAgICAgICAgICAgY29uc3QgbmV4dENwID0gdGhpcy5odG1sLmNoYXJDb2RlQXQodGhpcy5wb3MgKyAxKTtcblxuICAgICAgICAgICAgaWYgKHVuaWNvZGUuaXNTdXJyb2dhdGVQYWlyKG5leHRDcCkpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHdlIGhhdmUgYSBzdXJyb2dhdGUgcGFpci4gUGVlayBwYWlyIGNoYXJhY3RlciBhbmQgcmVjYWxjdWxhdGUgY29kZSBwb2ludC5cbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuXG4gICAgICAgICAgICAgICAgLy9OT1RFOiBhZGQgZ2FwIHRoYXQgc2hvdWxkIGJlIGF2b2lkZWQgZHVyaW5nIHJldHJlYXRcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGRHYXAoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB1bmljb2RlLmdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQoY3AsIG5leHRDcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IHdlIGFyZSBhdCB0aGUgZW5kIG9mIGEgY2h1bmssIHRoZXJlZm9yZSB3ZSBjYW4ndCBpbmZlciBzdXJyb2dhdGUgcGFpciB5ZXQuXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLmxhc3RDaHVua1dyaXR0ZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IGlzb2xhdGVkIHN1cnJvZ2F0ZVxuICAgICAgICB0aGlzLl9lcnIoRVJSLnN1cnJvZ2F0ZUluSW5wdXRTdHJlYW0pO1xuXG4gICAgICAgIHJldHVybiBjcDtcbiAgICB9XG5cbiAgICBkcm9wUGFyc2VkQ2h1bmsoKSB7XG4gICAgICAgIGlmICh0aGlzLnBvcyA+IHRoaXMuYnVmZmVyV2F0ZXJsaW5lKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RDaGFyUG9zIC09IHRoaXMucG9zO1xuICAgICAgICAgICAgdGhpcy5odG1sID0gdGhpcy5odG1sLnN1YnN0cmluZyh0aGlzLnBvcyk7XG4gICAgICAgICAgICB0aGlzLnBvcyA9IDA7XG4gICAgICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSAtMTtcbiAgICAgICAgICAgIHRoaXMuZ2FwU3RhY2sgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlKGNodW5rLCBpc0xhc3RDaHVuaykge1xuICAgICAgICBpZiAodGhpcy5odG1sKSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgKz0gY2h1bms7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgPSBjaHVuaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGFzdENoYXJQb3MgPSB0aGlzLmh0bWwubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGFzdENodW5rV3JpdHRlbiA9IGlzTGFzdENodW5rO1xuICAgIH1cblxuICAgIGluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspIHtcbiAgICAgICAgdGhpcy5odG1sID0gdGhpcy5odG1sLnN1YnN0cmluZygwLCB0aGlzLnBvcyArIDEpICsgY2h1bmsgKyB0aGlzLmh0bWwuc3Vic3RyaW5nKHRoaXMucG9zICsgMSwgdGhpcy5odG1sLmxlbmd0aCk7XG5cbiAgICAgICAgdGhpcy5sYXN0Q2hhclBvcyA9IHRoaXMuaHRtbC5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBhZHZhbmNlKCkge1xuICAgICAgICB0aGlzLnBvcysrO1xuXG4gICAgICAgIGlmICh0aGlzLnBvcyA+IHRoaXMubGFzdENoYXJQb3MpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY3AgPSB0aGlzLmh0bWwuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG5cbiAgICAgICAgLy9OT1RFOiBhbnkgVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlcnMgdGhhdCBpbW1lZGlhdGVseSBmb2xsb3cgYSBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVyXG4gICAgICAgIC8vbXVzdCBiZSBpZ25vcmVkLlxuICAgICAgICBpZiAodGhpcy5za2lwTmV4dE5ld0xpbmUgJiYgY3AgPT09ICQuTElORV9GRUVEKSB7XG4gICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fYWRkR2FwKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IGFsbCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVycyBtdXN0IGJlIGNvbnZlcnRlZCB0byBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyc1xuICAgICAgICBpZiAoY3AgPT09ICQuQ0FSUklBR0VfUkVUVVJOKSB7XG4gICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gJC5MSU5FX0ZFRUQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh1bmljb2RlLmlzU3Vycm9nYXRlKGNwKSkge1xuICAgICAgICAgICAgY3AgPSB0aGlzLl9wcm9jZXNzU3Vycm9nYXRlKGNwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vT1BUSU1JWkFUSU9OOiBmaXJzdCBjaGVjayBpZiBjb2RlIHBvaW50IGlzIGluIHRoZSBjb21tb24gYWxsb3dlZFxuICAgICAgICAvL3JhbmdlIChBU0NJSSBhbHBoYW51bWVyaWMsIHdoaXRlc3BhY2VzLCBiaWcgY2h1bmsgb2YgQk1QKVxuICAgICAgICAvL2JlZm9yZSBnb2luZyBpbnRvIGRldGFpbGVkIHBlcmZvcm1hbmNlIGNvc3QgdmFsaWRhdGlvbi5cbiAgICAgICAgY29uc3QgaXNDb21tb25WYWxpZFJhbmdlID1cbiAgICAgICAgICAgIChjcCA+IDB4MWYgJiYgY3AgPCAweDdmKSB8fCBjcCA9PT0gJC5MSU5FX0ZFRUQgfHwgY3AgPT09ICQuQ0FSUklBR0VfUkVUVVJOIHx8IChjcCA+IDB4OWYgJiYgY3AgPCAweGZkZDApO1xuXG4gICAgICAgIGlmICghaXNDb21tb25WYWxpZFJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja0ZvclByb2JsZW1hdGljQ2hhcmFjdGVycyhjcCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3A7XG4gICAgfVxuXG4gICAgX2NoZWNrRm9yUHJvYmxlbWF0aWNDaGFyYWN0ZXJzKGNwKSB7XG4gICAgICAgIGlmICh1bmljb2RlLmlzQ29udHJvbENvZGVQb2ludChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY29udHJvbENoYXJhY3RlckluSW5wdXRTdHJlYW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaWNvZGUuaXNVbmRlZmluZWRDb2RlUG9pbnQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5vbmNoYXJhY3RlckluSW5wdXRTdHJlYW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0cmVhdCgpIHtcbiAgICAgICAgaWYgKHRoaXMucG9zID09PSB0aGlzLmxhc3RHYXBQb3MpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IHRoaXMuZ2FwU3RhY2sucG9wKCk7XG4gICAgICAgICAgICB0aGlzLnBvcy0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3MtLTtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUHJlcHJvY2Vzc29yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL05PVEU6IHRoaXMgZmlsZSBjb250YWlucyBhdXRvLWdlbmVyYXRlZCBhcnJheSBtYXBwZWQgcmFkaXggdHJlZSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBuYW1lZCBlbnRpdHkgcmVmZXJlbmNlcyBjb25zdW1wdGlvblxuLy8oZGV0YWlsczogaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS90cmVlL21hc3Rlci9zY3JpcHRzL2dlbmVyYXRlLW5hbWVkLWVudGl0eS1kYXRhL1JFQURNRS5tZClcbm1vZHVsZS5leHBvcnRzID0gbmV3IFVpbnQxNkFycmF5KFs0LDUyLDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTA2LDMwMyw0MTIsODEwLDE0MzIsMTcwMSwxNzk2LDE5ODcsMjExNCwyMzYwLDI0MjAsMjQ4NCwzMTcwLDMyNTEsNDE0MCw0MzkzLDQ1NzUsNDYxMCw1MTA2LDU1MTIsNTcyOCw2MTE3LDYyNzQsNjMxNSw2MzQ1LDY0MjcsNjUxNiw3MDAyLDc5MTAsODczMyw5MzIzLDk4NzAsMTAxNzAsMTA2MzEsMTA4OTMsMTEzMTgsMTEzODYsMTE0NjcsMTI3NzMsMTMwOTIsMTQ0NzQsMTQ5MjIsMTU0NDgsMTU1NDIsMTY0MTksMTc2NjYsMTgxNjYsMTg2MTEsMTkwMDQsMTkwOTUsMTkyOTgsMTkzOTcsNCwxNiw2OSw3Nyw5Nyw5OCw5OSwxMDIsMTAzLDEwOCwxMDksMTEwLDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDE0MCwxNTAsMTU4LDE2OSwxNzYsMTk0LDE5OSwyMTAsMjE2LDIyMiwyMjYsMjQyLDI1NiwyNjYsMjgzLDI5NCwxMDgsMTA1LDEwMyw1LDE5OCwxLDU5LDE0OCwxLDE5OCw4MCw1LDM4LDEsNTksMTU2LDEsMzgsOTksMTE3LDExNiwxMDEsNSwxOTMsMSw1OSwxNjcsMSwxOTMsMTE0LDEwMSwxMTgsMTAxLDU5LDEsMjU4LDQsMiwxMDUsMTIxLDE4MiwxOTEsMTE0LDk5LDUsMTk0LDEsNTksMTg5LDEsMTk0LDU5LDEsMTA0MCwxMTQsNTksMyw1NTM0OSw1NjU4MCwxMTQsOTcsMTE4LDEwMSw1LDE5MiwxLDU5LDIwOCwxLDE5MiwxMTIsMTA0LDk3LDU5LDEsOTEzLDk3LDk5LDExNCw1OSwxLDI1NiwxMDAsNTksMSwxMDgzNSw0LDIsMTAzLDExMiwyMzIsMjM3LDExMSwxMTAsNTksMSwyNjAsMTAyLDU5LDMsNTUzNDksNTY2MzIsMTEyLDEwOCwxMjEsNzAsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsNTksMSw4Mjg5LDEwNSwxMTAsMTAzLDUsMTk3LDEsNTksMjY0LDEsMTk3LDQsMiw5OSwxMTUsMjcyLDI3NywxMTQsNTksMyw1NTM0OSw1NjQ3NiwxMDUsMTAzLDExMCw1OSwxLDg3ODgsMTA1LDEwOCwxMDAsMTAxLDUsMTk1LDEsNTksMjkyLDEsMTk1LDEwOSwxMDgsNSwxOTYsMSw1OSwzMDEsMSwxOTYsNCw4LDk3LDk5LDEwMSwxMDIsMTExLDExNCwxMTUsMTE3LDMyMSwzNTAsMzU0LDM4MywzODgsMzk0LDQwMCw0MDUsNCwyLDk5LDExNCwzMjcsMzM2LDEwNywxMTUsMTA4LDk3LDExNSwxMDQsNTksMSw4NzI2LDQsMiwxMTgsMTE5LDM0MiwzNDUsNTksMSwxMDk4MywxMDEsMTAwLDU5LDEsODk2NiwxMjEsNTksMSwxMDQxLDQsMyw5OSwxMTQsMTE2LDM2MiwzNjksMzc5LDk3LDExNywxMTUsMTAxLDU5LDEsODc1NywxMTAsMTExLDExNywxMDgsMTA4LDEwNSwxMTUsNTksMSw4NDkyLDk3LDU5LDEsOTE0LDExNCw1OSwzLDU1MzQ5LDU2NTgxLDExMiwxMDIsNTksMyw1NTM0OSw1NjYzMywxMDEsMTE4LDEwMSw1OSwxLDcyOCw5OSwxMTQsNTksMSw4NDkyLDEwOSwxMTIsMTAxLDExMyw1OSwxLDg3ODIsNCwxNCw3Miw3OSw5Nyw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDEwOCwxMTEsMTE0LDExNSwxMTcsNDQyLDQ0Nyw0NTYsNTA0LDU0Miw1NDcsNTY5LDU3Myw1NzcsNjE2LDY3OCw3ODQsNzkwLDc5Niw5OSwxMjEsNTksMSwxMDYzLDgwLDg5LDUsMTY5LDEsNTksNDU0LDEsMTY5LDQsMyw5OSwxMTIsMTIxLDQ2NCw0NzAsNDk3LDExNywxMTYsMTAxLDU5LDEsMjYyLDQsMiw1OSwxMDUsNDc2LDQ3OCwxLDg5MTQsMTE2LDk3LDEwOCw2OCwxMDUsMTAyLDEwMiwxMDEsMTE0LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsNjgsNTksMSw4NTE3LDEwOCwxMDEsMTIxLDExNSw1OSwxLDg0OTMsNCw0LDk3LDEwMSwxMDUsMTExLDUxNCw1MjAsNTMwLDUzNSwxMTQsMTExLDExMCw1OSwxLDI2OCwxMDAsMTA1LDEwOCw1LDE5OSwxLDU5LDUyOCwxLDE5OSwxMTQsOTksNTksMSwyNjQsMTEwLDEwNSwxMTAsMTE2LDU5LDEsODc1MiwxMTEsMTE2LDU5LDEsMjY2LDQsMiwxMDAsMTEwLDU1Myw1NjAsMTA1LDEwOCwxMDgsOTcsNTksMSwxODQsMTE2LDEwMSwxMTQsNjgsMTExLDExNiw1OSwxLDE4MywxMTQsNTksMSw4NDkzLDEwNSw1OSwxLDkzNSwxMTQsOTksMTA4LDEwMSw0LDQsNjgsNzcsODAsODQsNTkxLDU5Niw2MDMsNjA5LDExMSwxMTYsNTksMSw4ODU3LDEwNSwxMTAsMTE3LDExNSw1OSwxLDg4NTQsMTA4LDExNywxMTUsNTksMSw4ODUzLDEwNSwxMDksMTAxLDExNSw1OSwxLDg4NTUsMTExLDQsMiw5OSwxMTUsNjIzLDY0NiwxMDcsMTE5LDEwNSwxMTUsMTAxLDY3LDExMSwxMTAsMTE2LDExMSwxMTcsMTE0LDczLDExMCwxMTYsMTAxLDEwMywxMTQsOTcsMTA4LDU5LDEsODc1NCwxMDEsNjcsMTE3LDExNCwxMDgsMTIxLDQsMiw2OCw4MSw2NTgsNjcxLDExMSwxMTcsOTgsMTA4LDEwMSw4MSwxMTcsMTExLDExNiwxMDEsNTksMSw4MjIxLDExNywxMTEsMTE2LDEwMSw1OSwxLDgyMTcsNCw0LDEwOCwxMTAsMTEyLDExNyw2ODgsNzAxLDczNiw3NTMsMTExLDExMCw0LDIsNTksMTAxLDY5Niw2OTgsMSw4NzU5LDU5LDEsMTA4NjgsNCwzLDEwMywxMDUsMTE2LDcwOSw3MTcsNzIyLDExNCwxMTcsMTAxLDExMCwxMTYsNTksMSw4ODAxLDExMCwxMTYsNTksMSw4NzUxLDExMSwxMTcsMTE0LDczLDExMCwxMTYsMTAxLDEwMywxMTQsOTcsMTA4LDU5LDEsODc1MCw0LDIsMTAyLDExNCw3NDIsNzQ1LDU5LDEsODQ1MCwxMTEsMTAwLDExNyw5OSwxMTYsNTksMSw4NzIwLDExMCwxMTYsMTAxLDExNCw2NywxMDgsMTExLDk5LDEwNywxMTksMTA1LDExNSwxMDEsNjcsMTExLDExMCwxMTYsMTExLDExNywxMTQsNzMsMTEwLDExNiwxMDEsMTAzLDExNCw5NywxMDgsNTksMSw4NzU1LDExMSwxMTUsMTE1LDU5LDEsMTA3OTksOTksMTE0LDU5LDMsNTUzNDksNTY0NzgsMTEyLDQsMiw1OSw2Nyw4MDMsODA1LDEsODkxNSw5NywxMTIsNTksMSw4NzgxLDQsMTEsNjgsNzQsODMsOTAsOTcsOTksMTAxLDEwMiwxMDUsMTExLDExNSw4MzQsODUwLDg1NSw4NjAsODY1LDg4OCw5MDMsOTE2LDkyMSwxMDExLDE0MTUsNCwyLDU5LDExMSw4NDAsODQyLDEsODUxNywxMTYsMTE0LDk3LDEwNCwxMDAsNTksMSwxMDUxMyw5OSwxMjEsNTksMSwxMDI2LDk5LDEyMSw1OSwxLDEwMjksOTksMTIxLDU5LDEsMTAzOSw0LDMsMTAzLDExNCwxMTUsODczLDg3OSw4ODMsMTAzLDEwMSwxMTQsNTksMSw4MjI1LDExNCw1OSwxLDg2MDksMTA0LDExOCw1OSwxLDEwOTgwLDQsMiw5NywxMjEsODk0LDkwMCwxMTQsMTExLDExMCw1OSwxLDI3MCw1OSwxLDEwNDQsMTA4LDQsMiw1OSwxMTYsOTEwLDkxMiwxLDg3MTEsOTcsNTksMSw5MTYsMTE0LDU5LDMsNTUzNDksNTY1ODMsNCwyLDk3LDEwMiw5MjcsOTk4LDQsMiw5OSwxMDksOTMzLDk5MiwxMTQsMTA1LDExNiwxMDUsOTksOTcsMTA4LDQsNCw2NSw2OCw3MSw4NCw5NTAsOTU3LDk3OCw5ODUsOTksMTE3LDExNiwxMDEsNTksMSwxODAsMTExLDQsMiwxMTYsMTE3LDk2NCw5NjcsNTksMSw3MjksOTgsMTA4LDEwMSw2NSw5OSwxMTcsMTE2LDEwMSw1OSwxLDczMywxMTQsOTcsMTE4LDEwMSw1OSwxLDk2LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDczMiwxMTEsMTEwLDEwMCw1OSwxLDg5MDAsMTAyLDEwMSwxMTQsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCw2OCw1OSwxLDg1MTgsNCw0LDExMiwxMTYsMTE3LDExOSwxMDIxLDEwMjYsMTA0OCwxMjQ5LDEwMiw1OSwzLDU1MzQ5LDU2NjM1LDQsMyw1OSw2OCw2OSwxMDM0LDEwMzYsMTA0MSwxLDE2OCwxMTEsMTE2LDU5LDEsODQxMiwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3ODQsOTgsMTA4LDEwMSw0LDYsNjcsNjgsNzYsODIsODUsODYsMTA2NSwxMDgyLDExMDEsMTE4OSwxMjExLDEyMzYsMTExLDExMCwxMTYsMTExLDExNywxMTQsNzMsMTEwLDExNiwxMDEsMTAzLDExNCw5NywxMDgsNTksMSw4NzUxLDExMSw0LDIsMTE2LDExOSwxMDg5LDEwOTIsNTksMSwxNjgsMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTksNCwyLDEwMSwxMTEsMTEwNywxMTQxLDEwMiwxMTYsNCwzLDY1LDgyLDg0LDExMTcsMTEyNCwxMTM2LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTYsMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjAsMTAxLDEwMSw1OSwxLDEwOTgwLDExMCwxMDMsNCwyLDc2LDgyLDExNDksMTE3NywxMDEsMTAyLDExNiw0LDIsNjUsODIsMTE1OCwxMTY1LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMyLDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzNCwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzMsMTA1LDEwMywxMDQsMTE2LDQsMiw2NSw4NCwxMTk5LDEyMDYsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1OCwxMDEsMTAxLDU5LDEsODg3MiwxMTIsNCwyLDY1LDY4LDEyMTgsMTIyNSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjU3LDExMSwxMTksMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjEsMTAxLDExNCwxMTYsMTA1LDk5LDk3LDEwOCw2Niw5NywxMTQsNTksMSw4NzQxLDExMCw0LDYsNjUsNjYsNzYsODIsODQsOTcsMTI2NCwxMjkyLDEyOTksMTM1MiwxMzkxLDE0MDgsMTE0LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw4NSwxMjc2LDEyNzgsMTI4MywxLDg1OTUsOTcsMTE0LDU5LDEsMTA1MTUsMTEyLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2OTMsMTE0LDEwMSwxMTgsMTAxLDU5LDEsNzg1LDEwMSwxMDIsMTE2LDQsMyw4Miw4NCw4NiwxMzEwLDEzMjMsMTMzNCwxMDUsMTAzLDEwNCwxMTYsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1NzYsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU5MCwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDEzNDUsMTM0NywxLDg2MzcsOTcsMTE0LDU5LDEsMTA1ODIsMTA1LDEwMywxMDQsMTE2LDQsMiw4NCw4NiwxMzYyLDEzNzMsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU5MSwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDEzODQsMTM4NiwxLDg2NDEsOTcsMTE0LDU5LDEsMTA1ODMsMTAxLDEwMSw0LDIsNTksNjUsMTM5OSwxNDAxLDEsODg2OCwxMTQsMTE0LDExMSwxMTksNTksMSw4NjE1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTksNCwyLDk5LDExNiwxNDIxLDE0MjYsMTE0LDU5LDMsNTUzNDksNTY0NzksMTE0LDExMSwxMDcsNTksMSwyNzIsNCwxNiw3OCw4NCw5Nyw5OSwxMDAsMTAyLDEwMywxMDgsMTA5LDExMSwxMTIsMTEzLDExNSwxMTYsMTE3LDEyMCwxNDY2LDE0NzAsMTQ3OCwxNDg5LDE1MTUsMTUyMCwxNTI1LDE1MzYsMTU0NCwxNTkzLDE2MDksMTYxNywxNjUwLDE2NjQsMTY2OCwxNjc3LDcxLDU5LDEsMzMwLDcyLDUsMjA4LDEsNTksMTQ3NiwxLDIwOCw5OSwxMTcsMTE2LDEwMSw1LDIwMSwxLDU5LDE0ODcsMSwyMDEsNCwzLDk3LDEwNSwxMjEsMTQ5NywxNTAzLDE1MTIsMTE0LDExMSwxMTAsNTksMSwyODIsMTE0LDk5LDUsMjAyLDEsNTksMTUxMCwxLDIwMiw1OSwxLDEwNjksMTExLDExNiw1OSwxLDI3OCwxMTQsNTksMyw1NTM0OSw1NjU4NCwxMTQsOTcsMTE4LDEwMSw1LDIwMCwxLDU5LDE1MzQsMSwyMDAsMTAxLDEwOSwxMDEsMTEwLDExNiw1OSwxLDg3MTIsNCwyLDk3LDExMiwxNTUwLDE1NTUsOTksMTE0LDU5LDEsMjc0LDExNiwxMjEsNCwyLDgzLDg2LDE1NjMsMTU3NiwxMDksOTcsMTA4LDEwOCw4MywxMTMsMTE3LDk3LDExNCwxMDEsNTksMSw5NzIzLDEwMSwxMTQsMTIxLDgzLDEwOSw5NywxMDgsMTA4LDgzLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk2NDMsNCwyLDEwMywxMTIsMTU5OSwxNjA0LDExMSwxMTAsNTksMSwyODAsMTAyLDU5LDMsNTUzNDksNTY2MzYsMTE1LDEwNSwxMDgsMTExLDExMCw1OSwxLDkxNywxMTcsNCwyLDk3LDEwNSwxNjI0LDE2NDAsMTA4LDQsMiw1OSw4NCwxNjMxLDE2MzMsMSwxMDg2OSwxMDUsMTA4LDEwMCwxMDEsNTksMSw4NzcwLDEwOCwxMDUsOTgsMTE0LDEwNSwxMTcsMTA5LDU5LDEsODY1Miw0LDIsOTksMTA1LDE2NTYsMTY2MCwxMTQsNTksMSw4NDk2LDEwOSw1OSwxLDEwODY3LDk3LDU5LDEsOTE5LDEwOSwxMDgsNSwyMDMsMSw1OSwxNjc1LDEsMjAzLDQsMiwxMDUsMTEyLDE2ODMsMTY4OSwxMTUsMTE2LDExNSw1OSwxLDg3MDcsMTExLDExMCwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDY5LDU5LDEsODUxOSw0LDUsOTksMTAyLDEwNSwxMTEsMTE1LDE3MTMsMTcxNywxNzIyLDE3NjIsMTc5MSwxMjEsNTksMSwxMDYwLDExNCw1OSwzLDU1MzQ5LDU2NTg1LDEwOCwxMDgsMTAxLDEwMCw0LDIsODMsODYsMTczMiwxNzQ1LDEwOSw5NywxMDgsMTA4LDgzLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk3MjQsMTAxLDExNCwxMjEsODMsMTA5LDk3LDEwOCwxMDgsODMsMTEzLDExNyw5NywxMTQsMTAxLDU5LDEsOTY0Miw0LDMsMTEyLDExNCwxMTcsMTc3MCwxNzc1LDE3ODEsMTAyLDU5LDMsNTUzNDksNTY2MzcsNjUsMTA4LDEwOCw1OSwxLDg3MDQsMTE0LDEwNSwxMDEsMTE0LDExNiwxMTQsMTAyLDU5LDEsODQ5Nyw5OSwxMTQsNTksMSw4NDk3LDQsMTIsNzQsODQsOTcsOTgsOTksMTAwLDEwMiwxMDMsMTExLDExNCwxMTUsMTE2LDE4MjIsMTgyNywxODM0LDE4NDgsMTg1NSwxODc3LDE4ODIsMTg4NywxODkwLDE4OTYsMTk3OCwxOTg0LDk5LDEyMSw1OSwxLDEwMjcsNSw2MiwxLDU5LDE4MzIsMSw2MiwxMDksMTA5LDk3LDQsMiw1OSwxMDAsMTg0MywxODQ1LDEsOTE1LDU5LDEsOTg4LDExNCwxMDEsMTE4LDEwMSw1OSwxLDI4Niw0LDMsMTAxLDEwNSwxMjEsMTg2MywxODY5LDE4NzQsMTAwLDEwNSwxMDgsNTksMSwyOTAsMTE0LDk5LDU5LDEsMjg0LDU5LDEsMTA0MywxMTEsMTE2LDU5LDEsMjg4LDExNCw1OSwzLDU1MzQ5LDU2NTg2LDU5LDEsODkyMSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2MzgsMTAxLDk3LDExNiwxMDEsMTE0LDQsNiw2OSw3MCw3MSw3Niw4Myw4NCwxOTE1LDE5MzMsMTk0NCwxOTUzLDE5NTksMTk3MSwxMTMsMTE3LDk3LDEwOCw0LDIsNTksNzYsMTkyNSwxOTI3LDEsODgwNSwxMDEsMTE1LDExNSw1OSwxLDg5MjMsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMSw4ODA3LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSwxMDkxNCwxMDEsMTE1LDExNSw1OSwxLDg4MjMsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSwxMDg3OCwxMDUsMTA4LDEwMCwxMDEsNTksMSw4ODE5LDk5LDExNCw1OSwzLDU1MzQ5LDU2NDgyLDU5LDEsODgxMSw0LDgsNjUsOTcsOTksMTAyLDEwNSwxMTEsMTE1LDExNywyMDA1LDIwMTIsMjAyNiwyMDMyLDIwMzYsMjA0OSwyMDczLDIwODksODIsNjgsOTksMTIxLDU5LDEsMTA2Niw0LDIsOTksMTE2LDIwMTgsMjAyMywxMDEsMTA3LDU5LDEsNzExLDU5LDEsOTQsMTA1LDExNCw5OSw1OSwxLDI5MiwxMTQsNTksMSw4NDYwLDEwOCw5OCwxMDEsMTE0LDExNiw4MywxMTIsOTcsOTksMTAxLDU5LDEsODQ1OSw0LDIsMTEyLDExNCwyMDU1LDIwNTksMTAyLDU5LDEsODQ2MSwxMDUsMTIyLDExMSwxMTAsMTE2LDk3LDEwOCw3NiwxMDUsMTEwLDEwMSw1OSwxLDk0NzIsNCwyLDk5LDExNiwyMDc5LDIwODMsMTE0LDU5LDEsODQ1OSwxMTQsMTExLDEwNyw1OSwxLDI5NCwxMDksMTEyLDQsMiw2OCw2OSwyMDk3LDIxMDcsMTExLDExOSwxMTAsNzIsMTE3LDEwOSwxMTIsNTksMSw4NzgyLDExMywxMTcsOTcsMTA4LDU5LDEsODc4Myw0LDE0LDY5LDc0LDc5LDk3LDk5LDEwMCwxMDIsMTAzLDEwOSwxMTAsMTExLDExNSwxMTYsMTE3LDIxNDQsMjE0OSwyMTU1LDIxNjAsMjE3MSwyMTg5LDIxOTQsMjE5OCwyMjA5LDIyNDUsMjMwNywyMzI5LDIzMzQsMjM0MSw5OSwxMjEsNTksMSwxMDQ1LDEwOCwxMDUsMTAzLDU5LDEsMzA2LDk5LDEyMSw1OSwxLDEwMjUsOTksMTE3LDExNiwxMDEsNSwyMDUsMSw1OSwyMTY5LDEsMjA1LDQsMiwxMDUsMTIxLDIxNzcsMjE4NiwxMTQsOTksNSwyMDYsMSw1OSwyMTg0LDEsMjA2LDU5LDEsMTA0OCwxMTEsMTE2LDU5LDEsMzA0LDExNCw1OSwxLDg0NjUsMTE0LDk3LDExOCwxMDEsNSwyMDQsMSw1OSwyMjA3LDEsMjA0LDQsMyw1OSw5NywxMTIsMjIxNywyMjE5LDIyMzgsMSw4NDY1LDQsMiw5OSwxMDMsMjIyNSwyMjI5LDExNCw1OSwxLDI5OCwxMDUsMTEwLDk3LDExNCwxMjEsNzMsNTksMSw4NTIwLDEwOCwxMDUsMTAxLDExNSw1OSwxLDg2NTgsNCwyLDExNiwxMTgsMjI1MSwyMjgxLDQsMiw1OSwxMDEsMjI1NywyMjU5LDEsODc0OCw0LDIsMTAzLDExNCwyMjY1LDIyNzEsMTE0LDk3LDEwOCw1OSwxLDg3NDcsMTE1LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsNTksMSw4ODk4LDEwNSwxMTUsMTA1LDk4LDEwOCwxMDEsNCwyLDY3LDg0LDIyOTMsMjMwMCwxMTEsMTA5LDEwOSw5Nyw1OSwxLDgyOTEsMTA1LDEwOSwxMDEsMTE1LDU5LDEsODI5MCw0LDMsMTAzLDExMiwxMTYsMjMxNSwyMzIwLDIzMjUsMTExLDExMCw1OSwxLDMwMiwxMDIsNTksMyw1NTM0OSw1NjY0MCw5Nyw1OSwxLDkyMSw5OSwxMTQsNTksMSw4NDY0LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDI5Niw0LDIsMTA3LDEwOSwyMzQ3LDIzNTIsOTksMTIxLDU5LDEsMTAzMCwxMDgsNSwyMDcsMSw1OSwyMzU4LDEsMjA3LDQsNSw5OSwxMDIsMTExLDExNSwxMTcsMjM3MiwyMzg2LDIzOTEsMjM5NywyNDE0LDQsMiwxMDUsMTIxLDIzNzgsMjM4MywxMTQsOTksNTksMSwzMDgsNTksMSwxMDQ5LDExNCw1OSwzLDU1MzQ5LDU2NTg5LDExMiwxMDIsNTksMyw1NTM0OSw1NjY0MSw0LDIsOTksMTAxLDI0MDMsMjQwOCwxMTQsNTksMyw1NTM0OSw1NjQ4NSwxMTQsOTksMTIxLDU5LDEsMTAzMiwxMDcsOTksMTIxLDU5LDEsMTAyOCw0LDcsNzIsNzQsOTcsOTksMTAyLDExMSwxMTUsMjQzNiwyNDQxLDI0NDYsMjQ1MiwyNDY3LDI0NzIsMjQ3OCw5OSwxMjEsNTksMSwxMDYxLDk5LDEyMSw1OSwxLDEwMzYsMTEyLDExMiw5Nyw1OSwxLDkyMiw0LDIsMTAxLDEyMSwyNDU4LDI0NjQsMTAwLDEwNSwxMDgsNTksMSwzMTAsNTksMSwxMDUwLDExNCw1OSwzLDU1MzQ5LDU2NTkwLDExMiwxMDIsNTksMyw1NTM0OSw1NjY0Miw5OSwxMTQsNTksMyw1NTM0OSw1NjQ4Niw0LDExLDc0LDg0LDk3LDk5LDEwMSwxMDIsMTA4LDEwOSwxMTEsMTE1LDExNiwyNTA4LDI1MTMsMjUyMCwyNTYyLDI1ODUsMjk4MSwyOTg2LDMwMDQsMzAxMSwzMTQ2LDMxNjcsOTksMTIxLDU5LDEsMTAzMyw1LDYwLDEsNTksMjUxOCwxLDYwLDQsNSw5OSwxMDksMTEwLDExMiwxMTQsMjUzMiwyNTM4LDI1NDQsMjU0OCwyNTU4LDExNywxMTYsMTAxLDU5LDEsMzEzLDk4LDEwMCw5Nyw1OSwxLDkyMywxMDMsNTksMSwxMDIxOCwxMDgsOTcsOTksMTAxLDExNiwxMTQsMTAyLDU5LDEsODQ2NiwxMTQsNTksMSw4NjA2LDQsMyw5NywxMDEsMTIxLDI1NzAsMjU3NiwyNTgyLDExNCwxMTEsMTEwLDU5LDEsMzE3LDEwMCwxMDUsMTA4LDU5LDEsMzE1LDU5LDEsMTA1MSw0LDIsMTAyLDExNSwyNTkxLDI5MDcsMTE2LDQsMTAsNjUsNjcsNjgsNzAsODIsODQsODUsODYsOTcsMTE0LDI2MTQsMjY2MywyNjcyLDI3MjgsMjczNSwyNzYwLDI4MjAsMjg3MCwyODg4LDI4OTUsNCwyLDExMCwxMTQsMjYyMCwyNjMzLDEwMywxMDgsMTAxLDY2LDExNCw5Nyw5OSwxMDcsMTAxLDExNiw1OSwxLDEwMjE2LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw4MiwyNjQ0LDI2NDYsMjY1MSwxLDg1OTIsOTcsMTE0LDU5LDEsODY3NiwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY0NiwxMDEsMTA1LDEwOCwxMDUsMTEwLDEwMyw1OSwxLDg5NjgsMTExLDQsMiwxMTcsMTE5LDI2NzksMjY5Miw5OCwxMDgsMTAxLDY2LDExNCw5Nyw5OSwxMDcsMTAxLDExNiw1OSwxLDEwMjE0LDExMCw0LDIsODQsODYsMjY5OSwyNzEwLDEwMSwxMDEsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1OTMsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2NiwyNzIxLDI3MjMsMSw4NjQzLDk3LDExNCw1OSwxLDEwNTg1LDEwOCwxMTEsMTExLDExNCw1OSwxLDg5NzAsMTA1LDEwMywxMDQsMTE2LDQsMiw2NSw4NiwyNzQ1LDI3NTIsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU3NCw0LDIsMTAxLDExNCwyNzY2LDI3OTIsMTAxLDQsMyw1OSw2NSw4NiwyNzc1LDI3NzcsMjc4NCwxLDg4NjcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxMiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4NiwxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMyw1OSw2Niw2OSwyODA2LDI4MDgsMjgxMywxLDg4ODIsOTcsMTE0LDU5LDEsMTA3MDMsMTEzLDExNyw5NywxMDgsNTksMSw4ODg0LDExMiw0LDMsNjgsODQsODYsMjgyOSwyODQxLDI4NTIsMTExLDExOSwxMTAsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1NzcsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU5MiwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDI4NjMsMjg2NSwxLDg2MzksOTcsMTE0LDU5LDEsMTA1ODQsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2NiwyODgxLDI4ODMsMSw4NjM2LDk3LDExNCw1OSwxLDEwNTc4LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTYsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjAsMTE1LDQsNiw2OSw3MCw3MSw3Niw4Myw4NCwyOTIyLDI5MzYsMjk0NywyOTU2LDI5NjIsMjk3NCwxMTMsMTE3LDk3LDEwOCw3MSwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDEsODkyMiwxMTcsMTA4LDEwOCw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4MDYsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw1OSwxLDg4MjIsMTAxLDExNSwxMTUsNTksMSwxMDkxMywxMDgsOTcsMTEwLDExNiw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDEwODc3LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MTgsMTE0LDU5LDMsNTUzNDksNTY1OTEsNCwyLDU5LDEwMSwyOTkyLDI5OTQsMSw4OTIwLDEwMiwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY2NiwxMDUsMTAwLDExMSwxMTYsNTksMSwzMTksNCwzLDExMCwxMTIsMTE5LDMwMTksMzExMCwzMTE1LDEwMyw0LDQsNzYsODIsMTA4LDExNCwzMDMwLDMwNTgsMzA3MCwzMDk4LDEwMSwxMDIsMTE2LDQsMiw2NSw4MiwzMDM5LDMwNDYsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMjksMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMxLDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMCwxMDEsMTAyLDExNiw0LDIsOTcsMTE0LDMwNzksMzA4NiwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMiwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzQsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMzLDEwMiw1OSwzLDU1MzQ5LDU2NjQzLDEwMSwxMTQsNCwyLDc2LDgyLDMxMjMsMzEzNCwxMDEsMTAyLDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjAxLDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjAwLDQsMyw5OSwxMDQsMTE2LDMxNTQsMzE1OCwzMTYxLDExNCw1OSwxLDg0NjYsNTksMSw4NjI0LDExNCwxMTEsMTA3LDU5LDEsMzIxLDU5LDEsODgxMCw0LDgsOTcsOTksMTAxLDEwMiwxMDUsMTExLDExNSwxMTcsMzE4OCwzMTkyLDMxOTYsMzIyMiwzMjI3LDMyMzcsMzI0MywzMjQ4LDExMiw1OSwxLDEwNTAxLDEyMSw1OSwxLDEwNTIsNCwyLDEwMCwxMDgsMzIwMiwzMjEzLDEwNSwxMTcsMTA5LDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4Mjg3LDEwOCwxMDUsMTEwLDExNiwxMTQsMTAyLDU5LDEsODQ5OSwxMTQsNTksMyw1NTM0OSw1NjU5MiwxMTAsMTE3LDExNSw4MCwxMDgsMTE3LDExNSw1OSwxLDg3MjMsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjQ0LDk5LDExNCw1OSwxLDg0OTksNTksMSw5MjQsNCw5LDc0LDk3LDk5LDEwMSwxMDIsMTExLDExNSwxMTYsMTE3LDMyNzEsMzI3NiwzMjgzLDMzMDYsMzQyMiwzNDI3LDQxMjAsNDEyNiw0MTM3LDk5LDEyMSw1OSwxLDEwMzQsOTksMTE3LDExNiwxMDEsNTksMSwzMjMsNCwzLDk3LDEwMSwxMjEsMzI5MSwzMjk3LDMzMDMsMTE0LDExMSwxMTAsNTksMSwzMjcsMTAwLDEwNSwxMDgsNTksMSwzMjUsNTksMSwxMDUzLDQsMywxMDMsMTE1LDExOSwzMzE0LDMzODAsMzQxNSw5NywxMTYsMTA1LDExOCwxMDEsNCwzLDc3LDg0LDg2LDMzMjcsMzM0MCwzMzY1LDEwMSwxMDAsMTA1LDExNywxMDksODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsMTA0LDEwNSw0LDIsOTksMTEwLDMzNDgsMzM1NywxMDcsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsMTAxLDExNCwxMjEsODQsMTA0LDEwNSwxMTAsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsMTE2LDEwMSwxMDAsNCwyLDcxLDc2LDMzODksMzQwNSwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDcxLDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSw4ODExLDEwMSwxMTUsMTE1LDc2LDEwMSwxMTUsMTE1LDU5LDEsODgxMCw3NiwxMDUsMTEwLDEwMSw1OSwxLDEwLDExNCw1OSwzLDU1MzQ5LDU2NTkzLDQsNCw2NiwxMTAsMTEyLDExNiwzNDM3LDM0NDQsMzQ2MCwzNDY0LDExNCwxMDEsOTcsMTA3LDU5LDEsODI4OCw2NiwxMTQsMTAxLDk3LDEwNywxMDUsMTEwLDEwMyw4MywxMTIsOTcsOTksMTAxLDU5LDEsMTYwLDEwMiw1OSwxLDg0NjksNCwxMyw1OSw2Nyw2OCw2OSw3MSw3Miw3Niw3OCw4MCw4Miw4Myw4NCw4NiwzNDkyLDM0OTQsMzUxNywzNTM2LDM1NzgsMzY1NywzNjg1LDM3ODQsMzgyMywzODYwLDM5MTUsNDA2Niw0MTA3LDEsMTA5ODgsNCwyLDExMSwxMTcsMzUwMCwzNTEwLDExMCwxMDMsMTE0LDExNywxMDEsMTEwLDExNiw1OSwxLDg4MDIsMTEyLDY3LDk3LDExMiw1OSwxLDg4MTMsMTExLDExNyw5OCwxMDgsMTAxLDg2LDEwMSwxMTQsMTE2LDEwNSw5OSw5NywxMDgsNjYsOTcsMTE0LDU5LDEsODc0Miw0LDMsMTA4LDExMywxMjAsMzU0NCwzNTUyLDM1NzEsMTAxLDEwOSwxMDEsMTEwLDExNiw1OSwxLDg3MTMsMTE3LDk3LDEwOCw0LDIsNTksODQsMzU2MSwzNTYzLDEsODgwMCwxMDUsMTA4LDEwMCwxMDEsNTksMyw4NzcwLDgyNCwxMDUsMTE1LDExNiwxMTUsNTksMSw4NzA4LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNCw3LDU5LDY5LDcwLDcxLDc2LDgzLDg0LDM2MDAsMzYwMiwzNjA5LDM2MjEsMzYzMSwzNjM3LDM2NTAsMSw4ODE1LDExMywxMTcsOTcsMTA4LDU5LDEsODgxNywxMTcsMTA4LDEwOCw2OSwxMTMsMTE3LDk3LDEwOCw1OSwzLDg4MDcsODI0LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMyw4ODExLDgyNCwxMDEsMTE1LDExNSw1OSwxLDg4MjUsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMywxMDg3OCw4MjQsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODgyMSwxMTcsMTA5LDExMiw0LDIsNjgsNjksMzY2NiwzNjc3LDExMSwxMTksMTEwLDcyLDExNywxMDksMTEyLDU5LDMsODc4Miw4MjQsMTEzLDExNyw5NywxMDgsNTksMyw4NzgzLDgyNCwxMDEsNCwyLDEwMiwxMTUsMzY5MiwzNzI0LDExNiw4NCwxMTQsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDMsNTksNjYsNjksMzcwOSwzNzExLDM3MTcsMSw4OTM4LDk3LDExNCw1OSwzLDEwNzAzLDgyNCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg5NDAsMTE1LDQsNiw1OSw2OSw3MSw3Niw4Myw4NCwzNzM5LDM3NDEsMzc0OCwzNzU3LDM3NjQsMzc3NywxLDg4MTQsMTEzLDExNyw5NywxMDgsNTksMSw4ODE2LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSw4ODI0LDEwMSwxMTUsMTE1LDU5LDMsODgxMCw4MjQsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMywxMDg3Nyw4MjQsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODgyMCwxMDEsMTE1LDExNiwxMDEsMTAwLDQsMiw3MSw3NiwzNzk1LDM4MTIsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw3MSwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDMsMTA5MTQsODI0LDEwMSwxMTUsMTE1LDc2LDEwMSwxMTUsMTE1LDU5LDMsMTA5MTMsODI0LDExNCwxMDEsOTksMTAxLDEwMCwxMDEsMTE1LDQsMyw1OSw2OSw4MywzODM4LDM4NDAsMzg0OCwxLDg4MzIsMTEzLDExNyw5NywxMDgsNTksMywxMDkyNyw4MjQsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4OTI4LDQsMiwxMDEsMTA1LDM4NjYsMzg4MSwxMTgsMTAxLDExNCwxMTUsMTAxLDY5LDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDU5LDEsODcxNiwxMDMsMTA0LDExNiw4NCwxMTQsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDMsNTksNjYsNjksMzkwMCwzOTAyLDM5MDgsMSw4OTM5LDk3LDExNCw1OSwzLDEwNzA0LDgyNCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg5NDEsNCwyLDExMywxMTcsMzkyMSwzOTczLDExNyw5NywxMTQsMTAxLDgzLDExNyw0LDIsOTgsMTEyLDM5MzMsMzk1MiwxMTUsMTAxLDExNiw0LDIsNTksNjksMzk0MiwzOTQ1LDMsODg0Nyw4MjQsMTEzLDExNyw5NywxMDgsNTksMSw4OTMwLDEwMSwxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDM5NjMsMzk2NiwzLDg4NDgsODI0LDExMywxMTcsOTcsMTA4LDU5LDEsODkzMSw0LDMsOTgsOTksMTEyLDM5ODEsNDAwMCw0MDQ1LDExNSwxMDEsMTE2LDQsMiw1OSw2OSwzOTkwLDM5OTMsMyw4ODM0LDg0MDIsMTEzLDExNyw5NywxMDgsNTksMSw4ODQwLDk5LDEwMSwxMDEsMTAwLDExNSw0LDQsNTksNjksODMsODQsNDAxNSw0MDE3LDQwMjUsNDAzNywxLDg4MzMsMTEzLDExNyw5NywxMDgsNTksMywxMDkyOCw4MjQsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4OTI5LDEwNSwxMDgsMTAwLDEwMSw1OSwzLDg4MzEsODI0LDEwMSwxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDQwNTYsNDA1OSwzLDg4MzUsODQwMiwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4NDEsMTA1LDEwOCwxMDAsMTAxLDQsNCw1OSw2OSw3MCw4NCw0MDgwLDQwODIsNDA4OSw0MTAwLDEsODc2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3NzIsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMSw4Nzc1LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg3NzcsMTAxLDExNCwxMTYsMTA1LDk5LDk3LDEwOCw2Niw5NywxMTQsNTksMSw4NzQwLDk5LDExNCw1OSwzLDU1MzQ5LDU2NDg5LDEwNSwxMDgsMTAwLDEwMSw1LDIwOSwxLDU5LDQxMzUsMSwyMDksNTksMSw5MjUsNCwxNCw2OSw5Nyw5OSwxMDAsMTAyLDEwMywxMDksMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE4LDQxNzAsNDE3Niw0MTg3LDQyMDUsNDIxMiw0MjE3LDQyMjgsNDI1Myw0MjU5LDQyOTIsNDI5NSw0MzE2LDQzMzcsNDM0NiwxMDgsMTA1LDEwMyw1OSwxLDMzOCw5OSwxMTcsMTE2LDEwMSw1LDIxMSwxLDU5LDQxODUsMSwyMTEsNCwyLDEwNSwxMjEsNDE5Myw0MjAyLDExNCw5OSw1LDIxMiwxLDU5LDQyMDAsMSwyMTIsNTksMSwxMDU0LDk4LDEwOCw5Nyw5OSw1OSwxLDMzNiwxMTQsNTksMyw1NTM0OSw1NjU5NCwxMTQsOTcsMTE4LDEwMSw1LDIxMCwxLDU5LDQyMjYsMSwyMTAsNCwzLDk3LDEwMSwxMDUsNDIzNiw0MjQxLDQyNDYsOTksMTE0LDU5LDEsMzMyLDEwMyw5Nyw1OSwxLDkzNyw5OSwxMTQsMTExLDExMCw1OSwxLDkyNywxMTIsMTAyLDU5LDMsNTUzNDksNTY2NDYsMTAxLDExMCw2NywxMTcsMTE0LDEwOCwxMjEsNCwyLDY4LDgxLDQyNzIsNDI4NSwxMTEsMTE3LDk4LDEwOCwxMDEsODEsMTE3LDExMSwxMTYsMTAxLDU5LDEsODIyMCwxMTcsMTExLDExNiwxMDEsNTksMSw4MjE2LDU5LDEsMTA4MzYsNCwyLDk5LDEwOCw0MzAxLDQzMDYsMTE0LDU5LDMsNTUzNDksNTY0OTAsOTcsMTE1LDEwNCw1LDIxNiwxLDU5LDQzMTQsMSwyMTYsMTA1LDQsMiwxMDgsMTA5LDQzMjMsNDMzMiwxMDAsMTAxLDUsMjEzLDEsNTksNDMzMCwxLDIxMywxMDEsMTE1LDU5LDEsMTA4MDcsMTA5LDEwOCw1LDIxNCwxLDU5LDQzNDQsMSwyMTQsMTAxLDExNCw0LDIsNjYsODAsNDM1NCw0MzgwLDQsMiw5NywxMTQsNDM2MCw0MzY0LDExNCw1OSwxLDgyNTQsOTcsOTksNCwyLDEwMSwxMDcsNDM3Miw0Mzc1LDU5LDEsOTE4MiwxMDEsMTE2LDU5LDEsOTE0MCw5NywxMTQsMTAxLDExMCwxMTYsMTA0LDEwMSwxMTUsMTA1LDExNSw1OSwxLDkxODAsNCw5LDk3LDk5LDEwMiwxMDQsMTA1LDEwOCwxMTEsMTE0LDExNSw0NDEzLDQ0MjIsNDQyNiw0NDMxLDQ0MzUsNDQzOCw0NDQ4LDQ0NzEsNDU2MSwxMTQsMTE2LDEwNSw5NywxMDgsNjgsNTksMSw4NzA2LDEyMSw1OSwxLDEwNTUsMTE0LDU5LDMsNTUzNDksNTY1OTUsMTA1LDU5LDEsOTM0LDU5LDEsOTI4LDExNywxMTUsNzcsMTA1LDExMCwxMTcsMTE1LDU5LDEsMTc3LDQsMiwxMDUsMTEyLDQ0NTQsNDQ2NywxMTAsOTksOTcsMTE0LDEwMSwxMTIsMTA4LDk3LDExMCwxMDEsNTksMSw4NDYwLDEwMiw1OSwxLDg0NzMsNCw0LDU5LDEwMSwxMDUsMTExLDQ0ODEsNDQ4Myw0NTI2LDQ1MzEsMSwxMDkzOSw5OSwxMDEsMTAwLDEwMSwxMTUsNCw0LDU5LDY5LDgzLDg0LDQ0OTgsNDUwMCw0NTA3LDQ1MTksMSw4ODI2LDExMywxMTcsOTcsMTA4LDU5LDEsMTA5MjcsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4ODI4LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MzAsMTA5LDEwMSw1OSwxLDgyNDMsNCwyLDEwMCwxMTIsNDUzNyw0NTQzLDExNyw5OSwxMTYsNTksMSw4NzE5LDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDQsMiw1OSw5Nyw0NTU1LDQ1NTcsMSw4NzU5LDEwOCw1OSwxLDg3MzMsNCwyLDk5LDEwNSw0NTY3LDQ1NzIsMTE0LDU5LDMsNTUzNDksNTY0OTEsNTksMSw5MzYsNCw0LDg1LDEwMiwxMTEsMTE1LDQ1ODUsNDU5NCw0NTk5LDQ2MDQsNzksODQsNSwzNCwxLDU5LDQ1OTIsMSwzNCwxMTQsNTksMyw1NTM0OSw1NjU5NiwxMTIsMTAyLDU5LDEsODQ3NCw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5Miw0LDEyLDY2LDY5LDk3LDk5LDEwMSwxMDIsMTA0LDEwNSwxMTEsMTE0LDExNSwxMTcsNDYzNiw0NjQyLDQ2NTAsNDY4MSw0NzA0LDQ3NjMsNDc2Nyw0NzcxLDUwNDcsNTA2OSw1MDgxLDUwOTQsOTcsMTE0LDExNCw1OSwxLDEwNTEyLDcxLDUsMTc0LDEsNTksNDY0OCwxLDE3NCw0LDMsOTksMTEwLDExNCw0NjU4LDQ2NjQsNDY2OCwxMTcsMTE2LDEwMSw1OSwxLDM0MCwxMDMsNTksMSwxMDIxOSwxMTQsNCwyLDU5LDExNiw0Njc1LDQ2NzcsMSw4NjA4LDEwOCw1OSwxLDEwNTE4LDQsMyw5NywxMDEsMTIxLDQ2ODksNDY5NSw0NzAxLDExNCwxMTEsMTEwLDU5LDEsMzQ0LDEwMCwxMDUsMTA4LDU5LDEsMzQyLDU5LDEsMTA1Niw0LDIsNTksMTE4LDQ3MTAsNDcxMiwxLDg0NzYsMTAxLDExNCwxMTUsMTAxLDQsMiw2OSw4NSw0NzIyLDQ3NDgsNCwyLDEwOCwxMTMsNDcyOCw0NzM2LDEwMSwxMDksMTAxLDExMCwxMTYsNTksMSw4NzE1LDExNywxMDUsMTA4LDEwNSw5OCwxMTQsMTA1LDExNywxMDksNTksMSw4NjUxLDExMiw2OSwxMTMsMTE3LDEwNSwxMDgsMTA1LDk4LDExNCwxMDUsMTE3LDEwOSw1OSwxLDEwNjA3LDExNCw1OSwxLDg0NzYsMTExLDU5LDEsOTI5LDEwMywxMDQsMTE2LDQsOCw2NSw2Nyw2OCw3MCw4NCw4NSw4Niw5Nyw0NzkyLDQ4NDAsNDg0OSw0OTA1LDQ5MTIsNDk3Miw1MDIyLDUwNDAsNCwyLDExMCwxMTQsNDc5OCw0ODExLDEwMywxMDgsMTAxLDY2LDExNCw5Nyw5OSwxMDcsMTAxLDExNiw1OSwxLDEwMjE3LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw3Niw0ODIyLDQ4MjQsNDgyOSwxLDg1OTQsOTcsMTE0LDU5LDEsODY3NywxMDEsMTAyLDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjQ0LDEwMSwxMDUsMTA4LDEwNSwxMTAsMTAzLDU5LDEsODk2OSwxMTEsNCwyLDExNywxMTksNDg1Niw0ODY5LDk4LDEwOCwxMDEsNjYsMTE0LDk3LDk5LDEwNywxMDEsMTE2LDU5LDEsMTAyMTUsMTEwLDQsMiw4NCw4Niw0ODc2LDQ4ODcsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4OSwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDQ4OTgsNDkwMCwxLDg2NDIsOTcsMTE0LDU5LDEsMTA1ODEsMTA4LDExMSwxMTEsMTE0LDU5LDEsODk3MSw0LDIsMTAxLDExNCw0OTE4LDQ5NDQsMTAxLDQsMyw1OSw2NSw4Niw0OTI3LDQ5MjksNDkzNiwxLDg4NjYsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxNCwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4NywxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMyw1OSw2Niw2OSw0OTU4LDQ5NjAsNDk2NSwxLDg4ODMsOTcsMTE0LDU5LDEsMTA3MDQsMTEzLDExNyw5NywxMDgsNTksMSw4ODg1LDExMiw0LDMsNjgsODQsODYsNDk4MSw0OTkzLDUwMDQsMTExLDExOSwxMTAsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1NzUsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4OCwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDUwMTUsNTAxNywxLDg2MzgsOTcsMTE0LDU5LDEsMTA1ODAsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2Niw1MDMzLDUwMzUsMSw4NjQwLDk3LDExNCw1OSwxLDEwNTc5LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTgsNCwyLDExMiwxMTcsNTA1Myw1MDU3LDEwMiw1OSwxLDg0NzcsMTEwLDEwMCw3MywxMDksMTEyLDEwOCwxMDUsMTAxLDExNSw1OSwxLDEwNjA4LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjY3LDQsMiw5OSwxMDQsNTA4Nyw1MDkxLDExNCw1OSwxLDg0NzUsNTksMSw4NjI1LDEwOCwxMDEsNjgsMTAxLDEwOCw5NywxMjEsMTAxLDEwMCw1OSwxLDEwNzQwLDQsMTMsNzIsNzksOTcsOTksMTAyLDEwNCwxMDUsMTA5LDExMSwxMTMsMTE1LDExNiwxMTcsNTEzNCw1MTUwLDUxNTcsNTE2NCw1MTk4LDUyMDMsNTI1OSw1MjY1LDUyNzcsNTI4Myw1Mzc0LDUzODAsNTM4NSw0LDIsNjcsOTksNTE0MCw1MTQ2LDcyLDk5LDEyMSw1OSwxLDEwNjUsMTIxLDU5LDEsMTA2NCw3MCw4NCw5OSwxMjEsNTksMSwxMDY4LDk5LDExNywxMTYsMTAxLDU5LDEsMzQ2LDQsNSw1OSw5NywxMDEsMTA1LDEyMSw1MTc2LDUxNzgsNTE4NCw1MTkwLDUxOTUsMSwxMDk0MCwxMTQsMTExLDExMCw1OSwxLDM1MiwxMDAsMTA1LDEwOCw1OSwxLDM1MCwxMTQsOTksNTksMSwzNDgsNTksMSwxMDU3LDExNCw1OSwzLDU1MzQ5LDU2NTk4LDExMSwxMTQsMTE2LDQsNCw2OCw3Niw4Miw4NSw1MjE2LDUyMjcsNTIzOCw1MjUwLDExMSwxMTksMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTUsMTAxLDEwMiwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5MiwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5NCwxMTIsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5MywxMDMsMTA5LDk3LDU5LDEsOTMxLDk3LDEwOCwxMDgsNjcsMTA1LDExNCw5OSwxMDgsMTAxLDU5LDEsODcyOCwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NTAsNCwyLDExNCwxMTcsNTI4OSw1MjkzLDExNiw1OSwxLDg3MzAsOTcsMTE0LDEwMSw0LDQsNTksNzMsODMsODUsNTMwNiw1MzA4LDUzMjIsNTM2NywxLDk2MzMsMTEwLDExNiwxMDEsMTE0LDExNSwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDU5LDEsODg1MSwxMTcsNCwyLDk4LDExMiw1MzI5LDUzNDcsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDUzMzgsNTM0MCwxLDg4NDcsMTEzLDExNyw5NywxMDgsNTksMSw4ODQ5LDEwMSwxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDUzNTgsNTM2MCwxLDg4NDgsMTEzLDExNyw5NywxMDgsNTksMSw4ODUwLDExMCwxMDUsMTExLDExMCw1OSwxLDg4NTIsOTksMTE0LDU5LDMsNTUzNDksNTY0OTQsOTcsMTE0LDU5LDEsODkwMiw0LDQsOTgsOTksMTA5LDExMiw1Mzk1LDU0MjAsNTQ3NSw1NDc4LDQsMiw1OSwxMTUsNTQwMSw1NDAzLDEsODkxMiwxMDEsMTE2LDQsMiw1OSw2OSw1NDExLDU0MTMsMSw4OTEyLDExMywxMTcsOTcsMTA4LDU5LDEsODgzOCw0LDIsOTksMTA0LDU0MjYsNTQ2OCwxMDEsMTAxLDEwMCwxMTUsNCw0LDU5LDY5LDgzLDg0LDU0NDAsNTQ0Miw1NDQ5LDU0NjEsMSw4ODI3LDExMywxMTcsOTcsMTA4LDU5LDEsMTA5MjgsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4ODI5LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MzEsODQsMTA0LDk3LDExNiw1OSwxLDg3MTUsNTksMSw4NzIxLDQsMyw1OSwxMDEsMTE1LDU0ODYsNTQ4OCw1NTA3LDEsODkxMywxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDU0OTgsNTUwMCwxLDg4MzUsMTEzLDExNyw5NywxMDgsNTksMSw4ODM5LDEwMSwxMTYsNTksMSw4OTEzLDQsMTEsNzIsODIsODMsOTcsOTksMTAyLDEwNCwxMDUsMTExLDExNCwxMTUsNTUzNiw1NTQ2LDU1NTIsNTU2Nyw1NTc5LDU2MDIsNTYwNyw1NjU1LDU2OTUsNTcwMSw1NzExLDc5LDgyLDc4LDUsMjIyLDEsNTksNTU0NCwxLDIyMiw2NSw2OCw2OSw1OSwxLDg0ODIsNCwyLDcyLDk5LDU1NTgsNTU2Myw5OSwxMjEsNTksMSwxMDM1LDEyMSw1OSwxLDEwNjIsNCwyLDk4LDExNyw1NTczLDU1NzYsNTksMSw5LDU5LDEsOTMyLDQsMyw5NywxMDEsMTIxLDU1ODcsNTU5Myw1NTk5LDExNCwxMTEsMTEwLDU5LDEsMzU2LDEwMCwxMDUsMTA4LDU5LDEsMzU0LDU5LDEsMTA1OCwxMTQsNTksMyw1NTM0OSw1NjU5OSw0LDIsMTAxLDEwNSw1NjEzLDU2MzEsNCwyLDExNCwxMTYsNTYxOSw1NjI3LDEwMSwxMDIsMTExLDExNCwxMDEsNTksMSw4NzU2LDk3LDU5LDEsOTIwLDQsMiw5OSwxMTAsNTYzNyw1NjQ3LDEwNyw4MywxMTIsOTcsOTksMTAxLDU5LDMsODI4Nyw4MjAyLDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAxLDEwOCwxMDAsMTAxLDQsNCw1OSw2OSw3MCw4NCw1NjY4LDU2NzAsNTY3Nyw1Njg4LDEsODc2NCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3NzEsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMSw4NzczLDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg3NzYsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjUxLDEwNSwxMTIsMTA4LDEwMSw2OCwxMTEsMTE2LDU5LDEsODQxMSw0LDIsOTksMTE2LDU3MTcsNTcyMiwxMTQsNTksMyw1NTM0OSw1NjQ5NSwxMTQsMTExLDEwNyw1OSwxLDM1OCw0LDE0LDk3LDk4LDk5LDEwMCwxMDIsMTAzLDEwOSwxMTAsMTExLDExMiwxMTQsMTE1LDExNiwxMTcsNTc1OCw1Nzg5LDU4MDUsNTgyMyw1ODMwLDU4MzUsNTg0Niw1ODUyLDU5MjEsNTkzNyw2MDg5LDYwOTUsNjEwMSw2MTA4LDQsMiw5OSwxMTQsNTc2NCw1Nzc0LDExNywxMTYsMTAxLDUsMjE4LDEsNTksNTc3MiwxLDIxOCwxMTQsNCwyLDU5LDExMSw1NzgxLDU3ODMsMSw4NjA3LDk5LDEwNSwxMTQsNTksMSwxMDU2OSwxMTQsNCwyLDk5LDEwMSw1Nzk2LDU4MDAsMTIxLDU5LDEsMTAzOCwxMTgsMTAxLDU5LDEsMzY0LDQsMiwxMDUsMTIxLDU4MTEsNTgyMCwxMTQsOTksNSwyMTksMSw1OSw1ODE4LDEsMjE5LDU5LDEsMTA1OSw5OCwxMDgsOTcsOTksNTksMSwzNjgsMTE0LDU5LDMsNTUzNDksNTY2MDAsMTE0LDk3LDExOCwxMDEsNSwyMTcsMSw1OSw1ODQ0LDEsMjE3LDk3LDk5LDExNCw1OSwxLDM2Miw0LDIsMTAwLDEwNSw1ODU4LDU5MDUsMTAxLDExNCw0LDIsNjYsODAsNTg2Niw1ODkyLDQsMiw5NywxMTQsNTg3Miw1ODc2LDExNCw1OSwxLDk1LDk3LDk5LDQsMiwxMDEsMTA3LDU4ODQsNTg4Nyw1OSwxLDkxODMsMTAxLDExNiw1OSwxLDkxNDEsOTcsMTE0LDEwMSwxMTAsMTE2LDEwNCwxMDEsMTE1LDEwNSwxMTUsNTksMSw5MTgxLDExMSwxMTAsNCwyLDU5LDgwLDU5MTMsNTkxNSwxLDg4OTksMTA4LDExNywxMTUsNTksMSw4ODQ2LDQsMiwxMDMsMTEyLDU5MjcsNTkzMiwxMTEsMTEwLDU5LDEsMzcwLDEwMiw1OSwzLDU1MzQ5LDU2NjUyLDQsOCw2NSw2OCw2OSw4NCw5NywxMDAsMTEyLDExNSw1OTU1LDU5ODUsNTk5Niw2MDA5LDYwMjYsNjAzMyw2MDQ0LDYwNzUsMTE0LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw2OCw1OTY3LDU5NjksNTk3NCwxLDg1OTMsOTcsMTE0LDU5LDEsMTA1MTQsMTExLDExOSwxMTAsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY0NSwxMTEsMTE5LDExMCw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk3LDExMywxMTcsMTA1LDEwOCwxMDUsOTgsMTE0LDEwNSwxMTcsMTA5LDU5LDEsMTA2MDYsMTAxLDEwMSw0LDIsNTksNjUsNjAxNyw2MDE5LDEsODg2OSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjEzLDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTcsMTExLDExOSwxMTAsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY2MSwxMDEsMTE0LDQsMiw3Niw4Miw2MDUyLDYwNjMsMTAxLDEwMiwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5OCwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5OSwxMDUsNCwyLDU5LDEwOCw2MDgyLDYwODQsMSw5NzgsMTExLDExMCw1OSwxLDkzMywxMDUsMTEwLDEwMyw1OSwxLDM2Niw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5NiwxMDUsMTA4LDEwMCwxMDEsNTksMSwzNjAsMTA5LDEwOCw1LDIyMCwxLDU5LDYxMTUsMSwyMjAsNCw5LDY4LDk4LDk5LDEwMCwxMDEsMTAyLDExMSwxMTUsMTE4LDYxMzcsNjE0Myw2MTQ4LDYxNTIsNjE2Niw2MjUwLDYyNTUsNjI2MSw2MjY3LDk3LDExNSwxMDQsNTksMSw4ODc1LDk3LDExNCw1OSwxLDEwOTg3LDEyMSw1OSwxLDEwNDIsOTcsMTE1LDEwNCw0LDIsNTksMTA4LDYxNjEsNjE2MywxLDg4NzMsNTksMSwxMDk4Miw0LDIsMTAxLDExNCw2MTcyLDYxNzUsNTksMSw4ODk3LDQsMyw5OCwxMTYsMTIxLDYxODMsNjE4OCw2MjM4LDk3LDExNCw1OSwxLDgyMTQsNCwyLDU5LDEwNSw2MTk0LDYxOTYsMSw4MjE0LDk5LDk3LDEwOCw0LDQsNjYsNzYsODMsODQsNjIwOSw2MjE0LDYyMjAsNjIzMSw5NywxMTQsNTksMSw4NzM5LDEwNSwxMTAsMTAxLDU5LDEsMTI0LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDU5LDEsMTAwNzIsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODc2OCw4NCwxMDQsMTA1LDExMCw4MywxMTIsOTcsOTksMTAxLDU5LDEsODIwMiwxMTQsNTksMyw1NTM0OSw1NjYwMSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NTMsOTksMTE0LDU5LDMsNTUzNDksNTY0OTcsMTAwLDk3LDExNSwxMDQsNTksMSw4ODc0LDQsNSw5OSwxMDEsMTAyLDExMSwxMTUsNjI4Niw2MjkyLDYyOTgsNjMwMyw2MzA5LDEwNSwxMTQsOTksNTksMSwzNzIsMTAwLDEwMywxMDEsNTksMSw4ODk2LDExNCw1OSwzLDU1MzQ5LDU2NjAyLDExMiwxMDIsNTksMyw1NTM0OSw1NjY1NCw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5OCw0LDQsMTAyLDEwNSwxMTEsMTE1LDYzMjUsNjMzMCw2MzMzLDYzMzksMTE0LDU5LDMsNTUzNDksNTY2MDMsNTksMSw5MjYsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjU1LDk5LDExNCw1OSwzLDU1MzQ5LDU2NDk5LDQsOSw2NSw3Myw4NSw5Nyw5OSwxMDIsMTExLDExNSwxMTcsNjM2NSw2MzcwLDYzNzUsNjM4MCw2MzkxLDY0MDUsNjQxMCw2NDE2LDY0MjIsOTksMTIxLDU5LDEsMTA3MSw5OSwxMjEsNTksMSwxMDMxLDk5LDEyMSw1OSwxLDEwNzAsOTksMTE3LDExNiwxMDEsNSwyMjEsMSw1OSw2Mzg5LDEsMjIxLDQsMiwxMDUsMTIxLDYzOTcsNjQwMiwxMTQsOTksNTksMSwzNzQsNTksMSwxMDY3LDExNCw1OSwzLDU1MzQ5LDU2NjA0LDExMiwxMDIsNTksMyw1NTM0OSw1NjY1Niw5OSwxMTQsNTksMyw1NTM0OSw1NjUwMCwxMDksMTA4LDU5LDEsMzc2LDQsOCw3Miw5Nyw5OSwxMDAsMTAxLDEwMiwxMTEsMTE1LDY0NDUsNjQ1MCw2NDU3LDY0NzIsNjQ3Nyw2NTAxLDY1MDUsNjUxMCw5OSwxMjEsNTksMSwxMDQ2LDk5LDExNywxMTYsMTAxLDU5LDEsMzc3LDQsMiw5NywxMjEsNjQ2Myw2NDY5LDExNCwxMTEsMTEwLDU5LDEsMzgxLDU5LDEsMTA0NywxMTEsMTE2LDU5LDEsMzc5LDQsMiwxMTQsMTE2LDY0ODMsNjQ5NywxMTEsODcsMTA1LDEwMCwxMTYsMTA0LDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAzLDk3LDU5LDEsOTE4LDExNCw1OSwxLDg0ODgsMTEyLDEwMiw1OSwxLDg0ODQsOTksMTE0LDU5LDMsNTUzNDksNTY1MDEsNCwxNiw5Nyw5OCw5OSwxMDEsMTAyLDEwMywxMDgsMTA5LDExMCwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMTksNjU1MCw2NTYxLDY1NjgsNjYxMiw2NjIyLDY2MzQsNjY0NSw2NjcyLDY2OTksNjg1NCw2ODcwLDY5MjMsNjkzMyw2OTYzLDY5NzQsNjk4Myw5OSwxMTcsMTE2LDEwMSw1LDIyNSwxLDU5LDY1NTksMSwyMjUsMTE0LDEwMSwxMTgsMTAxLDU5LDEsMjU5LDQsNiw1OSw2OSwxMDAsMTA1LDExNywxMjEsNjU4Miw2NTg0LDY1ODgsNjU5MSw2NjAwLDY2MDksMSw4NzY2LDU5LDMsODc2Niw4MTksNTksMSw4NzY3LDExNCw5OSw1LDIyNiwxLDU5LDY1OTgsMSwyMjYsMTE2LDEwMSw1LDE4MCwxLDU5LDY2MDcsMSwxODAsNTksMSwxMDcyLDEwOCwxMDUsMTAzLDUsMjMwLDEsNTksNjYyMCwxLDIzMCw0LDIsNTksMTE0LDY2MjgsNjYzMCwxLDgyODksNTksMyw1NTM0OSw1NjYwNiwxMTQsOTcsMTE4LDEwMSw1LDIyNCwxLDU5LDY2NDMsMSwyMjQsNCwyLDEwMSwxMTIsNjY1MSw2NjY3LDQsMiwxMDIsMTEyLDY2NTcsNjY2MywxMTUsMTIxLDEwOSw1OSwxLDg1MDEsMTA0LDU5LDEsODUwMSwxMDQsOTcsNTksMSw5NDUsNCwyLDk3LDExMiw2Njc4LDY2OTIsNCwyLDk5LDEwOCw2Njg0LDY2ODgsMTE0LDU5LDEsMjU3LDEwMyw1OSwxLDEwODE1LDUsMzgsMSw1OSw2Njk3LDEsMzgsNCwyLDEwMCwxMDMsNjcwNSw2NzM3LDQsNSw1OSw5NywxMDAsMTE1LDExOCw2NzE3LDY3MTksNjcyNCw2NzI3LDY3MzQsMSw4NzQzLDExMCwxMDAsNTksMSwxMDgzNyw1OSwxLDEwODQ0LDEwOCwxMTEsMTEyLDEwMSw1OSwxLDEwODQwLDU5LDEsMTA4NDIsNCw3LDU5LDEwMSwxMDgsMTA5LDExNCwxMTUsMTIyLDY3NTMsNjc1NSw2NzU4LDY3NjIsNjgxNCw2ODM1LDY4NDgsMSw4NzM2LDU5LDEsMTA2NjAsMTAxLDU5LDEsODczNiwxMTUsMTAwLDQsMiw1OSw5Nyw2NzcwLDY3NzIsMSw4NzM3LDQsOCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDY3OTAsNjc5Myw2Nzk2LDY3OTksNjgwMiw2ODA1LDY4MDgsNjgxMSw1OSwxLDEwNjY0LDU5LDEsMTA2NjUsNTksMSwxMDY2Niw1OSwxLDEwNjY3LDU5LDEsMTA2NjgsNTksMSwxMDY2OSw1OSwxLDEwNjcwLDU5LDEsMTA2NzEsMTE2LDQsMiw1OSwxMTgsNjgyMSw2ODIzLDEsODczNSw5OCw0LDIsNTksMTAwLDY4MzAsNjgzMiwxLDg4OTQsNTksMSwxMDY1Myw0LDIsMTEyLDExNiw2ODQxLDY4NDUsMTA0LDU5LDEsODczOCw1OSwxLDE5Nyw5NywxMTQsMTE0LDU5LDEsOTA4NCw0LDIsMTAzLDExMiw2ODYwLDY4NjUsMTExLDExMCw1OSwxLDI2MSwxMDIsNTksMyw1NTM0OSw1NjY1OCw0LDcsNTksNjksOTcsMTAxLDEwNSwxMTEsMTEyLDY4ODYsNjg4OCw2ODkxLDY4OTcsNjkwMCw2OTA0LDY5MDgsMSw4Nzc2LDU5LDEsMTA4NjQsOTksMTA1LDExNCw1OSwxLDEwODYzLDU5LDEsODc3OCwxMDAsNTksMSw4Nzc5LDExNSw1OSwxLDM5LDExNCwxMTEsMTIwLDQsMiw1OSwxMDEsNjkxNyw2OTE5LDEsODc3NiwxMTMsNTksMSw4Nzc4LDEwNSwxMTAsMTAzLDUsMjI5LDEsNTksNjkzMSwxLDIyOSw0LDMsOTksMTE2LDEyMSw2OTQxLDY5NDYsNjk0OSwxMTQsNTksMyw1NTM0OSw1NjUwMiw1OSwxLDQyLDEwOSwxMTIsNCwyLDU5LDEwMSw2OTU3LDY5NTksMSw4Nzc2LDExMyw1OSwxLDg3ODEsMTA1LDEwOCwxMDAsMTAxLDUsMjI3LDEsNTksNjk3MiwxLDIyNywxMDksMTA4LDUsMjI4LDEsNTksNjk4MSwxLDIyOCw0LDIsOTksMTA1LDY5ODksNjk5NywxMTEsMTEwLDEwNSwxMTAsMTE2LDU5LDEsODc1NSwxMTAsMTE2LDU5LDEsMTA3NjksNCwxNiw3OCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDUsMTA3LDEwOCwxMTAsMTExLDExMiwxMTQsMTE1LDExNyw3MDM2LDcwNDEsNzExOSw3MTM1LDcxNDksNzE1NSw3MjE5LDcyMjQsNzM0Nyw3MzU0LDc0NjMsNzQ4OSw3Nzg2LDc3OTMsNzgxNCw3ODY2LDExMSwxMTYsNTksMSwxMDk4OSw0LDIsOTksMTE0LDcwNDcsNzA5NCwxMDcsNCw0LDk5LDEwMSwxMTIsMTE1LDcwNTgsNzA2NCw3MDczLDcwODAsMTExLDExMCwxMDMsNTksMSw4NzgwLDExMiwxMTUsMTA1LDEwOCwxMTEsMTEwLDU5LDEsMTAxNCwxMTQsMTA1LDEwOSwxMDEsNTksMSw4MjQ1LDEwNSwxMDksNCwyLDU5LDEwMSw3MDg4LDcwOTAsMSw4NzY1LDExMyw1OSwxLDg5MDksNCwyLDExOCwxMTksNzEwMCw3MTA1LDEwMSwxMDEsNTksMSw4ODkzLDEwMSwxMDAsNCwyLDU5LDEwMyw3MTEzLDcxMTUsMSw4OTY1LDEwMSw1OSwxLDg5NjUsMTE0LDEwNyw0LDIsNTksMTE2LDcxMjcsNzEyOSwxLDkxNDEsOTgsMTE0LDEwNyw1OSwxLDkxNDIsNCwyLDExMSwxMjEsNzE0MSw3MTQ2LDExMCwxMDMsNTksMSw4NzgwLDU5LDEsMTA3MywxMTMsMTE3LDExMSw1OSwxLDgyMjIsNCw1LDk5LDEwOSwxMTIsMTE0LDExNiw3MTY3LDcxODEsNzE4OCw3MTkzLDcxOTksOTcsMTE3LDExNSw0LDIsNTksMTAxLDcxNzYsNzE3OCwxLDg3NTcsNTksMSw4NzU3LDExMiwxMTYsMTIxLDExOCw1OSwxLDEwNjcyLDExNSwxMDUsNTksMSwxMDE0LDExMCwxMTEsMTE3LDU5LDEsODQ5Miw0LDMsOTcsMTA0LDExOSw3MjA3LDcyMTAsNzIxMyw1OSwxLDk0Niw1OSwxLDg1MDIsMTAxLDEwMSwxMTAsNTksMSw4ODEyLDExNCw1OSwzLDU1MzQ5LDU2NjA3LDEwMyw0LDcsOTksMTExLDExNSwxMTYsMTE3LDExOCwxMTksNzI0MSw3MjYyLDcyODgsNzMwNSw3MzI4LDczMzUsNzM0MCw0LDMsOTcsMTA1LDExNyw3MjQ5LDcyNTMsNzI1OCwxMTIsNTksMSw4ODk4LDExNCw5OSw1OSwxLDk3MTEsMTEyLDU5LDEsODg5OSw0LDMsMTAwLDExMiwxMTYsNzI3MCw3Mjc1LDcyODEsMTExLDExNiw1OSwxLDEwNzUyLDEwOCwxMTcsMTE1LDU5LDEsMTA3NTMsMTA1LDEwOSwxMDEsMTE1LDU5LDEsMTA3NTQsNCwyLDExMywxMTYsNzI5NCw3MzAwLDk5LDExNywxMTIsNTksMSwxMDc1OCw5NywxMTQsNTksMSw5NzMzLDExNCwxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMiwxMDAsMTE3LDczMTgsNzMyNCwxMTEsMTE5LDExMCw1OSwxLDk2NjEsMTEyLDU5LDEsOTY1MSwxMTIsMTA4LDExNywxMTUsNTksMSwxMDc1NiwxMDEsMTAxLDU5LDEsODg5NywxMDEsMTAwLDEwMywxMDEsNTksMSw4ODk2LDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MDksNCwzLDk3LDEwNywxMTEsNzM2Miw3NDM2LDc0NTgsNCwyLDk5LDExMCw3MzY4LDc0MzIsMTA3LDQsMywxMDgsMTE1LDExNiw3Mzc3LDczODYsNzM5NCwxMTEsMTIyLDEwMSwxMTAsMTAzLDEwMSw1OSwxLDEwNzMxLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk2NDIsMTE0LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCw0LDU5LDEwMCwxMDgsMTE0LDc0MTEsNzQxMyw3NDE5LDc0MjUsMSw5NjUyLDExMSwxMTksMTEwLDU5LDEsOTY2MiwxMDEsMTAyLDExNiw1OSwxLDk2NjYsMTA1LDEwMywxMDQsMTE2LDU5LDEsOTY1NiwxMDcsNTksMSw5MjUxLDQsMiw0OSw1MSw3NDQyLDc0NTQsNCwyLDUwLDUyLDc0NDgsNzQ1MSw1OSwxLDk2MTgsNTksMSw5NjE3LDUyLDU5LDEsOTYxOSw5OSwxMDcsNTksMSw5NjA4LDQsMiwxMDEsMTExLDc0NjksNzQ4NSw0LDIsNTksMTEzLDc0NzUsNzQ3OCwzLDYxLDg0MjEsMTE3LDEwNSwxMTgsNTksMyw4ODAxLDg0MjEsMTE2LDU5LDEsODk3Niw0LDQsMTEyLDExNiwxMTksMTIwLDc0OTksNzUwNCw3NTE3LDc1MjMsMTAyLDU5LDMsNTUzNDksNTY2NTksNCwyLDU5LDExNiw3NTEwLDc1MTIsMSw4ODY5LDExMSwxMDksNTksMSw4ODY5LDExNiwxMDUsMTAxLDU5LDEsODkwNCw0LDEyLDY4LDcyLDg1LDg2LDk4LDEwMCwxMDQsMTA5LDExMiwxMTYsMTE3LDExOCw3NTQ5LDc1NzEsNzU5Nyw3NjE5LDc2NTUsNzY2MCw3NjgyLDc3MDgsNzcxNSw3NzIxLDc3MjgsNzc1MCw0LDQsNzYsODIsMTA4LDExNCw3NTU5LDc1NjIsNzU2NSw3NTY4LDU5LDEsOTU1OSw1OSwxLDk1NTYsNTksMSw5NTU4LDU5LDEsOTU1NSw0LDUsNTksNjgsODUsMTAwLDExNyw3NTgzLDc1ODUsNzU4OCw3NTkxLDc1OTQsMSw5NTUyLDU5LDEsOTU3NCw1OSwxLDk1NzcsNTksMSw5NTcyLDU5LDEsOTU3NSw0LDQsNzYsODIsMTA4LDExNCw3NjA3LDc2MTAsNzYxMyw3NjE2LDU5LDEsOTU2NSw1OSwxLDk1NjIsNTksMSw5NTY0LDU5LDEsOTU2MSw0LDcsNTksNzIsNzYsODIsMTA0LDEwOCwxMTQsNzYzNSw3NjM3LDc2NDAsNzY0Myw3NjQ2LDc2NDksNzY1MiwxLDk1NTMsNTksMSw5NTgwLDU5LDEsOTU3MSw1OSwxLDk1NjgsNTksMSw5NTc5LDU5LDEsOTU3MCw1OSwxLDk1NjcsMTExLDEyMCw1OSwxLDEwNjk3LDQsNCw3Niw4MiwxMDgsMTE0LDc2NzAsNzY3Myw3Njc2LDc2NzksNTksMSw5NTU3LDU5LDEsOTU1NCw1OSwxLDk0ODgsNTksMSw5NDg0LDQsNSw1OSw2OCw4NSwxMDAsMTE3LDc2OTQsNzY5Niw3Njk5LDc3MDIsNzcwNSwxLDk0NzIsNTksMSw5NTczLDU5LDEsOTU3Niw1OSwxLDk1MTYsNTksMSw5NTI0LDEwNSwxMTAsMTE3LDExNSw1OSwxLDg4NjMsMTA4LDExNywxMTUsNTksMSw4ODYyLDEwNSwxMDksMTAxLDExNSw1OSwxLDg4NjQsNCw0LDc2LDgyLDEwOCwxMTQsNzczOCw3NzQxLDc3NDQsNzc0Nyw1OSwxLDk1NjMsNTksMSw5NTYwLDU5LDEsOTQ5Niw1OSwxLDk0OTIsNCw3LDU5LDcyLDc2LDgyLDEwNCwxMDgsMTE0LDc3NjYsNzc2OCw3NzcxLDc3NzQsNzc3Nyw3NzgwLDc3ODMsMSw5NDc0LDU5LDEsOTU3OCw1OSwxLDk1NjksNTksMSw5NTY2LDU5LDEsOTUzMiw1OSwxLDk1MDgsNTksMSw5NTAwLDExNCwxMDUsMTA5LDEwMSw1OSwxLDgyNDUsNCwyLDEwMSwxMTgsNzc5OSw3ODA0LDExOCwxMDEsNTksMSw3MjgsOTgsOTcsMTE0LDUsMTY2LDEsNTksNzgxMiwxLDE2Niw0LDQsOTksMTAxLDEwNSwxMTEsNzgyNCw3ODI5LDc4MzQsNzg0NiwxMTQsNTksMyw1NTM0OSw1NjUwMywxMDksMTA1LDU5LDEsODI3MSwxMDksNCwyLDU5LDEwMSw3ODQxLDc4NDMsMSw4NzY1LDU5LDEsODkwOSwxMDgsNCwzLDU5LDk4LDEwNCw3ODU1LDc4NTcsNzg2MCwxLDkyLDU5LDEsMTA2OTMsMTE1LDExNyw5OCw1OSwxLDEwMTg0LDQsMiwxMDgsMTA5LDc4NzIsNzg4NSwxMDgsNCwyLDU5LDEwMSw3ODc5LDc4ODEsMSw4MjI2LDExNiw1OSwxLDgyMjYsMTEyLDQsMyw1OSw2OSwxMDEsNzg5NCw3ODk2LDc4OTksMSw4NzgyLDU5LDEsMTA5MjYsNCwyLDU5LDExMyw3OTA1LDc5MDcsMSw4NzgzLDU5LDEsODc4Myw0LDE1LDk3LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDExMSwxMTQsMTE1LDExNiwxMTcsMTE5LDEyMSw3OTQyLDgwMjEsODA3NSw4MDgwLDgxMjEsODEyNiw4MTU3LDgyNzksODI5NSw4NDMwLDg0NDYsODQ4NSw4NDkxLDg3MDcsODcyNiw0LDMsOTksMTEyLDExNCw3OTUwLDc5NTYsODAwNywxMTcsMTE2LDEwMSw1OSwxLDI2Myw0LDYsNTksOTcsOTgsOTksMTAwLDExNSw3OTcwLDc5NzIsNzk3Nyw3OTg0LDc5OTgsODAwMywxLDg3NDUsMTEwLDEwMCw1OSwxLDEwODIwLDExNCw5OSwxMTcsMTEyLDU5LDEsMTA4MjUsNCwyLDk3LDExNyw3OTkwLDc5OTQsMTEyLDU5LDEsMTA4MjcsMTEyLDU5LDEsMTA4MjMsMTExLDExNiw1OSwxLDEwODE2LDU5LDMsODc0NSw2NTAyNCw0LDIsMTAxLDExMSw4MDEzLDgwMTcsMTE2LDU5LDEsODI1NywxMTAsNTksMSw3MTEsNCw0LDk3LDEwMSwxMDUsMTE3LDgwMzEsODA0Niw4MDU2LDgwNjEsNCwyLDExMiwxMTQsODAzNyw4MDQxLDExNSw1OSwxLDEwODI5LDExMSwxMTAsNTksMSwyNjksMTAwLDEwNSwxMDgsNSwyMzEsMSw1OSw4MDU0LDEsMjMxLDExNCw5OSw1OSwxLDI2NSwxMTIsMTE1LDQsMiw1OSwxMTUsODA2OSw4MDcxLDEsMTA4MjgsMTA5LDU5LDEsMTA4MzIsMTExLDExNiw1OSwxLDI2Nyw0LDMsMTAwLDEwOSwxMTAsODA4OCw4MDk3LDgxMDQsMTA1LDEwOCw1LDE4NCwxLDU5LDgwOTUsMSwxODQsMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzQsMTE2LDUsMTYyLDIsNTksMTAxLDgxMTIsODExNCwxLDE2MiwxMTQsMTAwLDExMSwxMTYsNTksMSwxODMsMTE0LDU5LDMsNTUzNDksNTY2MDgsNCwzLDk5LDEwMSwxMDUsODEzNCw4MTM4LDgxNTQsMTIxLDU5LDEsMTA5NSw5OSwxMDcsNCwyLDU5LDEwOSw4MTQ2LDgxNDgsMSwxMDAwMyw5NywxMTQsMTA3LDU5LDEsMTAwMDMsNTksMSw5NjcsMTE0LDQsNyw1OSw2OSw5OSwxMDEsMTAyLDEwOSwxMTUsODE3NCw4MTc2LDgxNzksODI1OCw4MjYxLDgyNjgsODI3MywxLDk2NzUsNTksMSwxMDY5MSw0LDMsNTksMTAxLDEwOCw4MTg3LDgxODksODE5MywxLDcxMCwxMTMsNTksMSw4NzkxLDEwMSw0LDIsOTcsMTAwLDgyMDAsODIyMywxMTQsMTE0LDExMSwxMTksNCwyLDEwOCwxMTQsODIxMCw4MjE2LDEwMSwxMDIsMTE2LDU5LDEsODYzNCwxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjM1LDQsNSw4Miw4Myw5Nyw5OSwxMDAsODIzNSw4MjM4LDgyNDEsODI0Niw4MjUyLDU5LDEsMTc0LDU5LDEsOTQxNiwxMTUsMTE2LDU5LDEsODg1OSwxMDUsMTE0LDk5LDU5LDEsODg1OCw5NywxMTUsMTA0LDU5LDEsODg2MSw1OSwxLDg3OTEsMTEwLDEwNSwxMTAsMTE2LDU5LDEsMTA3NjgsMTA1LDEwMCw1OSwxLDEwOTkxLDk5LDEwNSwxMTQsNTksMSwxMDY5MCwxMTcsOTgsMTE1LDQsMiw1OSwxMTcsODI4OCw4MjkwLDEsOTgyNywxMDUsMTE2LDU5LDEsOTgyNyw0LDQsMTA4LDEwOSwxMTAsMTEyLDgzMDUsODMyNiw4Mzc2LDg0MDAsMTExLDExMCw0LDIsNTksMTAxLDgzMTMsODMxNSwxLDU4LDQsMiw1OSwxMTMsODMyMSw4MzIzLDEsODc4OCw1OSwxLDg3ODgsNCwyLDEwOSwxMTIsODMzMiw4MzQ0LDk3LDQsMiw1OSwxMTYsODMzOSw4MzQxLDEsNDQsNTksMSw2NCw0LDMsNTksMTAyLDEwOCw4MzUyLDgzNTQsODM1OCwxLDg3MDUsMTEwLDU5LDEsODcyOCwxMDEsNCwyLDEwOSwxMjAsODM2NSw4MzcxLDEwMSwxMTAsMTE2LDU5LDEsODcwNSwxMDEsMTE1LDU5LDEsODQ1MCw0LDIsMTAzLDEwNSw4MzgyLDgzOTUsNCwyLDU5LDEwMCw4Mzg4LDgzOTAsMSw4NzczLDExMSwxMTYsNTksMSwxMDg2MSwxMTAsMTE2LDU5LDEsODc1MCw0LDMsMTAyLDExNCwxMjEsODQwOCw4NDEyLDg0MTcsNTksMyw1NTM0OSw1NjY2MCwxMTEsMTAwLDU5LDEsODcyMCw1LDE2OSwyLDU5LDExNSw4NDI0LDg0MjYsMSwxNjksMTE0LDU5LDEsODQ3MSw0LDIsOTcsMTExLDg0MzYsODQ0MSwxMTQsMTE0LDU5LDEsODYyOSwxMTUsMTE1LDU5LDEsMTAwMDcsNCwyLDk5LDExNyw4NDUyLDg0NTcsMTE0LDU5LDMsNTUzNDksNTY1MDQsNCwyLDk4LDExMiw4NDYzLDg0NzQsNCwyLDU5LDEwMSw4NDY5LDg0NzEsMSwxMDk1OSw1OSwxLDEwOTYxLDQsMiw1OSwxMDEsODQ4MCw4NDgyLDEsMTA5NjAsNTksMSwxMDk2MiwxMDAsMTExLDExNiw1OSwxLDg5NDMsNCw3LDEwMCwxMDEsMTA4LDExMiwxMTQsMTE4LDExOSw4NTA3LDg1MjIsODUzNiw4NTUwLDg2MDAsODY5Nyw4NzAyLDk3LDExNCwxMTQsNCwyLDEwOCwxMTQsODUxNiw4NTE5LDU5LDEsMTA1NTIsNTksMSwxMDU0OSw0LDIsMTEyLDExNSw4NTI4LDg1MzIsMTE0LDU5LDEsODkyNiw5OSw1OSwxLDg5MjcsOTcsMTE0LDExNCw0LDIsNTksMTEyLDg1NDUsODU0NywxLDg2MzAsNTksMSwxMDU1Nyw0LDYsNTksOTgsOTksMTAwLDExMSwxMTUsODU2NCw4NTY2LDg1NzMsODU4Nyw4NTkyLDg1OTYsMSw4NzQ2LDExNCw5OSw5NywxMTIsNTksMSwxMDgyNCw0LDIsOTcsMTE3LDg1NzksODU4MywxMTIsNTksMSwxMDgyMiwxMTIsNTksMSwxMDgyNiwxMTEsMTE2LDU5LDEsODg0NSwxMTQsNTksMSwxMDgyMSw1OSwzLDg3NDYsNjUwMjQsNCw0LDk3LDEwOCwxMTQsMTE4LDg2MTAsODYyMyw4NjYzLDg2NzIsMTE0LDExNCw0LDIsNTksMTA5LDg2MTgsODYyMCwxLDg2MzEsNTksMSwxMDU1NiwxMjEsNCwzLDEwMSwxMTgsMTE5LDg2MzIsODY1MSw4NjU2LDExMyw0LDIsMTEyLDExNSw4NjM5LDg2NDUsMTE0LDEwMSw5OSw1OSwxLDg5MjYsMTE3LDk5LDk5LDU5LDEsODkyNywxMDEsMTAxLDU5LDEsODkxMCwxMDEsMTAwLDEwMywxMDEsNTksMSw4OTExLDEwMSwxMTAsNSwxNjQsMSw1OSw4NjcwLDEsMTY0LDEwMSw5NywxMTQsMTE0LDExMSwxMTksNCwyLDEwOCwxMTQsODY4NCw4NjkwLDEwMSwxMDIsMTE2LDU5LDEsODYzMCwxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjMxLDEwMSwxMDEsNTksMSw4OTEwLDEwMSwxMDAsNTksMSw4OTExLDQsMiw5OSwxMDUsODcxMyw4NzIxLDExMSwxMTAsMTA1LDExMCwxMTYsNTksMSw4NzU0LDExMCwxMTYsNTksMSw4NzUzLDEwOCw5OSwxMTYsMTIxLDU5LDEsOTAwNSw0LDE5LDY1LDcyLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA2LDEwOCwxMTEsMTE0LDExNSwxMTYsMTE3LDExOSwxMjIsODc3Myw4Nzc4LDg3ODMsODgyMSw4ODM5LDg4NTQsODg4Nyw4OTE0LDg5MzAsODk0NCw5MDM2LDkwNDEsOTA1OCw5MTk3LDkyMjcsOTI1OCw5MjgxLDkyOTcsOTMwNSwxMTQsMTE0LDU5LDEsODY1OSw5NywxMTQsNTksMSwxMDU5Nyw0LDQsMTAzLDEwOCwxMTQsMTE1LDg3OTMsODc5OSw4ODA1LDg4MDksMTAzLDEwMSwxMTQsNTksMSw4MjI0LDEwMSwxMTYsMTA0LDU5LDEsODUwNCwxMTQsNTksMSw4NTk1LDEwNCw0LDIsNTksMTE4LDg4MTYsODgxOCwxLDgyMDgsNTksMSw4ODY3LDQsMiwxMDcsMTA4LDg4MjcsODgzNCw5NywxMTQsMTExLDExOSw1OSwxLDEwNTExLDk3LDk5LDU5LDEsNzMzLDQsMiw5NywxMjEsODg0NSw4ODUxLDExNCwxMTEsMTEwLDU5LDEsMjcxLDU5LDEsMTA3Niw0LDMsNTksOTcsMTExLDg4NjIsODg2NCw4ODgwLDEsODUxOCw0LDIsMTAzLDExNCw4ODcwLDg4NzYsMTAzLDEwMSwxMTQsNTksMSw4MjI1LDExNCw1OSwxLDg2NTAsMTE2LDExNSwxMDEsMTEzLDU5LDEsMTA4NzEsNCwzLDEwMywxMDgsMTA5LDg4OTUsODkwMiw4OTA3LDUsMTc2LDEsNTksODkwMCwxLDE3NiwxMTYsOTcsNTksMSw5NDgsMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzMsNCwyLDEwNSwxMTQsODkyMCw4OTI2LDExNSwxMDQsMTE2LDU5LDEsMTA2MjMsNTksMyw1NTM0OSw1NjYwOSw5NywxMTQsNCwyLDEwOCwxMTQsODkzOCw4OTQxLDU5LDEsODY0Myw1OSwxLDg2NDIsNCw1LDk3LDEwMSwxMDMsMTE1LDExOCw4OTU2LDg5ODYsODk4OSw4OTk2LDkwMDEsMTA5LDQsMyw1OSwxMTEsMTE1LDg5NjUsODk2Nyw4OTgzLDEsODkwMCwxMTAsMTAwLDQsMiw1OSwxMTUsODk3NSw4OTc3LDEsODkwMCwxMTcsMTA1LDExNiw1OSwxLDk4MzAsNTksMSw5ODMwLDU5LDEsMTY4LDk3LDEwOSwxMDksOTcsNTksMSw5ODksMTA1LDExMCw1OSwxLDg5NDYsNCwzLDU5LDEwNSwxMTEsOTAwOSw5MDExLDkwMzEsMSwyNDcsMTAwLDEwMSw1LDI0NywyLDU5LDExMSw5MDIwLDkwMjIsMSwyNDcsMTEwLDExNiwxMDUsMTA5LDEwMSwxMTUsNTksMSw4OTAzLDExMCwxMjAsNTksMSw4OTAzLDk5LDEyMSw1OSwxLDExMDYsOTksNCwyLDExMSwxMTQsOTA0OCw5MDUzLDExNCwxMTAsNTksMSw4OTkwLDExMSwxMTIsNTksMSw4OTczLDQsNSwxMDgsMTEyLDExNiwxMTcsMTE5LDkwNzAsOTA3Niw5MDgxLDkxMzAsOTE0NCwxMDgsOTcsMTE0LDU5LDEsMzYsMTAyLDU5LDMsNTUzNDksNTY2NjEsNCw1LDU5LDEwMSwxMDksMTEyLDExNSw5MDkzLDkwOTUsOTEwOSw5MTE2LDkxMjIsMSw3MjksMTEzLDQsMiw1OSwxMDAsOTEwMiw5MTA0LDEsODc4NCwxMTEsMTE2LDU5LDEsODc4NSwxMDUsMTEwLDExNywxMTUsNTksMSw4NzYwLDEwOCwxMTcsMTE1LDU5LDEsODcyNCwxMTMsMTE3LDk3LDExNCwxMDEsNTksMSw4ODY1LDk4LDEwOCwxMDEsOTgsOTcsMTE0LDExOSwxMDEsMTAwLDEwMywxMDEsNTksMSw4OTY2LDExMCw0LDMsOTcsMTAwLDEwNCw5MTUzLDkxNjAsOTE3MiwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk1LDExMSwxMTksMTEwLDk3LDExNCwxMTQsMTExLDExOSwxMTUsNTksMSw4NjUwLDk3LDExNCwxMTIsMTExLDExMSwxMTAsNCwyLDEwOCwxMTQsOTE4NCw5MTkwLDEwMSwxMDIsMTE2LDU5LDEsODY0MywxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjQyLDQsMiw5OCw5OSw5MjAzLDkyMTEsMTA3LDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MTIsNCwyLDExMSwxMTQsOTIxNyw5MjIyLDExNCwxMTAsNTksMSw4OTkxLDExMSwxMTIsNTksMSw4OTcyLDQsMyw5OSwxMTEsMTE2LDkyMzUsOTI0OCw5MjUyLDQsMiwxMTQsMTIxLDkyNDEsOTI0NSw1OSwzLDU1MzQ5LDU2NTA1LDU5LDEsMTEwOSwxMDgsNTksMSwxMDc0MiwxMTQsMTExLDEwNyw1OSwxLDI3Myw0LDIsMTAwLDExNCw5MjY0LDkyNjksMTExLDExNiw1OSwxLDg5NDUsMTA1LDQsMiw1OSwxMDIsOTI3Niw5Mjc4LDEsOTY2Myw1OSwxLDk2NjIsNCwyLDk3LDEwNCw5Mjg3LDkyOTIsMTE0LDExNCw1OSwxLDg2OTMsOTcsMTE0LDU5LDEsMTA2MDcsOTcsMTEwLDEwMywxMDgsMTAxLDU5LDEsMTA2NjIsNCwyLDk5LDEwNSw5MzExLDkzMTUsMTIxLDU5LDEsMTExOSwxMDMsMTE0LDk3LDExNCwxMTQsNTksMSwxMDIzOSw0LDE4LDY4LDk3LDk5LDEwMCwxMDEsMTAyLDEwMywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTIwLDkzNjEsOTM3Niw5Mzk4LDk0MzksOTQ0NCw5NDQ3LDk0NjIsOTQ5NSw5NTMxLDk1ODUsOTU5OCw5NjE0LDk2NTksOTc1NSw5NzcxLDk3OTIsOTgwOCw5ODI2LDQsMiw2OCwxMTEsOTM2Nyw5MzcyLDExMSwxMTYsNTksMSwxMDg3MSwxMTYsNTksMSw4Nzg1LDQsMiw5OSwxMTUsOTM4Miw5MzkyLDExNywxMTYsMTAxLDUsMjMzLDEsNTksOTM5MCwxLDIzMywxMTYsMTAxLDExNCw1OSwxLDEwODYyLDQsNCw5NywxMDUsMTExLDEyMSw5NDA4LDk0MTQsOTQzMCw5NDM2LDExNCwxMTEsMTEwLDU5LDEsMjgzLDExNCw0LDIsNTksOTksOTQyMSw5NDIzLDEsODc5MCw1LDIzNCwxLDU5LDk0MjgsMSwyMzQsMTA4LDExMSwxMTAsNTksMSw4Nzg5LDU5LDEsMTEwMSwxMTEsMTE2LDU5LDEsMjc5LDU5LDEsODUxOSw0LDIsNjgsMTE0LDk0NTMsOTQ1OCwxMTEsMTE2LDU5LDEsODc4Niw1OSwzLDU1MzQ5LDU2NjEwLDQsMyw1OSwxMTQsMTE1LDk0NzAsOTQ3Miw5NDgyLDEsMTA5MDYsOTcsMTE4LDEwMSw1LDIzMiwxLDU5LDk0ODAsMSwyMzIsNCwyLDU5LDEwMCw5NDg4LDk0OTAsMSwxMDkwMiwxMTEsMTE2LDU5LDEsMTA5MDQsNCw0LDU5LDEwNSwxMDgsMTE1LDk1MDUsOTUwNyw5NTE1LDk1MTgsMSwxMDkwNSwxMTAsMTE2LDEwMSwxMTQsMTE1LDU5LDEsOTE5MSw1OSwxLDg0NjcsNCwyLDU5LDEwMCw5NTI0LDk1MjYsMSwxMDkwMSwxMTEsMTE2LDU5LDEsMTA5MDMsNCwzLDk3LDExMiwxMTUsOTUzOSw5NTQ0LDk1NjQsOTksMTE0LDU5LDEsMjc1LDExNiwxMjEsNCwzLDU5LDExNSwxMTgsOTU1NCw5NTU2LDk1NjEsMSw4NzA5LDEwMSwxMTYsNTksMSw4NzA5LDU5LDEsODcwOSwxMTIsNCwyLDQ5LDU5LDk1NzEsOTU4Myw0LDIsNTEsNTIsOTU3Nyw5NTgwLDU5LDEsODE5Niw1OSwxLDgxOTcsMSw4MTk1LDQsMiwxMDMsMTE1LDk1OTEsOTU5NCw1OSwxLDMzMSwxMTIsNTksMSw4MTk0LDQsMiwxMDMsMTEyLDk2MDQsOTYwOSwxMTEsMTEwLDU5LDEsMjgxLDEwMiw1OSwzLDU1MzQ5LDU2NjYyLDQsMyw5NywxMDgsMTE1LDk2MjIsOTYzNSw5NjQwLDExNCw0LDIsNTksMTE1LDk2MjksOTYzMSwxLDg5MTcsMTA4LDU5LDEsMTA3MjMsMTE3LDExNSw1OSwxLDEwODY1LDEwNSw0LDMsNTksMTA4LDExOCw5NjQ5LDk2NTEsOTY1NiwxLDk0OSwxMTEsMTEwLDU5LDEsOTQ5LDU5LDEsMTAxMyw0LDQsOTksMTE1LDExNywxMTgsOTY2OSw5Njg2LDk3MTYsOTc0Nyw0LDIsMTA1LDExMSw5Njc1LDk2ODAsMTE0LDk5LDU5LDEsODc5MCwxMDgsMTExLDExMCw1OSwxLDg3ODksNCwyLDEwNSwxMDgsOTY5Miw5Njk2LDEwOSw1OSwxLDg3NzAsOTcsMTEwLDExNiw0LDIsMTAzLDEwOCw5NzA1LDk3MTAsMTE2LDExNCw1OSwxLDEwOTAyLDEwMSwxMTUsMTE1LDU5LDEsMTA5MDEsNCwzLDk3LDEwMSwxMDUsOTcyNCw5NzI5LDk3MzQsMTA4LDExNSw1OSwxLDYxLDExNSwxMTYsNTksMSw4Nzk5LDExOCw0LDIsNTksNjgsOTc0MSw5NzQzLDEsODgwMSw2OCw1OSwxLDEwODcyLDExMiw5NywxMTQsMTE1LDEwOCw1OSwxLDEwNzI1LDQsMiw2OCw5Nyw5NzYxLDk3NjYsMTExLDExNiw1OSwxLDg3ODcsMTE0LDExNCw1OSwxLDEwNjA5LDQsMyw5OSwxMDAsMTA1LDk3NzksOTc4Myw5Nzg4LDExNCw1OSwxLDg0OTUsMTExLDExNiw1OSwxLDg3ODQsMTA5LDU5LDEsODc3MCw0LDIsOTcsMTA0LDk3OTgsOTgwMSw1OSwxLDk1MSw1LDI0MCwxLDU5LDk4MDYsMSwyNDAsNCwyLDEwOSwxMTQsOTgxNCw5ODIyLDEwOCw1LDIzNSwxLDU5LDk4MjAsMSwyMzUsMTExLDU5LDEsODM2NCw0LDMsOTksMTA1LDExMiw5ODM0LDk4MzgsOTg0MywxMDgsNTksMSwzMywxMTUsMTE2LDU5LDEsODcwNyw0LDIsMTAxLDExMSw5ODQ5LDk4NTksOTksMTE2LDk3LDExNiwxMDUsMTExLDExMCw1OSwxLDg0OTYsMTEwLDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMTAxLDU5LDEsODUxOSw0LDEyLDk3LDk5LDEwMSwxMDIsMTA1LDEwNiwxMDgsMTEwLDExMSwxMTIsMTE0LDExNSw5ODk2LDk5MTAsOTkxNCw5OTIxLDk5NTQsOTk2MCw5OTY3LDk5ODksOTk5NCwxMDAyNywxMDAzNiwxMDE2NCwxMDgsMTA4LDEwNSwxMTAsMTAzLDEwMCwxMTEsMTE2LDExNSwxMDEsMTEzLDU5LDEsODc4NiwxMjEsNTksMSwxMDkyLDEwOSw5NywxMDgsMTAxLDU5LDEsOTc5Miw0LDMsMTA1LDEwOCwxMTQsOTkyOSw5OTM1LDk5NTAsMTA4LDEwNSwxMDMsNTksMSw2NDI1OSw0LDIsMTA1LDEwOCw5OTQxLDk5NDUsMTAzLDU5LDEsNjQyNTYsMTA1LDEwMyw1OSwxLDY0MjYwLDU5LDMsNTUzNDksNTY2MTEsMTA4LDEwNSwxMDMsNTksMSw2NDI1NywxMDgsMTA1LDEwMyw1OSwzLDEwMiwxMDYsNCwzLDk3LDEwOCwxMTYsOTk3NSw5OTc5LDk5ODQsMTE2LDU5LDEsOTgzNywxMDUsMTAzLDU5LDEsNjQyNTgsMTEwLDExNSw1OSwxLDk2NDksMTExLDEwMiw1OSwxLDQwMiw0LDIsMTEyLDExNCwxMDAwMCwxMDAwNSwxMDIsNTksMyw1NTM0OSw1NjY2Myw0LDIsOTcsMTA3LDEwMDExLDEwMDE2LDEwOCwxMDgsNTksMSw4NzA0LDQsMiw1OSwxMTgsMTAwMjIsMTAwMjQsMSw4OTE2LDU5LDEsMTA5NjksOTcsMTE0LDExNiwxMDUsMTEwLDExNiw1OSwxLDEwNzY1LDQsMiw5NywxMTEsMTAwNDIsMTAxNTksNCwyLDk5LDExNSwxMDA0OCwxMDE1NSw0LDYsNDksNTAsNTEsNTIsNTMsNTUsMTAwNjIsMTAxMDIsMTAxMTQsMTAxMzUsMTAxMzksMTAxNTEsNCw2LDUwLDUxLDUyLDUzLDU0LDU2LDEwMDc2LDEwMDgzLDEwMDg2LDEwMDkzLDEwMDk2LDEwMDk5LDUsMTg5LDEsNTksMTAwODEsMSwxODksNTksMSw4NTMxLDUsMTg4LDEsNTksMTAwOTEsMSwxODgsNTksMSw4NTMzLDU5LDEsODUzNyw1OSwxLDg1MzksNCwyLDUxLDUzLDEwMTA4LDEwMTExLDU5LDEsODUzMiw1OSwxLDg1MzQsNCwzLDUyLDUzLDU2LDEwMTIyLDEwMTI5LDEwMTMyLDUsMTkwLDEsNTksMTAxMjcsMSwxOTAsNTksMSw4NTM1LDU5LDEsODU0MCw1Myw1OSwxLDg1MzYsNCwyLDU0LDU2LDEwMTQ1LDEwMTQ4LDU5LDEsODUzOCw1OSwxLDg1NDEsNTYsNTksMSw4NTQyLDEwOCw1OSwxLDgyNjAsMTE5LDExMCw1OSwxLDg5OTQsOTksMTE0LDU5LDMsNTUzNDksNTY1MDcsNCwxNyw2OSw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA1LDEwNiwxMDgsMTEwLDExMSwxMTQsMTE1LDExNiwxMTgsMTAyMDYsMTAyMTcsMTAyNDcsMTAyNTQsMTAyNjgsMTAyNzMsMTAzNTgsMTAzNjMsMTAzNzQsMTAzODAsMTAzODUsMTA0MDYsMTA0NTgsMTA0NjQsMTA0NzAsMTA0OTcsMTA2MTAsNCwyLDU5LDEwOCwxMDIxMiwxMDIxNCwxLDg4MDcsNTksMSwxMDg5Miw0LDMsOTksMTA5LDExMiwxMDIyNSwxMDIzMSwxMDI0NCwxMTcsMTE2LDEwMSw1OSwxLDUwMSwxMDksOTcsNCwyLDU5LDEwMCwxMDIzOSwxMDI0MSwxLDk0Nyw1OSwxLDk4OSw1OSwxLDEwODg2LDExNCwxMDEsMTE4LDEwMSw1OSwxLDI4Nyw0LDIsMTA1LDEyMSwxMDI2MCwxMDI2NSwxMTQsOTksNTksMSwyODUsNTksMSwxMDc1LDExMSwxMTYsNTksMSwyODksNCw0LDU5LDEwOCwxMTMsMTE1LDEwMjgzLDEwMjg1LDEwMjg4LDEwMzA4LDEsODgwNSw1OSwxLDg5MjMsNCwzLDU5LDExMywxMTUsMTAyOTYsMTAyOTgsMTAzMDEsMSw4ODA1LDU5LDEsODgwNywxMDgsOTcsMTEwLDExNiw1OSwxLDEwODc4LDQsNCw1OSw5OSwxMDAsMTA4LDEwMzE4LDEwMzIwLDEwMzI0LDEwMzQ1LDEsMTA4NzgsOTksNTksMSwxMDkyMSwxMTEsMTE2LDQsMiw1OSwxMTEsMTAzMzIsMTAzMzQsMSwxMDg4MCw0LDIsNTksMTA4LDEwMzQwLDEwMzQyLDEsMTA4ODIsNTksMSwxMDg4NCw0LDIsNTksMTAxLDEwMzUxLDEwMzU0LDMsODkyMyw2NTAyNCwxMTUsNTksMSwxMDkwMCwxMTQsNTksMyw1NTM0OSw1NjYxMiw0LDIsNTksMTAzLDEwMzY5LDEwMzcxLDEsODgxMSw1OSwxLDg5MjEsMTA5LDEwMSwxMDgsNTksMSw4NTAzLDk5LDEyMSw1OSwxLDExMDcsNCw0LDU5LDY5LDk3LDEwNiwxMDM5NSwxMDM5NywxMDQwMCwxMDQwMywxLDg4MjMsNTksMSwxMDg5OCw1OSwxLDEwOTE3LDU5LDEsMTA5MTYsNCw0LDY5LDk3LDEwMSwxMTUsMTA0MTYsMTA0MTksMTA0MzQsMTA0NTMsNTksMSw4ODA5LDExMiw0LDIsNTksMTEyLDEwNDI2LDEwNDI4LDEsMTA4OTAsMTE0LDExMSwxMjAsNTksMSwxMDg5MCw0LDIsNTksMTEzLDEwNDQwLDEwNDQyLDEsMTA4ODgsNCwyLDU5LDExMywxMDQ0OCwxMDQ1MCwxLDEwODg4LDU5LDEsODgwOSwxMDUsMTA5LDU5LDEsODkzNSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NjQsOTcsMTE4LDEwMSw1OSwxLDk2LDQsMiw5OSwxMDUsMTA0NzYsMTA0ODAsMTE0LDU5LDEsODQ1OCwxMDksNCwzLDU5LDEwMSwxMDgsMTA0ODksMTA0OTEsMTA0OTQsMSw4ODE5LDU5LDEsMTA4OTQsNTksMSwxMDg5Niw1LDYyLDYsNTksOTksMTAwLDEwOCwxMTMsMTE0LDEwNTEyLDEwNTE0LDEwNTI3LDEwNTMyLDEwNTM4LDEwNTQ1LDEsNjIsNCwyLDk5LDEwNSwxMDUyMCwxMDUyMyw1OSwxLDEwOTE5LDExNCw1OSwxLDEwODc0LDExMSwxMTYsNTksMSw4OTE5LDgwLDk3LDExNCw1OSwxLDEwNjQ1LDExNywxMDEsMTE1LDExNiw1OSwxLDEwODc2LDQsNSw5NywxMDAsMTAxLDEwOCwxMTUsMTA1NTcsMTA1NzQsMTA1NzksMTA1OTksMTA2MDUsNCwyLDExMiwxMTQsMTA1NjMsMTA1NzAsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA4ODYsMTE0LDU5LDEsMTA2MTYsMTExLDExNiw1OSwxLDg5MTksMTEzLDQsMiwxMDgsMTEzLDEwNTg2LDEwNTkyLDEwMSwxMTUsMTE1LDU5LDEsODkyMywxMDgsMTAxLDExNSwxMTUsNTksMSwxMDg5MiwxMDEsMTE1LDExNSw1OSwxLDg4MjMsMTA1LDEwOSw1OSwxLDg4MTksNCwyLDEwMSwxMTAsMTA2MTYsMTA2MjYsMTE0LDExNiwxMTAsMTAxLDExMywxMTMsNTksMyw4ODA5LDY1MDI0LDY5LDU5LDMsODgwOSw2NTAyNCw0LDEwLDY1LDk3LDk4LDk5LDEwMSwxMDIsMTA3LDExMSwxMTUsMTIxLDEwNjUzLDEwNjU4LDEwNzEzLDEwNzE4LDEwNzI0LDEwNzYwLDEwNzY1LDEwNzg2LDEwODUwLDEwODc1LDExNCwxMTQsNTksMSw4NjYwLDQsNCwxMDUsMTA4LDEwOSwxMTQsMTA2NjgsMTA2NzQsMTA2NzgsMTA2ODQsMTE0LDExNSwxMTIsNTksMSw4MjAyLDEwMiw1OSwxLDE4OSwxMDUsMTA4LDExNiw1OSwxLDg0NTksNCwyLDEwMCwxMTQsMTA2OTAsMTA2OTUsOTksMTIxLDU5LDEsMTA5OCw0LDMsNTksOTksMTE5LDEwNzAzLDEwNzA1LDEwNzEwLDEsODU5NiwxMDUsMTE0LDU5LDEsMTA1NjgsNTksMSw4NjIxLDk3LDExNCw1OSwxLDg0NjMsMTA1LDExNCw5OSw1OSwxLDI5Myw0LDMsOTcsMTA4LDExNCwxMDczMiwxMDc0OCwxMDc1NCwxMTQsMTE2LDExNSw0LDIsNTksMTE3LDEwNzQxLDEwNzQzLDEsOTgyOSwxMDUsMTE2LDU5LDEsOTgyOSwxMDgsMTA1LDExMiw1OSwxLDgyMzAsOTksMTExLDExMCw1OSwxLDg4ODksMTE0LDU5LDMsNTUzNDksNTY2MTMsMTE1LDQsMiwxMDEsMTE5LDEwNzcyLDEwNzc5LDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MzMsOTcsMTE0LDExMSwxMTksNTksMSwxMDUzNCw0LDUsOTcsMTA5LDExMSwxMTIsMTE0LDEwNzk4LDEwODAzLDEwODA5LDEwODM5LDEwODQ0LDExNCwxMTQsNTksMSw4NzAzLDExNiwxMDQsMTE2LDU5LDEsODc2MywxMDcsNCwyLDEwOCwxMTQsMTA4MTYsMTA4MjcsMTAxLDEwMiwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxNywxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxOCwxMDIsNTksMyw1NTM0OSw1NjY2NSw5OCw5NywxMTQsNTksMSw4MjEzLDQsMyw5OSwxMDgsMTE2LDEwODU4LDEwODYzLDEwODY5LDExNCw1OSwzLDU1MzQ5LDU2NTA5LDk3LDExNSwxMDQsNTksMSw4NDYzLDExNCwxMTEsMTA3LDU5LDEsMjk1LDQsMiw5OCwxMTIsMTA4ODEsMTA4ODcsMTE3LDEwOCwxMDgsNTksMSw4MjU5LDEwNCwxMDEsMTEwLDU5LDEsODIwOCw0LDE1LDk3LDk5LDEwMSwxMDIsMTAzLDEwNSwxMDYsMTA5LDExMCwxMTEsMTEyLDExMywxMTUsMTE2LDExNywxMDkyNSwxMDkzNiwxMDk1OCwxMDk3NywxMDk5MCwxMTAwMSwxMTAzOSwxMTA0NSwxMTEwMSwxMTE5MiwxMTIyMCwxMTIyNiwxMTIzNywxMTI4NSwxMTI5OSw5OSwxMTcsMTE2LDEwMSw1LDIzNywxLDU5LDEwOTM0LDEsMjM3LDQsMyw1OSwxMDUsMTIxLDEwOTQ0LDEwOTQ2LDEwOTU1LDEsODI5MSwxMTQsOTksNSwyMzgsMSw1OSwxMDk1MywxLDIzOCw1OSwxLDEwODAsNCwyLDk5LDEyMCwxMDk2NCwxMDk2OCwxMjEsNTksMSwxMDc3LDk5LDEwOCw1LDE2MSwxLDU5LDEwOTc1LDEsMTYxLDQsMiwxMDIsMTE0LDEwOTgzLDEwOTg2LDU5LDEsODY2MCw1OSwzLDU1MzQ5LDU2NjE0LDExNCw5NywxMTgsMTAxLDUsMjM2LDEsNTksMTA5OTksMSwyMzYsNCw0LDU5LDEwNSwxMTAsMTExLDExMDExLDExMDEzLDExMDI4LDExMDM0LDEsODUyMCw0LDIsMTA1LDExMCwxMTAxOSwxMTAyNCwxMTAsMTE2LDU5LDEsMTA3NjQsMTE2LDU5LDEsODc0OSwxMDIsMTA1LDExMCw1OSwxLDEwNzE2LDExNiw5Nyw1OSwxLDg0ODksMTA4LDEwNSwxMDMsNTksMSwzMDcsNCwzLDk3LDExMSwxMTIsMTEwNTMsMTEwOTIsMTEwOTYsNCwzLDk5LDEwMywxMTYsMTEwNjEsMTEwNjUsMTEwODgsMTE0LDU5LDEsMjk5LDQsMywxMDEsMTA4LDExMiwxMTA3MywxMTA3NiwxMTA4Miw1OSwxLDg0NjUsMTA1LDExMCwxMDEsNTksMSw4NDY0LDk3LDExNCwxMTYsNTksMSw4NDY1LDEwNCw1OSwxLDMwNSwxMDIsNTksMSw4ODg3LDEwMSwxMDAsNTksMSw0MzcsNCw1LDU5LDk5LDEwMiwxMTEsMTE2LDExMTEzLDExMTE1LDExMTIxLDExMTM2LDExMTQyLDEsODcxMiw5NywxMTQsMTAxLDU5LDEsODQ1MywxMDUsMTEwLDQsMiw1OSwxMTYsMTExMjksMTExMzEsMSw4NzM0LDEwNSwxMDEsNTksMSwxMDcxNywxMDAsMTExLDExNiw1OSwxLDMwNSw0LDUsNTksOTksMTAxLDEwOCwxMTIsMTExNTQsMTExNTYsMTExNjEsMTExNzksMTExODYsMSw4NzQ3LDk3LDEwOCw1OSwxLDg4OTAsNCwyLDEwMywxMTQsMTExNjcsMTExNzMsMTAxLDExNCwxMTUsNTksMSw4NDg0LDk5LDk3LDEwOCw1OSwxLDg4OTAsOTcsMTE0LDEwNCwxMDcsNTksMSwxMDc3NSwxMTQsMTExLDEwMCw1OSwxLDEwODEyLDQsNCw5OSwxMDMsMTEyLDExNiwxMTIwMiwxMTIwNiwxMTIxMSwxMTIxNiwxMjEsNTksMSwxMTA1LDExMSwxMTAsNTksMSwzMDMsMTAyLDU5LDMsNTUzNDksNTY2NjYsOTcsNTksMSw5NTMsMTE0LDExMSwxMDAsNTksMSwxMDgxMiwxMTcsMTAxLDExNSwxMTYsNSwxOTEsMSw1OSwxMTIzNSwxLDE5MSw0LDIsOTksMTA1LDExMjQzLDExMjQ4LDExNCw1OSwzLDU1MzQ5LDU2NTEwLDExMCw0LDUsNTksNjksMTAwLDExNSwxMTgsMTEyNjEsMTEyNjMsMTEyNjYsMTEyNzEsMTEyODIsMSw4NzEyLDU5LDEsODk1MywxMTEsMTE2LDU5LDEsODk0OSw0LDIsNTksMTE4LDExMjc3LDExMjc5LDEsODk0OCw1OSwxLDg5NDcsNTksMSw4NzEyLDQsMiw1OSwxMDUsMTEyOTEsMTEyOTMsMSw4MjkwLDEwOCwxMDAsMTAxLDU5LDEsMjk3LDQsMiwxMDcsMTA5LDExMzA1LDExMzEwLDk5LDEyMSw1OSwxLDExMTAsMTA4LDUsMjM5LDEsNTksMTEzMTYsMSwyMzksNCw2LDk5LDEwMiwxMDksMTExLDExNSwxMTcsMTEzMzIsMTEzNDYsMTEzNTEsMTEzNTcsMTEzNjMsMTEzODAsNCwyLDEwNSwxMjEsMTEzMzgsMTEzNDMsMTE0LDk5LDU5LDEsMzA5LDU5LDEsMTA4MSwxMTQsNTksMyw1NTM0OSw1NjYxNSw5NywxMTYsMTA0LDU5LDEsNTY3LDExMiwxMDIsNTksMyw1NTM0OSw1NjY2Nyw0LDIsOTksMTAxLDExMzY5LDExMzc0LDExNCw1OSwzLDU1MzQ5LDU2NTExLDExNCw5OSwxMjEsNTksMSwxMTEyLDEwNyw5OSwxMjEsNTksMSwxMTA4LDQsOCw5Nyw5OSwxMDIsMTAzLDEwNCwxMDYsMTExLDExNSwxMTQwNCwxMTQxOCwxMTQzMywxMTQzOCwxMTQ0NSwxMTQ1MCwxMTQ1NSwxMTQ2MSwxMTIsMTEyLDk3LDQsMiw1OSwxMTgsMTE0MTMsMTE0MTUsMSw5NTQsNTksMSwxMDA4LDQsMiwxMDEsMTIxLDExNDI0LDExNDMwLDEwMCwxMDUsMTA4LDU5LDEsMzExLDU5LDEsMTA4MiwxMTQsNTksMyw1NTM0OSw1NjYxNiwxMTQsMTAxLDEwMSwxMTAsNTksMSwzMTIsOTksMTIxLDU5LDEsMTA5Myw5OSwxMjEsNTksMSwxMTE2LDExMiwxMDIsNTksMyw1NTM0OSw1NjY2OCw5OSwxMTQsNTksMyw1NTM0OSw1NjUxMiw0LDIzLDY1LDY2LDY5LDcyLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA2LDEwOCwxMDksMTEwLDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDExOCwxMTUxNSwxMTUzOCwxMTU0NCwxMTU1NSwxMTU2MCwxMTcyMSwxMTc4MCwxMTgxOCwxMTg2OCwxMjEzNiwxMjE2MCwxMjE3MSwxMjIwMywxMjIwOCwxMjI0NiwxMjI3NSwxMjMyNywxMjUwOSwxMjUyMywxMjU2OSwxMjY0MSwxMjczMiwxMjc1Miw0LDMsOTcsMTE0LDExNiwxMTUyMywxMTUyOCwxMTUzMiwxMTQsMTE0LDU5LDEsODY2NiwxMTQsNTksMSw4NjU2LDk3LDEwNSwxMDgsNTksMSwxMDUyMyw5NywxMTQsMTE0LDU5LDEsMTA1MTAsNCwyLDU5LDEwMywxMTU1MCwxMTU1MiwxLDg4MDYsNTksMSwxMDg5MSw5NywxMTQsNTksMSwxMDU5NCw0LDksOTksMTAxLDEwMywxMDksMTEwLDExMiwxMTMsMTE0LDExNiwxMTU4MCwxMTU4NiwxMTU5NCwxMTYwMCwxMTYwNiwxMTYyNCwxMTYyNywxMTYzNiwxMTY5NCwxMTcsMTE2LDEwMSw1OSwxLDMxNCwxMDksMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzYsMTE0LDk3LDExMCw1OSwxLDg0NjYsOTgsMTAwLDk3LDU5LDEsOTU1LDEwMyw0LDMsNTksMTAwLDEwOCwxMTYxNSwxMTYxNywxMTYyMCwxLDEwMjE2LDU5LDEsMTA2NDEsMTAxLDU5LDEsMTAyMTYsNTksMSwxMDg4NSwxMTcsMTExLDUsMTcxLDEsNTksMTE2MzQsMSwxNzEsMTE0LDQsOCw1OSw5OCwxMDIsMTA0LDEwOCwxMTIsMTE1LDExNiwxMTY1NSwxMTY1NywxMTY2OSwxMTY3MywxMTY3NywxMTY4MSwxMTY4NSwxMTY5MCwxLDg1OTIsNCwyLDU5LDEwMiwxMTY2MywxMTY2NSwxLDg2NzYsMTE1LDU5LDEsMTA1MjcsMTE1LDU5LDEsMTA1MjUsMTA3LDU5LDEsODYxNywxMTIsNTksMSw4NjE5LDEwOCw1OSwxLDEwNTUzLDEwNSwxMDksNTksMSwxMDYxMSwxMDgsNTksMSw4NjEwLDQsMyw1OSw5NywxMDEsMTE3MDIsMTE3MDQsMTE3MDksMSwxMDkyMywxMDUsMTA4LDU5LDEsMTA1MjEsNCwyLDU5LDExNSwxMTcxNSwxMTcxNywxLDEwOTI1LDU5LDMsMTA5MjUsNjUwMjQsNCwzLDk3LDk4LDExNCwxMTcyOSwxMTczNCwxMTczOSwxMTQsMTE0LDU5LDEsMTA1MDgsMTE0LDEwNyw1OSwxLDEwMDk4LDQsMiw5NywxMDcsMTE3NDUsMTE3NTgsOTksNCwyLDEwMSwxMDcsMTE3NTIsMTE3NTUsNTksMSwxMjMsNTksMSw5MSw0LDIsMTAxLDExNSwxMTc2NCwxMTc2Nyw1OSwxLDEwNjM1LDEwOCw0LDIsMTAwLDExNywxMTc3NCwxMTc3Nyw1OSwxLDEwNjM5LDU5LDEsMTA2MzcsNCw0LDk3LDEwMSwxMTcsMTIxLDExNzkwLDExNzk2LDExODExLDExODE1LDExNCwxMTEsMTEwLDU5LDEsMzE4LDQsMiwxMDAsMTA1LDExODAyLDExODA3LDEwNSwxMDgsNTksMSwzMTYsMTA4LDU5LDEsODk2OCw5OCw1OSwxLDEyMyw1OSwxLDEwODMsNCw0LDk5LDExMywxMTQsMTE1LDExODI4LDExODMyLDExODQ1LDExODY0LDk3LDU5LDEsMTA1NTAsMTE3LDExMSw0LDIsNTksMTE0LDExODQwLDExODQyLDEsODIyMCw1OSwxLDgyMjIsNCwyLDEwMCwxMTcsMTE4NTEsMTE4NTcsMTA0LDk3LDExNCw1OSwxLDEwNTk5LDExNSwxMDQsOTcsMTE0LDU5LDEsMTA1NzEsMTA0LDU5LDEsODYyNiw0LDUsNTksMTAyLDEwMywxMTMsMTE1LDExODgwLDExODgyLDEyMDA4LDEyMDExLDEyMDMxLDEsODgwNCwxMTYsNCw1LDk3LDEwNCwxMDgsMTE0LDExNiwxMTg5NSwxMTkxMywxMTkzNSwxMTk0NywxMTk5NiwxMTQsMTE0LDExMSwxMTksNCwyLDU5LDExNiwxMTkwNSwxMTkwNywxLDg1OTIsOTcsMTA1LDEwOCw1OSwxLDg2MTAsOTcsMTE0LDExMiwxMTEsMTExLDExMCw0LDIsMTAwLDExNywxMTkyNSwxMTkzMSwxMTEsMTE5LDExMCw1OSwxLDg2MzcsMTEyLDU5LDEsODYzNiwxMDEsMTAyLDExNiw5NywxMTQsMTE0LDExMSwxMTksMTE1LDU5LDEsODY0NywxMDUsMTAzLDEwNCwxMTYsNCwzLDk3LDEwNCwxMTUsMTE5NTksMTE5NzQsMTE5ODQsMTE0LDExNCwxMTEsMTE5LDQsMiw1OSwxMTUsMTE5NjksMTE5NzEsMSw4NTk2LDU5LDEsODY0Niw5NywxMTQsMTEyLDExMSwxMTEsMTEwLDExNSw1OSwxLDg2NTEsMTEzLDExNywxMDUsMTAzLDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MjEsMTA0LDExNCwxMDEsMTAxLDExNiwxMDUsMTA5LDEwMSwxMTUsNTksMSw4OTA3LDU5LDEsODkyMiw0LDMsNTksMTEzLDExNSwxMjAxOSwxMjAyMSwxMjAyNCwxLDg4MDQsNTksMSw4ODA2LDEwOCw5NywxMTAsMTE2LDU5LDEsMTA4NzcsNCw1LDU5LDk5LDEwMCwxMDMsMTE1LDEyMDQzLDEyMDQ1LDEyMDQ5LDEyMDcwLDEyMDgzLDEsMTA4NzcsOTksNTksMSwxMDkyMCwxMTEsMTE2LDQsMiw1OSwxMTEsMTIwNTcsMTIwNTksMSwxMDg3OSw0LDIsNTksMTE0LDEyMDY1LDEyMDY3LDEsMTA4ODEsNTksMSwxMDg4Myw0LDIsNTksMTAxLDEyMDc2LDEyMDc5LDMsODkyMiw2NTAyNCwxMTUsNTksMSwxMDg5OSw0LDUsOTcsMTAwLDEwMSwxMDMsMTE1LDEyMDk1LDEyMTAzLDEyMTA4LDEyMTI2LDEyMTMxLDExMiwxMTIsMTE0LDExMSwxMjAsNTksMSwxMDg4NSwxMTEsMTE2LDU5LDEsODkxOCwxMTMsNCwyLDEwMywxMTMsMTIxMTUsMTIxMjAsMTE2LDExNCw1OSwxLDg5MjIsMTAzLDExNiwxMTQsNTksMSwxMDg5MSwxMTYsMTE0LDU5LDEsODgyMiwxMDUsMTA5LDU5LDEsODgxOCw0LDMsMTA1LDEwOCwxMTQsMTIxNDQsMTIxNTAsMTIxNTYsMTE1LDEwNCwxMTYsNTksMSwxMDYyMCwxMTEsMTExLDExNCw1OSwxLDg5NzAsNTksMyw1NTM0OSw1NjYxNyw0LDIsNTksNjksMTIxNjYsMTIxNjgsMSw4ODIyLDU5LDEsMTA4OTcsNCwyLDk3LDk4LDEyMTc3LDEyMTk4LDExNCw0LDIsMTAwLDExNywxMjE4NCwxMjE4Nyw1OSwxLDg2MzcsNCwyLDU5LDEwOCwxMjE5MywxMjE5NSwxLDg2MzYsNTksMSwxMDYwMiwxMDgsMTA3LDU5LDEsOTYwNCw5OSwxMjEsNTksMSwxMTEzLDQsNSw1OSw5Nyw5OSwxMDQsMTE2LDEyMjIwLDEyMjIyLDEyMjI3LDEyMjM1LDEyMjQxLDEsODgxMCwxMTQsMTE0LDU5LDEsODY0NywxMTEsMTE0LDExMCwxMDEsMTE0LDU5LDEsODk5MCw5NywxMTQsMTAwLDU5LDEsMTA2MDMsMTE0LDEwNSw1OSwxLDk3MjIsNCwyLDEwNSwxMTEsMTIyNTIsMTIyNTgsMTAwLDExMSwxMTYsNTksMSwzMjAsMTE3LDExNSwxMTYsNCwyLDU5LDk3LDEyMjY3LDEyMjY5LDEsOTEzNiw5OSwxMDQsMTAxLDU5LDEsOTEzNiw0LDQsNjksOTcsMTAxLDExNSwxMjI4NSwxMjI4OCwxMjMwMywxMjMyMiw1OSwxLDg4MDgsMTEyLDQsMiw1OSwxMTIsMTIyOTUsMTIyOTcsMSwxMDg4OSwxMTQsMTExLDEyMCw1OSwxLDEwODg5LDQsMiw1OSwxMTMsMTIzMDksMTIzMTEsMSwxMDg4Nyw0LDIsNTksMTEzLDEyMzE3LDEyMzE5LDEsMTA4ODcsNTksMSw4ODA4LDEwNSwxMDksNTksMSw4OTM0LDQsOCw5Nyw5OCwxMTAsMTExLDExMiwxMTYsMTE5LDEyMiwxMjM0NSwxMjM1OSwxMjM2NCwxMjQyMSwxMjQ0NiwxMjQ2NywxMjQ3NCwxMjQ5MCw0LDIsMTEwLDExNCwxMjM1MSwxMjM1NSwxMDMsNTksMSwxMDIyMCwxMTQsNTksMSw4NzAxLDExNCwxMDcsNTksMSwxMDIxNCwxMDMsNCwzLDEwOCwxMDksMTE0LDEyMzczLDEyNDAxLDEyNDA5LDEwMSwxMDIsMTE2LDQsMiw5NywxMTQsMTIzODIsMTIzODksMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMjksMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMxLDk3LDExMiwxMTUsMTE2LDExMSw1OSwxLDEwMjM2LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMCwxMTIsOTcsMTE0LDExNCwxMTEsMTE5LDQsMiwxMDgsMTE0LDEyNDMzLDEyNDM5LDEwMSwxMDIsMTE2LDU5LDEsODYxOSwxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjIwLDQsMyw5NywxMDIsMTA4LDEyNDU0LDEyNDU4LDEyNDYyLDExNCw1OSwxLDEwNjI5LDU5LDMsNTUzNDksNTY2NjksMTE3LDExNSw1OSwxLDEwNzk3LDEwNSwxMDksMTAxLDExNSw1OSwxLDEwODA0LDQsMiw5Nyw5OCwxMjQ4MCwxMjQ4NSwxMTUsMTE2LDU5LDEsODcyNyw5NywxMTQsNTksMSw5NSw0LDMsNTksMTAxLDEwMiwxMjQ5OCwxMjUwMCwxMjUwNiwxLDk2NzQsMTEwLDEwMywxMDEsNTksMSw5Njc0LDU5LDEsMTA3MzEsOTcsMTE0LDQsMiw1OSwxMDgsMTI1MTcsMTI1MTksMSw0MCwxMTYsNTksMSwxMDY0Myw0LDUsOTcsOTksMTA0LDEwOSwxMTYsMTI1MzUsMTI1NDAsMTI1NDgsMTI1NjEsMTI1NjQsMTE0LDExNCw1OSwxLDg2NDYsMTExLDExNCwxMTAsMTAxLDExNCw1OSwxLDg5OTEsOTcsMTE0LDQsMiw1OSwxMDAsMTI1NTYsMTI1NTgsMSw4NjUxLDU5LDEsMTA2MDUsNTksMSw4MjA2LDExNCwxMDUsNTksMSw4ODk1LDQsNiw5Nyw5OSwxMDQsMTA1LDExMywxMTYsMTI1ODMsMTI1ODksMTI1OTQsMTI1OTcsMTI2MTQsMTI2MzUsMTEzLDExNywxMTEsNTksMSw4MjQ5LDExNCw1OSwzLDU1MzQ5LDU2NTEzLDU5LDEsODYyNCwxMDksNCwzLDU5LDEwMSwxMDMsMTI2MDYsMTI2MDgsMTI2MTEsMSw4ODE4LDU5LDEsMTA4OTMsNTksMSwxMDg5NSw0LDIsOTgsMTE3LDEyNjIwLDEyNjIzLDU5LDEsOTEsMTExLDQsMiw1OSwxMTQsMTI2MzAsMTI2MzIsMSw4MjE2LDU5LDEsODIxOCwxMTQsMTExLDEwNyw1OSwxLDMyMiw1LDYwLDgsNTksOTksMTAwLDEwNCwxMDUsMTA4LDExMywxMTQsMTI2NjAsMTI2NjIsMTI2NzUsMTI2ODAsMTI2ODYsMTI2OTIsMTI2OTgsMTI3MDUsMSw2MCw0LDIsOTksMTA1LDEyNjY4LDEyNjcxLDU5LDEsMTA5MTgsMTE0LDU5LDEsMTA4NzMsMTExLDExNiw1OSwxLDg5MTgsMTE0LDEwMSwxMDEsNTksMSw4OTA3LDEwOSwxMDEsMTE1LDU5LDEsODkwNSw5NywxMTQsMTE0LDU5LDEsMTA2MTQsMTE3LDEwMSwxMTUsMTE2LDU5LDEsMTA4NzUsNCwyLDgwLDEwNSwxMjcxMSwxMjcxNiw5NywxMTQsNTksMSwxMDY0Niw0LDMsNTksMTAxLDEwMiwxMjcyNCwxMjcyNiwxMjcyOSwxLDk2NjcsNTksMSw4ODg0LDU5LDEsOTY2NiwxMTQsNCwyLDEwMCwxMTcsMTI3MzksMTI3NDYsMTE1LDEwNCw5NywxMTQsNTksMSwxMDU3MCwxMDQsOTcsMTE0LDU5LDEsMTA1OTgsNCwyLDEwMSwxMTAsMTI3NTgsMTI3NjgsMTE0LDExNiwxMTAsMTAxLDExMywxMTMsNTksMyw4ODA4LDY1MDI0LDY5LDU5LDMsODgwOCw2NTAyNCw0LDE0LDY4LDk3LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDExMCwxMTEsMTEyLDExNSwxMTcsMTI4MDMsMTI4MDksMTI4OTMsMTI5MDgsMTI5MTQsMTI5MjgsMTI5MzMsMTI5MzcsMTMwMTEsMTMwMjUsMTMwMzIsMTMwNDksMTMwNTIsMTMwNjksNjgsMTExLDExNiw1OSwxLDg3NjIsNCw0LDk5LDEwOCwxMTIsMTE0LDEyODE5LDEyODI3LDEyODQ5LDEyODg3LDExNCw1LDE3NSwxLDU5LDEyODI1LDEsMTc1LDQsMiwxMDEsMTE2LDEyODMzLDEyODM2LDU5LDEsOTc5NCw0LDIsNTksMTAxLDEyODQyLDEyODQ0LDEsMTAwMTYsMTE1LDEwMSw1OSwxLDEwMDE2LDQsMiw1OSwxMTUsMTI4NTUsMTI4NTcsMSw4NjE0LDExNiwxMTEsNCw0LDU5LDEwMCwxMDgsMTE3LDEyODY5LDEyODcxLDEyODc3LDEyODgzLDEsODYxNCwxMTEsMTE5LDExMCw1OSwxLDg2MTUsMTAxLDEwMiwxMTYsNTksMSw4NjEyLDExMiw1OSwxLDg2MTMsMTA3LDEwMSwxMTQsNTksMSw5NjQ2LDQsMiwxMTEsMTIxLDEyODk5LDEyOTA1LDEwOSwxMDksOTcsNTksMSwxMDc5Myw1OSwxLDEwODQsOTcsMTE1LDEwNCw1OSwxLDgyMTIsOTcsMTE1LDExNywxMTQsMTAxLDEwMCw5NywxMTAsMTAzLDEwOCwxMDEsNTksMSw4NzM3LDExNCw1OSwzLDU1MzQ5LDU2NjE4LDExMSw1OSwxLDg0ODcsNCwzLDk5LDEwMCwxMTAsMTI5NDUsMTI5NTQsMTI5ODUsMTE0LDExMSw1LDE4MSwxLDU5LDEyOTUyLDEsMTgxLDQsNCw1OSw5Nyw5OSwxMDAsMTI5NjQsMTI5NjYsMTI5NzEsMTI5NzYsMSw4NzM5LDExNSwxMTYsNTksMSw0MiwxMDUsMTE0LDU5LDEsMTA5OTIsMTExLDExNiw1LDE4MywxLDU5LDEyOTgzLDEsMTgzLDExNywxMTUsNCwzLDU5LDk4LDEwMCwxMjk5NSwxMjk5NywxMzAwMCwxLDg3MjIsNTksMSw4ODYzLDQsMiw1OSwxMTcsMTMwMDYsMTMwMDgsMSw4NzYwLDU5LDEsMTA3OTQsNCwyLDk5LDEwMCwxMzAxNywxMzAyMSwxMTIsNTksMSwxMDk3MSwxMTQsNTksMSw4MjMwLDExMiwxMDgsMTE3LDExNSw1OSwxLDg3MjMsNCwyLDEwMCwxMTIsMTMwMzgsMTMwNDQsMTAxLDEwOCwxMTUsNTksMSw4ODcxLDEwMiw1OSwzLDU1MzQ5LDU2NjcwLDU5LDEsODcyMyw0LDIsOTksMTE2LDEzMDU4LDEzMDYzLDExNCw1OSwzLDU1MzQ5LDU2NTE0LDExMiwxMTEsMTE1LDU5LDEsODc2Niw0LDMsNTksMTA4LDEwOSwxMzA3NywxMzA3OSwxMzA4NywxLDk1NiwxMTYsMTA1LDEwOSw5NywxMTIsNTksMSw4ODg4LDk3LDExMiw1OSwxLDg4ODgsNCwyNCw3MSw3Niw4Miw4Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA4LDEwOSwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEzMTQyLDEzMTY1LDEzMjE3LDEzMjI5LDEzMjQ3LDEzMzMwLDEzMzU5LDEzNDE0LDEzNDIwLDEzNTA4LDEzNTEzLDEzNTc5LDEzNjAyLDEzNjI2LDEzNjMxLDEzNzYyLDEzNzY3LDEzODU1LDEzOTM2LDEzOTk1LDE0MjE0LDE0Mjg1LDE0MzEyLDE0NDMyLDQsMiwxMDMsMTE2LDEzMTQ4LDEzMTUyLDU5LDMsODkyMSw4MjQsNCwyLDU5LDExOCwxMzE1OCwxMzE2MSwzLDg4MTEsODQwMiw1OSwzLDg4MTEsODI0LDQsMywxMDEsMTA4LDExNiwxMzE3MywxMzIwMCwxMzIwNCwxMDIsMTE2LDQsMiw5NywxMTQsMTMxODEsMTMxODgsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1MywxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1NCw1OSwzLDg5MjAsODI0LDQsMiw1OSwxMTgsMTMyMTAsMTMyMTMsMyw4ODEwLDg0MDIsNTksMyw4ODEwLDgyNCwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1NSw0LDIsNjgsMTAwLDEzMjM1LDEzMjQxLDk3LDExNSwxMDQsNTksMSw4ODc5LDk3LDExNSwxMDQsNTksMSw4ODc4LDQsNSw5OCw5OSwxMTAsMTEyLDExNiwxMzI1OSwxMzI2NCwxMzI3MCwxMzI3NSwxMzMwOCwxMDgsOTcsNTksMSw4NzExLDExNywxMTYsMTAxLDU5LDEsMzI0LDEwMyw1OSwzLDg3MzYsODQwMiw0LDUsNTksNjksMTA1LDExMSwxMTIsMTMyODcsMTMyODksMTMyOTMsMTMyOTgsMTMzMDIsMSw4Nzc3LDU5LDMsMTA4NjQsODI0LDEwMCw1OSwzLDg3NzksODI0LDExNSw1OSwxLDMyOSwxMTQsMTExLDEyMCw1OSwxLDg3NzcsMTE3LDExNCw0LDIsNTksOTcsMTMzMTYsMTMzMTgsMSw5ODM4LDEwOCw0LDIsNTksMTE1LDEzMzI1LDEzMzI3LDEsOTgzOCw1OSwxLDg0NjksNCwyLDExNSwxMTcsMTMzMzYsMTMzNDQsMTEyLDUsMTYwLDEsNTksMTMzNDIsMSwxNjAsMTA5LDExMiw0LDIsNTksMTAxLDEzMzUyLDEzMzU1LDMsODc4Miw4MjQsNTksMyw4NzgzLDgyNCw0LDUsOTcsMTAxLDExMSwxMTcsMTIxLDEzMzcxLDEzMzg1LDEzMzkxLDEzNDA3LDEzNDExLDQsMiwxMTIsMTE0LDEzMzc3LDEzMzgwLDU5LDEsMTA4MTksMTExLDExMCw1OSwxLDMyOCwxMDAsMTA1LDEwOCw1OSwxLDMyNiwxMTAsMTAzLDQsMiw1OSwxMDAsMTMzOTksMTM0MDEsMSw4Nzc1LDExMSwxMTYsNTksMywxMDg2MSw4MjQsMTEyLDU5LDEsMTA4MTgsNTksMSwxMDg1LDk3LDExNSwxMDQsNTksMSw4MjExLDQsNyw1OSw2NSw5NywxMDAsMTEzLDExNSwxMjAsMTM0MzYsMTM0MzgsMTM0NDMsMTM0NjYsMTM0NzIsMTM0NzgsMTM0OTQsMSw4ODAwLDExNCwxMTQsNTksMSw4NjYzLDExNCw0LDIsMTA0LDExNCwxMzQ1MCwxMzQ1NCwxMDcsNTksMSwxMDUzMiw0LDIsNTksMTExLDEzNDYwLDEzNDYyLDEsODU5OSwxMTksNTksMSw4NTk5LDExMSwxMTYsNTksMyw4Nzg0LDgyNCwxMTcsMTA1LDExOCw1OSwxLDg4MDIsNCwyLDEwMSwxMDUsMTM0ODQsMTM0ODksOTcsMTE0LDU5LDEsMTA1MzYsMTA5LDU5LDMsODc3MCw4MjQsMTA1LDExNSwxMTYsNCwyLDU5LDExNSwxMzUwMywxMzUwNSwxLDg3MDgsNTksMSw4NzA4LDExNCw1OSwzLDU1MzQ5LDU2NjE5LDQsNCw2OSwxMDEsMTE1LDExNiwxMzUyMywxMzUyNywxMzU2MywxMzU2OCw1OSwzLDg4MDcsODI0LDQsMyw1OSwxMTMsMTE1LDEzNTM1LDEzNTM3LDEzNTU5LDEsODgxNyw0LDMsNTksMTEzLDExNSwxMzU0NSwxMzU0NywxMzU1MSwxLDg4MTcsNTksMyw4ODA3LDgyNCwxMDgsOTcsMTEwLDExNiw1OSwzLDEwODc4LDgyNCw1OSwzLDEwODc4LDgyNCwxMDUsMTA5LDU5LDEsODgyMSw0LDIsNTksMTE0LDEzNTc0LDEzNTc2LDEsODgxNSw1OSwxLDg4MTUsNCwzLDY1LDk3LDExMiwxMzU4NywxMzU5MiwxMzU5NywxMTQsMTE0LDU5LDEsODY1NCwxMTQsMTE0LDU5LDEsODYyMiw5NywxMTQsNTksMSwxMDk5NCw0LDMsNTksMTE1LDExOCwxMzYxMCwxMzYxMiwxMzYyMywxLDg3MTUsNCwyLDU5LDEwMCwxMzYxOCwxMzYyMCwxLDg5NTYsNTksMSw4OTU0LDU5LDEsODcxNSw5OSwxMjEsNTksMSwxMTE0LDQsNyw2NSw2OSw5NywxMDAsMTAxLDExNSwxMTYsMTM2NDcsMTM2NTIsMTM2NTYsMTM2NjEsMTM2NjUsMTM3MzcsMTM3NDIsMTE0LDExNCw1OSwxLDg2NTMsNTksMyw4ODA2LDgyNCwxMTQsMTE0LDU5LDEsODYwMiwxMTQsNTksMSw4MjI5LDQsNCw1OSwxMDIsMTEzLDExNSwxMzY3NSwxMzY3NywxMzcwMywxMzcyNSwxLDg4MTYsMTE2LDQsMiw5NywxMTQsMTM2ODQsMTM2OTEsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwMiwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYyMiw0LDMsNTksMTEzLDExNSwxMzcxMSwxMzcxMywxMzcxNywxLDg4MTYsNTksMyw4ODA2LDgyNCwxMDgsOTcsMTEwLDExNiw1OSwzLDEwODc3LDgyNCw0LDIsNTksMTE1LDEzNzMxLDEzNzM0LDMsMTA4NzcsODI0LDU5LDEsODgxNCwxMDUsMTA5LDU5LDEsODgyMCw0LDIsNTksMTE0LDEzNzQ4LDEzNzUwLDEsODgxNCwxMDUsNCwyLDU5LDEwMSwxMzc1NywxMzc1OSwxLDg5MzgsNTksMSw4OTQwLDEwNSwxMDAsNTksMSw4NzQwLDQsMiwxMTIsMTE2LDEzNzczLDEzNzc4LDEwMiw1OSwzLDU1MzQ5LDU2NjcxLDUsMTcyLDMsNTksMTA1LDExMCwxMzc4NywxMzc4OSwxMzgyOSwxLDE3MiwxMTAsNCw0LDU5LDY5LDEwMCwxMTgsMTM4MDAsMTM4MDIsMTM4MDYsMTM4MTIsMSw4NzEzLDU5LDMsODk1Myw4MjQsMTExLDExNiw1OSwzLDg5NDksODI0LDQsMyw5Nyw5OCw5OSwxMzgyMCwxMzgyMywxMzgyNiw1OSwxLDg3MTMsNTksMSw4OTUxLDU5LDEsODk1MCwxMDUsNCwyLDU5LDExOCwxMzgzNiwxMzgzOCwxLDg3MTYsNCwzLDk3LDk4LDk5LDEzODQ2LDEzODQ5LDEzODUyLDU5LDEsODcxNiw1OSwxLDg5NTgsNTksMSw4OTU3LDQsMyw5NywxMTEsMTE0LDEzODYzLDEzODkyLDEzODk5LDExNCw0LDQsNTksOTcsMTE1LDExNiwxMzg3NCwxMzg3NiwxMzg4MywxMzg4OCwxLDg3NDIsMTA4LDEwOCwxMDEsMTA4LDU5LDEsODc0MiwxMDgsNTksMywxMTAwNSw4NDIxLDU5LDMsODcwNiw4MjQsMTA4LDEwNSwxMTAsMTE2LDU5LDEsMTA3NzIsNCwzLDU5LDk5LDEwMSwxMzkwNywxMzkwOSwxMzkxNCwxLDg4MzIsMTE3LDEwMSw1OSwxLDg5MjgsNCwyLDU5LDk5LDEzOTIwLDEzOTIzLDMsMTA5MjcsODI0LDQsMiw1OSwxMDEsMTM5MjksMTM5MzEsMSw4ODMyLDExMyw1OSwzLDEwOTI3LDgyNCw0LDQsNjUsOTcsMTA1LDExNiwxMzk0NiwxMzk1MSwxMzk3MSwxMzk4MiwxMTQsMTE0LDU5LDEsODY1NSwxMTQsMTE0LDQsMyw1OSw5OSwxMTksMTM5NjEsMTM5NjMsMTM5NjcsMSw4NjAzLDU5LDMsMTA1NDcsODI0LDU5LDMsODYwNSw4MjQsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwMywxMTQsMTA1LDQsMiw1OSwxMDEsMTM5OTAsMTM5OTIsMSw4OTM5LDU5LDEsODk0MSw0LDcsOTksMTA0LDEwNSwxMDksMTEyLDExMywxMTcsMTQwMTEsMTQwMzYsMTQwNjAsMTQwODAsMTQwODUsMTQwOTAsMTQxMDYsNCw0LDU5LDk5LDEwMSwxMTQsMTQwMjEsMTQwMjMsMTQwMjgsMTQwMzIsMSw4ODMzLDExNywxMDEsNTksMSw4OTI5LDU5LDMsMTA5MjgsODI0LDU5LDMsNTUzNDksNTY1MTUsMTExLDExNCwxMTYsNCwyLDEwOSwxMTIsMTQwNDUsMTQwNTAsMTA1LDEwMCw1OSwxLDg3NDAsOTcsMTE0LDk3LDEwOCwxMDgsMTAxLDEwOCw1OSwxLDg3NDIsMTA5LDQsMiw1OSwxMDEsMTQwNjcsMTQwNjksMSw4NzY5LDQsMiw1OSwxMTMsMTQwNzUsMTQwNzcsMSw4NzcyLDU5LDEsODc3MiwxMDUsMTAwLDU5LDEsODc0MCw5NywxMTQsNTksMSw4NzQyLDExNSwxMTcsNCwyLDk4LDExMiwxNDA5OCwxNDEwMiwxMDEsNTksMSw4OTMwLDEwMSw1OSwxLDg5MzEsNCwzLDk4LDk5LDExMiwxNDExNCwxNDE1NywxNDE3MSw0LDQsNTksNjksMTAxLDExNSwxNDEyNCwxNDEyNiwxNDEzMCwxNDEzMywxLDg4MzYsNTksMywxMDk0OSw4MjQsNTksMSw4ODQwLDEwMSwxMTYsNCwyLDU5LDEwMSwxNDE0MSwxNDE0NCwzLDg4MzQsODQwMiwxMTMsNCwyLDU5LDExMywxNDE1MSwxNDE1MywxLDg4NDAsNTksMywxMDk0OSw4MjQsOTksNCwyLDU5LDEwMSwxNDE2NCwxNDE2NiwxLDg4MzMsMTEzLDU5LDMsMTA5MjgsODI0LDQsNCw1OSw2OSwxMDEsMTE1LDE0MTgxLDE0MTgzLDE0MTg3LDE0MTkwLDEsODgzNyw1OSwzLDEwOTUwLDgyNCw1OSwxLDg4NDEsMTAxLDExNiw0LDIsNTksMTAxLDE0MTk4LDE0MjAxLDMsODgzNSw4NDAyLDExMyw0LDIsNTksMTEzLDE0MjA4LDE0MjEwLDEsODg0MSw1OSwzLDEwOTUwLDgyNCw0LDQsMTAzLDEwNSwxMDgsMTE0LDE0MjI0LDE0MjI4LDE0MjM4LDE0MjQyLDEwOCw1OSwxLDg4MjUsMTA4LDEwMCwxMDEsNSwyNDEsMSw1OSwxNDIzNiwxLDI0MSwxMDMsNTksMSw4ODI0LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwyLDEwOCwxMTQsMTQyNTQsMTQyNjksMTAxLDEwMiwxMTYsNCwyLDU5LDEwMSwxNDI2MywxNDI2NSwxLDg5MzgsMTEzLDU5LDEsODk0MCwxMDUsMTAzLDEwNCwxMTYsNCwyLDU5LDEwMSwxNDI3OSwxNDI4MSwxLDg5MzksMTEzLDU5LDEsODk0MSw0LDIsNTksMTA5LDE0MjkxLDE0MjkzLDEsOTU3LDQsMyw1OSwxMDEsMTE1LDE0MzAxLDE0MzAzLDE0MzA4LDEsMzUsMTE0LDExMSw1OSwxLDg0NzAsMTEyLDU5LDEsODE5OSw0LDksNjgsNzIsOTcsMTAwLDEwMywxMDUsMTA4LDExNCwxMTUsMTQzMzIsMTQzMzgsMTQzNDQsMTQzNDksMTQzNTUsMTQzNjksMTQzNzYsMTQ0MDgsMTQ0MjYsOTcsMTE1LDEwNCw1OSwxLDg4NzcsOTcsMTE0LDExNCw1OSwxLDEwNTAwLDExMiw1OSwzLDg3ODEsODQwMiw5NywxMTUsMTA0LDU5LDEsODg3Niw0LDIsMTAxLDExNiwxNDM2MSwxNDM2NSw1OSwzLDg4MDUsODQwMiw1OSwzLDYyLDg0MDIsMTEwLDEwMiwxMDUsMTEwLDU5LDEsMTA3MTgsNCwzLDY1LDEwMSwxMTYsMTQzODQsMTQzODksMTQzOTMsMTE0LDExNCw1OSwxLDEwNDk4LDU5LDMsODgwNCw4NDAyLDQsMiw1OSwxMTQsMTQzOTksMTQ0MDIsMyw2MCw4NDAyLDEwNSwxMDEsNTksMyw4ODg0LDg0MDIsNCwyLDY1LDExNiwxNDQxNCwxNDQxOSwxMTQsMTE0LDU5LDEsMTA0OTksMTE0LDEwNSwxMDEsNTksMyw4ODg1LDg0MDIsMTA1LDEwOSw1OSwzLDg3NjQsODQwMiw0LDMsNjUsOTcsMTEwLDE0NDQwLDE0NDQ1LDE0NDY4LDExNCwxMTQsNTksMSw4NjYyLDExNCw0LDIsMTA0LDExNCwxNDQ1MiwxNDQ1NiwxMDcsNTksMSwxMDUzMSw0LDIsNTksMTExLDE0NDYyLDE0NDY0LDEsODU5OCwxMTksNTksMSw4NTk4LDEwMSw5NywxMTQsNTksMSwxMDUzNSw0LDE4LDgzLDk3LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwOCwxMDksMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE4LDE0NTEyLDE0NTE1LDE0NTM1LDE0NTYwLDE0NTk3LDE0NjAzLDE0NjE4LDE0NjQzLDE0NjU3LDE0NjYyLDE0NzAxLDE0NzQxLDE0NzQ3LDE0NzY5LDE0ODUxLDE0ODc3LDE0OTA3LDE0OTE2LDU5LDEsOTQxNiw0LDIsOTksMTE1LDE0NTIxLDE0NTMxLDExNywxMTYsMTAxLDUsMjQzLDEsNTksMTQ1MjksMSwyNDMsMTE2LDU5LDEsODg1OSw0LDIsMTA1LDEyMSwxNDU0MSwxNDU1NywxMTQsNCwyLDU5LDk5LDE0NTQ4LDE0NTUwLDEsODg1OCw1LDI0NCwxLDU5LDE0NTU1LDEsMjQ0LDU5LDEsMTA4Niw0LDUsOTcsOTgsMTA1LDExMSwxMTUsMTQ1NzIsMTQ1NzcsMTQ1ODMsMTQ1ODcsMTQ1OTEsMTE1LDEwNCw1OSwxLDg4NjEsMTA4LDk3LDk5LDU5LDEsMzM3LDExOCw1OSwxLDEwODA4LDExNiw1OSwxLDg4NTcsMTExLDEwOCwxMDAsNTksMSwxMDY4NCwxMDgsMTA1LDEwMyw1OSwxLDMzOSw0LDIsOTksMTE0LDE0NjA5LDE0NjE0LDEwNSwxMTQsNTksMSwxMDY4Nyw1OSwzLDU1MzQ5LDU2NjIwLDQsMywxMTEsMTE0LDExNiwxNDYyNiwxNDYzMCwxNDY0MCwxMTAsNTksMSw3MzEsOTcsMTE4LDEwMSw1LDI0MiwxLDU5LDE0NjM4LDEsMjQyLDU5LDEsMTA2ODksNCwyLDk4LDEwOSwxNDY0OSwxNDY1NCw5NywxMTQsNTksMSwxMDY3Nyw1OSwxLDkzNywxMTAsMTE2LDU5LDEsODc1MCw0LDQsOTcsOTksMTA1LDExNiwxNDY3MiwxNDY3NywxNDY5MywxNDY5OCwxMTQsMTE0LDU5LDEsODYzNCw0LDIsMTA1LDExNCwxNDY4MywxNDY4NywxMTQsNTksMSwxMDY4NiwxMTEsMTE1LDExNSw1OSwxLDEwNjgzLDExMCwxMDEsNTksMSw4MjU0LDU5LDEsMTA2ODgsNCwzLDk3LDEwMSwxMDUsMTQ3MDksMTQ3MTQsMTQ3MTksOTksMTE0LDU5LDEsMzMzLDEwMyw5Nyw1OSwxLDk2OSw0LDMsOTksMTAwLDExMCwxNDcyNywxNDczMywxNDczNiwxMTQsMTExLDExMCw1OSwxLDk1OSw1OSwxLDEwNjc4LDExNywxMTUsNTksMSw4ODU0LDExMiwxMDIsNTksMyw1NTM0OSw1NjY3Miw0LDMsOTcsMTAxLDEwOCwxNDc1NSwxNDc1OSwxNDc2NCwxMTQsNTksMSwxMDY3OSwxMTQsMTEyLDU5LDEsMTA2ODEsMTE3LDExNSw1OSwxLDg4NTMsNCw3LDU5LDk3LDEwMCwxMDUsMTExLDExNSwxMTgsMTQ3ODUsMTQ3ODcsMTQ3OTIsMTQ4MzEsMTQ4MzcsMTQ4NDEsMTQ4NDgsMSw4NzQ0LDExNCwxMTQsNTksMSw4NjM1LDQsNCw1OSwxMDEsMTAyLDEwOSwxNDgwMiwxNDgwNCwxNDgxNywxNDgyNCwxLDEwODQ1LDExNCw0LDIsNTksMTExLDE0ODExLDE0ODEzLDEsODUwMCwxMDIsNTksMSw4NTAwLDUsMTcwLDEsNTksMTQ4MjIsMSwxNzAsNSwxODYsMSw1OSwxNDgyOSwxLDE4NiwxMDMsMTExLDEwMiw1OSwxLDg4ODYsMTE0LDU5LDEsMTA4MzgsMTA4LDExMSwxMTIsMTAxLDU5LDEsMTA4MzksNTksMSwxMDg0Myw0LDMsOTksMTA4LDExMSwxNDg1OSwxNDg2MywxNDg3MywxMTQsNTksMSw4NTAwLDk3LDExNSwxMDQsNSwyNDgsMSw1OSwxNDg3MSwxLDI0OCwxMDgsNTksMSw4ODU2LDEwNSw0LDIsMTA4LDEwOSwxNDg4NCwxNDg5MywxMDAsMTAxLDUsMjQ1LDEsNTksMTQ4OTEsMSwyNDUsMTAxLDExNSw0LDIsNTksOTcsMTQ5MDEsMTQ5MDMsMSw4ODU1LDExNSw1OSwxLDEwODA2LDEwOSwxMDgsNSwyNDYsMSw1OSwxNDkxNCwxLDI0Niw5OCw5NywxMTQsNTksMSw5MDIxLDQsMTIsOTcsOTksMTAxLDEwMiwxMDQsMTA1LDEwOCwxMDksMTExLDExNCwxMTUsMTE3LDE0OTQ4LDE0OTkyLDE0OTk2LDE1MDMzLDE1MDM4LDE1MDY4LDE1MDkwLDE1MTg5LDE1MTkyLDE1MjIyLDE1NDI3LDE1NDQxLDExNCw0LDQsNTksOTcsMTE1LDExNiwxNDk1OSwxNDk2MSwxNDk3NiwxNDk4OSwxLDg3NDEsNSwxODIsMiw1OSwxMDgsMTQ5NjgsMTQ5NzAsMSwxODIsMTA4LDEwMSwxMDgsNTksMSw4NzQxLDQsMiwxMDUsMTA4LDE0OTgyLDE0OTg2LDEwOSw1OSwxLDEwOTk1LDU5LDEsMTEwMDUsNTksMSw4NzA2LDEyMSw1OSwxLDEwODcsMTE0LDQsNSw5OSwxMDUsMTA5LDExMiwxMTYsMTUwMDksMTUwMTQsMTUwMTksMTUwMjQsMTUwMjcsMTEwLDExNiw1OSwxLDM3LDExMSwxMDAsNTksMSw0NiwxMDUsMTA4LDU5LDEsODI0MCw1OSwxLDg4NjksMTAxLDExMCwxMDcsNTksMSw4MjQxLDExNCw1OSwzLDU1MzQ5LDU2NjIxLDQsMywxMDUsMTA5LDExMSwxNTA0NiwxNTA1NywxNTA2Myw0LDIsNTksMTE4LDE1MDUyLDE1MDU0LDEsOTY2LDU5LDEsOTgxLDEwOSw5NywxMTYsNTksMSw4NDk5LDExMCwxMDEsNTksMSw5NzQyLDQsMyw1OSwxMTYsMTE4LDE1MDc2LDE1MDc4LDE1MDg3LDEsOTYwLDk5LDEwNCwxMDIsMTExLDExNCwxMDcsNTksMSw4OTE2LDU5LDEsOTgyLDQsMiw5NywxMTcsMTUwOTYsMTUxMTksMTEwLDQsMiw5OSwxMDcsMTUxMDMsMTUxMTUsMTA3LDQsMiw1OSwxMDQsMTUxMTAsMTUxMTIsMSw4NDYzLDU5LDEsODQ2MiwxMTgsNTksMSw4NDYzLDExNSw0LDksNTksOTcsOTgsOTksMTAwLDEwMSwxMDksMTE1LDExNiwxNTE0MCwxNTE0MiwxNTE0OCwxNTE1MSwxNTE1NiwxNTE2OCwxNTE3MSwxNTE3OSwxNTE4NCwxLDQzLDk5LDEwNSwxMTQsNTksMSwxMDc4Nyw1OSwxLDg4NjIsMTA1LDExNCw1OSwxLDEwNzg2LDQsMiwxMTEsMTE3LDE1MTYyLDE1MTY1LDU5LDEsODcyNCw1OSwxLDEwNzg5LDU5LDEsMTA4NjYsMTEwLDUsMTc3LDEsNTksMTUxNzcsMSwxNzcsMTA1LDEwOSw1OSwxLDEwNzkwLDExOSwxMTEsNTksMSwxMDc5MSw1OSwxLDE3Nyw0LDMsMTA1LDExMiwxMTcsMTUyMDAsMTUyMDgsMTUyMTMsMTEwLDExNiwxMDUsMTEwLDExNiw1OSwxLDEwNzczLDEwMiw1OSwzLDU1MzQ5LDU2NjczLDExMCwxMDAsNSwxNjMsMSw1OSwxNTIyMCwxLDE2Myw0LDEwLDU5LDY5LDk3LDk5LDEwMSwxMDUsMTEwLDExMSwxMTUsMTE3LDE1MjQ0LDE1MjQ2LDE1MjQ5LDE1MjUzLDE1MjU4LDE1MzM0LDE1MzQ3LDE1MzY3LDE1NDE2LDE1NDIxLDEsODgyNiw1OSwxLDEwOTMxLDExMiw1OSwxLDEwOTM1LDExNywxMDEsNTksMSw4ODI4LDQsMiw1OSw5OSwxNTI2NCwxNTI2NiwxLDEwOTI3LDQsNiw1OSw5Nyw5OSwxMDEsMTEwLDExNSwxNTI4MCwxNTI4MiwxNTI5MCwxNTI5OSwxNTMwMywxNTMyOSwxLDg4MjYsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDEwOTM1LDExNywxMTQsMTA4LDEyMSwxMDEsMTEzLDU5LDEsODgyOCwxMTMsNTksMSwxMDkyNyw0LDMsOTcsMTAxLDExNSwxNTMxMSwxNTMxOSwxNTMyNCwxMTIsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA5MzcsMTEzLDExMyw1OSwxLDEwOTMzLDEwNSwxMDksNTksMSw4OTM2LDEwNSwxMDksNTksMSw4ODMwLDEwOSwxMDEsNCwyLDU5LDExNSwxNTM0MiwxNTM0NCwxLDgyNDIsNTksMSw4NDczLDQsMyw2OSw5NywxMTUsMTUzNTUsMTUzNTgsMTUzNjIsNTksMSwxMDkzMywxMTIsNTksMSwxMDkzNywxMDUsMTA5LDU5LDEsODkzNiw0LDMsMTAwLDEwMiwxMTIsMTUzNzUsMTUzNzgsMTU0MDQsNTksMSw4NzE5LDQsMyw5NywxMDgsMTE1LDE1Mzg2LDE1MzkyLDE1Mzk4LDEwOCw5NywxMTQsNTksMSw5MDA2LDEwNSwxMTAsMTAxLDU5LDEsODk3OCwxMTcsMTE0LDEwMiw1OSwxLDg5NzksNCwyLDU5LDExNiwxNTQxMCwxNTQxMiwxLDg3MzMsMTExLDU5LDEsODczMywxMDUsMTA5LDU5LDEsODgzMCwxMTQsMTAxLDEwOCw1OSwxLDg4ODAsNCwyLDk5LDEwNSwxNTQzMywxNTQzOCwxMTQsNTksMyw1NTM0OSw1NjUxNyw1OSwxLDk2OCwxMTAsOTksMTE1LDExMiw1OSwxLDgyMDAsNCw2LDEwMiwxMDUsMTExLDExMiwxMTUsMTE3LDE1NDYyLDE1NDY3LDE1NDcyLDE1NDc4LDE1NDg1LDE1NDkxLDExNCw1OSwzLDU1MzQ5LDU2NjIyLDExMCwxMTYsNTksMSwxMDc2NCwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NzQsMTE0LDEwNSwxMDksMTAxLDU5LDEsODI3OSw5OSwxMTQsNTksMyw1NTM0OSw1NjUxOCw0LDMsOTcsMTAxLDExMSwxNTQ5OSwxNTUyMCwxNTUzNCwxMTYsNCwyLDEwMSwxMDUsMTU1MDYsMTU1MTUsMTE0LDExMCwxMDUsMTExLDExMCwxMTUsNTksMSw4NDYxLDExMCwxMTYsNTksMSwxMDc3NCwxMTUsMTE2LDQsMiw1OSwxMDEsMTU1MjgsMTU1MzAsMSw2MywxMTMsNTksMSw4Nzk5LDExNiw1LDM0LDEsNTksMTU1NDAsMSwzNCw0LDIxLDY1LDY2LDcyLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDEwOSwxMTAsMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTIwLDE1NTg2LDE1NjA5LDE1NjE1LDE1NjIwLDE1Nzk2LDE1ODU1LDE1ODkzLDE1OTMxLDE1OTc3LDE2MDAxLDE2MDM5LDE2MTgzLDE2MjA0LDE2MjIyLDE2MjI4LDE2Mjg1LDE2MzEyLDE2MzE4LDE2MzYzLDE2NDA4LDE2NDE2LDQsMyw5NywxMTQsMTE2LDE1NTk0LDE1NTk5LDE1NjAzLDExNCwxMTQsNTksMSw4NjY3LDExNCw1OSwxLDg2NTgsOTcsMTA1LDEwOCw1OSwxLDEwNTI0LDk3LDExNCwxMTQsNTksMSwxMDUxMSw5NywxMTQsNTksMSwxMDU5Niw0LDcsOTksMTAwLDEwMSwxMTAsMTEzLDExNCwxMTYsMTU2MzYsMTU2NTEsMTU2NTYsMTU2NjQsMTU2ODcsMTU2OTYsMTU3NzAsNCwyLDEwMSwxMTcsMTU2NDIsMTU2NDYsNTksMyw4NzY1LDgxNywxMTYsMTAxLDU5LDEsMzQxLDEwNSw5OSw1OSwxLDg3MzAsMTA5LDExMiwxMTYsMTIxLDExOCw1OSwxLDEwNjc1LDEwMyw0LDQsNTksMTAwLDEwMSwxMDgsMTU2NzUsMTU2NzcsMTU2ODAsMTU2ODMsMSwxMDIxNyw1OSwxLDEwNjQyLDU5LDEsMTA2NjEsMTAxLDU5LDEsMTAyMTcsMTE3LDExMSw1LDE4NywxLDU5LDE1Njk0LDEsMTg3LDExNCw0LDExLDU5LDk3LDk4LDk5LDEwMiwxMDQsMTA4LDExMiwxMTUsMTE2LDExOSwxNTcyMSwxNTcyMywxNTcyNywxNTczOSwxNTc0MiwxNTc0NiwxNTc1MCwxNTc1NCwxNTc1OCwxNTc2MywxNTc2NywxLDg1OTQsMTEyLDU5LDEsMTA2MTMsNCwyLDU5LDEwMiwxNTczMywxNTczNSwxLDg2NzcsMTE1LDU5LDEsMTA1MjgsNTksMSwxMDU0NywxMTUsNTksMSwxMDUyNiwxMDcsNTksMSw4NjE4LDExMiw1OSwxLDg2MjAsMTA4LDU5LDEsMTA1NjUsMTA1LDEwOSw1OSwxLDEwNjEyLDEwOCw1OSwxLDg2MTEsNTksMSw4NjA1LDQsMiw5NywxMDUsMTU3NzYsMTU3ODEsMTA1LDEwOCw1OSwxLDEwNTIyLDExMSw0LDIsNTksMTEwLDE1Nzg4LDE1NzkwLDEsODc1OCw5NywxMDgsMTE1LDU5LDEsODQ3NCw0LDMsOTcsOTgsMTE0LDE1ODA0LDE1ODA5LDE1ODE0LDExNCwxMTQsNTksMSwxMDUwOSwxMTQsMTA3LDU5LDEsMTAwOTksNCwyLDk3LDEwNywxNTgyMCwxNTgzMyw5OSw0LDIsMTAxLDEwNywxNTgyNywxNTgzMCw1OSwxLDEyNSw1OSwxLDkzLDQsMiwxMDEsMTE1LDE1ODM5LDE1ODQyLDU5LDEsMTA2MzYsMTA4LDQsMiwxMDAsMTE3LDE1ODQ5LDE1ODUyLDU5LDEsMTA2MzgsNTksMSwxMDY0MCw0LDQsOTcsMTAxLDExNywxMjEsMTU4NjUsMTU4NzEsMTU4ODYsMTU4OTAsMTE0LDExMSwxMTAsNTksMSwzNDUsNCwyLDEwMCwxMDUsMTU4NzcsMTU4ODIsMTA1LDEwOCw1OSwxLDM0MywxMDgsNTksMSw4OTY5LDk4LDU5LDEsMTI1LDU5LDEsMTA4OCw0LDQsOTksMTA4LDExMywxMTUsMTU5MDMsMTU5MDcsMTU5MTQsMTU5MjcsOTcsNTksMSwxMDU1MSwxMDAsMTA0LDk3LDExNCw1OSwxLDEwNjAxLDExNywxMTEsNCwyLDU5LDExNCwxNTkyMiwxNTkyNCwxLDgyMjEsNTksMSw4MjIxLDEwNCw1OSwxLDg2MjcsNCwzLDk3LDk5LDEwMywxNTkzOSwxNTk2NiwxNTk3MCwxMDgsNCw0LDU5LDEwNSwxMTIsMTE1LDE1OTUwLDE1OTUyLDE1OTU3LDE1OTYzLDEsODQ3NiwxMTAsMTAxLDU5LDEsODQ3NSw5NywxMTQsMTE2LDU5LDEsODQ3Niw1OSwxLDg0NzcsMTE2LDU5LDEsOTY0NSw1LDE3NCwxLDU5LDE1OTc1LDEsMTc0LDQsMywxMDUsMTA4LDExNCwxNTk4NSwxNTk5MSwxNTk5NywxMTUsMTA0LDExNiw1OSwxLDEwNjIxLDExMSwxMTEsMTE0LDU5LDEsODk3MSw1OSwzLDU1MzQ5LDU2NjIzLDQsMiw5NywxMTEsMTYwMDcsMTYwMjgsMTE0LDQsMiwxMDAsMTE3LDE2MDE0LDE2MDE3LDU5LDEsODY0MSw0LDIsNTksMTA4LDE2MDIzLDE2MDI1LDEsODY0MCw1OSwxLDEwNjA0LDQsMiw1OSwxMTgsMTYwMzQsMTYwMzYsMSw5NjEsNTksMSwxMDA5LDQsMywxMDMsMTEwLDExNSwxNjA0NywxNjE2NywxNjE3MSwxMDQsMTE2LDQsNiw5NywxMDQsMTA4LDExNCwxMTUsMTE2LDE2MDYzLDE2MDgxLDE2MTAzLDE2MTMwLDE2MTQzLDE2MTU1LDExNCwxMTQsMTExLDExOSw0LDIsNTksMTE2LDE2MDczLDE2MDc1LDEsODU5NCw5NywxMDUsMTA4LDU5LDEsODYxMSw5NywxMTQsMTEyLDExMSwxMTEsMTEwLDQsMiwxMDAsMTE3LDE2MDkzLDE2MDk5LDExMSwxMTksMTEwLDU5LDEsODY0MSwxMTIsNTksMSw4NjQwLDEwMSwxMDIsMTE2LDQsMiw5NywxMDQsMTYxMTIsMTYxMjAsMTE0LDExNCwxMTEsMTE5LDExNSw1OSwxLDg2NDQsOTcsMTE0LDExMiwxMTEsMTExLDExMCwxMTUsNTksMSw4NjUyLDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksMTE1LDU5LDEsODY0OSwxMTMsMTE3LDEwNSwxMDMsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwNSwxMDQsMTE0LDEwMSwxMDEsMTE2LDEwNSwxMDksMTAxLDExNSw1OSwxLDg5MDgsMTAzLDU5LDEsNzMwLDEwNSwxMTAsMTAzLDEwMCwxMTEsMTE2LDExNSwxMDEsMTEzLDU5LDEsODc4Nyw0LDMsOTcsMTA0LDEwOSwxNjE5MSwxNjE5NiwxNjIwMSwxMTQsMTE0LDU5LDEsODY0NCw5NywxMTQsNTksMSw4NjUyLDU5LDEsODIwNywxMTEsMTE3LDExNSwxMTYsNCwyLDU5LDk3LDE2MjE0LDE2MjE2LDEsOTEzNyw5OSwxMDQsMTAxLDU5LDEsOTEzNywxMDksMTA1LDEwMCw1OSwxLDEwOTkwLDQsNCw5Nyw5OCwxMTIsMTE2LDE2MjM4LDE2MjUyLDE2MjU3LDE2Mjc4LDQsMiwxMTAsMTE0LDE2MjQ0LDE2MjQ4LDEwMyw1OSwxLDEwMjIxLDExNCw1OSwxLDg3MDIsMTE0LDEwNyw1OSwxLDEwMjE1LDQsMyw5NywxMDIsMTA4LDE2MjY1LDE2MjY5LDE2MjczLDExNCw1OSwxLDEwNjMwLDU5LDMsNTUzNDksNTY2NzUsMTE3LDExNSw1OSwxLDEwNzk4LDEwNSwxMDksMTAxLDExNSw1OSwxLDEwODA1LDQsMiw5NywxMTIsMTYyOTEsMTYzMDQsMTE0LDQsMiw1OSwxMDMsMTYyOTgsMTYzMDAsMSw0MSwxMTYsNTksMSwxMDY0NCwxMTEsMTA4LDEwNSwxMTAsMTE2LDU5LDEsMTA3NzAsOTcsMTE0LDExNCw1OSwxLDg2NDksNCw0LDk3LDk5LDEwNCwxMTMsMTYzMjgsMTYzMzQsMTYzMzksMTYzNDIsMTEzLDExNywxMTEsNTksMSw4MjUwLDExNCw1OSwzLDU1MzQ5LDU2NTE5LDU5LDEsODYyNSw0LDIsOTgsMTE3LDE2MzQ4LDE2MzUxLDU5LDEsOTMsMTExLDQsMiw1OSwxMTQsMTYzNTgsMTYzNjAsMSw4MjE3LDU5LDEsODIxNyw0LDMsMTA0LDEwNSwxMTQsMTYzNzEsMTYzNzcsMTYzODMsMTE0LDEwMSwxMDEsNTksMSw4OTA4LDEwOSwxMDEsMTE1LDU5LDEsODkwNiwxMDUsNCw0LDU5LDEwMSwxMDIsMTA4LDE2Mzk0LDE2Mzk2LDE2Mzk5LDE2NDAyLDEsOTY1Nyw1OSwxLDg4ODUsNTksMSw5NjU2LDExNiwxMTQsMTA1LDU5LDEsMTA3MDIsMTA4LDExNywxMDQsOTcsMTE0LDU5LDEsMTA2MDAsNTksMSw4NDc4LDQsMTksOTcsOTgsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMDgsMTA5LDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTksMTIyLDE2NDU5LDE2NDY2LDE2NDcyLDE2NTcyLDE2NTkwLDE2NjcyLDE2Njg3LDE2NzQ2LDE2ODQ0LDE2ODUwLDE2OTI0LDE2OTYzLDE2OTg4LDE3MTE1LDE3MTIxLDE3MTU0LDE3MjA2LDE3NjE0LDE3NjU2LDk5LDExNywxMTYsMTAxLDU5LDEsMzQ3LDExMywxMTcsMTExLDU5LDEsODIxOCw0LDEwLDU5LDY5LDk3LDk5LDEwMSwxMDUsMTEwLDExMiwxMTUsMTIxLDE2NDk0LDE2NDk2LDE2NDk5LDE2NTEzLDE2NTE4LDE2NTMxLDE2NTM2LDE2NTU2LDE2NTY0LDE2NTY5LDEsODgyNyw1OSwxLDEwOTMyLDQsMiwxMTIsMTE0LDE2NTA1LDE2NTA4LDU5LDEsMTA5MzYsMTExLDExMCw1OSwxLDM1MywxMTcsMTAxLDU5LDEsODgyOSw0LDIsNTksMTAwLDE2NTI0LDE2NTI2LDEsMTA5MjgsMTA1LDEwOCw1OSwxLDM1MSwxMTQsOTksNTksMSwzNDksNCwzLDY5LDk3LDExNSwxNjU0NCwxNjU0NywxNjU1MSw1OSwxLDEwOTM0LDExMiw1OSwxLDEwOTM4LDEwNSwxMDksNTksMSw4OTM3LDExMSwxMDgsMTA1LDExMCwxMTYsNTksMSwxMDc3MSwxMDUsMTA5LDU5LDEsODgzMSw1OSwxLDEwODksMTExLDExNiw0LDMsNTksOTgsMTAxLDE2NTgyLDE2NTg0LDE2NTg3LDEsODkwMSw1OSwxLDg4NjUsNTksMSwxMDg1NCw0LDcsNjUsOTcsOTksMTA5LDExNSwxMTYsMTIwLDE2NjA2LDE2NjExLDE2NjM0LDE2NjQyLDE2NjQ2LDE2NjUyLDE2NjY4LDExNCwxMTQsNTksMSw4NjY0LDExNCw0LDIsMTA0LDExNCwxNjYxOCwxNjYyMiwxMDcsNTksMSwxMDUzMyw0LDIsNTksMTExLDE2NjI4LDE2NjMwLDEsODYwMCwxMTksNTksMSw4NjAwLDExNiw1LDE2NywxLDU5LDE2NjQwLDEsMTY3LDEwNSw1OSwxLDU5LDExOSw5NywxMTQsNTksMSwxMDUzNywxMDksNCwyLDEwNSwxMTAsMTY2NTksMTY2NjUsMTEwLDExNywxMTUsNTksMSw4NzI2LDU5LDEsODcyNiwxMTYsNTksMSwxMDAzOCwxMTQsNCwyLDU5LDExMSwxNjY3OSwxNjY4MiwzLDU1MzQ5LDU2NjI0LDExOSwxMTAsNTksMSw4OTk0LDQsNCw5Nyw5OSwxMTEsMTIxLDE2Njk3LDE2NzAyLDE2NzE2LDE2NzM5LDExNCwxMTIsNTksMSw5ODM5LDQsMiwxMDQsMTIxLDE2NzA4LDE2NzEzLDk5LDEyMSw1OSwxLDEwOTcsNTksMSwxMDk2LDExNCwxMTYsNCwyLDEwOSwxMTIsMTY3MjQsMTY3MjksMTA1LDEwMCw1OSwxLDg3MzksOTcsMTE0LDk3LDEwOCwxMDgsMTAxLDEwOCw1OSwxLDg3NDEsNSwxNzMsMSw1OSwxNjc0NCwxLDE3Myw0LDIsMTAzLDEwOSwxNjc1MiwxNjc3MCwxMDksOTcsNCwzLDU5LDEwMiwxMTgsMTY3NjIsMTY3NjQsMTY3NjcsMSw5NjMsNTksMSw5NjIsNTksMSw5NjIsNCw4LDU5LDEwMCwxMDEsMTAzLDEwOCwxMTAsMTEyLDExNCwxNjc4OCwxNjc5MCwxNjc5NSwxNjgwNiwxNjgxNywxNjgyOCwxNjgzMiwxNjgzOCwxLDg3NjQsMTExLDExNiw1OSwxLDEwODU4LDQsMiw1OSwxMTMsMTY4MDEsMTY4MDMsMSw4NzcxLDU5LDEsODc3MSw0LDIsNTksNjksMTY4MTIsMTY4MTQsMSwxMDkxMCw1OSwxLDEwOTEyLDQsMiw1OSw2OSwxNjgyMywxNjgyNSwxLDEwOTA5LDU5LDEsMTA5MTEsMTAxLDU5LDEsODc3NCwxMDgsMTE3LDExNSw1OSwxLDEwNzg4LDk3LDExNCwxMTQsNTksMSwxMDYxMCw5NywxMTQsMTE0LDU5LDEsODU5Miw0LDQsOTcsMTAxLDEwNSwxMTYsMTY4NjAsMTY4ODMsMTY4OTEsMTY5MDQsNCwyLDEwOCwxMTUsMTY4NjYsMTY4NzgsMTA4LDExNSwxMDEsMTE2LDEwOSwxMDUsMTEwLDExNywxMTUsNTksMSw4NzI2LDEwNCwxMTIsNTksMSwxMDgwMywxMTIsOTcsMTE0LDExNSwxMDgsNTksMSwxMDcyNCw0LDIsMTAwLDEwOCwxNjg5NywxNjkwMCw1OSwxLDg3MzksMTAxLDU5LDEsODk5NSw0LDIsNTksMTAxLDE2OTEwLDE2OTEyLDEsMTA5MjIsNCwyLDU5LDExNSwxNjkxOCwxNjkyMCwxLDEwOTI0LDU5LDMsMTA5MjQsNjUwMjQsNCwzLDEwMiwxMDgsMTEyLDE2OTMyLDE2OTM4LDE2OTU4LDExNiw5OSwxMjEsNTksMSwxMTAwLDQsMiw1OSw5OCwxNjk0NCwxNjk0NiwxLDQ3LDQsMiw1OSw5NywxNjk1MiwxNjk1NCwxLDEwNjkyLDExNCw1OSwxLDkwMjMsMTAyLDU5LDMsNTUzNDksNTY2NzYsOTcsNCwyLDEwMCwxMTQsMTY5NzAsMTY5ODUsMTAxLDExNSw0LDIsNTksMTE3LDE2OTc4LDE2OTgwLDEsOTgyNCwxMDUsMTE2LDU5LDEsOTgyNCw1OSwxLDg3NDEsNCwzLDk5LDExNSwxMTcsMTY5OTYsMTcwMjgsMTcwODksNCwyLDk3LDExNywxNzAwMiwxNzAxNSwxMTIsNCwyLDU5LDExNSwxNzAwOSwxNzAxMSwxLDg4NTEsNTksMyw4ODUxLDY1MDI0LDExMiw0LDIsNTksMTE1LDE3MDIyLDE3MDI0LDEsODg1Miw1OSwzLDg4NTIsNjUwMjQsMTE3LDQsMiw5OCwxMTIsMTcwMzUsMTcwNjIsNCwzLDU5LDEwMSwxMTUsMTcwNDMsMTcwNDUsMTcwNDgsMSw4ODQ3LDU5LDEsODg0OSwxMDEsMTE2LDQsMiw1OSwxMDEsMTcwNTYsMTcwNTgsMSw4ODQ3LDExMyw1OSwxLDg4NDksNCwzLDU5LDEwMSwxMTUsMTcwNzAsMTcwNzIsMTcwNzUsMSw4ODQ4LDU5LDEsODg1MCwxMDEsMTE2LDQsMiw1OSwxMDEsMTcwODMsMTcwODUsMSw4ODQ4LDExMyw1OSwxLDg4NTAsNCwzLDU5LDk3LDEwMiwxNzA5NywxNzA5OSwxNzExMiwxLDk2MzMsMTE0LDQsMiwxMDEsMTAyLDE3MTA2LDE3MTA5LDU5LDEsOTYzMyw1OSwxLDk2NDIsNTksMSw5NjQyLDk3LDExNCwxMTQsNTksMSw4NTk0LDQsNCw5OSwxMDEsMTA5LDExNiwxNzEzMSwxNzEzNiwxNzE0MiwxNzE0OCwxMTQsNTksMyw1NTM0OSw1NjUyMCwxMTYsMTA5LDExMCw1OSwxLDg3MjYsMTA1LDEwOCwxMDEsNTksMSw4OTk1LDk3LDExNCwxMDIsNTksMSw4OTAyLDQsMiw5NywxMTQsMTcxNjAsMTcxNzIsMTE0LDQsMiw1OSwxMDIsMTcxNjcsMTcxNjksMSw5NzM0LDU5LDEsOTczMyw0LDIsOTcsMTEwLDE3MTc4LDE3MjAyLDEwNSwxMDMsMTA0LDExNiw0LDIsMTAxLDExMiwxNzE4OCwxNzE5NywxMTIsMTE1LDEwNSwxMDgsMTExLDExMCw1OSwxLDEwMTMsMTA0LDEwNSw1OSwxLDk4MSwxMTUsNTksMSwxNzUsNCw1LDk4LDk5LDEwOSwxMTAsMTEyLDE3MjE4LDE3MzUxLDE3NDIwLDE3NDIzLDE3NDI3LDQsOSw1OSw2OSwxMDAsMTAxLDEwOSwxMTAsMTEyLDExNCwxMTUsMTcyMzgsMTcyNDAsMTcyNDMsMTcyNDgsMTcyNjEsMTcyNjcsMTcyNzksMTcyODUsMTcyOTEsMSw4ODM0LDU5LDEsMTA5NDksMTExLDExNiw1OSwxLDEwOTQxLDQsMiw1OSwxMDAsMTcyNTQsMTcyNTYsMSw4ODM4LDExMSwxMTYsNTksMSwxMDk0NywxMTcsMTA4LDExNiw1OSwxLDEwOTQ1LDQsMiw2OSwxMDEsMTcyNzMsMTcyNzYsNTksMSwxMDk1NSw1OSwxLDg4NDIsMTA4LDExNywxMTUsNTksMSwxMDk0Myw5NywxMTQsMTE0LDU5LDEsMTA2MTcsNCwzLDEwMSwxMDUsMTE3LDE3Mjk5LDE3MzM1LDE3MzM5LDExNiw0LDMsNTksMTAxLDExMCwxNzMwOCwxNzMxMCwxNzMyMiwxLDg4MzQsMTEzLDQsMiw1OSwxMTMsMTczMTcsMTczMTksMSw4ODM4LDU5LDEsMTA5NDksMTAxLDExMyw0LDIsNTksMTEzLDE3MzMwLDE3MzMyLDEsODg0Miw1OSwxLDEwOTU1LDEwOSw1OSwxLDEwOTUxLDQsMiw5OCwxMTIsMTczNDUsMTczNDgsNTksMSwxMDk2NSw1OSwxLDEwOTYzLDk5LDQsNiw1OSw5Nyw5OSwxMDEsMTEwLDExNSwxNzM2NiwxNzM2OCwxNzM3NiwxNzM4NSwxNzM4OSwxNzQxNSwxLDg4MjcsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDEwOTM2LDExNywxMTQsMTA4LDEyMSwxMDEsMTEzLDU5LDEsODgyOSwxMTMsNTksMSwxMDkyOCw0LDMsOTcsMTAxLDExNSwxNzM5NywxNzQwNSwxNzQxMCwxMTIsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA5MzgsMTEzLDExMyw1OSwxLDEwOTM0LDEwNSwxMDksNTksMSw4OTM3LDEwNSwxMDksNTksMSw4ODMxLDU5LDEsODcyMSwxMDMsNTksMSw5ODM0LDQsMTMsNDksNTAsNTEsNTksNjksMTAwLDEwMSwxMDQsMTA4LDEwOSwxMTAsMTEyLDExNSwxNzQ1NSwxNzQ2MiwxNzQ2OSwxNzQ3NiwxNzQ3OCwxNzQ4MSwxNzQ5NiwxNzUwOSwxNzUyNCwxNzUzMCwxNzUzNiwxNzU0OCwxNzU1NCw1LDE4NSwxLDU5LDE3NDYwLDEsMTg1LDUsMTc4LDEsNTksMTc0NjcsMSwxNzgsNSwxNzksMSw1OSwxNzQ3NCwxLDE3OSwxLDg4MzUsNTksMSwxMDk1MCw0LDIsMTExLDExNSwxNzQ4NywxNzQ5MSwxMTYsNTksMSwxMDk0MiwxMTcsOTgsNTksMSwxMDk2OCw0LDIsNTksMTAwLDE3NTAyLDE3NTA0LDEsODgzOSwxMTEsMTE2LDU5LDEsMTA5NDgsMTE1LDQsMiwxMTEsMTE3LDE3NTE2LDE3NTIwLDEwOCw1OSwxLDEwMTg1LDk4LDU5LDEsMTA5NjcsOTcsMTE0LDExNCw1OSwxLDEwNjE5LDExNywxMDgsMTE2LDU5LDEsMTA5NDYsNCwyLDY5LDEwMSwxNzU0MiwxNzU0NSw1OSwxLDEwOTU2LDU5LDEsODg0MywxMDgsMTE3LDExNSw1OSwxLDEwOTQ0LDQsMywxMDEsMTA1LDExNywxNzU2MiwxNzU5OCwxNzYwMiwxMTYsNCwzLDU5LDEwMSwxMTAsMTc1NzEsMTc1NzMsMTc1ODUsMSw4ODM1LDExMyw0LDIsNTksMTEzLDE3NTgwLDE3NTgyLDEsODgzOSw1OSwxLDEwOTUwLDEwMSwxMTMsNCwyLDU5LDExMywxNzU5MywxNzU5NSwxLDg4NDMsNTksMSwxMDk1NiwxMDksNTksMSwxMDk1Miw0LDIsOTgsMTEyLDE3NjA4LDE3NjExLDU5LDEsMTA5NjQsNTksMSwxMDk2Niw0LDMsNjUsOTcsMTEwLDE3NjIyLDE3NjI3LDE3NjUwLDExNCwxMTQsNTksMSw4NjY1LDExNCw0LDIsMTA0LDExNCwxNzYzNCwxNzYzOCwxMDcsNTksMSwxMDUzNCw0LDIsNTksMTExLDE3NjQ0LDE3NjQ2LDEsODYwMSwxMTksNTksMSw4NjAxLDExOSw5NywxMTQsNTksMSwxMDUzOCwxMDgsMTA1LDEwMyw1LDIyMywxLDU5LDE3NjY0LDEsMjIzLDQsMTMsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMTEsMTEyLDExNCwxMTUsMTE5LDE3Njk0LDE3NzA5LDE3NzE0LDE3NzM3LDE3NzQyLDE3NzQ5LDE3NzU0LDE3ODYwLDE3OTA1LDE3OTU3LDE3OTY0LDE4MDkwLDE4MTIyLDQsMiwxMTQsMTE3LDE3NzAwLDE3NzA2LDEwMywxMDEsMTE2LDU5LDEsODk4Miw1OSwxLDk2NCwxMTQsMTA3LDU5LDEsOTE0MCw0LDMsOTcsMTAxLDEyMSwxNzcyMiwxNzcyOCwxNzczNCwxMTQsMTExLDExMCw1OSwxLDM1NywxMDAsMTA1LDEwOCw1OSwxLDM1NSw1OSwxLDEwOTAsMTExLDExNiw1OSwxLDg0MTEsMTA4LDExNCwxMDEsOTksNTksMSw4OTgxLDExNCw1OSwzLDU1MzQ5LDU2NjI1LDQsNCwxMDEsMTA1LDEwNywxMTEsMTc3NjQsMTc4MDUsMTc4MzYsMTc4NTEsNCwyLDExNCwxMTYsMTc3NzAsMTc3ODYsMTAxLDQsMiw1MiwxMDIsMTc3NzcsMTc3ODAsNTksMSw4NzU2LDExMSwxMTQsMTAxLDU5LDEsODc1Niw5Nyw0LDMsNTksMTE1LDExOCwxNzc5NSwxNzc5NywxNzgwMiwxLDk1MiwxMjEsMTA5LDU5LDEsOTc3LDU5LDEsOTc3LDQsMiw5OSwxMTAsMTc4MTEsMTc4MzEsMTA3LDQsMiw5NywxMTUsMTc4MTgsMTc4MjYsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDg3NzYsMTA1LDEwOSw1OSwxLDg3NjQsMTE1LDExMiw1OSwxLDgyMDEsNCwyLDk3LDExNSwxNzg0MiwxNzg0NiwxMTIsNTksMSw4Nzc2LDEwNSwxMDksNTksMSw4NzY0LDExNCwxMTAsNSwyNTQsMSw1OSwxNzg1OCwxLDI1NCw0LDMsMTA4LDEwOSwxMTAsMTc4NjgsMTc4NzMsMTc5MDEsMTAwLDEwMSw1OSwxLDczMiwxMDEsMTE1LDUsMjE1LDMsNTksOTgsMTAwLDE3ODg0LDE3ODg2LDE3ODk4LDEsMjE1LDQsMiw1OSw5NywxNzg5MiwxNzg5NCwxLDg4NjQsMTE0LDU5LDEsMTA4MDEsNTksMSwxMDgwMCwxMTYsNTksMSw4NzQ5LDQsMywxMDEsMTEyLDExNSwxNzkxMywxNzkxNywxNzk1Myw5Nyw1OSwxLDEwNTM2LDQsNCw1OSw5OCw5OSwxMDIsMTc5MjcsMTc5MjksMTc5MzQsMTc5MzksMSw4ODY4LDExMSwxMTYsNTksMSw5MDE0LDEwNSwxMTQsNTksMSwxMDk5Myw0LDIsNTksMTExLDE3OTQ1LDE3OTQ4LDMsNTUzNDksNTY2NzcsMTE0LDEwNyw1OSwxLDEwOTcwLDk3LDU5LDEsMTA1MzcsMTE0LDEwNSwxMDksMTAxLDU5LDEsODI0NCw0LDMsOTcsMTA1LDExMiwxNzk3MiwxNzk3NywxODA4MiwxMDAsMTAxLDU5LDEsODQ4Miw0LDcsOTcsMTAwLDEwMSwxMDksMTEyLDExNSwxMTYsMTc5OTMsMTgwNTEsMTgwNTYsMTgwNTksMTgwNjYsMTgwNzIsMTgwNzYsMTEwLDEwMywxMDgsMTAxLDQsNSw1OSwxMDAsMTA4LDExMywxMTQsMTgwMDksMTgwMTEsMTgwMTcsMTgwMzIsMTgwMzUsMSw5NjUzLDExMSwxMTksMTEwLDU5LDEsOTY2MywxMDEsMTAyLDExNiw0LDIsNTksMTAxLDE4MDI2LDE4MDI4LDEsOTY2NywxMTMsNTksMSw4ODg0LDU5LDEsODc5NiwxMDUsMTAzLDEwNCwxMTYsNCwyLDU5LDEwMSwxODA0NSwxODA0NywxLDk2NTcsMTEzLDU5LDEsODg4NSwxMTEsMTE2LDU5LDEsOTcwOCw1OSwxLDg3OTYsMTA1LDExMCwxMTcsMTE1LDU5LDEsMTA4MTAsMTA4LDExNywxMTUsNTksMSwxMDgwOSw5OCw1OSwxLDEwNzAxLDEwNSwxMDksMTAxLDU5LDEsMTA4MTEsMTAxLDEyMiwxMDUsMTE3LDEwOSw1OSwxLDkxODYsNCwzLDk5LDEwNCwxMTYsMTgwOTgsMTgxMTEsMTgxMTYsNCwyLDExNCwxMjEsMTgxMDQsMTgxMDgsNTksMyw1NTM0OSw1NjUyMSw1OSwxLDEwOTQsOTksMTIxLDU5LDEsMTExNSwxMTQsMTExLDEwNyw1OSwxLDM1OSw0LDIsMTA1LDExMSwxODEyOCwxODEzMywxMjAsMTE2LDU5LDEsODgxMiwxMDQsMTAxLDk3LDEwMCw0LDIsMTA4LDExNCwxODE0MywxODE1NCwxMDEsMTAyLDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjA2LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjA4LDQsMTgsNjUsNzIsOTcsOTgsOTksMTAwLDEwMiwxMDMsMTA0LDEwOCwxMDksMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE5LDE4MjA0LDE4MjA5LDE4MjE0LDE4MjM0LDE4MjUwLDE4MjY4LDE4MjkyLDE4MzA4LDE4MzE5LDE4MzQzLDE4Mzc5LDE4Mzk3LDE4NDEzLDE4NTA0LDE4NTQ3LDE4NTUzLDE4NTg0LDE4NjAzLDExNCwxMTQsNTksMSw4NjU3LDk3LDExNCw1OSwxLDEwNTk1LDQsMiw5OSwxMTQsMTgyMjAsMTgyMzAsMTE3LDExNiwxMDEsNSwyNTAsMSw1OSwxODIyOCwxLDI1MCwxMTQsNTksMSw4NTkzLDExNCw0LDIsOTksMTAxLDE4MjQxLDE4MjQ1LDEyMSw1OSwxLDExMTgsMTE4LDEwMSw1OSwxLDM2NSw0LDIsMTA1LDEyMSwxODI1NiwxODI2NSwxMTQsOTksNSwyNTEsMSw1OSwxODI2MywxLDI1MSw1OSwxLDEwOTEsNCwzLDk3LDk4LDEwNCwxODI3NiwxODI4MSwxODI4NywxMTQsMTE0LDU5LDEsODY0NSwxMDgsOTcsOTksNTksMSwzNjksOTcsMTE0LDU5LDEsMTA2MDYsNCwyLDEwNSwxMTQsMTgyOTgsMTgzMDQsMTE1LDEwNCwxMTYsNTksMSwxMDYyMiw1OSwzLDU1MzQ5LDU2NjI2LDExNCw5NywxMTgsMTAxLDUsMjQ5LDEsNTksMTgzMTcsMSwyNDksNCwyLDk3LDk4LDE4MzI1LDE4MzM4LDExNCw0LDIsMTA4LDExNCwxODMzMiwxODMzNSw1OSwxLDg2MzksNTksMSw4NjM4LDEwOCwxMDcsNTksMSw5NjAwLDQsMiw5OSwxMTYsMTgzNDksMTgzNzQsNCwyLDExMSwxMTQsMTgzNTUsMTgzNjksMTE0LDExMCw0LDIsNTksMTAxLDE4MzYzLDE4MzY1LDEsODk4OCwxMTQsNTksMSw4OTg4LDExMSwxMTIsNTksMSw4OTc1LDExNCwxMDUsNTksMSw5NzIwLDQsMiw5NywxMDgsMTgzODUsMTgzOTAsOTksMTE0LDU5LDEsMzYzLDUsMTY4LDEsNTksMTgzOTUsMSwxNjgsNCwyLDEwMywxMTIsMTg0MDMsMTg0MDgsMTExLDExMCw1OSwxLDM3MSwxMDIsNTksMyw1NTM0OSw1NjY3OCw0LDYsOTcsMTAwLDEwNCwxMDgsMTE1LDExNywxODQyNywxODQzNCwxODQ0NSwxODQ3MCwxODQ3NSwxODQ5NCwxMTQsMTE0LDExMSwxMTksNTksMSw4NTkzLDExMSwxMTksMTEwLDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTcsOTcsMTE0LDExMiwxMTEsMTExLDExMCw0LDIsMTA4LDExNCwxODQ1NywxODQ2MywxMDEsMTAyLDExNiw1OSwxLDg2MzksMTA1LDEwMywxMDQsMTE2LDU5LDEsODYzOCwxMTcsMTE1LDU5LDEsODg0NiwxMDUsNCwzLDU5LDEwNCwxMDgsMTg0ODQsMTg0ODYsMTg0ODksMSw5NjUsNTksMSw5NzgsMTExLDExMCw1OSwxLDk2NSwxMTIsOTcsMTE0LDExNCwxMTEsMTE5LDExNSw1OSwxLDg2NDgsNCwzLDk5LDEwNSwxMTYsMTg1MTIsMTg1MzcsMTg1NDIsNCwyLDExMSwxMTQsMTg1MTgsMTg1MzIsMTE0LDExMCw0LDIsNTksMTAxLDE4NTI2LDE4NTI4LDEsODk4OSwxMTQsNTksMSw4OTg5LDExMSwxMTIsNTksMSw4OTc0LDExMCwxMDMsNTksMSwzNjcsMTE0LDEwNSw1OSwxLDk3MjEsOTksMTE0LDU5LDMsNTUzNDksNTY1MjIsNCwzLDEwMCwxMDUsMTE0LDE4NTYxLDE4NTY2LDE4NTcyLDExMSwxMTYsNTksMSw4OTQ0LDEwOCwxMDAsMTAxLDU5LDEsMzYxLDEwNSw0LDIsNTksMTAyLDE4NTc5LDE4NTgxLDEsOTY1Myw1OSwxLDk2NTIsNCwyLDk3LDEwOSwxODU5MCwxODU5NSwxMTQsMTE0LDU5LDEsODY0OCwxMDgsNSwyNTIsMSw1OSwxODYwMSwxLDI1Miw5NywxMTAsMTAzLDEwOCwxMDEsNTksMSwxMDY2Myw0LDE1LDY1LDY2LDY4LDk3LDk5LDEwMCwxMDEsMTAyLDEwOCwxMTAsMTExLDExMiwxMTQsMTE1LDEyMiwxODY0MywxODY0OCwxODY2MSwxODY2NywxODg0NywxODg1MSwxODg1NywxODkwNCwxODkwOSwxODkxNSwxODkzMSwxODkzNywxODk0MywxODk0OSwxODk5NiwxMTQsMTE0LDU5LDEsODY2MSw5NywxMTQsNCwyLDU5LDExOCwxODY1NiwxODY1OCwxLDEwOTg0LDU5LDEsMTA5ODUsOTcsMTE1LDEwNCw1OSwxLDg4NzIsNCwyLDExMCwxMTQsMTg2NzMsMTg2NzksMTAzLDExNCwxMTYsNTksMSwxMDY1Miw0LDcsMTAxLDEwNywxMTAsMTEyLDExNCwxMTUsMTE2LDE4Njk1LDE4NzA0LDE4NzExLDE4NzIwLDE4NzQyLDE4NzU0LDE4ODEwLDExMiwxMTUsMTA1LDEwOCwxMTEsMTEwLDU5LDEsMTAxMyw5NywxMTIsMTEyLDk3LDU5LDEsMTAwOCwxMTEsMTE2LDEwNCwxMDUsMTEwLDEwMyw1OSwxLDg3MDksNCwzLDEwNCwxMDUsMTE0LDE4NzI4LDE4NzMyLDE4NzM1LDEwNSw1OSwxLDk4MSw1OSwxLDk4MiwxMTEsMTEyLDExNiwxMTEsNTksMSw4NzMzLDQsMiw1OSwxMDQsMTg3NDgsMTg3NTAsMSw4NTk3LDExMSw1OSwxLDEwMDksNCwyLDEwNSwxMTcsMTg3NjAsMTg3NjYsMTAzLDEwOSw5Nyw1OSwxLDk2Miw0LDIsOTgsMTEyLDE4NzcyLDE4NzkxLDExNSwxMDEsMTE2LDExMCwxMDEsMTEzLDQsMiw1OSwxMTMsMTg3ODQsMTg3ODcsMyw4ODQyLDY1MDI0LDU5LDMsMTA5NTUsNjUwMjQsMTE1LDEwMSwxMTYsMTEwLDEwMSwxMTMsNCwyLDU5LDExMywxODgwMywxODgwNiwzLDg4NDMsNjUwMjQsNTksMywxMDk1Niw2NTAyNCw0LDIsMTA0LDExNCwxODgxNiwxODgyMiwxMDEsMTE2LDk3LDU5LDEsOTc3LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwyLDEwOCwxMTQsMTg4MzQsMTg4NDAsMTAxLDEwMiwxMTYsNTksMSw4ODgyLDEwNSwxMDMsMTA0LDExNiw1OSwxLDg4ODMsMTIxLDU5LDEsMTA3NCw5NywxMTUsMTA0LDU5LDEsODg2Niw0LDMsMTAxLDEwOCwxMTQsMTg4NjUsMTg4ODQsMTg4OTAsNCwzLDU5LDk4LDEwMSwxODg3MywxODg3NSwxODg4MCwxLDg3NDQsOTcsMTE0LDU5LDEsODg5MSwxMTMsNTksMSw4Nzk0LDEwOCwxMDUsMTEyLDU5LDEsODk0Miw0LDIsOTgsMTE2LDE4ODk2LDE4OTAxLDk3LDExNCw1OSwxLDEyNCw1OSwxLDEyNCwxMTQsNTksMyw1NTM0OSw1NjYyNywxMTYsMTE0LDEwNSw1OSwxLDg4ODIsMTE1LDExNyw0LDIsOTgsMTEyLDE4OTIzLDE4OTI3LDU5LDMsODgzNCw4NDAyLDU5LDMsODgzNSw4NDAyLDExMiwxMDIsNTksMyw1NTM0OSw1NjY3OSwxMTQsMTExLDExMiw1OSwxLDg3MzMsMTE2LDExNCwxMDUsNTksMSw4ODgzLDQsMiw5OSwxMTcsMTg5NTUsMTg5NjAsMTE0LDU5LDMsNTUzNDksNTY1MjMsNCwyLDk4LDExMiwxODk2NiwxODk4MSwxMTAsNCwyLDY5LDEwMSwxODk3MywxODk3Nyw1OSwzLDEwOTU1LDY1MDI0LDU5LDMsODg0Miw2NTAyNCwxMTAsNCwyLDY5LDEwMSwxODk4OCwxODk5Miw1OSwzLDEwOTU2LDY1MDI0LDU5LDMsODg0Myw2NTAyNCwxMDUsMTAzLDEyMiw5NywxMDMsNTksMSwxMDY1MCw0LDcsOTksMTAxLDEwMiwxMTEsMTEyLDExNCwxMTUsMTkwMjAsMTkwMjYsMTkwNjEsMTkwNjYsMTkwNzIsMTkwNzUsMTkwODksMTA1LDExNCw5OSw1OSwxLDM3Myw0LDIsMTAwLDEwNSwxOTAzMiwxOTA1NSw0LDIsOTgsMTAzLDE5MDM4LDE5MDQzLDk3LDExNCw1OSwxLDEwODQ3LDEwMSw0LDIsNTksMTEzLDE5MDUwLDE5MDUyLDEsODc0Myw1OSwxLDg3OTMsMTAxLDExNCwxMTIsNTksMSw4NDcyLDExNCw1OSwzLDU1MzQ5LDU2NjI4LDExMiwxMDIsNTksMyw1NTM0OSw1NjY4MCw1OSwxLDg0NzIsNCwyLDU5LDEwMSwxOTA4MSwxOTA4MywxLDg3NjgsOTcsMTE2LDEwNCw1OSwxLDg3NjgsOTksMTE0LDU5LDMsNTUzNDksNTY1MjQsNCwxNCw5OSwxMDAsMTAyLDEwNCwxMDUsMTA4LDEwOSwxMTAsMTExLDExNCwxMTUsMTE3LDExOCwxMTksMTkxMjUsMTkxNDYsMTkxNTIsMTkxNTcsMTkxNzMsMTkxNzYsMTkxOTIsMTkxOTcsMTkyMDIsMTkyMzYsMTkyNTIsMTkyNjksMTkyODYsMTkyOTEsNCwzLDk3LDEwNSwxMTcsMTkxMzMsMTkxMzcsMTkxNDIsMTEyLDU5LDEsODg5OCwxMTQsOTksNTksMSw5NzExLDExMiw1OSwxLDg4OTksMTE2LDExNCwxMDUsNTksMSw5NjYxLDExNCw1OSwzLDU1MzQ5LDU2NjI5LDQsMiw2NSw5NywxOTE2MywxOTE2OCwxMTQsMTE0LDU5LDEsMTAyMzQsMTE0LDExNCw1OSwxLDEwMjMxLDU5LDEsOTU4LDQsMiw2NSw5NywxOTE4MiwxOTE4NywxMTQsMTE0LDU5LDEsMTAyMzIsMTE0LDExNCw1OSwxLDEwMjI5LDk3LDExMiw1OSwxLDEwMjM2LDEwNSwxMTUsNTksMSw4OTU1LDQsMywxMDAsMTEyLDExNiwxOTIxMCwxOTIxNSwxOTIzMCwxMTEsMTE2LDU5LDEsMTA3NTIsNCwyLDEwMiwxMDgsMTkyMjEsMTkyMjUsNTksMyw1NTM0OSw1NjY4MSwxMTcsMTE1LDU5LDEsMTA3NTMsMTA1LDEwOSwxMDEsNTksMSwxMDc1NCw0LDIsNjUsOTcsMTkyNDIsMTkyNDcsMTE0LDExNCw1OSwxLDEwMjMzLDExNCwxMTQsNTksMSwxMDIzMCw0LDIsOTksMTEzLDE5MjU4LDE5MjYzLDExNCw1OSwzLDU1MzQ5LDU2NTI1LDk5LDExNywxMTIsNTksMSwxMDc1OCw0LDIsMTEyLDExNiwxOTI3NSwxOTI4MSwxMDgsMTE3LDExNSw1OSwxLDEwNzU2LDExNCwxMDUsNTksMSw5NjUxLDEwMSwxMDEsNTksMSw4ODk3LDEwMSwxMDAsMTAzLDEwMSw1OSwxLDg4OTYsNCw4LDk3LDk5LDEwMSwxMDIsMTA1LDExMSwxMTUsMTE3LDE5MzE2LDE5MzM1LDE5MzQ5LDE5MzU3LDE5MzYyLDE5MzY3LDE5MzczLDE5Mzc5LDk5LDQsMiwxMTcsMTIxLDE5MzIzLDE5MzMyLDExNiwxMDEsNSwyNTMsMSw1OSwxOTMzMCwxLDI1Myw1OSwxLDExMDMsNCwyLDEwNSwxMjEsMTkzNDEsMTkzNDYsMTE0LDk5LDU5LDEsMzc1LDU5LDEsMTA5OSwxMTAsNSwxNjUsMSw1OSwxOTM1NSwxLDE2NSwxMTQsNTksMyw1NTM0OSw1NjYzMCw5OSwxMjEsNTksMSwxMTExLDExMiwxMDIsNTksMyw1NTM0OSw1NjY4Miw5OSwxMTQsNTksMyw1NTM0OSw1NjUyNiw0LDIsOTksMTA5LDE5Mzg1LDE5Mzg5LDEyMSw1OSwxLDExMDIsMTA4LDUsMjU1LDEsNTksMTkzOTUsMSwyNTUsNCwxMCw5Nyw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDExMSwxMTUsMTE5LDE5NDE5LDE5NDI2LDE5NDQxLDE5NDQ2LDE5NDYyLDE5NDY3LDE5NDcyLDE5NDgwLDE5NDg2LDE5NDkyLDk5LDExNywxMTYsMTAxLDU5LDEsMzc4LDQsMiw5NywxMjEsMTk0MzIsMTk0MzgsMTE0LDExMSwxMTAsNTksMSwzODIsNTksMSwxMDc5LDExMSwxMTYsNTksMSwzODAsNCwyLDEwMSwxMTYsMTk0NTIsMTk0NTgsMTE2LDExNCwxMDIsNTksMSw4NDg4LDk3LDU5LDEsOTUwLDExNCw1OSwzLDU1MzQ5LDU2NjMxLDk5LDEyMSw1OSwxLDEwNzgsMTAzLDExNCw5NywxMTQsMTE0LDU5LDEsODY2OSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2ODMsOTksMTE0LDU5LDMsNTUzNDksNTY1MjcsNCwyLDEwNiwxMTAsMTk0OTgsMTk1MDEsNTksMSw4MjA1LDEwNiw1OSwxLDgyMDRdKTsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFByZXByb2Nlc3NvciA9IHJlcXVpcmUoJy4vcHJlcHJvY2Vzc29yJyk7XG5jb25zdCB1bmljb2RlID0gcmVxdWlyZSgnLi4vY29tbW9uL3VuaWNvZGUnKTtcbmNvbnN0IG5lVHJlZSA9IHJlcXVpcmUoJy4vbmFtZWQtZW50aXR5LWRhdGEnKTtcbmNvbnN0IEVSUiA9IHJlcXVpcmUoJy4uL2NvbW1vbi9lcnJvci1jb2RlcycpO1xuXG4vL0FsaWFzZXNcbmNvbnN0ICQgPSB1bmljb2RlLkNPREVfUE9JTlRTO1xuY29uc3QgJCQgPSB1bmljb2RlLkNPREVfUE9JTlRfU0VRVUVOQ0VTO1xuXG4vL0MxIFVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHJlcGxhY2VtZW50c1xuY29uc3QgQzFfQ09OVFJPTFNfUkVGRVJFTkNFX1JFUExBQ0VNRU5UUyA9IHtcbiAgICAweDgwOiAweDIwYWMsXG4gICAgMHg4MjogMHgyMDFhLFxuICAgIDB4ODM6IDB4MDE5MixcbiAgICAweDg0OiAweDIwMWUsXG4gICAgMHg4NTogMHgyMDI2LFxuICAgIDB4ODY6IDB4MjAyMCxcbiAgICAweDg3OiAweDIwMjEsXG4gICAgMHg4ODogMHgwMmM2LFxuICAgIDB4ODk6IDB4MjAzMCxcbiAgICAweDhhOiAweDAxNjAsXG4gICAgMHg4YjogMHgyMDM5LFxuICAgIDB4OGM6IDB4MDE1MixcbiAgICAweDhlOiAweDAxN2QsXG4gICAgMHg5MTogMHgyMDE4LFxuICAgIDB4OTI6IDB4MjAxOSxcbiAgICAweDkzOiAweDIwMWMsXG4gICAgMHg5NDogMHgyMDFkLFxuICAgIDB4OTU6IDB4MjAyMixcbiAgICAweDk2OiAweDIwMTMsXG4gICAgMHg5NzogMHgyMDE0LFxuICAgIDB4OTg6IDB4MDJkYyxcbiAgICAweDk5OiAweDIxMjIsXG4gICAgMHg5YTogMHgwMTYxLFxuICAgIDB4OWI6IDB4MjAzYSxcbiAgICAweDljOiAweDAxNTMsXG4gICAgMHg5ZTogMHgwMTdlLFxuICAgIDB4OWY6IDB4MDE3OFxufTtcblxuLy8gTmFtZWQgZW50aXR5IHRyZWUgZmxhZ3NcbmNvbnN0IEhBU19EQVRBX0ZMQUcgPSAxIDw8IDA7XG5jb25zdCBEQVRBX0RVUExFVF9GTEFHID0gMSA8PCAxO1xuY29uc3QgSEFTX0JSQU5DSEVTX0ZMQUcgPSAxIDw8IDI7XG5jb25zdCBNQVhfQlJBTkNIX01BUktFUl9WQUxVRSA9IEhBU19EQVRBX0ZMQUcgfCBEQVRBX0RVUExFVF9GTEFHIHwgSEFTX0JSQU5DSEVTX0ZMQUc7XG5cbi8vU3RhdGVzXG5jb25zdCBEQVRBX1NUQVRFID0gJ0RBVEFfU1RBVEUnO1xuY29uc3QgUkNEQVRBX1NUQVRFID0gJ1JDREFUQV9TVEFURSc7XG5jb25zdCBSQVdURVhUX1NUQVRFID0gJ1JBV1RFWFRfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfU1RBVEUgPSAnU0NSSVBUX0RBVEFfU1RBVEUnO1xuY29uc3QgUExBSU5URVhUX1NUQVRFID0gJ1BMQUlOVEVYVF9TVEFURSc7XG5jb25zdCBUQUdfT1BFTl9TVEFURSA9ICdUQUdfT1BFTl9TVEFURSc7XG5jb25zdCBFTkRfVEFHX09QRU5fU1RBVEUgPSAnRU5EX1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IFRBR19OQU1FX1NUQVRFID0gJ1RBR19OQU1FX1NUQVRFJztcbmNvbnN0IFJDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgUkNEQVRBX0VORF9UQUdfT1BFTl9TVEFURSA9ICdSQ0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IFJDREFUQV9FTkRfVEFHX05BTUVfU1RBVEUgPSAnUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURSc7XG5jb25zdCBSQVdURVhUX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ1JBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgUkFXVEVYVF9FTkRfVEFHX09QRU5fU1RBVEUgPSAnUkFXVEVYVF9FTkRfVEFHX09QRU5fU1RBVEUnO1xuY29uc3QgUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUgPSAnUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUgPSAnU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURSA9ICdTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURSA9ICdTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURSc7XG5jb25zdCBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUgPSAnQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFJztcbmNvbnN0IEFUVFJJQlVURV9OQU1FX1NUQVRFID0gJ0FUVFJJQlVURV9OQU1FX1NUQVRFJztcbmNvbnN0IEFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFID0gJ0FGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFJztcbmNvbnN0IEJFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEUgPSAnQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURSc7XG5jb25zdCBBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURSA9ICdBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSA9ICdBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUgPSAnQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFJztcbmNvbnN0IEFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURfU1RBVEUgPSAnQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFID0gJ1NFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEUnO1xuY29uc3QgQk9HVVNfQ09NTUVOVF9TVEFURSA9ICdCT0dVU19DT01NRU5UX1NUQVRFJztcbmNvbnN0IE1BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFID0gJ01BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfU1RBUlRfU1RBVEUgPSAnQ09NTUVOVF9TVEFSVF9TVEFURSc7XG5jb25zdCBDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEUgPSAnQ09NTUVOVF9TVEFSVF9EQVNIX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfU1RBVEUgPSAnQ09NTUVOVF9TVEFURSc7XG5jb25zdCBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ0NPTU1FTlRfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX1NUQVRFID0gJ0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19TVEFURSc7XG5jb25zdCBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9TVEFURSA9ICdDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9TVEFURSc7XG5jb25zdCBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9EQVNIX1NUQVRFID0gJ0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX0RBU0hfU1RBVEUnO1xuY29uc3QgQ09NTUVOVF9FTkRfREFTSF9TVEFURSA9ICdDT01NRU5UX0VORF9EQVNIX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfRU5EX1NUQVRFID0gJ0NPTU1FTlRfRU5EX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfRU5EX0JBTkdfU1RBVEUgPSAnQ09NTUVOVF9FTkRfQkFOR19TVEFURSc7XG5jb25zdCBET0NUWVBFX1NUQVRFID0gJ0RPQ1RZUEVfU1RBVEUnO1xuY29uc3QgQkVGT1JFX0RPQ1RZUEVfTkFNRV9TVEFURSA9ICdCRUZPUkVfRE9DVFlQRV9OQU1FX1NUQVRFJztcbmNvbnN0IERPQ1RZUEVfTkFNRV9TVEFURSA9ICdET0NUWVBFX05BTUVfU1RBVEUnO1xuY29uc3QgQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFID0gJ0FGVEVSX0RPQ1RZUEVfTkFNRV9TVEFURSc7XG5jb25zdCBBRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEX1NUQVRFID0gJ0FGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRfU1RBVEUnO1xuY29uc3QgQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEUgPSAnQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEUnO1xuY29uc3QgRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFID0gJ0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFJztcbmNvbnN0IEFGVEVSX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEUgPSAnQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURSc7XG5jb25zdCBCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEUgPSAnQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTX1NUQVRFJztcbmNvbnN0IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkRfU1RBVEUgPSAnQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRF9TVEFURSc7XG5jb25zdCBCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSA9ICdCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSc7XG5jb25zdCBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFJztcbmNvbnN0IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURSA9ICdET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEUnO1xuY29uc3QgQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSA9ICdBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFJztcbmNvbnN0IEJPR1VTX0RPQ1RZUEVfU1RBVEUgPSAnQk9HVVNfRE9DVFlQRV9TVEFURSc7XG5jb25zdCBDREFUQV9TRUNUSU9OX1NUQVRFID0gJ0NEQVRBX1NFQ1RJT05fU1RBVEUnO1xuY29uc3QgQ0RBVEFfU0VDVElPTl9CUkFDS0VUX1NUQVRFID0gJ0NEQVRBX1NFQ1RJT05fQlJBQ0tFVF9TVEFURSc7XG5jb25zdCBDREFUQV9TRUNUSU9OX0VORF9TVEFURSA9ICdDREFUQV9TRUNUSU9OX0VORF9TVEFURSc7XG5jb25zdCBDSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFID0gJ0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgTkFNRURfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdOQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFJztcbmNvbnN0IEFNQklHVU9VU19BTVBFUlNBTkRfU1RBVEUgPSAnQU1CSUdVT1NfQU1QRVJTQU5EX1NUQVRFJztcbmNvbnN0IE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSA9ICdIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUX1NUQVRFJztcbmNvbnN0IERFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSA9ICdERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlRfU1RBVEUnO1xuY29uc3QgSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFJztcbmNvbnN0IERFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORF9TVEFURSA9ICdOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFJztcblxuLy9VdGlsc1xuXG4vL09QVElNSVpBVElPTjogdGhlc2UgdXRpbGl0eSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBtb3ZlZCBvdXQgb2YgdGhpcyBtb2R1bGUuIFY4IENyYW5rc2hhZnQgd2lsbCBub3QgaW5saW5lXG4vL3RoaXMgZnVuY3Rpb25zIGlmIHRoZXkgd2lsbCBiZSBzaXR1YXRlZCBpbiBhbm90aGVyIG1vZHVsZSBkdWUgdG8gY29udGV4dCBzd2l0Y2guXG4vL0Fsd2F5cyBwZXJmb3JtIGlubGluaW5nIGNoZWNrIGJlZm9yZSBtb2RpZnlpbmcgdGhpcyBmdW5jdGlvbnMgKCdub2RlIC0tdHJhY2UtaW5saW5pbmcnKS5cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjcCkge1xuICAgIHJldHVybiBjcCA9PT0gJC5TUEFDRSB8fCBjcCA9PT0gJC5MSU5FX0ZFRUQgfHwgY3AgPT09ICQuVEFCVUxBVElPTiB8fCBjcCA9PT0gJC5GT1JNX0ZFRUQ7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlEaWdpdChjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkRJR0lUXzAgJiYgY3AgPD0gJC5ESUdJVF85O1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpVXBwZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9DQVBJVEFMX0EgJiYgY3AgPD0gJC5MQVRJTl9DQVBJVEFMX1o7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlMb3dlcihjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkxBVElOX1NNQUxMX0EgJiYgY3AgPD0gJC5MQVRJTl9TTUFMTF9aO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpTGV0dGVyKGNwKSB7XG4gICAgcmV0dXJuIGlzQXNjaWlMb3dlcihjcCkgfHwgaXNBc2NpaVVwcGVyKGNwKTtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUFscGhhTnVtZXJpYyhjcCkge1xuICAgIHJldHVybiBpc0FzY2lpTGV0dGVyKGNwKSB8fCBpc0FzY2lpRGlnaXQoY3ApO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpVXBwZXJIZXhEaWdpdChjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkxBVElOX0NBUElUQUxfQSAmJiBjcCA8PSAkLkxBVElOX0NBUElUQUxfRjtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUxvd2VySGV4RGlnaXQoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9TTUFMTF9BICYmIGNwIDw9ICQuTEFUSU5fU01BTExfRjtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUhleERpZ2l0KGNwKSB7XG4gICAgcmV0dXJuIGlzQXNjaWlEaWdpdChjcCkgfHwgaXNBc2NpaVVwcGVySGV4RGlnaXQoY3ApIHx8IGlzQXNjaWlMb3dlckhleERpZ2l0KGNwKTtcbn1cblxuZnVuY3Rpb24gdG9Bc2NpaUxvd2VyQ29kZVBvaW50KGNwKSB7XG4gICAgcmV0dXJuIGNwICsgMHgwMDIwO1xufVxuXG4vL05PVEU6IFN0cmluZy5mcm9tQ2hhckNvZGUoKSBmdW5jdGlvbiBjYW4gaGFuZGxlIG9ubHkgY2hhcmFjdGVycyBmcm9tIEJNUCBzdWJzZXQuXG4vL1NvLCB3ZSBuZWVkIHRvIHdvcmthcm91bmQgdGhpcyBtYW51YWxseS5cbi8vKHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvZnJvbUNoYXJDb2RlI0dldHRpbmdfaXRfdG9fd29ya193aXRoX2hpZ2hlcl92YWx1ZXMpXG5mdW5jdGlvbiB0b0NoYXIoY3ApIHtcbiAgICBpZiAoY3AgPD0gMHhmZmZmKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNwKTtcbiAgICB9XG5cbiAgICBjcCAtPSAweDEwMDAwO1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoY3AgPj4+IDEwKSAmIDB4M2ZmKSB8IDB4ZDgwMCkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZGMwMCB8IChjcCAmIDB4M2ZmKSk7XG59XG5cbmZ1bmN0aW9uIHRvQXNjaWlMb3dlckNoYXIoY3ApIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApKTtcbn1cblxuZnVuY3Rpb24gZmluZE5hbWVkRW50aXR5VHJlZUJyYW5jaChub2RlSXgsIGNwKSB7XG4gICAgY29uc3QgYnJhbmNoQ291bnQgPSBuZVRyZWVbKytub2RlSXhdO1xuICAgIGxldCBsbyA9ICsrbm9kZUl4O1xuICAgIGxldCBoaSA9IGxvICsgYnJhbmNoQ291bnQgLSAxO1xuXG4gICAgd2hpbGUgKGxvIDw9IGhpKSB7XG4gICAgICAgIGNvbnN0IG1pZCA9IChsbyArIGhpKSA+Pj4gMTtcbiAgICAgICAgY29uc3QgbWlkQ3AgPSBuZVRyZWVbbWlkXTtcblxuICAgICAgICBpZiAobWlkQ3AgPCBjcCkge1xuICAgICAgICAgICAgbG8gPSBtaWQgKyAxO1xuICAgICAgICB9IGVsc2UgaWYgKG1pZENwID4gY3ApIHtcbiAgICAgICAgICAgIGhpID0gbWlkIC0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZVRyZWVbbWlkICsgYnJhbmNoQ291bnRdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xufVxuXG4vL1Rva2VuaXplclxuY2xhc3MgVG9rZW5pemVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IgPSBuZXcgUHJlcHJvY2Vzc29yKCk7XG5cbiAgICAgICAgdGhpcy50b2tlblF1ZXVlID0gW107XG5cbiAgICAgICAgdGhpcy5hbGxvd0NEQVRBID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSAnJztcblxuICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gLTE7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgdGhpcy5sYXN0U3RhcnRUYWdOYW1lID0gJyc7XG5cbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAtMTtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ciA9IG51bGw7XG4gICAgfVxuXG4gICAgLy9FcnJvcnNcbiAgICBfZXJyKCkge1xuICAgICAgICAvLyBOT1RFOiBlcnIgcmVwb3J0aW5nIGlzIG5vb3AgYnkgZGVmYXVsdC4gRW5hYmxlZCBieSBtaXhpbi5cbiAgICB9XG5cbiAgICBfZXJyT25OZXh0Q29kZVBvaW50KGVycikge1xuICAgICAgICB0aGlzLl9jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuX2VycihlcnIpO1xuICAgICAgICB0aGlzLl91bmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICAvL0FQSVxuICAgIGdldE5leHRUb2tlbigpIHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLnRva2VuUXVldWUubGVuZ3RoICYmIHRoaXMuYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCA9IDA7XG5cbiAgICAgICAgICAgIGNvbnN0IGNwID0gdGhpcy5fY29uc3VtZSgpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW3RoaXMuc3RhdGVdKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRva2VuUXVldWUuc2hpZnQoKTtcbiAgICB9XG5cbiAgICB3cml0ZShjaHVuaywgaXNMYXN0Q2h1bmspIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci53cml0ZShjaHVuaywgaXNMYXN0Q2h1bmspO1xuICAgIH1cblxuICAgIGluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5pbnNlcnRIdG1sQXRDdXJyZW50UG9zKGNodW5rKTtcbiAgICB9XG5cbiAgICAvL0hpYmVybmF0aW9uXG4gICAgX2Vuc3VyZUhpYmVybmF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5wcmVwcm9jZXNzb3IuZW5kT2ZDaHVua0hpdCkge1xuICAgICAgICAgICAgZm9yICg7IHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90ID4gMDsgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QtLSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLnJldHJlYXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudG9rZW5RdWV1ZS5wdXNoKHsgdHlwZTogVG9rZW5pemVyLkhJQkVSTkFUSU9OX1RPS0VOIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvL0NvbnN1bXB0aW9uXG4gICAgX2NvbnN1bWUoKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90Kys7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXByb2Nlc3Nvci5hZHZhbmNlKCk7XG4gICAgfVxuXG4gICAgX3VuY29uc3VtZSgpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QtLTtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IucmV0cmVhdCgpO1xuICAgIH1cblxuICAgIF9yZWNvbnN1bWVJblN0YXRlKHN0YXRlKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5fdW5jb25zdW1lKCk7XG4gICAgfVxuXG4gICAgX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2gocGF0dGVybiwgc3RhcnRDcCwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICBsZXQgY29uc3VtZWRDb3VudCA9IDA7XG4gICAgICAgIGxldCBpc01hdGNoID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcGF0dGVybkxlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoO1xuICAgICAgICBsZXQgcGF0dGVyblBvcyA9IDA7XG4gICAgICAgIGxldCBjcCA9IHN0YXJ0Q3A7XG4gICAgICAgIGxldCBwYXR0ZXJuQ3AgPSB2b2lkIDA7XG5cbiAgICAgICAgZm9yICg7IHBhdHRlcm5Qb3MgPCBwYXR0ZXJuTGVuZ3RoOyBwYXR0ZXJuUG9zKyspIHtcbiAgICAgICAgICAgIGlmIChwYXR0ZXJuUG9zID4gMCkge1xuICAgICAgICAgICAgICAgIGNwID0gdGhpcy5fY29uc3VtZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN1bWVkQ291bnQrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGF0dGVybkNwID0gcGF0dGVybltwYXR0ZXJuUG9zXTtcblxuICAgICAgICAgICAgaWYgKGNwICE9PSBwYXR0ZXJuQ3AgJiYgKGNhc2VTZW5zaXRpdmUgfHwgY3AgIT09IHRvQXNjaWlMb3dlckNvZGVQb2ludChwYXR0ZXJuQ3ApKSkge1xuICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNNYXRjaCkge1xuICAgICAgICAgICAgd2hpbGUgKGNvbnN1bWVkQ291bnQtLSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzTWF0Y2g7XG4gICAgfVxuXG4gICAgLy9UZW1wIGJ1ZmZlclxuICAgIF9pc1RlbXBCdWZmZXJFcXVhbFRvU2NyaXB0U3RyaW5nKCkge1xuICAgICAgICBpZiAodGhpcy50ZW1wQnVmZi5sZW5ndGggIT09ICQkLlNDUklQVF9TVFJJTkcubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGVtcEJ1ZmYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlbXBCdWZmW2ldICE9PSAkJC5TQ1JJUFRfU1RSSU5HW2ldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy9Ub2tlbiBjcmVhdGlvblxuICAgIF9jcmVhdGVTdGFydFRhZ1Rva2VuKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4sXG4gICAgICAgICAgICB0YWdOYW1lOiAnJyxcbiAgICAgICAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGFja1NlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJzOiBbXVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIF9jcmVhdGVFbmRUYWdUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTixcbiAgICAgICAgICAgIHRhZ05hbWU6ICcnLFxuICAgICAgICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYXR0cnM6IFtdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNvbW1lbnRUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTixcbiAgICAgICAgICAgIGRhdGE6ICcnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZURvY3R5cGVUb2tlbihpbml0aWFsTmFtZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuaXplci5ET0NUWVBFX1RPS0VOLFxuICAgICAgICAgICAgbmFtZTogaW5pdGlhbE5hbWUsXG4gICAgICAgICAgICBmb3JjZVF1aXJrczogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaWNJZDogbnVsbCxcbiAgICAgICAgICAgIHN5c3RlbUlkOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNoYXJhY3RlclRva2VuKHR5cGUsIGNoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuID0ge1xuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGNoYXJzOiBjaFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIF9jcmVhdGVFT0ZUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7IHR5cGU6IFRva2VuaXplci5FT0ZfVE9LRU4gfTtcbiAgICB9XG5cbiAgICAvL1RhZyBhdHRyaWJ1dGVzXG4gICAgX2NyZWF0ZUF0dHIoYXR0ck5hbWVGaXJzdENoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIgPSB7XG4gICAgICAgICAgICBuYW1lOiBhdHRyTmFtZUZpcnN0Q2gsXG4gICAgICAgICAgICB2YWx1ZTogJydcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfbGVhdmVBdHRyTmFtZSh0b1N0YXRlKSB7XG4gICAgICAgIGlmIChUb2tlbml6ZXIuZ2V0VG9rZW5BdHRyKHRoaXMuY3VycmVudFRva2VuLCB0aGlzLmN1cnJlbnRBdHRyLm5hbWUpID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5hdHRycy5wdXNoKHRoaXMuY3VycmVudEF0dHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5kdXBsaWNhdGVBdHRyaWJ1dGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRvU3RhdGU7XG4gICAgfVxuXG4gICAgX2xlYXZlQXR0clZhbHVlKHRvU3RhdGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRvU3RhdGU7XG4gICAgfVxuXG4gICAgLy9Ub2tlbiBlbWlzc2lvblxuICAgIF9lbWl0Q3VycmVudFRva2VuKCkge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCk7XG5cbiAgICAgICAgY29uc3QgY3QgPSB0aGlzLmN1cnJlbnRUb2tlbjtcblxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG5cbiAgICAgICAgLy9OT1RFOiBzdG9yZSBlbWl0ZWQgc3RhcnQgdGFnJ3MgdGFnTmFtZSB0byBkZXRlcm1pbmUgaXMgdGhlIGZvbGxvd2luZyBlbmQgdGFnIHRva2VuIGlzIGFwcHJvcHJpYXRlLlxuICAgICAgICBpZiAoY3QudHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTikge1xuICAgICAgICAgICAgdGhpcy5sYXN0U3RhcnRUYWdOYW1lID0gY3QudGFnTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmIChjdC50eXBlID09PSBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTikge1xuICAgICAgICAgICAgaWYgKGN0LmF0dHJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVuZFRhZ1dpdGhBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN0LnNlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lbmRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9rZW5RdWV1ZS5wdXNoKGN0KTtcbiAgICB9XG5cbiAgICBfZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnRva2VuUXVldWUucHVzaCh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfZW1pdEVPRlRva2VuKCkge1xuICAgICAgICB0aGlzLl9jcmVhdGVFT0ZUb2tlbigpO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgLy9DaGFyYWN0ZXJzIGVtaXNzaW9uXG5cbiAgICAvL09QVElNSVpBVElPTjogc3BlY2lmaWNhdGlvbiB1c2VzIG9ubHkgb25lIHR5cGUgb2YgY2hhcmFjdGVyIHRva2VucyAob25lIHRva2VuIHBlciBjaGFyYWN0ZXIpLlxuICAgIC8vVGhpcyBjYXVzZXMgYSBodWdlIG1lbW9yeSBvdmVyaGVhZCBhbmQgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgcGFyc2VyIGxvb3BzLiBwYXJzZTUgdXNlcyAzIGdyb3VwcyBvZiBjaGFyYWN0ZXJzLlxuICAgIC8vSWYgd2UgaGF2ZSBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgZ3JvdXAsIHBhcnNlciBjYW4gcHJvY2VzcyBpdFxuICAgIC8vYXMgYSBzaW5nbGUgc29saWQgY2hhcmFjdGVyIHRva2VuLlxuICAgIC8vU28sIHRoZXJlIGFyZSAzIHR5cGVzIG9mIGNoYXJhY3RlciB0b2tlbnMgaW4gcGFyc2U1OlxuICAgIC8vMSlOVUxMX0NIQVJBQ1RFUl9UT0tFTiAtIFxcdTAwMDAtY2hhcmFjdGVyIHNlcXVlbmNlcyAoZS5nLiAnXFx1MDAwMFxcdTAwMDBcXHUwMDAwJylcbiAgICAvLzIpV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gLSBhbnkgd2hpdGVzcGFjZS9uZXctbGluZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIChlLmcuICdcXG4gIFxcclxcdCAgIFxcZicpXG4gICAgLy8zKUNIQVJBQ1RFUl9UT0tFTiAtIGFueSBjaGFyYWN0ZXIgc2VxdWVuY2Ugd2hpY2ggZG9uJ3QgYmVsb25nIHRvIGdyb3VwcyAxIGFuZCAyIChlLmcuICdhYmNkZWYxMjM0QEAjJCVeJylcbiAgICBfYXBwZW5kQ2hhclRvQ3VycmVudENoYXJhY3RlclRva2VuKHR5cGUsIGNoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiAmJiB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi50eXBlICE9PSB0eXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmNoYXJzICs9IGNoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ2hhcmFjdGVyVG9rZW4odHlwZSwgY2gpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2VtaXRDb2RlUG9pbnQoY3ApIHtcbiAgICAgICAgbGV0IHR5cGUgPSBUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOO1xuXG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0eXBlID0gVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4odHlwZSwgdG9DaGFyKGNwKSk7XG4gICAgfVxuXG4gICAgX2VtaXRTZXZlcmFsQ29kZVBvaW50cyhjb2RlUG9pbnRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjb2RlUG9pbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vTk9URTogdXNlZCB0aGVuIHdlIGVtaXQgY2hhcmFjdGVyIGV4cGxpY2l0bHkuIFRoaXMgaXMgYWx3YXlzIGEgbm9uLXdoaXRlc3BhY2UgYW5kIGEgbm9uLW51bGwgY2hhcmFjdGVyLlxuICAgIC8vU28gd2UgY2FuIGF2b2lkIGFkZGl0aW9uYWwgY2hlY2tzIGhlcmUuXG4gICAgX2VtaXRDaGFycyhjaCkge1xuICAgICAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4oVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTiwgY2gpO1xuICAgIH1cblxuICAgIC8vIENoYXJhY3RlciByZWZlcmVuY2UgaGVscGVyc1xuICAgIF9tYXRjaE5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKHN0YXJ0Q3ApIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgIGxldCBleGNlc3MgPSAxO1xuICAgICAgICBsZXQgaSA9IGZpbmROYW1lZEVudGl0eVRyZWVCcmFuY2goMCwgc3RhcnRDcCk7XG5cbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKHN0YXJ0Q3ApO1xuXG4gICAgICAgIHdoaWxlIChpID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBuZVRyZWVbaV07XG4gICAgICAgICAgICBjb25zdCBpbk5vZGUgPSBjdXJyZW50IDwgTUFYX0JSQU5DSF9NQVJLRVJfVkFMVUU7XG4gICAgICAgICAgICBjb25zdCBub2RlV2l0aERhdGEgPSBpbk5vZGUgJiYgY3VycmVudCAmIEhBU19EQVRBX0ZMQUc7XG5cbiAgICAgICAgICAgIGlmIChub2RlV2l0aERhdGEpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHdlIHVzZSBncmVlZHkgc2VhcmNoLCBzbyB3ZSBjb250aW51ZSBsb29rdXAgYXQgdGhpcyBwb2ludFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnQgJiBEQVRBX0RVUExFVF9GTEFHID8gW25lVHJlZVsrK2ldLCBuZVRyZWVbKytpXV0gOiBbbmVUcmVlWysraV1dO1xuICAgICAgICAgICAgICAgIGV4Y2VzcyA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNwID0gdGhpcy5fY29uc3VtZSgpO1xuXG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgZXhjZXNzKys7XG5cbiAgICAgICAgICAgIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGluTm9kZSkge1xuICAgICAgICAgICAgICAgIGkgPSBjdXJyZW50ICYgSEFTX0JSQU5DSEVTX0ZMQUcgPyBmaW5kTmFtZWRFbnRpdHlUcmVlQnJhbmNoKGksIGNwKSA6IC0xO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpID0gY3AgPT09IGN1cnJlbnQgPyArK2kgOiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChleGNlc3MtLSkge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBfaXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPT09IEFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFIHx8XG4gICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID09PSBBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSB8fFxuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9PT0gQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2lzQ2hhcmFjdGVyUmVmZXJlbmNlQXR0cmlidXRlUXVpcmsod2l0aFNlbWljb2xvbikge1xuICAgICAgICBpZiAoIXdpdGhTZW1pY29sb24gJiYgdGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0Q3AgPSB0aGlzLl9jb25zdW1lKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV4dENwID09PSAkLkVRVUFMU19TSUdOIHx8IGlzQXNjaWlBbHBoYU51bWVyaWMobmV4dENwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBfZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGUoKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRlbXBCdWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSB0b0NoYXIodGhpcy50ZW1wQnVmZltpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0U2V2ZXJhbENvZGVQb2ludHModGhpcy50ZW1wQnVmZik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgfVxuXG4gICAgLy8gU3RhdGUgbWFjaGluZVxuXG4gICAgLy8gRGF0YSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0RBVEFfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFRBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICBSQ0RBVEEgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQ0RBVEFfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5BTVBFUlNBTkQpIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSBSQ0RBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFJDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkFXVEVYVCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JBV1RFWFRfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFJBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQTEFJTlRFWFQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtQTEFJTlRFWFRfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtUQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkVYQ0xBTUFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBNQVJLVVBfREVDTEFSQVRJT05fT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRU5EX1RBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVTdGFydFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFRBR19OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVUVTVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRRdWVzdGlvbk1hcmtJbnN0ZWFkT2ZUYWdOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mQmVmb3JlVGFnTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWUpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW5kIHRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbRU5EX1RBR19PUEVOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUVuZFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFRBR19OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRW5kVGFnTmFtZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mQmVmb3JlVGFnTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW52YWxpZEZpcnN0Q2hhcmFjdGVyT2ZUYWdOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRhZyBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbVEFHX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSQ0RBVEEgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gUkNEQVRBX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQ0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkNEQVRBIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JDREFUQV9FTkRfVEFHX09QRU5fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJDREFUQV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSQ0RBVEEgZW5kIHRhZyBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJBV1RFWFQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQVdURVhUX0xFU1NfVEhBTl9TSUdOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFJBV1RFWFRfRU5EX1RBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJBV1RFWFRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkFXVEVYVCBlbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQVdURVhUX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJBV1RFWFRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkFXVEVYVCBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQVdURVhUX0VORF9UQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkFXVEVYVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FWENMQU1BVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8IScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpTG93ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMubGFzdFN0YXJ0VGFnTmFtZSA9PT0gdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSkge1xuICAgICAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgZGFzaCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc+Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRfU1RBVEUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBlbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuX2lzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmcoKVxuICAgICAgICAgICAgICAgID8gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEVcbiAgICAgICAgICAgICAgICA6IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2godG9Bc2NpaUxvd2VyQ29kZVBvaW50KGNwKSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpTG93ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc+Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9FTkRfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy8nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZSBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuX2lzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmcoKVxuICAgICAgICAgICAgICAgID8gU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURVxuICAgICAgICAgICAgICAgIDogU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaCh0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmVmb3JlIGF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04gfHwgY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FUVVBTFNfU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkRXF1YWxzU2lnbkJlZm9yZUF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignPScpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQVRUUklCVVRFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApIHx8IGNwID09PSAkLlNPTElEVVMgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04gfHwgY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJOYW1lKEFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVRVUFMU19TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJOYW1lKEJFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSyB8fCBjcCA9PT0gJC5BUE9TVFJPUEhFIHx8IGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRDaGFyYWN0ZXJJbkF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIGF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRVFVQUxTX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX1ZBTFVFX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCcnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmVmb3JlIGF0dHJpYnV0ZSB2YWx1ZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0F0dHJpYnV0ZVZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQXR0cmlidXRlIHZhbHVlIChkb3VibGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0FUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IEFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAoc2luZ2xlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IEFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAodW5xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BTVBFUlNBTkQpIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSBBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoREFUQV9TVEFURSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgY3AgPT09ICQuUVVPVEFUSU9OX01BUksgfHxcbiAgICAgICAgICAgIGNwID09PSAkLkFQT1NUUk9QSEUgfHxcbiAgICAgICAgICAgIGNwID09PSAkLkxFU1NfVEhBTl9TSUdOIHx8XG4gICAgICAgICAgICBjcCA9PT0gJC5FUVVBTFNfU0lHTiB8fFxuICAgICAgICAgICAgY3AgPT09ICQuR1JBVkVfQUNDRU5UXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkQ2hhcmFjdGVySW5VbnF1b3RlZEF0dHJpYnV0ZVZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZnRlciBhdHRyaWJ1dGUgdmFsdWUgKHF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoREFUQV9TVEFURSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlbGYtY2xvc2luZyBzdGFydCB0YWcgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZFNvbGlkdXNJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCb2d1cyBjb21tZW50IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQk9HVVNfQ09NTUVOVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1hcmt1cCBkZWNsYXJhdGlvbiBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbTUFSS1VQX0RFQ0xBUkFUSU9OX09QRU5fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkRBU0hfREFTSF9TVFJJTkcsIGNwLCB0cnVlKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFSVF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkRPQ1RZUEVfU1RSSU5HLCBjcCwgZmFsc2UpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkNEQVRBX1NUQVJUX1NUUklORywgY3AsIHRydWUpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0NEQVRBKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENEQVRBX1NFQ1RJT05fU1RBVEU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY2RhdGFJbkh0bWxDb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhID0gJ1tDREFUQVsnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCT0dVU19DT01NRU5UX1NUQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9OT1RFOiBzZXF1ZW5jZSBsb29rdXAgY2FuIGJlIGFicnVwdGVkIGJ5IGhpYmVybmF0aW9uLiBJbiB0aGF0IGNhc2UgbG9va3VwXG4gICAgICAgIC8vcmVzdWx0cyBhcmUgbm8gbG9uZ2VyIHZhbGlkIGFuZCB3ZSB3aWxsIG5lZWQgdG8gc3RhcnQgb3Zlci5cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFSVF9EQVNIX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdENsb3NpbmdPZkVtcHR5Q29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IHN0YXJ0IGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0VORF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHRDbG9zaW5nT2ZFbXB0eUNvbW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0nO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9FTkRfREFTSF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnPCc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0xFU1NfVEhBTl9TSUdOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuRVhDTEFNQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnISc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICchJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIGJhbmcgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIGJhbmcgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSF9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9FTkRfREFTSF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIGJhbmcgZGFzaCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwICE9PSAkLkdSRUFURVJfVEhBTl9TSUdOICYmIGNwICE9PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5uZXN0ZWRDb21tZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9FTkRfU1RBVEUpO1xuICAgIH1cblxuICAgIC8vIENvbW1lbnQgZW5kIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0VORF9EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9FTkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0nO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgZW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ09NTUVOVF9FTkRfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRVhDTEFNQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX0JBTkdfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Db21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLS0nO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgZW5kIGJhbmcgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0VORF9CQU5HX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX0RBU0hfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW5jb3JyZWN0bHlDbG9zZWRDb21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9ET0NUWVBFX05BTUVfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQkVGT1JFX0RPQ1RZUEVfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VCZWZvcmVEb2N0eXBlTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJFRk9SRV9ET0NUWVBFX05BTUVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmVmb3JlIERPQ1RZUEUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JFRk9SRV9ET0NUWVBFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKHRvQXNjaWlMb3dlckNoYXIoY3ApKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX05BTUVfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4odW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfTkFNRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbih0b0NoYXIoY3ApKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX05BTUVfU1RBVEU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5uYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubmFtZSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubmFtZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2goJCQuUFVCTElDX1NUUklORywgY3AsIGZhbHNlKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5TWVNURU1fU1RSSU5HLCBjcCwgZmFsc2UpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRF9TVEFURTtcbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IHNlcXVlbmNlIGxvb2t1cCBjYW4gYmUgYWJydXB0ZWQgYnkgaGliZXJuYXRpb24uIEluIHRoYXQgY2FzZSBsb29rdXBcbiAgICAgICAgLy9yZXN1bHRzIGFyZSBubyBsb25nZXIgdmFsaWQgYW5kIHdlIHdpbGwgbmVlZCB0byBzdGFydCBvdmVyLlxuICAgICAgICBlbHNlIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZnRlciBET0NUWVBFIHB1YmxpYyBrZXl3b3JkIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCZWZvcmUgRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBET0NUWVBFIHB1YmxpYyBpZGVudGlmaWVyIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZnRlciBET0NUWVBFIHB1YmxpYyBpZGVudGlmaWVyIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmV0d2VlbiBET0NUWVBFIHB1YmxpYyBhbmQgc3lzdGVtIGlkZW50aWZpZXJzIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIERPQ1RZUEUgc3lzdGVtIGtleXdvcmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9ET0NUWVBFX1NZU1RFTV9LRVlXT1JEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJlZm9yZSBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgKHNpbmdsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkQ2hhcmFjdGVyQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQm9ndXMgRE9DVFlQRSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JPR1VTX0RPQ1RZUEVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENEQVRBIHNlY3Rpb24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDREFUQV9TRUNUSU9OX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDREFUQV9TRUNUSU9OX0JSQUNLRVRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ2RhdGEpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENEQVRBIHNlY3Rpb24gYnJhY2tldCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NEQVRBX1NFQ1RJT05fQlJBQ0tFVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlJJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0RBVEFfU0VDVElPTl9FTkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJ10nKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ0RBVEFfU0VDVElPTl9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDREFUQSBzZWN0aW9uIGVuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NEQVRBX1NFQ1RJT05fRU5EX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlJJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJ10nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXV0nKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ0RBVEFfU0VDVElPTl9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFskLkFNUEVSU0FORF07XG5cbiAgICAgICAgaWYgKGNwID09PSAkLk5VTUJFUl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpQWxwaGFOdW1lcmljKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShOQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUodGhpcy5yZXR1cm5TdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbTkFNRURfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURV0oY3ApIHtcbiAgICAgICAgY29uc3QgbWF0Y2hSZXN1bHQgPSB0aGlzLl9tYXRjaE5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKGNwKTtcblxuICAgICAgICAvL05PVEU6IG1hdGNoaW5nIGNhbiBiZSBhYnJ1cHRlZCBieSBoaWJlcm5hdGlvbi4gSW4gdGhhdCBjYXNlIG1hdGNoXG4gICAgICAgIC8vcmVzdWx0cyBhcmUgbm8gbG9uZ2VyIHZhbGlkIGFuZCB3ZSB3aWxsIG5lZWQgdG8gc3RhcnQgb3Zlci5cbiAgICAgICAgaWYgKHRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbJC5BTVBFUlNBTkRdO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoUmVzdWx0KSB7XG4gICAgICAgICAgICBjb25zdCB3aXRoU2VtaWNvbG9uID0gdGhpcy50ZW1wQnVmZlt0aGlzLnRlbXBCdWZmLmxlbmd0aCAtIDFdID09PSAkLlNFTUlDT0xPTjtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0NoYXJhY3RlclJlZmVyZW5jZUF0dHJpYnV0ZVF1aXJrKHdpdGhTZW1pY29sb24pKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF3aXRoU2VtaWNvbG9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Vyck9uTmV4dENvZGVQb2ludChFUlIubWlzc2luZ1NlbWljb2xvbkFmdGVyQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gbWF0Y2hSZXN1bHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLnJldHVyblN0YXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFNQklHVU9VU19BTVBFUlNBTkRfU1RBVEU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbWJpZ3VvcyBhbXBlcnNhbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBTUJJR1VPVVNfQU1QRVJTQU5EX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUFscGhhTnVtZXJpYyhjcCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0NoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcihjcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5rbm93bk5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW05VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IDA7XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkxBVElOX1NNQUxMX1ggfHwgY3AgPT09ICQuTEFUSU5fQ0FQSVRBTF9YKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZXhhZGVtaWNhbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlIZXhEaWdpdChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFic2VuY2VPZkRpZ2l0c0luTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludHNDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVjaW1hbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbREVDSU1BTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaURpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnNlbmNlT2ZEaWdpdHNJbk51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhleGFkZW1pY2FsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaVVwcGVySGV4RGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDE2ICsgY3AgLSAweDM3O1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlckhleERpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IHRoaXMuY2hhclJlZkNvZGUgKiAxNiArIGNwIC0gMHg1NztcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpRGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDE2ICsgY3AgLSAweDMwO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVjaW1hbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbREVDSU1BTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaURpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IHRoaXMuY2hhclJlZkNvZGUgKiAxMCArIGNwIC0gMHgzMDtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5TRU1JQ09MT04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZSBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFXSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhclJlZkNvZGUgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5udWxsQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSAkLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXJSZWZDb2RlID4gMHgxMGZmZmYpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY2hhcmFjdGVyUmVmZXJlbmNlT3V0c2lkZVVuaWNvZGVSYW5nZSk7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gJC5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pY29kZS5pc1N1cnJvZ2F0ZSh0aGlzLmNoYXJSZWZDb2RlKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5zdXJyb2dhdGVDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9ICQuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaWNvZGUuaXNVbmRlZmluZWRDb2RlUG9pbnQodGhpcy5jaGFyUmVmQ29kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubm9uY2hhcmFjdGVyQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh1bmljb2RlLmlzQ29udHJvbENvZGVQb2ludCh0aGlzLmNoYXJSZWZDb2RlKSB8fCB0aGlzLmNoYXJSZWZDb2RlID09PSAkLkNBUlJJQUdFX1JFVFVSTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5jb250cm9sQ2hhcmFjdGVyUmVmZXJlbmNlKTtcblxuICAgICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBDMV9DT05UUk9MU19SRUZFUkVOQ0VfUkVQTEFDRU1FTlRTW3RoaXMuY2hhclJlZkNvZGVdO1xuXG4gICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW3RoaXMuY2hhclJlZkNvZGVdO1xuXG4gICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlKTtcbiAgICB9XG59XG5cbi8vVG9rZW4gdHlwZXNcblRva2VuaXplci5DSEFSQUNURVJfVE9LRU4gPSAnQ0hBUkFDVEVSX1RPS0VOJztcblRva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTiA9ICdOVUxMX0NIQVJBQ1RFUl9UT0tFTic7XG5Ub2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gPSAnV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4nO1xuVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTiA9ICdTVEFSVF9UQUdfVE9LRU4nO1xuVG9rZW5pemVyLkVORF9UQUdfVE9LRU4gPSAnRU5EX1RBR19UT0tFTic7XG5Ub2tlbml6ZXIuQ09NTUVOVF9UT0tFTiA9ICdDT01NRU5UX1RPS0VOJztcblRva2VuaXplci5ET0NUWVBFX1RPS0VOID0gJ0RPQ1RZUEVfVE9LRU4nO1xuVG9rZW5pemVyLkVPRl9UT0tFTiA9ICdFT0ZfVE9LRU4nO1xuVG9rZW5pemVyLkhJQkVSTkFUSU9OX1RPS0VOID0gJ0hJQkVSTkFUSU9OX1RPS0VOJztcblxuLy9Ub2tlbml6ZXIgaW5pdGlhbCBzdGF0ZXMgZm9yIGRpZmZlcmVudCBtb2Rlc1xuVG9rZW5pemVyLk1PREUgPSB7XG4gICAgREFUQTogREFUQV9TVEFURSxcbiAgICBSQ0RBVEE6IFJDREFUQV9TVEFURSxcbiAgICBSQVdURVhUOiBSQVdURVhUX1NUQVRFLFxuICAgIFNDUklQVF9EQVRBOiBTQ1JJUFRfREFUQV9TVEFURSxcbiAgICBQTEFJTlRFWFQ6IFBMQUlOVEVYVF9TVEFURVxufTtcblxuLy9TdGF0aWNcblRva2VuaXplci5nZXRUb2tlbkF0dHIgPSBmdW5jdGlvbih0b2tlbiwgYXR0ck5hbWUpIHtcbiAgICBmb3IgKGxldCBpID0gdG9rZW4uYXR0cnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYgKHRva2VuLmF0dHJzW2ldLm5hbWUgPT09IGF0dHJOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4uYXR0cnNbaV0udmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVG9rZW5pemVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBOUyA9IChleHBvcnRzLk5BTUVTUEFDRVMgPSB7XG4gICAgSFRNTDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLFxuICAgIE1BVEhNTDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnLFxuICAgIFNWRzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgICBYTElOSzogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnLFxuICAgIFhNTDogJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsXG4gICAgWE1MTlM6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLydcbn0pO1xuXG5leHBvcnRzLkFUVFJTID0ge1xuICAgIFRZUEU6ICd0eXBlJyxcbiAgICBBQ1RJT046ICdhY3Rpb24nLFxuICAgIEVOQ09ESU5HOiAnZW5jb2RpbmcnLFxuICAgIFBST01QVDogJ3Byb21wdCcsXG4gICAgTkFNRTogJ25hbWUnLFxuICAgIENPTE9SOiAnY29sb3InLFxuICAgIEZBQ0U6ICdmYWNlJyxcbiAgICBTSVpFOiAnc2l6ZSdcbn07XG5cbmV4cG9ydHMuRE9DVU1FTlRfTU9ERSA9IHtcbiAgICBOT19RVUlSS1M6ICduby1xdWlya3MnLFxuICAgIFFVSVJLUzogJ3F1aXJrcycsXG4gICAgTElNSVRFRF9RVUlSS1M6ICdsaW1pdGVkLXF1aXJrcydcbn07XG5cbmNvbnN0ICQgPSAoZXhwb3J0cy5UQUdfTkFNRVMgPSB7XG4gICAgQTogJ2EnLFxuICAgIEFERFJFU1M6ICdhZGRyZXNzJyxcbiAgICBBTk5PVEFUSU9OX1hNTDogJ2Fubm90YXRpb24teG1sJyxcbiAgICBBUFBMRVQ6ICdhcHBsZXQnLFxuICAgIEFSRUE6ICdhcmVhJyxcbiAgICBBUlRJQ0xFOiAnYXJ0aWNsZScsXG4gICAgQVNJREU6ICdhc2lkZScsXG5cbiAgICBCOiAnYicsXG4gICAgQkFTRTogJ2Jhc2UnLFxuICAgIEJBU0VGT05UOiAnYmFzZWZvbnQnLFxuICAgIEJHU09VTkQ6ICdiZ3NvdW5kJyxcbiAgICBCSUc6ICdiaWcnLFxuICAgIEJMT0NLUVVPVEU6ICdibG9ja3F1b3RlJyxcbiAgICBCT0RZOiAnYm9keScsXG4gICAgQlI6ICdicicsXG4gICAgQlVUVE9OOiAnYnV0dG9uJyxcblxuICAgIENBUFRJT046ICdjYXB0aW9uJyxcbiAgICBDRU5URVI6ICdjZW50ZXInLFxuICAgIENPREU6ICdjb2RlJyxcbiAgICBDT0w6ICdjb2wnLFxuICAgIENPTEdST1VQOiAnY29sZ3JvdXAnLFxuXG4gICAgREQ6ICdkZCcsXG4gICAgREVTQzogJ2Rlc2MnLFxuICAgIERFVEFJTFM6ICdkZXRhaWxzJyxcbiAgICBESUFMT0c6ICdkaWFsb2cnLFxuICAgIERJUjogJ2RpcicsXG4gICAgRElWOiAnZGl2JyxcbiAgICBETDogJ2RsJyxcbiAgICBEVDogJ2R0JyxcblxuICAgIEVNOiAnZW0nLFxuICAgIEVNQkVEOiAnZW1iZWQnLFxuXG4gICAgRklFTERTRVQ6ICdmaWVsZHNldCcsXG4gICAgRklHQ0FQVElPTjogJ2ZpZ2NhcHRpb24nLFxuICAgIEZJR1VSRTogJ2ZpZ3VyZScsXG4gICAgRk9OVDogJ2ZvbnQnLFxuICAgIEZPT1RFUjogJ2Zvb3RlcicsXG4gICAgRk9SRUlHTl9PQkpFQ1Q6ICdmb3JlaWduT2JqZWN0JyxcbiAgICBGT1JNOiAnZm9ybScsXG4gICAgRlJBTUU6ICdmcmFtZScsXG4gICAgRlJBTUVTRVQ6ICdmcmFtZXNldCcsXG5cbiAgICBIMTogJ2gxJyxcbiAgICBIMjogJ2gyJyxcbiAgICBIMzogJ2gzJyxcbiAgICBINDogJ2g0JyxcbiAgICBINTogJ2g1JyxcbiAgICBINjogJ2g2JyxcbiAgICBIRUFEOiAnaGVhZCcsXG4gICAgSEVBREVSOiAnaGVhZGVyJyxcbiAgICBIR1JPVVA6ICdoZ3JvdXAnLFxuICAgIEhSOiAnaHInLFxuICAgIEhUTUw6ICdodG1sJyxcblxuICAgIEk6ICdpJyxcbiAgICBJTUc6ICdpbWcnLFxuICAgIElNQUdFOiAnaW1hZ2UnLFxuICAgIElOUFVUOiAnaW5wdXQnLFxuICAgIElGUkFNRTogJ2lmcmFtZScsXG5cbiAgICBLRVlHRU46ICdrZXlnZW4nLFxuXG4gICAgTEFCRUw6ICdsYWJlbCcsXG4gICAgTEk6ICdsaScsXG4gICAgTElOSzogJ2xpbmsnLFxuICAgIExJU1RJTkc6ICdsaXN0aW5nJyxcblxuICAgIE1BSU46ICdtYWluJyxcbiAgICBNQUxJR05NQVJLOiAnbWFsaWdubWFyaycsXG4gICAgTUFSUVVFRTogJ21hcnF1ZWUnLFxuICAgIE1BVEg6ICdtYXRoJyxcbiAgICBNRU5VOiAnbWVudScsXG4gICAgTUVUQTogJ21ldGEnLFxuICAgIE1HTFlQSDogJ21nbHlwaCcsXG4gICAgTUk6ICdtaScsXG4gICAgTU86ICdtbycsXG4gICAgTU46ICdtbicsXG4gICAgTVM6ICdtcycsXG4gICAgTVRFWFQ6ICdtdGV4dCcsXG5cbiAgICBOQVY6ICduYXYnLFxuICAgIE5PQlI6ICdub2JyJyxcbiAgICBOT0ZSQU1FUzogJ25vZnJhbWVzJyxcbiAgICBOT0VNQkVEOiAnbm9lbWJlZCcsXG4gICAgTk9TQ1JJUFQ6ICdub3NjcmlwdCcsXG5cbiAgICBPQkpFQ1Q6ICdvYmplY3QnLFxuICAgIE9MOiAnb2wnLFxuICAgIE9QVEdST1VQOiAnb3B0Z3JvdXAnLFxuICAgIE9QVElPTjogJ29wdGlvbicsXG5cbiAgICBQOiAncCcsXG4gICAgUEFSQU06ICdwYXJhbScsXG4gICAgUExBSU5URVhUOiAncGxhaW50ZXh0JyxcbiAgICBQUkU6ICdwcmUnLFxuXG4gICAgUkI6ICdyYicsXG4gICAgUlA6ICdycCcsXG4gICAgUlQ6ICdydCcsXG4gICAgUlRDOiAncnRjJyxcbiAgICBSVUJZOiAncnVieScsXG5cbiAgICBTOiAncycsXG4gICAgU0NSSVBUOiAnc2NyaXB0JyxcbiAgICBTRUNUSU9OOiAnc2VjdGlvbicsXG4gICAgU0VMRUNUOiAnc2VsZWN0JyxcbiAgICBTT1VSQ0U6ICdzb3VyY2UnLFxuICAgIFNNQUxMOiAnc21hbGwnLFxuICAgIFNQQU46ICdzcGFuJyxcbiAgICBTVFJJS0U6ICdzdHJpa2UnLFxuICAgIFNUUk9ORzogJ3N0cm9uZycsXG4gICAgU1RZTEU6ICdzdHlsZScsXG4gICAgU1VCOiAnc3ViJyxcbiAgICBTVU1NQVJZOiAnc3VtbWFyeScsXG4gICAgU1VQOiAnc3VwJyxcblxuICAgIFRBQkxFOiAndGFibGUnLFxuICAgIFRCT0RZOiAndGJvZHknLFxuICAgIFRFTVBMQVRFOiAndGVtcGxhdGUnLFxuICAgIFRFWFRBUkVBOiAndGV4dGFyZWEnLFxuICAgIFRGT09UOiAndGZvb3QnLFxuICAgIFREOiAndGQnLFxuICAgIFRIOiAndGgnLFxuICAgIFRIRUFEOiAndGhlYWQnLFxuICAgIFRJVExFOiAndGl0bGUnLFxuICAgIFRSOiAndHInLFxuICAgIFRSQUNLOiAndHJhY2snLFxuICAgIFRUOiAndHQnLFxuXG4gICAgVTogJ3UnLFxuICAgIFVMOiAndWwnLFxuXG4gICAgU1ZHOiAnc3ZnJyxcblxuICAgIFZBUjogJ3ZhcicsXG5cbiAgICBXQlI6ICd3YnInLFxuXG4gICAgWE1QOiAneG1wJ1xufSk7XG5cbmV4cG9ydHMuU1BFQ0lBTF9FTEVNRU5UUyA9IHtcbiAgICBbTlMuSFRNTF06IHtcbiAgICAgICAgWyQuQUREUkVTU106IHRydWUsXG4gICAgICAgIFskLkFQUExFVF06IHRydWUsXG4gICAgICAgIFskLkFSRUFdOiB0cnVlLFxuICAgICAgICBbJC5BUlRJQ0xFXTogdHJ1ZSxcbiAgICAgICAgWyQuQVNJREVdOiB0cnVlLFxuICAgICAgICBbJC5CQVNFXTogdHJ1ZSxcbiAgICAgICAgWyQuQkFTRUZPTlRdOiB0cnVlLFxuICAgICAgICBbJC5CR1NPVU5EXTogdHJ1ZSxcbiAgICAgICAgWyQuQkxPQ0tRVU9URV06IHRydWUsXG4gICAgICAgIFskLkJPRFldOiB0cnVlLFxuICAgICAgICBbJC5CUl06IHRydWUsXG4gICAgICAgIFskLkJVVFRPTl06IHRydWUsXG4gICAgICAgIFskLkNBUFRJT05dOiB0cnVlLFxuICAgICAgICBbJC5DRU5URVJdOiB0cnVlLFxuICAgICAgICBbJC5DT0xdOiB0cnVlLFxuICAgICAgICBbJC5DT0xHUk9VUF06IHRydWUsXG4gICAgICAgIFskLkREXTogdHJ1ZSxcbiAgICAgICAgWyQuREVUQUlMU106IHRydWUsXG4gICAgICAgIFskLkRJUl06IHRydWUsXG4gICAgICAgIFskLkRJVl06IHRydWUsXG4gICAgICAgIFskLkRMXTogdHJ1ZSxcbiAgICAgICAgWyQuRFRdOiB0cnVlLFxuICAgICAgICBbJC5FTUJFRF06IHRydWUsXG4gICAgICAgIFskLkZJRUxEU0VUXTogdHJ1ZSxcbiAgICAgICAgWyQuRklHQ0FQVElPTl06IHRydWUsXG4gICAgICAgIFskLkZJR1VSRV06IHRydWUsXG4gICAgICAgIFskLkZPT1RFUl06IHRydWUsXG4gICAgICAgIFskLkZPUk1dOiB0cnVlLFxuICAgICAgICBbJC5GUkFNRV06IHRydWUsXG4gICAgICAgIFskLkZSQU1FU0VUXTogdHJ1ZSxcbiAgICAgICAgWyQuSDFdOiB0cnVlLFxuICAgICAgICBbJC5IMl06IHRydWUsXG4gICAgICAgIFskLkgzXTogdHJ1ZSxcbiAgICAgICAgWyQuSDRdOiB0cnVlLFxuICAgICAgICBbJC5INV06IHRydWUsXG4gICAgICAgIFskLkg2XTogdHJ1ZSxcbiAgICAgICAgWyQuSEVBRF06IHRydWUsXG4gICAgICAgIFskLkhFQURFUl06IHRydWUsXG4gICAgICAgIFskLkhHUk9VUF06IHRydWUsXG4gICAgICAgIFskLkhSXTogdHJ1ZSxcbiAgICAgICAgWyQuSFRNTF06IHRydWUsXG4gICAgICAgIFskLklGUkFNRV06IHRydWUsXG4gICAgICAgIFskLklNR106IHRydWUsXG4gICAgICAgIFskLklOUFVUXTogdHJ1ZSxcbiAgICAgICAgWyQuTEldOiB0cnVlLFxuICAgICAgICBbJC5MSU5LXTogdHJ1ZSxcbiAgICAgICAgWyQuTElTVElOR106IHRydWUsXG4gICAgICAgIFskLk1BSU5dOiB0cnVlLFxuICAgICAgICBbJC5NQVJRVUVFXTogdHJ1ZSxcbiAgICAgICAgWyQuTUVOVV06IHRydWUsXG4gICAgICAgIFskLk1FVEFdOiB0cnVlLFxuICAgICAgICBbJC5OQVZdOiB0cnVlLFxuICAgICAgICBbJC5OT0VNQkVEXTogdHJ1ZSxcbiAgICAgICAgWyQuTk9GUkFNRVNdOiB0cnVlLFxuICAgICAgICBbJC5OT1NDUklQVF06IHRydWUsXG4gICAgICAgIFskLk9CSkVDVF06IHRydWUsXG4gICAgICAgIFskLk9MXTogdHJ1ZSxcbiAgICAgICAgWyQuUF06IHRydWUsXG4gICAgICAgIFskLlBBUkFNXTogdHJ1ZSxcbiAgICAgICAgWyQuUExBSU5URVhUXTogdHJ1ZSxcbiAgICAgICAgWyQuUFJFXTogdHJ1ZSxcbiAgICAgICAgWyQuU0NSSVBUXTogdHJ1ZSxcbiAgICAgICAgWyQuU0VDVElPTl06IHRydWUsXG4gICAgICAgIFskLlNFTEVDVF06IHRydWUsXG4gICAgICAgIFskLlNPVVJDRV06IHRydWUsXG4gICAgICAgIFskLlNUWUxFXTogdHJ1ZSxcbiAgICAgICAgWyQuU1VNTUFSWV06IHRydWUsXG4gICAgICAgIFskLlRBQkxFXTogdHJ1ZSxcbiAgICAgICAgWyQuVEJPRFldOiB0cnVlLFxuICAgICAgICBbJC5URF06IHRydWUsXG4gICAgICAgIFskLlRFTVBMQVRFXTogdHJ1ZSxcbiAgICAgICAgWyQuVEVYVEFSRUFdOiB0cnVlLFxuICAgICAgICBbJC5URk9PVF06IHRydWUsXG4gICAgICAgIFskLlRIXTogdHJ1ZSxcbiAgICAgICAgWyQuVEhFQURdOiB0cnVlLFxuICAgICAgICBbJC5USVRMRV06IHRydWUsXG4gICAgICAgIFskLlRSXTogdHJ1ZSxcbiAgICAgICAgWyQuVFJBQ0tdOiB0cnVlLFxuICAgICAgICBbJC5VTF06IHRydWUsXG4gICAgICAgIFskLldCUl06IHRydWUsXG4gICAgICAgIFskLlhNUF06IHRydWVcbiAgICB9LFxuICAgIFtOUy5NQVRITUxdOiB7XG4gICAgICAgIFskLk1JXTogdHJ1ZSxcbiAgICAgICAgWyQuTU9dOiB0cnVlLFxuICAgICAgICBbJC5NTl06IHRydWUsXG4gICAgICAgIFskLk1TXTogdHJ1ZSxcbiAgICAgICAgWyQuTVRFWFRdOiB0cnVlLFxuICAgICAgICBbJC5BTk5PVEFUSU9OX1hNTF06IHRydWVcbiAgICB9LFxuICAgIFtOUy5TVkddOiB7XG4gICAgICAgIFskLlRJVExFXTogdHJ1ZSxcbiAgICAgICAgWyQuRk9SRUlHTl9PQkpFQ1RdOiB0cnVlLFxuICAgICAgICBbJC5ERVNDXTogdHJ1ZVxuICAgIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEhUTUwgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbCcpO1xuXG4vL0FsaWFzZXNcbmNvbnN0ICQgPSBIVE1MLlRBR19OQU1FUztcbmNvbnN0IE5TID0gSFRNTC5OQU1FU1BBQ0VTO1xuXG4vL0VsZW1lbnQgdXRpbHNcblxuLy9PUFRJTUlaQVRJT046IEludGVnZXIgY29tcGFyaXNvbnMgYXJlIGxvdy1jb3N0LCBzbyB3ZSBjYW4gdXNlIHZlcnkgZmFzdCB0YWcgbmFtZSBsZW5ndGggZmlsdGVycyBoZXJlLlxuLy9JdCdzIGZhc3RlciB0aGFuIHVzaW5nIGRpY3Rpb25hcnkuXG5mdW5jdGlvbiBpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCh0bikge1xuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5QO1xuXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5SQiB8fCB0biA9PT0gJC5SUCB8fCB0biA9PT0gJC5SVCB8fCB0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCB8fCB0biA9PT0gJC5MSTtcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuUlRDO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5PUFRJT047XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLk9QVEdST1VQO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWRUaG9yb3VnaGx5KHRuKSB7XG4gICAgc3dpdGNoICh0bi5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlA7XG5cbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5SQiB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlJQIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuUlQgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5ERCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkRUIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuTEkgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5URCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlRIIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuVFJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlJUQztcblxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQ7XG5cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLk9QVElPTjtcblxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuQ0FQVElPTjtcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuT1BUR1JPVVAgfHwgdG4gPT09ICQuQ09MR1JPVVA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1Njb3BpbmdFbGVtZW50KHRuLCBucykge1xuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuSFRNTDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTUkgfHwgdG4gPT09ICQuTU8gfHwgdG4gPT09ICQuTU4gfHwgdG4gPT09ICQuTVMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLk1BVEhNTDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLkhUTUw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkRFU0MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLlNWRztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5zID09PSBOUy5IVE1MO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NVEVYVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuTUFUSE1MO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5USVRMRSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuU1ZHO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICByZXR1cm4gKHRuID09PSAkLkFQUExFVCB8fCB0biA9PT0gJC5PQkpFQ1QpICYmIG5zID09PSBOUy5IVE1MO1xuXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHJldHVybiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5NQVJRVUVFKSAmJiBucyA9PT0gTlMuSFRNTDtcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUw7XG5cbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5GT1JFSUdOX09CSkVDVCAmJiBucyA9PT0gTlMuU1ZHO1xuXG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuQU5OT1RBVElPTl9YTUwgJiYgbnMgPT09IE5TLk1BVEhNTDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8vU3RhY2sgb2Ygb3BlbiBlbGVtZW50c1xuY2xhc3MgT3BlbkVsZW1lbnRTdGFjayB7XG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQsIHRyZWVBZGFwdGVyKSB7XG4gICAgICAgIHRoaXMuc3RhY2tUb3AgPSAtMTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBkb2N1bWVudDtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudFRtcGxDb250ZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy50bXBsQ291bnQgPSAwO1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdHJlZUFkYXB0ZXI7XG4gICAgfVxuXG4gICAgLy9JbmRleCBvZiBlbGVtZW50XG4gICAgX2luZGV4T2YoZWxlbWVudCkge1xuICAgICAgICBsZXQgaWR4ID0gLTE7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtc1tpXSA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGlkeCA9IGk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlkeDtcbiAgICB9XG5cbiAgICAvL1VwZGF0ZSBjdXJyZW50IGVsZW1lbnRcbiAgICBfaXNJblRlbXBsYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50VGFnTmFtZSA9PT0gJC5URU1QTEFURSAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpID09PSBOUy5IVE1MO1xuICAgIH1cblxuICAgIF91cGRhdGVDdXJyZW50RWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5pdGVtc1t0aGlzLnN0YWNrVG9wXTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSA9IHRoaXMuY3VycmVudCAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5jdXJyZW50KTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRUbXBsQ29udGVudCA9IHRoaXMuX2lzSW5UZW1wbGF0ZSgpID8gdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQodGhpcy5jdXJyZW50KSA6IG51bGw7XG4gICAgfVxuXG4gICAgLy9NdXRhdGlvbnNcbiAgICBwdXNoKGVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5pdGVtc1srK3RoaXMuc3RhY2tUb3BdID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcblxuICAgICAgICBpZiAodGhpcy5faXNJblRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudG1wbENvdW50Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3AoKSB7XG4gICAgICAgIHRoaXMuc3RhY2tUb3AtLTtcblxuICAgICAgICBpZiAodGhpcy50bXBsQ291bnQgPiAwICYmIHRoaXMuX2lzSW5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRtcGxDb3VudC0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICByZXBsYWNlKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5faW5kZXhPZihvbGRFbGVtZW50KTtcblxuICAgICAgICB0aGlzLml0ZW1zW2lkeF0gPSBuZXdFbGVtZW50O1xuXG4gICAgICAgIGlmIChpZHggPT09IHRoaXMuc3RhY2tUb3ApIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRBZnRlcihyZWZlcmVuY2VFbGVtZW50LCBuZXdFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGluc2VydGlvbklkeCA9IHRoaXMuX2luZGV4T2YocmVmZXJlbmNlRWxlbWVudCkgKyAxO1xuXG4gICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3RWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGluc2VydGlvbklkeCA9PT0gKyt0aGlzLnN0YWNrVG9wKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcG9wVW50aWxUYWdOYW1lUG9wcGVkKHRhZ05hbWUpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLmN1cnJlbnRUYWdOYW1lO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBvcFVudGlsRWxlbWVudFBvcHBlZChlbGVtZW50KSB7XG4gICAgICAgIHdoaWxlICh0aGlzLnN0YWNrVG9wID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvcHBlZEVsZW1lbnQgPSB0aGlzLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG5cbiAgICAgICAgICAgIGlmIChwb3BwZWRFbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMuY3VycmVudFRhZ05hbWU7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5IMSB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkgyIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSDMgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5INCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkg1IHx8XG4gICAgICAgICAgICAgICAgKHRuID09PSAkLkg2ICYmIG5zID09PSBOUy5IVE1MKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3BVbnRpbFRhYmxlQ2VsbFBvcHBlZCgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLmN1cnJlbnRUYWdOYW1lO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEQgfHwgKHRuID09PSAkLlRIICYmIG5zID09PSBOUy5IVE1MKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcG9wQWxsVXBUb0h0bWxFbGVtZW50KCkge1xuICAgICAgICAvL05PVEU6IGhlcmUgd2UgYXNzdW1lIHRoYXQgcm9vdCA8aHRtbD4gZWxlbWVudCBpcyBhbHdheXMgZmlyc3QgaW4gdGhlIG9wZW4gZWxlbWVudCBzdGFjaywgc29cbiAgICAgICAgLy93ZSBwZXJmb3JtIHRoaXMgZmFzdCBzdGFjayBjbGVhbiB1cC5cbiAgICAgICAgdGhpcy5zdGFja1RvcCA9IDA7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICh0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRBQkxFICYmIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEVNUExBVEUgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5IVE1MKSB8fFxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSAhPT0gTlMuSFRNTFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICh0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRCT0RZICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5URk9PVCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEhFQUQgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRFTVBMQVRFICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5IVE1MKSB8fFxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSAhPT0gTlMuSFRNTFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpIHtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgKHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVFIgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5URU1QTEFURSAmJiB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLkhUTUwpIHx8XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpICE9PSBOUy5IVE1MXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNbaV0gPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrVG9wLS07XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vU2VhcmNoXG4gICAgdHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKSB7XG4gICAgICAgIC8vUHJvcGVybHkgbmVzdGVkIDxib2R5PiBlbGVtZW50IChzaG91bGQgYmUgc2Vjb25kIGVsZW1lbnQgaW4gc3RhY2spLlxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5pdGVtc1sxXTtcblxuICAgICAgICByZXR1cm4gZWxlbWVudCAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09ICQuQk9EWSA/IGVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4T2YoZWxlbWVudCkgPiAtMTtcbiAgICB9XG5cbiAgICBnZXRDb21tb25BbmNlc3RvcihlbGVtZW50KSB7XG4gICAgICAgIGxldCBlbGVtZW50SWR4ID0gdGhpcy5faW5kZXhPZihlbGVtZW50KTtcblxuICAgICAgICByZXR1cm4gLS1lbGVtZW50SWR4ID49IDAgPyB0aGlzLml0ZW1zW2VsZW1lbnRJZHhdIDogbnVsbDtcbiAgICB9XG5cbiAgICBpc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrVG9wID09PSAwICYmIHRoaXMuY3VycmVudFRhZ05hbWUgPT09ICQuSFRNTDtcbiAgICB9XG5cbiAgICAvL0VsZW1lbnQgaW4gc2NvcGVcbiAgICBoYXNJblNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNTY29waW5nRWxlbWVudCh0biwgbnMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INikgJiZcbiAgICAgICAgICAgICAgICBucyA9PT0gTlMuSFRNTFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1Njb3BpbmdFbGVtZW50KHRuLCBucykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYXNJbkxpc3RJdGVtU2NvcGUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lICYmIG5zID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICgoKHRuID09PSAkLlVMIHx8IHRuID09PSAkLk9MKSAmJiBucyA9PT0gTlMuSFRNTCkgfHwgaXNTY29waW5nRWxlbWVudCh0biwgbnMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGFzSW5CdXR0b25TY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCh0biA9PT0gJC5CVVRUT04gJiYgbnMgPT09IE5TLkhUTUwpIHx8IGlzU2NvcGluZ0VsZW1lbnQodG4sIG5zKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGhhc0luVGFibGVTY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuXG4gICAgICAgICAgICBpZiAobnMgIT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5UQUJMRSB8fCB0biA9PT0gJC5URU1QTEFURSB8fCB0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmIChucyAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVEZPT1QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYXNJblNlbGVjdFNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmIChucyAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRuICE9PSAkLk9QVElPTiAmJiB0biAhPT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vSW1wbGllZCBlbmQgdGFnc1xuICAgIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKSB7XG4gICAgICAgIHdoaWxlIChpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCh0aGlzLmN1cnJlbnRUYWdOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3NUaG9yb3VnaGx5KCkge1xuICAgICAgICB3aGlsZSAoaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWRUaG9yb3VnaGx5KHRoaXMuY3VycmVudFRhZ05hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oZXhjbHVzaW9uVGFnTmFtZSkge1xuICAgICAgICB3aGlsZSAoaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWQodGhpcy5jdXJyZW50VGFnTmFtZSkgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gZXhjbHVzaW9uVGFnTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBPcGVuRWxlbWVudFN0YWNrO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL0NvbnN0XG5jb25zdCBOT0FIX0FSS19DQVBBQ0lUWSA9IDM7XG5cbi8vTGlzdCBvZiBmb3JtYXR0aW5nIGVsZW1lbnRzXG5jbGFzcyBGb3JtYXR0aW5nRWxlbWVudExpc3Qge1xuICAgIGNvbnN0cnVjdG9yKHRyZWVBZGFwdGVyKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gW107XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIgPSB0cmVlQWRhcHRlcjtcbiAgICAgICAgdGhpcy5ib29rbWFyayA9IG51bGw7XG4gICAgfVxuXG4gICAgLy9Ob2FoIEFyaydzIGNvbmRpdGlvblxuICAgIC8vT1BUSU1JWkFUSU9OOiBhdCBmaXJzdCB3ZSB0cnkgdG8gZmluZCBwb3NzaWJsZSBjYW5kaWRhdGVzIGZvciBleGNsdXNpb24gdXNpbmdcbiAgICAvL2xpZ2h0d2VpZ2h0IGhldXJpc3RpY3Mgd2l0aG91dCB0aG9yb3VnaCBhdHRyaWJ1dGVzIGNoZWNrLlxuICAgIF9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyhuZXdFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5sZW5ndGggPj0gTk9BSF9BUktfQ0FQQUNJVFkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5lQXR0cnNMZW5ndGggPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5ld0VsZW1lbnQpLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IG5lVGFnTmFtZSA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IG5lTmFtZXNwYWNlVVJJID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkobmV3RWxlbWVudCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXNbaV07XG5cbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZW50cnkuZWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50QXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDYW5kaWRhdGUgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IG5lVGFnTmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KSA9PT0gbmVOYW1lc3BhY2VVUkkgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudEF0dHJzLmxlbmd0aCA9PT0gbmVBdHRyc0xlbmd0aDtcblxuICAgICAgICAgICAgICAgIGlmIChpc0NhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goeyBpZHg6IGksIGF0dHJzOiBlbGVtZW50QXR0cnMgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZXMubGVuZ3RoIDwgTk9BSF9BUktfQ0FQQUNJVFkgPyBbXSA6IGNhbmRpZGF0ZXM7XG4gICAgfVxuXG4gICAgX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24obmV3RWxlbWVudCkge1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gdGhpcy5fZ2V0Tm9haEFya0NvbmRpdGlvbkNhbmRpZGF0ZXMobmV3RWxlbWVudCk7XG4gICAgICAgIGxldCBjTGVuZ3RoID0gY2FuZGlkYXRlcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGNMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5lQXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbmVBdHRyc0xlbmd0aCA9IG5lQXR0cnMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgbmVBdHRyc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgICAgIC8vTk9URTogYnVpbGQgYXR0cnMgbWFwIGZvciB0aGUgbmV3IGVsZW1lbnQgc28gd2UgY2FuIHBlcmZvcm0gZmFzdCBsb29rdXBzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lQXR0cnNMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lQXR0ciA9IG5lQXR0cnNbaV07XG5cbiAgICAgICAgICAgICAgICBuZUF0dHJzTWFwW25lQXR0ci5uYW1lXSA9IG5lQXR0ci52YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZUF0dHJzTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNMZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjQXR0ciA9IGNhbmRpZGF0ZXNbal0uYXR0cnNbaV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5lQXR0cnNNYXBbY0F0dHIubmFtZV0gIT09IGNBdHRyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShqLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNMZW5ndGgtLTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzLmxlbmd0aCA8IE5PQUhfQVJLX0NBUEFDSVRZKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vTk9URTogcmVtb3ZlIGJvdHRvbW1vc3QgY2FuZGlkYXRlcyB1bnRpbCBOb2FoJ3MgQXJrIGNvbmRpdGlvbiB3aWxsIG5vdCBiZSBtZXRcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBjTGVuZ3RoIC0gMTsgaSA+PSBOT0FIX0FSS19DQVBBQ0lUWSAtIDE7IGktLSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoY2FuZGlkYXRlc1tpXS5pZHgsIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL011dGF0aW9uc1xuICAgIGluc2VydE1hcmtlcigpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnB1c2goeyB0eXBlOiBGb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZIH0pO1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHB1c2hFbGVtZW50KGVsZW1lbnQsIHRva2VuKSB7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24oZWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogRm9ybWF0dGluZ0VsZW1lbnRMaXN0LkVMRU1FTlRfRU5UUlksXG4gICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICAgICAgdG9rZW46IHRva2VuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgaW5zZXJ0RWxlbWVudEFmdGVyQm9va21hcmsoZWxlbWVudCwgdG9rZW4pIHtcbiAgICAgICAgbGV0IGJvb2ttYXJrSWR4ID0gdGhpcy5sZW5ndGggLSAxO1xuXG4gICAgICAgIGZvciAoOyBib29rbWFya0lkeCA+PSAwOyBib29rbWFya0lkeC0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRyaWVzW2Jvb2ttYXJrSWR4XSA9PT0gdGhpcy5ib29rbWFyaykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZShib29rbWFya0lkeCArIDEsIDAsIHtcbiAgICAgICAgICAgIHR5cGU6IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5FTEVNRU5UX0VOVFJZLFxuICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgICAgIHRva2VuOiB0b2tlblxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJlbW92ZUVudHJ5KGVudHJ5KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRyaWVzW2ldID09PSBlbnRyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyVG9MYXN0TWFya2VyKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLnBvcCgpO1xuXG4gICAgICAgICAgICB0aGlzLmxlbmd0aC0tO1xuXG4gICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9TZWFyY2hcbiAgICBnZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXNbaV07XG5cbiAgICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSBGb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZW50cnkuZWxlbWVudCkgPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBnZXRFbGVtZW50RW50cnkoZWxlbWVudCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXNbaV07XG5cbiAgICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSBGb3JtYXR0aW5nRWxlbWVudExpc3QuRUxFTUVOVF9FTlRSWSAmJiBlbnRyeS5lbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG4vL0VudHJ5IHR5cGVzXG5Gb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZID0gJ01BUktFUl9FTlRSWSc7XG5Gb3JtYXR0aW5nRWxlbWVudExpc3QuRUxFTUVOVF9FTlRSWSA9ICdFTEVNRU5UX0VOVFJZJztcblxubW9kdWxlLmV4cG9ydHMgPSBGb3JtYXR0aW5nRWxlbWVudExpc3Q7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNsYXNzIE1peGluIHtcbiAgICBjb25zdHJ1Y3Rvcihob3N0KSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kcyA9IHt9O1xuICAgICAgICBjb25zdCBvdmVycmlkZGVuTWV0aG9kcyA9IHRoaXMuX2dldE92ZXJyaWRkZW5NZXRob2RzKHRoaXMsIG9yaWdpbmFsTWV0aG9kcyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3ZlcnJpZGRlbk1ldGhvZHMpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG92ZXJyaWRkZW5NZXRob2RzW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbE1ldGhvZHNba2V5XSA9IGhvc3Rba2V5XTtcbiAgICAgICAgICAgICAgICBob3N0W2tleV0gPSBvdmVycmlkZGVuTWV0aG9kc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbn1cblxuTWl4aW4uaW5zdGFsbCA9IGZ1bmN0aW9uKGhvc3QsIEN0b3IsIG9wdHMpIHtcbiAgICBpZiAoIWhvc3QuX19taXhpbnMpIHtcbiAgICAgICAgaG9zdC5fX21peGlucyA9IFtdO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaG9zdC5fX21peGlucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaG9zdC5fX21peGluc1tpXS5jb25zdHJ1Y3RvciA9PT0gQ3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGhvc3QuX19taXhpbnNbaV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtaXhpbiA9IG5ldyBDdG9yKGhvc3QsIG9wdHMpO1xuXG4gICAgaG9zdC5fX21peGlucy5wdXNoKG1peGluKTtcblxuICAgIHJldHVybiBtaXhpbjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTWl4aW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKTtcblxuY2xhc3MgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluIGV4dGVuZHMgTWl4aW4ge1xuICAgIGNvbnN0cnVjdG9yKHByZXByb2Nlc3Nvcikge1xuICAgICAgICBzdXBlcihwcmVwcm9jZXNzb3IpO1xuXG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yID0gcHJlcHJvY2Vzc29yO1xuICAgICAgICB0aGlzLmlzRW9sID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGluZVN0YXJ0UG9zID0gMDtcbiAgICAgICAgdGhpcy5kcm9wcGVkQnVmZmVyU2l6ZSA9IDA7XG5cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICB0aGlzLmNvbCA9IDA7XG4gICAgICAgIHRoaXMubGluZSA9IDE7XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWR2YW5jZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSB0aGlzLnBvcyArIDE7XG4gICAgICAgICAgICAgICAgY29uc3QgY2ggPSB0aGlzLmh0bWxbcG9zXTtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogTEYgc2hvdWxkIGJlIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgbGluZVxuICAgICAgICAgICAgICAgIGlmIChteG4uaXNFb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgbXhuLmlzRW9sID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIG14bi5saW5lKys7XG4gICAgICAgICAgICAgICAgICAgIG14bi5saW5lU3RhcnRQb3MgPSBwb3M7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXFxuJyB8fCAoY2ggPT09ICdcXHInICYmIHRoaXMuaHRtbFtwb3MgKyAxXSAhPT0gJ1xcbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIG14bi5pc0VvbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbXhuLmNvbCA9IHBvcyAtIG14bi5saW5lU3RhcnRQb3MgKyAxO1xuICAgICAgICAgICAgICAgIG14bi5vZmZzZXQgPSBteG4uZHJvcHBlZEJ1ZmZlclNpemUgKyBwb3M7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZy5hZHZhbmNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXRyZWF0KCkge1xuICAgICAgICAgICAgICAgIG9yaWcucmV0cmVhdC5jYWxsKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgbXhuLmlzRW9sID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbXhuLmNvbCA9IHRoaXMucG9zIC0gbXhuLmxpbmVTdGFydFBvcyArIDE7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcm9wUGFyc2VkQ2h1bmsoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldlBvcyA9IHRoaXMucG9zO1xuXG4gICAgICAgICAgICAgICAgb3JpZy5kcm9wUGFyc2VkQ2h1bmsuY2FsbCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZHVjdGlvbiA9IHByZXZQb3MgLSB0aGlzLnBvcztcblxuICAgICAgICAgICAgICAgIG14bi5saW5lU3RhcnRQb3MgLT0gcmVkdWN0aW9uO1xuICAgICAgICAgICAgICAgIG14bi5kcm9wcGVkQnVmZmVyU2l6ZSArPSByZWR1Y3Rpb247XG4gICAgICAgICAgICAgICAgbXhuLm9mZnNldCA9IG14bi5kcm9wcGVkQnVmZmVyU2l6ZSArIHRoaXMucG9zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKTtcbmNvbnN0IFRva2VuaXplciA9IHJlcXVpcmUoJy4uLy4uL3Rva2VuaXplcicpO1xuY29uc3QgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluID0gcmVxdWlyZSgnLi4vcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluJyk7XG5cbmNsYXNzIExvY2F0aW9uSW5mb1Rva2VuaXplck1peGluIGV4dGVuZHMgTWl4aW4ge1xuICAgIGNvbnN0cnVjdG9yKHRva2VuaXplcikge1xuICAgICAgICBzdXBlcih0b2tlbml6ZXIpO1xuXG4gICAgICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyO1xuICAgICAgICB0aGlzLnBvc1RyYWNrZXIgPSBNaXhpbi5pbnN0YWxsKHRva2VuaXplci5wcmVwcm9jZXNzb3IsIFBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbik7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3RMb2MgPSBudWxsO1xuICAgIH1cblxuICAgIF9nZXRDdXJyZW50TG9jYXRpb24oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGFydExpbmU6IHRoaXMucG9zVHJhY2tlci5saW5lLFxuICAgICAgICAgICAgc3RhcnRDb2w6IHRoaXMucG9zVHJhY2tlci5jb2wsXG4gICAgICAgICAgICBzdGFydE9mZnNldDogdGhpcy5wb3NUcmFja2VyLm9mZnNldCxcbiAgICAgICAgICAgIGVuZExpbmU6IC0xLFxuICAgICAgICAgICAgZW5kQ29sOiAtMSxcbiAgICAgICAgICAgIGVuZE9mZnNldDogLTFcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfYXR0YWNoQ3VycmVudEF0dHJMb2NhdGlvbkluZm8oKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbi5lbmRMaW5lID0gdGhpcy5wb3NUcmFja2VyLmxpbmU7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbi5lbmRDb2wgPSB0aGlzLnBvc1RyYWNrZXIuY29sO1xuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyTG9jYXRpb24uZW5kT2Zmc2V0ID0gdGhpcy5wb3NUcmFja2VyLm9mZnNldDtcblxuICAgICAgICBjb25zdCBjdXJyZW50VG9rZW4gPSB0aGlzLnRva2VuaXplci5jdXJyZW50VG9rZW47XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBdHRyID0gdGhpcy50b2tlbml6ZXIuY3VycmVudEF0dHI7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50VG9rZW4ubG9jYXRpb24uYXR0cnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbi5sb2NhdGlvbi5hdHRycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50VG9rZW4ubG9jYXRpb24uYXR0cnNbY3VycmVudEF0dHIubmFtZV0gPSB0aGlzLmN1cnJlbnRBdHRyTG9jYXRpb247XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICBjb25zdCBtZXRob2RzID0ge1xuICAgICAgICAgICAgX2NyZWF0ZVN0YXJ0VGFnVG9rZW4oKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlU3RhcnRUYWdUb2tlbi5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uID0gbXhuLmN0TG9jO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZUVuZFRhZ1Rva2VuKCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUVuZFRhZ1Rva2VuLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24gPSBteG4uY3RMb2M7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfY3JlYXRlQ29tbWVudFRva2VuKCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUNvbW1lbnRUb2tlbi5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uID0gbXhuLmN0TG9jO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZURvY3R5cGVUb2tlbihpbml0aWFsTmFtZSkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZURvY3R5cGVUb2tlbi5jYWxsKHRoaXMsIGluaXRpYWxOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbiA9IG14bi5jdExvYztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9jcmVhdGVDaGFyYWN0ZXJUb2tlbih0eXBlLCBjaCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUNoYXJhY3RlclRva2VuLmNhbGwodGhpcywgdHlwZSwgY2gpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uID0gbXhuLmN0TG9jO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZUVPRlRva2VuKCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUVPRlRva2VuLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24gPSBteG4uX2dldEN1cnJlbnRMb2NhdGlvbigpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZUF0dHIoYXR0ck5hbWVGaXJzdENoKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlQXR0ci5jYWxsKHRoaXMsIGF0dHJOYW1lRmlyc3RDaCk7XG4gICAgICAgICAgICAgICAgbXhuLmN1cnJlbnRBdHRyTG9jYXRpb24gPSBteG4uX2dldEN1cnJlbnRMb2NhdGlvbigpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2xlYXZlQXR0ck5hbWUodG9TdGF0ZSkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2xlYXZlQXR0ck5hbWUuY2FsbCh0aGlzLCB0b1N0YXRlKTtcbiAgICAgICAgICAgICAgICBteG4uX2F0dGFjaEN1cnJlbnRBdHRyTG9jYXRpb25JbmZvKCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfbGVhdmVBdHRyVmFsdWUodG9TdGF0ZSkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2xlYXZlQXR0clZhbHVlLmNhbGwodGhpcywgdG9TdGF0ZSk7XG4gICAgICAgICAgICAgICAgbXhuLl9hdHRhY2hDdXJyZW50QXR0ckxvY2F0aW9uSW5mbygpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2VtaXRDdXJyZW50VG9rZW4oKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3RMb2MgPSB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbjtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBwZW5kaW5nIGNoYXJhY3RlciB0b2tlbiBtYWtlIGl0J3MgZW5kIGxvY2F0aW9uIGVxdWFsIHRvIHRoZVxuICAgICAgICAgICAgICAgIC8vY3VycmVudCB0b2tlbidzIHN0YXJ0IGxvY2F0aW9uLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbi5lbmRMaW5lID0gY3RMb2Muc3RhcnRMaW5lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbi5lbmRDb2wgPSBjdExvYy5zdGFydENvbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24uZW5kT2Zmc2V0ID0gY3RMb2Muc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFRva2VuLnR5cGUgPT09IFRva2VuaXplci5FT0ZfVE9LRU4pIHtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kTGluZSA9IGN0TG9jLnN0YXJ0TGluZTtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kQ29sID0gY3RMb2Muc3RhcnRDb2w7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZE9mZnNldCA9IGN0TG9jLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZExpbmUgPSBteG4ucG9zVHJhY2tlci5saW5lO1xuICAgICAgICAgICAgICAgICAgICBjdExvYy5lbmRDb2wgPSBteG4ucG9zVHJhY2tlci5jb2wgKyAxO1xuICAgICAgICAgICAgICAgICAgICBjdExvYy5lbmRPZmZzZXQgPSBteG4ucG9zVHJhY2tlci5vZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9yaWcuX2VtaXRDdXJyZW50VG9rZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN0TG9jID0gdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gJiYgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb247XG5cbiAgICAgICAgICAgICAgICAvL05PVEU6IGlmIHdlIGhhdmUgY2hhcmFjdGVyIHRva2VuIGFuZCBpdCdzIGxvY2F0aW9uIHdhc24ndCBzZXQgaW4gdGhlIF9lbWl0Q3VycmVudFRva2VuKCksXG4gICAgICAgICAgICAgICAgLy90aGVuIHNldCBpdCdzIGxvY2F0aW9uIGF0IHRoZSBjdXJyZW50IHByZXByb2Nlc3NvciBwb3NpdGlvbi5cbiAgICAgICAgICAgICAgICAvL1dlIGRvbid0IG5lZWQgdG8gaW5jcmVtZW50IHByZXByb2Nlc3NvciBwb3NpdGlvbiwgc2luY2UgY2hhcmFjdGVyIHRva2VuXG4gICAgICAgICAgICAgICAgLy9lbWlzc2lvbiBpcyBhbHdheXMgZm9yY2VkIGJ5IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG9rZW4gaGVyZS5cbiAgICAgICAgICAgICAgICAvL1NvLCB3ZSBhbHJlYWR5IGhhdmUgYWR2YW5jZWQgcG9zaXRpb24uXG4gICAgICAgICAgICAgICAgaWYgKGN0TG9jICYmIGN0TG9jLmVuZE9mZnNldCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kTGluZSA9IG14bi5wb3NUcmFja2VyLmxpbmU7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZENvbCA9IG14bi5wb3NUcmFja2VyLmNvbDtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kT2Zmc2V0ID0gbXhuLnBvc1RyYWNrZXIub2Zmc2V0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9yaWcuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvL05PVEU6IHBhdGNoIGluaXRpYWwgc3RhdGVzIGZvciBlYWNoIG1vZGUgdG8gb2J0YWluIHRva2VuIHN0YXJ0IHBvc2l0aW9uXG4gICAgICAgIE9iamVjdC5rZXlzKFRva2VuaXplci5NT0RFKS5mb3JFYWNoKG1vZGVOYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gVG9rZW5pemVyLk1PREVbbW9kZU5hbWVdO1xuXG4gICAgICAgICAgICBtZXRob2RzW3N0YXRlXSA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN0TG9jID0gbXhuLl9nZXRDdXJyZW50TG9jYXRpb24oKTtcbiAgICAgICAgICAgICAgICBvcmlnW3N0YXRlXS5jYWxsKHRoaXMsIGNwKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBMb2NhdGlvbkluZm9PcGVuRWxlbWVudFN0YWNrTWl4aW4gZXh0ZW5kcyBNaXhpbiB7XG4gICAgY29uc3RydWN0b3Ioc3RhY2ssIG9wdHMpIHtcbiAgICAgICAgc3VwZXIoc3RhY2spO1xuXG4gICAgICAgIHRoaXMub25JdGVtUG9wID0gb3B0cy5vbkl0ZW1Qb3A7XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcG9wKCkge1xuICAgICAgICAgICAgICAgIG14bi5vbkl0ZW1Qb3AodGhpcy5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBvcmlnLnBvcC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcG9wQWxsVXBUb0h0bWxFbGVtZW50KCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIG14bi5vbkl0ZW1Qb3AodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgb3JpZy5wb3BBbGxVcFRvSHRtbEVsZW1lbnQuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbXhuLm9uSXRlbVBvcCh0aGlzLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIG9yaWcucmVtb3ZlLmNhbGwodGhpcywgZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IExvY2F0aW9uSW5mb09wZW5FbGVtZW50U3RhY2tNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuY29uc3QgVG9rZW5pemVyID0gcmVxdWlyZSgnLi4vLi4vdG9rZW5pemVyJyk7XG5jb25zdCBMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbiA9IHJlcXVpcmUoJy4vdG9rZW5pemVyLW1peGluJyk7XG5jb25zdCBMb2NhdGlvbkluZm9PcGVuRWxlbWVudFN0YWNrTWl4aW4gPSByZXF1aXJlKCcuL29wZW4tZWxlbWVudC1zdGFjay1taXhpbicpO1xuY29uc3QgSFRNTCA9IHJlcXVpcmUoJy4uLy4uL2NvbW1vbi9odG1sJyk7XG5cbi8vQWxpYXNlc1xuY29uc3QgJCA9IEhUTUwuVEFHX05BTUVTO1xuXG5jbGFzcyBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiBleHRlbmRzIE1peGluIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJzZXIpIHtcbiAgICAgICAgc3VwZXIocGFyc2VyKTtcblxuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlciA9IHRoaXMucGFyc2VyLnRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLnBvc1RyYWNrZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmxhc3RTdGFydFRhZ1Rva2VuID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG4gICAgfVxuXG4gICAgX3NldFN0YXJ0TG9jYXRpb24oZWxlbWVudCkge1xuICAgICAgICBsZXQgbG9jID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdUb2tlbikge1xuICAgICAgICAgICAgbG9jID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5sYXN0U3RhcnRUYWdUb2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICBsb2Muc3RhcnRUYWcgPSB0aGlzLmxhc3RTdGFydFRhZ1Rva2VuLmxvY2F0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGVsZW1lbnQsIGxvYyk7XG4gICAgfVxuXG4gICAgX3NldEVuZExvY2F0aW9uKGVsZW1lbnQsIGNsb3NpbmdUb2tlbikge1xuICAgICAgICBjb25zdCBsb2MgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGxvYykge1xuICAgICAgICAgICAgaWYgKGNsb3NpbmdUb2tlbi5sb2NhdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN0TG9jID0gY2xvc2luZ1Rva2VuLmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgLy8gTk9URTogRm9yIGNhc2VzIGxpa2UgPHA+IDxwPiA8L3A+IC0gRmlyc3QgJ3AnIGNsb3NlcyB3aXRob3V0IGEgY2xvc2luZ1xuICAgICAgICAgICAgICAgIC8vIHRhZyBhbmQgZm9yIGNhc2VzIGxpa2UgPHRkPiA8cD4gPC90ZD4gLSAncCcgY2xvc2VzIHdpdGhvdXQgYSBjbG9zaW5nIHRhZy5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0Nsb3NpbmdFbmRUYWcgPSBjbG9zaW5nVG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVORF9UQUdfVE9LRU4gJiYgdG4gPT09IGNsb3NpbmdUb2tlbi50YWdOYW1lO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzQ2xvc2luZ0VuZFRhZykge1xuICAgICAgICAgICAgICAgICAgICBsb2MuZW5kVGFnID0gT2JqZWN0LmFzc2lnbih7fSwgY3RMb2MpO1xuICAgICAgICAgICAgICAgICAgICBsb2MuZW5kTGluZSA9IGN0TG9jLmVuZExpbmU7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRDb2wgPSBjdExvYy5lbmRDb2w7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRPZmZzZXQgPSBjdExvYy5lbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZExpbmUgPSBjdExvYy5zdGFydExpbmU7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRDb2wgPSBjdExvYy5zdGFydENvbDtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZE9mZnNldCA9IGN0TG9jLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9nZXRPdmVycmlkZGVuTWV0aG9kcyhteG4sIG9yaWcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIF9ib290c3RyYXAoZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2Jvb3RzdHJhcC5jYWxsKHRoaXMsIGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBteG4ubGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICBteG4uY3VycmVudFRva2VuID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuaXplck1peGluID0gTWl4aW4uaW5zdGFsbCh0aGlzLnRva2VuaXplciwgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4pO1xuXG4gICAgICAgICAgICAgICAgbXhuLnBvc1RyYWNrZXIgPSB0b2tlbml6ZXJNaXhpbi5wb3NUcmFja2VyO1xuXG4gICAgICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLm9wZW5FbGVtZW50cywgTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluLCB7XG4gICAgICAgICAgICAgICAgICAgIG9uSXRlbVBvcDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbXhuLl9zZXRFbmRMb2NhdGlvbihlbGVtZW50LCBteG4uY3VycmVudFRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3J1blBhcnNpbmdMb29wKHNjcmlwdEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9ydW5QYXJzaW5nTG9vcC5jYWxsKHRoaXMsIHNjcmlwdEhhbmRsZXIpO1xuXG4gICAgICAgICAgICAgICAgLy8gTk9URTogZ2VuZXJhdGUgbG9jYXRpb24gaW5mbyBmb3IgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAvLyB0aGF0IHJlbWFpbnMgb24gb3BlbiBlbGVtZW50IHN0YWNrXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBteG4uX3NldEVuZExvY2F0aW9uKHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldLCBteG4uY3VycmVudFRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvL1Rva2VuIHByb2Nlc3NpbmdcbiAgICAgICAgICAgIF9wcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgICAgIG9yaWcuX3Byb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQuY2FsbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfcHJvY2Vzc1Rva2VuKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgICAgIG9yaWcuX3Byb2Nlc3NUb2tlbi5jYWxsKHRoaXMsIHRva2VuKTtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogPGJvZHk+IGFuZCA8aHRtbD4gYXJlIG5ldmVyIHBvcHBlZCBmcm9tIHRoZSBzdGFjaywgc28gd2UgbmVlZCB0byB1cGRhdGVkXG4gICAgICAgICAgICAgICAgLy90aGVpciBlbmQgbG9jYXRpb24gZXhwbGljaXRseS5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlRXhwbGljaXRVcGRhdGUgPVxuICAgICAgICAgICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTiAmJlxuICAgICAgICAgICAgICAgICAgICAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MIHx8ICh0b2tlbi50YWdOYW1lID09PSAkLkJPRFkgJiYgdGhpcy5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZUV4cGxpY2l0VXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gdG9rZW4udGFnTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG14bi5fc2V0RW5kTG9jYXRpb24oZWxlbWVudCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy9Eb2N0eXBlXG4gICAgICAgICAgICBfc2V0RG9jdW1lbnRUeXBlKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fc2V0RG9jdW1lbnRUeXBlLmNhbGwodGhpcywgdG9rZW4pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRDaGlsZHJlbiA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2Rlcyh0aGlzLmRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjbkxlbmd0aCA9IGRvY3VtZW50Q2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbkxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudENoaWxkcmVuW2ldO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmlzRG9jdW1lbnRUeXBlTm9kZShub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKG5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy9FbGVtZW50c1xuICAgICAgICAgICAgX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIC8vTk9URTogX2F0dGFjaEVsZW1lbnRUb1RyZWUgaXMgY2FsbGVkIGZyb20gX2FwcGVuZEVsZW1lbnQsIF9pbnNlcnRFbGVtZW50IGFuZCBfaW5zZXJ0VGVtcGxhdGUgbWV0aG9kcy5cbiAgICAgICAgICAgICAgICAvL1NvIHdlIHdpbGwgdXNlIHRva2VuIGxvY2F0aW9uIHN0b3JlZCBpbiB0aGlzIG1ldGhvZHMgZm9yIHRoZSBlbGVtZW50LlxuICAgICAgICAgICAgICAgIG14bi5fc2V0U3RhcnRMb2NhdGlvbihlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBteG4ubGFzdFN0YXJ0VGFnVG9rZW4gPSBudWxsO1xuICAgICAgICAgICAgICAgIG9yaWcuX2F0dGFjaEVsZW1lbnRUb1RyZWUuY2FsbCh0aGlzLCBlbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9hcHBlbmRFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgICAgICAgICBteG4ubGFzdFN0YXJ0VGFnVG9rZW4gPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBvcmlnLl9hcHBlbmRFbGVtZW50LmNhbGwodGhpcywgdG9rZW4sIG5hbWVzcGFjZVVSSSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfaW5zZXJ0RWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSB7XG4gICAgICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gdG9rZW47XG4gICAgICAgICAgICAgICAgb3JpZy5faW5zZXJ0RWxlbWVudC5jYWxsKHRoaXMsIHRva2VuLCBuYW1lc3BhY2VVUkkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2luc2VydFRlbXBsYXRlKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gdG9rZW47XG4gICAgICAgICAgICAgICAgb3JpZy5faW5zZXJ0VGVtcGxhdGUuY2FsbCh0aGlzLCB0b2tlbik7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0bXBsQ29udGVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRtcGxDb250ZW50LCBudWxsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5faW5zZXJ0RmFrZVJvb3RFbGVtZW50LmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQsIG51bGwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy9Db21tZW50c1xuICAgICAgICAgICAgX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9hcHBlbmRDb21tZW50Tm9kZS5jYWxsKHRoaXMsIHRva2VuLCBwYXJlbnQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXMocGFyZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50Tm9kZSA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGNvbW1lbnROb2RlLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvL1RleHRcbiAgICAgICAgICAgIF9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKSB7XG4gICAgICAgICAgICAgICAgLy9OT1RFOiBzdG9yZSBsYXN0IGZvc3RlciBwYXJlbnRpbmcgbG9jYXRpb24sIHNvIHdlIHdpbGwgYmUgYWJsZSB0byBmaW5kIGluc2VydGVkIHRleHRcbiAgICAgICAgICAgICAgICAvL2luIGNhc2Ugb2YgZm9zdGVyIHBhcmVudGluZ1xuICAgICAgICAgICAgICAgIG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBvcmlnLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24uY2FsbCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBteG4ubGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2luc2VydENoYXJhY3RlcnModG9rZW4pIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9pbnNlcnRDaGFyYWN0ZXJzLmNhbGwodGhpcywgdG9rZW4pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRm9zdGVyUGFyZW50ID0gdGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9XG4gICAgICAgICAgICAgICAgICAgIChoYXNGb3N0ZXJQYXJlbnQgJiYgbXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbi5wYXJlbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2libGluZ3MgPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXMocGFyZW50KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRleHROb2RlSWR4ID1cbiAgICAgICAgICAgICAgICAgICAgaGFzRm9zdGVyUGFyZW50ICYmIG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24uYmVmb3JlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzaWJsaW5ncy5pbmRleE9mKG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24uYmVmb3JlRWxlbWVudCkgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNpYmxpbmdzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0Tm9kZSA9IHNpYmxpbmdzW3RleHROb2RlSWR4XTtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBsb2NhdGlvbiBhc3NpZ25lZCBieSBhbm90aGVyIHRva2VuLCB0aGVuIGp1c3QgdXBkYXRlIGVuZCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IHRuTG9jID0gdGhpcy50cmVlQWRhcHRlci5nZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRleHROb2RlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0bkxvYykge1xuICAgICAgICAgICAgICAgICAgICB0bkxvYy5lbmRMaW5lID0gdG9rZW4ubG9jYXRpb24uZW5kTGluZTtcbiAgICAgICAgICAgICAgICAgICAgdG5Mb2MuZW5kQ29sID0gdG9rZW4ubG9jYXRpb24uZW5kQ29sO1xuICAgICAgICAgICAgICAgICAgICB0bkxvYy5lbmRPZmZzZXQgPSB0b2tlbi5sb2NhdGlvbi5lbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRleHROb2RlLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBFcnJvclJlcG9ydGluZ01peGluQmFzZSBleHRlbmRzIE1peGluIHtcbiAgICBjb25zdHJ1Y3Rvcihob3N0LCBvcHRzKSB7XG4gICAgICAgIHN1cGVyKGhvc3QpO1xuXG4gICAgICAgIHRoaXMucG9zVHJhY2tlciA9IG51bGw7XG4gICAgICAgIHRoaXMub25QYXJzZUVycm9yID0gb3B0cy5vblBhcnNlRXJyb3I7XG4gICAgfVxuXG4gICAgX3NldEVycm9yTG9jYXRpb24oZXJyKSB7XG4gICAgICAgIGVyci5zdGFydExpbmUgPSBlcnIuZW5kTGluZSA9IHRoaXMucG9zVHJhY2tlci5saW5lO1xuICAgICAgICBlcnIuc3RhcnRDb2wgPSBlcnIuZW5kQ29sID0gdGhpcy5wb3NUcmFja2VyLmNvbDtcbiAgICAgICAgZXJyLnN0YXJ0T2Zmc2V0ID0gZXJyLmVuZE9mZnNldCA9IHRoaXMucG9zVHJhY2tlci5vZmZzZXQ7XG4gICAgfVxuXG4gICAgX3JlcG9ydEVycm9yKGNvZGUpIHtcbiAgICAgICAgY29uc3QgZXJyID0ge1xuICAgICAgICAgICAgY29kZTogY29kZSxcbiAgICAgICAgICAgIHN0YXJ0TGluZTogLTEsXG4gICAgICAgICAgICBzdGFydENvbDogLTEsXG4gICAgICAgICAgICBzdGFydE9mZnNldDogLTEsXG4gICAgICAgICAgICBlbmRMaW5lOiAtMSxcbiAgICAgICAgICAgIGVuZENvbDogLTEsXG4gICAgICAgICAgICBlbmRPZmZzZXQ6IC0xXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fc2V0RXJyb3JMb2NhdGlvbihlcnIpO1xuICAgICAgICB0aGlzLm9uUGFyc2VFcnJvcihlcnIpO1xuICAgIH1cblxuICAgIF9nZXRPdmVycmlkZGVuTWV0aG9kcyhteG4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIF9lcnIoY29kZSkge1xuICAgICAgICAgICAgICAgIG14bi5fcmVwb3J0RXJyb3IoY29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBFcnJvclJlcG9ydGluZ01peGluQmFzZSA9IHJlcXVpcmUoJy4vbWl4aW4tYmFzZScpO1xuY29uc3QgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluID0gcmVxdWlyZSgnLi4vcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluJyk7XG5jb25zdCBNaXhpbiA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL21peGluJyk7XG5cbmNsYXNzIEVycm9yUmVwb3J0aW5nUHJlcHJvY2Vzc29yTWl4aW4gZXh0ZW5kcyBFcnJvclJlcG9ydGluZ01peGluQmFzZSB7XG4gICAgY29uc3RydWN0b3IocHJlcHJvY2Vzc29yLCBvcHRzKSB7XG4gICAgICAgIHN1cGVyKHByZXByb2Nlc3Nvciwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy5wb3NUcmFja2VyID0gTWl4aW4uaW5zdGFsbChwcmVwcm9jZXNzb3IsIFBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbik7XG4gICAgICAgIHRoaXMubGFzdEVyck9mZnNldCA9IC0xO1xuICAgIH1cblxuICAgIF9yZXBvcnRFcnJvcihjb2RlKSB7XG4gICAgICAgIC8vTk9URTogYXZvaWQgcmVwb3J0aW5nIGVycm9yIHR3aWNlIG9uIGFkdmFuY2UvcmV0cmVhdFxuICAgICAgICBpZiAodGhpcy5sYXN0RXJyT2Zmc2V0ICE9PSB0aGlzLnBvc1RyYWNrZXIub2Zmc2V0KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RFcnJPZmZzZXQgPSB0aGlzLnBvc1RyYWNrZXIub2Zmc2V0O1xuICAgICAgICAgICAgc3VwZXIuX3JlcG9ydEVycm9yKGNvZGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVycm9yUmVwb3J0aW5nUHJlcHJvY2Vzc29yTWl4aW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlID0gcmVxdWlyZSgnLi9taXhpbi1iYXNlJyk7XG5jb25zdCBFcnJvclJlcG9ydGluZ1ByZXByb2Nlc3Nvck1peGluID0gcmVxdWlyZSgnLi9wcmVwcm9jZXNzb3ItbWl4aW4nKTtcbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKTtcblxuY2xhc3MgRXJyb3JSZXBvcnRpbmdUb2tlbml6ZXJNaXhpbiBleHRlbmRzIEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcih0b2tlbml6ZXIsIG9wdHMpIHtcbiAgICAgICAgc3VwZXIodG9rZW5pemVyLCBvcHRzKTtcblxuICAgICAgICBjb25zdCBwcmVwcm9jZXNzb3JNaXhpbiA9IE1peGluLmluc3RhbGwodG9rZW5pemVyLnByZXByb2Nlc3NvciwgRXJyb3JSZXBvcnRpbmdQcmVwcm9jZXNzb3JNaXhpbiwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy5wb3NUcmFja2VyID0gcHJlcHJvY2Vzc29yTWl4aW4ucG9zVHJhY2tlcjtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRXJyb3JSZXBvcnRpbmdUb2tlbml6ZXJNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2UgPSByZXF1aXJlKCcuL21peGluLWJhc2UnKTtcbmNvbnN0IEVycm9yUmVwb3J0aW5nVG9rZW5pemVyTWl4aW4gPSByZXF1aXJlKCcuL3Rva2VuaXplci1taXhpbicpO1xuY29uc3QgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4gPSByZXF1aXJlKCcuLi9sb2NhdGlvbi1pbmZvL3Rva2VuaXplci1taXhpbicpO1xuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBFcnJvclJlcG9ydGluZ1BhcnNlck1peGluIGV4dGVuZHMgRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhcnNlciwgb3B0cykge1xuICAgICAgICBzdXBlcihwYXJzZXIsIG9wdHMpO1xuXG4gICAgICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgICAgIHRoaXMuY3RMb2MgPSBudWxsO1xuICAgICAgICB0aGlzLmxvY0JlZm9yZVRva2VuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgX3NldEVycm9yTG9jYXRpb24oZXJyKSB7XG4gICAgICAgIGlmICh0aGlzLmN0TG9jKSB7XG4gICAgICAgICAgICBlcnIuc3RhcnRMaW5lID0gdGhpcy5jdExvYy5zdGFydExpbmU7XG4gICAgICAgICAgICBlcnIuc3RhcnRDb2wgPSB0aGlzLmN0TG9jLnN0YXJ0Q29sO1xuICAgICAgICAgICAgZXJyLnN0YXJ0T2Zmc2V0ID0gdGhpcy5jdExvYy5zdGFydE9mZnNldDtcblxuICAgICAgICAgICAgZXJyLmVuZExpbmUgPSB0aGlzLmxvY0JlZm9yZVRva2VuID8gdGhpcy5jdExvYy5zdGFydExpbmUgOiB0aGlzLmN0TG9jLmVuZExpbmU7XG4gICAgICAgICAgICBlcnIuZW5kQ29sID0gdGhpcy5sb2NCZWZvcmVUb2tlbiA/IHRoaXMuY3RMb2Muc3RhcnRDb2wgOiB0aGlzLmN0TG9jLmVuZENvbDtcbiAgICAgICAgICAgIGVyci5lbmRPZmZzZXQgPSB0aGlzLmxvY0JlZm9yZVRva2VuID8gdGhpcy5jdExvYy5zdGFydE9mZnNldCA6IHRoaXMuY3RMb2MuZW5kT2Zmc2V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX2Jvb3RzdHJhcChkb2N1bWVudCwgZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fYm9vdHN0cmFwLmNhbGwodGhpcywgZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCk7XG5cbiAgICAgICAgICAgICAgICBNaXhpbi5pbnN0YWxsKHRoaXMudG9rZW5pemVyLCBFcnJvclJlcG9ydGluZ1Rva2VuaXplck1peGluLCBteG4ub3B0cyk7XG4gICAgICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLnRva2VuaXplciwgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3Byb2Nlc3NJbnB1dFRva2VuKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN0TG9jID0gdG9rZW4ubG9jYXRpb247XG5cbiAgICAgICAgICAgICAgICBvcmlnLl9wcm9jZXNzSW5wdXRUb2tlbi5jYWxsKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9lcnIoY29kZSwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIG14bi5sb2NCZWZvcmVUb2tlbiA9IG9wdGlvbnMgJiYgb3B0aW9ucy5iZWZvcmVUb2tlbjtcbiAgICAgICAgICAgICAgICBteG4uX3JlcG9ydEVycm9yKGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFcnJvclJlcG9ydGluZ1BhcnNlck1peGluO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB7IERPQ1VNRU5UX01PREUgfSA9IHJlcXVpcmUoJy4uL2NvbW1vbi9odG1sJyk7XG5cbi8vTm9kZSBjb25zdHJ1Y3Rpb25cbmV4cG9ydHMuY3JlYXRlRG9jdW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudCcsXG4gICAgICAgIG1vZGU6IERPQ1VNRU5UX01PREUuTk9fUVVJUktTLFxuICAgICAgICBjaGlsZE5vZGVzOiBbXVxuICAgIH07XG59O1xuXG5leHBvcnRzLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudC1mcmFnbWVudCcsXG4gICAgICAgIGNoaWxkTm9kZXM6IFtdXG4gICAgfTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgYXR0cnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogdGFnTmFtZSxcbiAgICAgICAgdGFnTmFtZTogdGFnTmFtZSxcbiAgICAgICAgYXR0cnM6IGF0dHJzLFxuICAgICAgICBuYW1lc3BhY2VVUkk6IG5hbWVzcGFjZVVSSSxcbiAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgIHBhcmVudE5vZGU6IG51bGxcbiAgICB9O1xufTtcblxuZXhwb3J0cy5jcmVhdGVDb21tZW50Tm9kZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyNjb21tZW50JyxcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgcGFyZW50Tm9kZTogbnVsbFxuICAgIH07XG59O1xuXG5jb25zdCBjcmVhdGVUZXh0Tm9kZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZU5hbWU6ICcjdGV4dCcsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgcGFyZW50Tm9kZTogbnVsbFxuICAgIH07XG59O1xuXG4vL1RyZWUgbXV0YXRpb25cbmNvbnN0IGFwcGVuZENoaWxkID0gKGV4cG9ydHMuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbihwYXJlbnROb2RlLCBuZXdOb2RlKSB7XG4gICAgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLnB1c2gobmV3Tm9kZSk7XG4gICAgbmV3Tm9kZS5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbn0pO1xuXG5jb25zdCBpbnNlcnRCZWZvcmUgPSAoZXhwb3J0cy5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbihwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gICAgY29uc3QgaW5zZXJ0aW9uSWR4ID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmluZGV4T2YocmVmZXJlbmNlTm9kZSk7XG5cbiAgICBwYXJlbnROb2RlLmNoaWxkTm9kZXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3Tm9kZSk7XG4gICAgbmV3Tm9kZS5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbn0pO1xuXG5leHBvcnRzLnNldFRlbXBsYXRlQ29udGVudCA9IGZ1bmN0aW9uKHRlbXBsYXRlRWxlbWVudCwgY29udGVudEVsZW1lbnQpIHtcbiAgICB0ZW1wbGF0ZUVsZW1lbnQuY29udGVudCA9IGNvbnRlbnRFbGVtZW50O1xufTtcblxuZXhwb3J0cy5nZXRUZW1wbGF0ZUNvbnRlbnQgPSBmdW5jdGlvbih0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICByZXR1cm4gdGVtcGxhdGVFbGVtZW50LmNvbnRlbnQ7XG59O1xuXG5leHBvcnRzLnNldERvY3VtZW50VHlwZSA9IGZ1bmN0aW9uKGRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICBsZXQgZG9jdHlwZU5vZGUgPSBudWxsO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkb2N1bWVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChkb2N1bWVudC5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lID09PSAnI2RvY3VtZW50VHlwZScpIHtcbiAgICAgICAgICAgIGRvY3R5cGVOb2RlID0gZG9jdW1lbnQuY2hpbGROb2Rlc1tpXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIGRvY3R5cGVOb2RlLm5hbWUgPSBuYW1lO1xuICAgICAgICBkb2N0eXBlTm9kZS5wdWJsaWNJZCA9IHB1YmxpY0lkO1xuICAgICAgICBkb2N0eXBlTm9kZS5zeXN0ZW1JZCA9IHN5c3RlbUlkO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFwcGVuZENoaWxkKGRvY3VtZW50LCB7XG4gICAgICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudFR5cGUnLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHB1YmxpY0lkOiBwdWJsaWNJZCxcbiAgICAgICAgICAgIHN5c3RlbUlkOiBzeXN0ZW1JZFxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5leHBvcnRzLnNldERvY3VtZW50TW9kZSA9IGZ1bmN0aW9uKGRvY3VtZW50LCBtb2RlKSB7XG4gICAgZG9jdW1lbnQubW9kZSA9IG1vZGU7XG59O1xuXG5leHBvcnRzLmdldERvY3VtZW50TW9kZSA9IGZ1bmN0aW9uKGRvY3VtZW50KSB7XG4gICAgcmV0dXJuIGRvY3VtZW50Lm1vZGU7XG59O1xuXG5leHBvcnRzLmRldGFjaE5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICBjb25zdCBpZHggPSBub2RlLnBhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKG5vZGUpO1xuXG4gICAgICAgIG5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBub2RlLnBhcmVudE5vZGUgPSBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuaW5zZXJ0VGV4dCA9IGZ1bmN0aW9uKHBhcmVudE5vZGUsIHRleHQpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBwcmV2Tm9kZSA9IHBhcmVudE5vZGUuY2hpbGROb2Rlc1twYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgaWYgKHByZXZOb2RlLm5vZGVOYW1lID09PSAnI3RleHQnKSB7XG4gICAgICAgICAgICBwcmV2Tm9kZS52YWx1ZSArPSB0ZXh0O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwZW5kQ2hpbGQocGFyZW50Tm9kZSwgY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xufTtcblxuZXhwb3J0cy5pbnNlcnRUZXh0QmVmb3JlID0gZnVuY3Rpb24ocGFyZW50Tm9kZSwgdGV4dCwgcmVmZXJlbmNlTm9kZSkge1xuICAgIGNvbnN0IHByZXZOb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzW3BhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpIC0gMV07XG5cbiAgICBpZiAocHJldk5vZGUgJiYgcHJldk5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgcHJldk5vZGUudmFsdWUgKz0gdGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgY3JlYXRlVGV4dE5vZGUodGV4dCksIHJlZmVyZW5jZU5vZGUpO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuYWRvcHRBdHRyaWJ1dGVzID0gZnVuY3Rpb24ocmVjaXBpZW50LCBhdHRycykge1xuICAgIGNvbnN0IHJlY2lwaWVudEF0dHJzTWFwID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY2lwaWVudC5hdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZWNpcGllbnRBdHRyc01hcC5wdXNoKHJlY2lwaWVudC5hdHRyc1tpXS5uYW1lKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGF0dHJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWNpcGllbnRBdHRyc01hcC5pbmRleE9mKGF0dHJzW2pdLm5hbWUpID09PSAtMSkge1xuICAgICAgICAgICAgcmVjaXBpZW50LmF0dHJzLnB1c2goYXR0cnNbal0pO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLy9UcmVlIHRyYXZlcnNpbmdcbmV4cG9ydHMuZ2V0Rmlyc3RDaGlsZCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZE5vZGVzWzBdO1xufTtcblxuZXhwb3J0cy5nZXRDaGlsZE5vZGVzID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLmNoaWxkTm9kZXM7XG59O1xuXG5leHBvcnRzLmdldFBhcmVudE5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZTtcbn07XG5cbmV4cG9ydHMuZ2V0QXR0ckxpc3QgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuYXR0cnM7XG59O1xuXG4vL05vZGUgZGF0YVxuZXhwb3J0cy5nZXRUYWdOYW1lID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LnRhZ05hbWU7XG59O1xuXG5leHBvcnRzLmdldE5hbWVzcGFjZVVSSSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudC5uYW1lc3BhY2VVUkk7XG59O1xuXG5leHBvcnRzLmdldFRleHROb2RlQ29udGVudCA9IGZ1bmN0aW9uKHRleHROb2RlKSB7XG4gICAgcmV0dXJuIHRleHROb2RlLnZhbHVlO1xufTtcblxuZXhwb3J0cy5nZXRDb21tZW50Tm9kZUNvbnRlbnQgPSBmdW5jdGlvbihjb21tZW50Tm9kZSkge1xuICAgIHJldHVybiBjb21tZW50Tm9kZS5kYXRhO1xufTtcblxuZXhwb3J0cy5nZXREb2N1bWVudFR5cGVOb2RlTmFtZSA9IGZ1bmN0aW9uKGRvY3R5cGVOb2RlKSB7XG4gICAgcmV0dXJuIGRvY3R5cGVOb2RlLm5hbWU7XG59O1xuXG5leHBvcnRzLmdldERvY3VtZW50VHlwZU5vZGVQdWJsaWNJZCA9IGZ1bmN0aW9uKGRvY3R5cGVOb2RlKSB7XG4gICAgcmV0dXJuIGRvY3R5cGVOb2RlLnB1YmxpY0lkO1xufTtcblxuZXhwb3J0cy5nZXREb2N1bWVudFR5cGVOb2RlU3lzdGVtSWQgPSBmdW5jdGlvbihkb2N0eXBlTm9kZSkge1xuICAgIHJldHVybiBkb2N0eXBlTm9kZS5zeXN0ZW1JZDtcbn07XG5cbi8vTm9kZSB0eXBlc1xuZXhwb3J0cy5pc1RleHROb2RlID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI3RleHQnO1xufTtcblxuZXhwb3J0cy5pc0NvbW1lbnROb2RlID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI2NvbW1lbnQnO1xufTtcblxuZXhwb3J0cy5pc0RvY3VtZW50VHlwZU5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjZG9jdW1lbnRUeXBlJztcbn07XG5cbmV4cG9ydHMuaXNFbGVtZW50Tm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gISFub2RlLnRhZ05hbWU7XG59O1xuXG4vLyBTb3VyY2UgY29kZSBsb2NhdGlvblxuZXhwb3J0cy5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uID0gZnVuY3Rpb24obm9kZSwgbG9jYXRpb24pIHtcbiAgICBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbiA9IGxvY2F0aW9uO1xufTtcblxuZXhwb3J0cy5nZXROb2RlU291cmNlQ29kZUxvY2F0aW9uID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VPcHRpb25zKGRlZmF1bHRzLCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIHJldHVybiBbZGVmYXVsdHMsIG9wdGlvbnNdLnJlZHVjZSgobWVyZ2VkLCBvcHRPYmopID0+IHtcbiAgICAgICAgT2JqZWN0LmtleXMob3B0T2JqKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBtZXJnZWRba2V5XSA9IG9wdE9ialtrZXldO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBET0NVTUVOVF9NT0RFIH0gPSByZXF1aXJlKCcuL2h0bWwnKTtcblxuLy9Db25zdFxuY29uc3QgVkFMSURfRE9DVFlQRV9OQU1FID0gJ2h0bWwnO1xuY29uc3QgVkFMSURfU1lTVEVNX0lEID0gJ2Fib3V0OmxlZ2FjeS1jb21wYXQnO1xuY29uc3QgUVVJUktTX01PREVfU1lTVEVNX0lEID0gJ2h0dHA6Ly93d3cuaWJtLmNvbS9kYXRhL2R0ZC92MTEvaWJteGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnO1xuXG5jb25zdCBRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMgPSBbXG4gICAgJysvL3NpbG1hcmlsLy9kdGQgaHRtbCBwcm8gdjByMTEgMTk5NzAxMDEvLycsXG4gICAgJy0vL2FzLy9kdGQgaHRtbCAzLjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvLycsXG4gICAgJy0vL2FkdmFzb2Z0IGx0ZC8vZHRkIGh0bWwgMy4wIGFzd2VkaXQgKyBleHRlbnNpb25zLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0Ly8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMWUvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMuMC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4yIGZpbmFsLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDMvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAwLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAzLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sLy8nLFxuICAgICctLy9tZXRyaXVzLy9kdGQgbWV0cml1cyBwcmVzZW50YXRpb25hbC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIGh0bWwgc3RyaWN0Ly8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgaHRtbC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIHRhYmxlcy8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0bWwgc3RyaWN0Ly8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgaHRtbC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIHRhYmxlcy8vJyxcbiAgICAnLS8vbmV0c2NhcGUgY29tbS4gY29ycC4vL2R0ZCBodG1sLy8nLFxuICAgICctLy9uZXRzY2FwZSBjb21tLiBjb3JwLi8vZHRkIHN0cmljdCBodG1sLy8nLFxuICAgIFwiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIDIuMC8vXCIsXG4gICAgXCItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgZXh0ZW5kZWQgMS4wLy9cIixcbiAgICBcIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCBleHRlbmRlZCByZWxheGVkIDEuMC8vXCIsXG4gICAgJy0vL3NxLy9kdGQgaHRtbCAyLjAgaG90bWV0YWwgKyBleHRlbnNpb25zLy8nLFxuICAgICctLy9zb2Z0cXVhZCBzb2Z0d2FyZS8vZHRkIGhvdG1ldGFsIHBybyA2LjA6OjE5OTkwNjAxOjpleHRlbnNpb25zIHRvIGh0bWwgNC4wLy8nLFxuICAgICctLy9zb2Z0cXVhZC8vZHRkIGhvdG1ldGFsIHBybyA0LjA6OjE5OTcxMDEwOjpleHRlbnNpb25zIHRvIGh0bWwgNC4wLy8nLFxuICAgICctLy9zcHlnbGFzcy8vZHRkIGh0bWwgMi4wIGV4dGVuZGVkLy8nLFxuICAgICctLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90amF2YSBodG1sLy8nLFxuICAgICctLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90amF2YSBzdHJpY3QgaHRtbC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzIDE5OTUtMDMtMjQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yIGRyYWZ0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMiBmaW5hbC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjIvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4ycyBkcmFmdC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAgZnJhbWVzZXQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50YWwgMTk5NjA3MTIvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgZXhwZXJpbWVudGFsIDk3MDQyMS8vJyxcbiAgICAnLS8vdzNjLy9kdGQgdzMgaHRtbC8vJyxcbiAgICAnLS8vdzNvLy9kdGQgdzMgaHRtbCAzLjAvLycsXG4gICAgJy0vL3dlYnRlY2hzLy9kdGQgbW96aWxsYSBodG1sIDIuMC8vJyxcbiAgICAnLS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwvLydcbl07XG5cbmNvbnN0IFFVSVJLU19NT0RFX05PX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMuY29uY2F0KFtcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgdHJhbnNpdGlvbmFsLy8nXG5dKTtcblxuY29uc3QgUVVJUktTX01PREVfUFVCTElDX0lEUyA9IFsnLS8vdzNvLy9kdGQgdzMgaHRtbCBzdHJpY3QgMy4wLy9lbi8vJywgJy0vdzNjL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvZW4nLCAnaHRtbCddO1xuY29uc3QgTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTID0gWyctLy93M2MvL2R0ZCB4aHRtbCAxLjAgZnJhbWVzZXQvLycsICctLy93M2MvL2R0ZCB4aHRtbCAxLjAgdHJhbnNpdGlvbmFsLy8nXTtcblxuY29uc3QgTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTID0gTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTLmNvbmNhdChbXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSBmcmFtZXNldC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIHRyYW5zaXRpb25hbC8vJ1xuXSk7XG5cbi8vVXRpbHNcbmZ1bmN0aW9uIGVucXVvdGVEb2N0eXBlSWQoaWQpIHtcbiAgICBjb25zdCBxdW90ZSA9IGlkLmluZGV4T2YoJ1wiJykgIT09IC0xID8gXCInXCIgOiAnXCInO1xuXG4gICAgcmV0dXJuIHF1b3RlICsgaWQgKyBxdW90ZTtcbn1cblxuZnVuY3Rpb24gaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHB1YmxpY0lkLmluZGV4T2YocHJlZml4ZXNbaV0pID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLy9BUElcbmV4cG9ydHMuaXNDb25mb3JtaW5nID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgICB0b2tlbi5uYW1lID09PSBWQUxJRF9ET0NUWVBFX05BTUUgJiZcbiAgICAgICAgdG9rZW4ucHVibGljSWQgPT09IG51bGwgJiZcbiAgICAgICAgKHRva2VuLnN5c3RlbUlkID09PSBudWxsIHx8IHRva2VuLnN5c3RlbUlkID09PSBWQUxJRF9TWVNURU1fSUQpXG4gICAgKTtcbn07XG5cbmV4cG9ydHMuZ2V0RG9jdW1lbnRNb2RlID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBpZiAodG9rZW4ubmFtZSAhPT0gVkFMSURfRE9DVFlQRV9OQU1FKSB7XG4gICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICB9XG5cbiAgICBjb25zdCBzeXN0ZW1JZCA9IHRva2VuLnN5c3RlbUlkO1xuXG4gICAgaWYgKHN5c3RlbUlkICYmIHN5c3RlbUlkLnRvTG93ZXJDYXNlKCkgPT09IFFVSVJLU19NT0RFX1NZU1RFTV9JRCkge1xuICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG4gICAgfVxuXG4gICAgbGV0IHB1YmxpY0lkID0gdG9rZW4ucHVibGljSWQ7XG5cbiAgICBpZiAocHVibGljSWQgIT09IG51bGwpIHtcbiAgICAgICAgcHVibGljSWQgPSBwdWJsaWNJZC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGlmIChRVUlSS1NfTU9ERV9QVUJMSUNfSURTLmluZGV4T2YocHVibGljSWQpID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwcmVmaXhlcyA9IHN5c3RlbUlkID09PSBudWxsID8gUVVJUktTX01PREVfTk9fU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyA6IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUztcblxuICAgICAgICBpZiAoaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICAgICAgfVxuXG4gICAgICAgIHByZWZpeGVzID1cbiAgICAgICAgICAgIHN5c3RlbUlkID09PSBudWxsID8gTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTIDogTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTO1xuXG4gICAgICAgIGlmIChoYXNQcmVmaXgocHVibGljSWQsIHByZWZpeGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuTElNSVRFRF9RVUlSS1M7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5OT19RVUlSS1M7XG59O1xuXG5leHBvcnRzLnNlcmlhbGl6ZUNvbnRlbnQgPSBmdW5jdGlvbihuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICBsZXQgc3RyID0gJyFET0NUWVBFICc7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgICBzdHIgKz0gbmFtZTtcbiAgICB9XG5cbiAgICBpZiAocHVibGljSWQpIHtcbiAgICAgICAgc3RyICs9ICcgUFVCTElDICcgKyBlbnF1b3RlRG9jdHlwZUlkKHB1YmxpY0lkKTtcbiAgICB9IGVsc2UgaWYgKHN5c3RlbUlkKSB7XG4gICAgICAgIHN0ciArPSAnIFNZU1RFTSc7XG4gICAgfVxuXG4gICAgaWYgKHN5c3RlbUlkICE9PSBudWxsKSB7XG4gICAgICAgIHN0ciArPSAnICcgKyBlbnF1b3RlRG9jdHlwZUlkKHN5c3RlbUlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgVG9rZW5pemVyID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyJyk7XG5jb25zdCBIVE1MID0gcmVxdWlyZSgnLi9odG1sJyk7XG5cbi8vQWxpYXNlc1xuY29uc3QgJCA9IEhUTUwuVEFHX05BTUVTO1xuY29uc3QgTlMgPSBIVE1MLk5BTUVTUEFDRVM7XG5jb25zdCBBVFRSUyA9IEhUTUwuQVRUUlM7XG5cbi8vTUlNRSB0eXBlc1xuY29uc3QgTUlNRV9UWVBFUyA9IHtcbiAgICBURVhUX0hUTUw6ICd0ZXh0L2h0bWwnLFxuICAgIEFQUExJQ0FUSU9OX1hNTDogJ2FwcGxpY2F0aW9uL3hodG1sK3htbCdcbn07XG5cbi8vQXR0cmlidXRlc1xuY29uc3QgREVGSU5JVElPTl9VUkxfQVRUUiA9ICdkZWZpbml0aW9udXJsJztcbmNvbnN0IEFESlVTVEVEX0RFRklOSVRJT05fVVJMX0FUVFIgPSAnZGVmaW5pdGlvblVSTCc7XG5jb25zdCBTVkdfQVRUUlNfQURKVVNUTUVOVF9NQVAgPSB7XG4gICAgYXR0cmlidXRlbmFtZTogJ2F0dHJpYnV0ZU5hbWUnLFxuICAgIGF0dHJpYnV0ZXR5cGU6ICdhdHRyaWJ1dGVUeXBlJyxcbiAgICBiYXNlZnJlcXVlbmN5OiAnYmFzZUZyZXF1ZW5jeScsXG4gICAgYmFzZXByb2ZpbGU6ICdiYXNlUHJvZmlsZScsXG4gICAgY2FsY21vZGU6ICdjYWxjTW9kZScsXG4gICAgY2xpcHBhdGh1bml0czogJ2NsaXBQYXRoVW5pdHMnLFxuICAgIGRpZmZ1c2Vjb25zdGFudDogJ2RpZmZ1c2VDb25zdGFudCcsXG4gICAgZWRnZW1vZGU6ICdlZGdlTW9kZScsXG4gICAgZmlsdGVydW5pdHM6ICdmaWx0ZXJVbml0cycsXG4gICAgZ2x5cGhyZWY6ICdnbHlwaFJlZicsXG4gICAgZ3JhZGllbnR0cmFuc2Zvcm06ICdncmFkaWVudFRyYW5zZm9ybScsXG4gICAgZ3JhZGllbnR1bml0czogJ2dyYWRpZW50VW5pdHMnLFxuICAgIGtlcm5lbG1hdHJpeDogJ2tlcm5lbE1hdHJpeCcsXG4gICAga2VybmVsdW5pdGxlbmd0aDogJ2tlcm5lbFVuaXRMZW5ndGgnLFxuICAgIGtleXBvaW50czogJ2tleVBvaW50cycsXG4gICAga2V5c3BsaW5lczogJ2tleVNwbGluZXMnLFxuICAgIGtleXRpbWVzOiAna2V5VGltZXMnLFxuICAgIGxlbmd0aGFkanVzdDogJ2xlbmd0aEFkanVzdCcsXG4gICAgbGltaXRpbmdjb25lYW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gICAgbWFya2VyaGVpZ2h0OiAnbWFya2VySGVpZ2h0JyxcbiAgICBtYXJrZXJ1bml0czogJ21hcmtlclVuaXRzJyxcbiAgICBtYXJrZXJ3aWR0aDogJ21hcmtlcldpZHRoJyxcbiAgICBtYXNrY29udGVudHVuaXRzOiAnbWFza0NvbnRlbnRVbml0cycsXG4gICAgbWFza3VuaXRzOiAnbWFza1VuaXRzJyxcbiAgICBudW1vY3RhdmVzOiAnbnVtT2N0YXZlcycsXG4gICAgcGF0aGxlbmd0aDogJ3BhdGhMZW5ndGgnLFxuICAgIHBhdHRlcm5jb250ZW50dW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJyxcbiAgICBwYXR0ZXJudHJhbnNmb3JtOiAncGF0dGVyblRyYW5zZm9ybScsXG4gICAgcGF0dGVybnVuaXRzOiAncGF0dGVyblVuaXRzJyxcbiAgICBwb2ludHNhdHg6ICdwb2ludHNBdFgnLFxuICAgIHBvaW50c2F0eTogJ3BvaW50c0F0WScsXG4gICAgcG9pbnRzYXR6OiAncG9pbnRzQXRaJyxcbiAgICBwcmVzZXJ2ZWFscGhhOiAncHJlc2VydmVBbHBoYScsXG4gICAgcHJlc2VydmVhc3BlY3RyYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLFxuICAgIHByaW1pdGl2ZXVuaXRzOiAncHJpbWl0aXZlVW5pdHMnLFxuICAgIHJlZng6ICdyZWZYJyxcbiAgICByZWZ5OiAncmVmWScsXG4gICAgcmVwZWF0Y291bnQ6ICdyZXBlYXRDb3VudCcsXG4gICAgcmVwZWF0ZHVyOiAncmVwZWF0RHVyJyxcbiAgICByZXF1aXJlZGV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4dGVuc2lvbnMnLFxuICAgIHJlcXVpcmVkZmVhdHVyZXM6ICdyZXF1aXJlZEZlYXR1cmVzJyxcbiAgICBzcGVjdWxhcmNvbnN0YW50OiAnc3BlY3VsYXJDb25zdGFudCcsXG4gICAgc3BlY3VsYXJleHBvbmVudDogJ3NwZWN1bGFyRXhwb25lbnQnLFxuICAgIHNwcmVhZG1ldGhvZDogJ3NwcmVhZE1ldGhvZCcsXG4gICAgc3RhcnRvZmZzZXQ6ICdzdGFydE9mZnNldCcsXG4gICAgc3RkZGV2aWF0aW9uOiAnc3RkRGV2aWF0aW9uJyxcbiAgICBzdGl0Y2h0aWxlczogJ3N0aXRjaFRpbGVzJyxcbiAgICBzdXJmYWNlc2NhbGU6ICdzdXJmYWNlU2NhbGUnLFxuICAgIHN5c3RlbWxhbmd1YWdlOiAnc3lzdGVtTGFuZ3VhZ2UnLFxuICAgIHRhYmxldmFsdWVzOiAndGFibGVWYWx1ZXMnLFxuICAgIHRhcmdldHg6ICd0YXJnZXRYJyxcbiAgICB0YXJnZXR5OiAndGFyZ2V0WScsXG4gICAgdGV4dGxlbmd0aDogJ3RleHRMZW5ndGgnLFxuICAgIHZpZXdib3g6ICd2aWV3Qm94JyxcbiAgICB2aWV3dGFyZ2V0OiAndmlld1RhcmdldCcsXG4gICAgeGNoYW5uZWxzZWxlY3RvcjogJ3hDaGFubmVsU2VsZWN0b3InLFxuICAgIHljaGFubmVsc2VsZWN0b3I6ICd5Q2hhbm5lbFNlbGVjdG9yJyxcbiAgICB6b29tYW5kcGFuOiAnem9vbUFuZFBhbidcbn07XG5cbmNvbnN0IFhNTF9BVFRSU19BREpVU1RNRU5UX01BUCA9IHtcbiAgICAneGxpbms6YWN0dWF0ZSc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnYWN0dWF0ZScsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6YXJjcm9sZSc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnYXJjcm9sZScsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6aHJlZic6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnaHJlZicsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6cm9sZSc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAncm9sZScsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6c2hvdyc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnc2hvdycsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6dGl0bGUnOiB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3RpdGxlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bGluazp0eXBlJzogeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICd0eXBlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bWw6YmFzZSc6IHsgcHJlZml4OiAneG1sJywgbmFtZTogJ2Jhc2UnLCBuYW1lc3BhY2U6IE5TLlhNTCB9LFxuICAgICd4bWw6bGFuZyc6IHsgcHJlZml4OiAneG1sJywgbmFtZTogJ2xhbmcnLCBuYW1lc3BhY2U6IE5TLlhNTCB9LFxuICAgICd4bWw6c3BhY2UnOiB7IHByZWZpeDogJ3htbCcsIG5hbWU6ICdzcGFjZScsIG5hbWVzcGFjZTogTlMuWE1MIH0sXG4gICAgeG1sbnM6IHsgcHJlZml4OiAnJywgbmFtZTogJ3htbG5zJywgbmFtZXNwYWNlOiBOUy5YTUxOUyB9LFxuICAgICd4bWxuczp4bGluayc6IHsgcHJlZml4OiAneG1sbnMnLCBuYW1lOiAneGxpbmsnLCBuYW1lc3BhY2U6IE5TLlhNTE5TIH1cbn07XG5cbi8vU1ZHIHRhZyBuYW1lcyBhZGp1c3RtZW50IG1hcFxuY29uc3QgU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUCA9IChleHBvcnRzLlNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAgPSB7XG4gICAgYWx0Z2x5cGg6ICdhbHRHbHlwaCcsXG4gICAgYWx0Z2x5cGhkZWY6ICdhbHRHbHlwaERlZicsXG4gICAgYWx0Z2x5cGhpdGVtOiAnYWx0R2x5cGhJdGVtJyxcbiAgICBhbmltYXRlY29sb3I6ICdhbmltYXRlQ29sb3InLFxuICAgIGFuaW1hdGVtb3Rpb246ICdhbmltYXRlTW90aW9uJyxcbiAgICBhbmltYXRldHJhbnNmb3JtOiAnYW5pbWF0ZVRyYW5zZm9ybScsXG4gICAgY2xpcHBhdGg6ICdjbGlwUGF0aCcsXG4gICAgZmVibGVuZDogJ2ZlQmxlbmQnLFxuICAgIGZlY29sb3JtYXRyaXg6ICdmZUNvbG9yTWF0cml4JyxcbiAgICBmZWNvbXBvbmVudHRyYW5zZmVyOiAnZmVDb21wb25lbnRUcmFuc2ZlcicsXG4gICAgZmVjb21wb3NpdGU6ICdmZUNvbXBvc2l0ZScsXG4gICAgZmVjb252b2x2ZW1hdHJpeDogJ2ZlQ29udm9sdmVNYXRyaXgnLFxuICAgIGZlZGlmZnVzZWxpZ2h0aW5nOiAnZmVEaWZmdXNlTGlnaHRpbmcnLFxuICAgIGZlZGlzcGxhY2VtZW50bWFwOiAnZmVEaXNwbGFjZW1lbnRNYXAnLFxuICAgIGZlZGlzdGFudGxpZ2h0OiAnZmVEaXN0YW50TGlnaHQnLFxuICAgIGZlZmxvb2Q6ICdmZUZsb29kJyxcbiAgICBmZWZ1bmNhOiAnZmVGdW5jQScsXG4gICAgZmVmdW5jYjogJ2ZlRnVuY0InLFxuICAgIGZlZnVuY2c6ICdmZUZ1bmNHJyxcbiAgICBmZWZ1bmNyOiAnZmVGdW5jUicsXG4gICAgZmVnYXVzc2lhbmJsdXI6ICdmZUdhdXNzaWFuQmx1cicsXG4gICAgZmVpbWFnZTogJ2ZlSW1hZ2UnLFxuICAgIGZlbWVyZ2U6ICdmZU1lcmdlJyxcbiAgICBmZW1lcmdlbm9kZTogJ2ZlTWVyZ2VOb2RlJyxcbiAgICBmZW1vcnBob2xvZ3k6ICdmZU1vcnBob2xvZ3knLFxuICAgIGZlb2Zmc2V0OiAnZmVPZmZzZXQnLFxuICAgIGZlcG9pbnRsaWdodDogJ2ZlUG9pbnRMaWdodCcsXG4gICAgZmVzcGVjdWxhcmxpZ2h0aW5nOiAnZmVTcGVjdWxhckxpZ2h0aW5nJyxcbiAgICBmZXNwb3RsaWdodDogJ2ZlU3BvdExpZ2h0JyxcbiAgICBmZXRpbGU6ICdmZVRpbGUnLFxuICAgIGZldHVyYnVsZW5jZTogJ2ZlVHVyYnVsZW5jZScsXG4gICAgZm9yZWlnbm9iamVjdDogJ2ZvcmVpZ25PYmplY3QnLFxuICAgIGdseXBocmVmOiAnZ2x5cGhSZWYnLFxuICAgIGxpbmVhcmdyYWRpZW50OiAnbGluZWFyR3JhZGllbnQnLFxuICAgIHJhZGlhbGdyYWRpZW50OiAncmFkaWFsR3JhZGllbnQnLFxuICAgIHRleHRwYXRoOiAndGV4dFBhdGgnXG59KTtcblxuLy9UYWdzIHRoYXQgY2F1c2VzIGV4aXQgZnJvbSBmb3JlaWduIGNvbnRlbnRcbmNvbnN0IEVYSVRTX0ZPUkVJR05fQ09OVEVOVCA9IHtcbiAgICBbJC5CXTogdHJ1ZSxcbiAgICBbJC5CSUddOiB0cnVlLFxuICAgIFskLkJMT0NLUVVPVEVdOiB0cnVlLFxuICAgIFskLkJPRFldOiB0cnVlLFxuICAgIFskLkJSXTogdHJ1ZSxcbiAgICBbJC5DRU5URVJdOiB0cnVlLFxuICAgIFskLkNPREVdOiB0cnVlLFxuICAgIFskLkREXTogdHJ1ZSxcbiAgICBbJC5ESVZdOiB0cnVlLFxuICAgIFskLkRMXTogdHJ1ZSxcbiAgICBbJC5EVF06IHRydWUsXG4gICAgWyQuRU1dOiB0cnVlLFxuICAgIFskLkVNQkVEXTogdHJ1ZSxcbiAgICBbJC5IMV06IHRydWUsXG4gICAgWyQuSDJdOiB0cnVlLFxuICAgIFskLkgzXTogdHJ1ZSxcbiAgICBbJC5INF06IHRydWUsXG4gICAgWyQuSDVdOiB0cnVlLFxuICAgIFskLkg2XTogdHJ1ZSxcbiAgICBbJC5IRUFEXTogdHJ1ZSxcbiAgICBbJC5IUl06IHRydWUsXG4gICAgWyQuSV06IHRydWUsXG4gICAgWyQuSU1HXTogdHJ1ZSxcbiAgICBbJC5MSV06IHRydWUsXG4gICAgWyQuTElTVElOR106IHRydWUsXG4gICAgWyQuTUVOVV06IHRydWUsXG4gICAgWyQuTUVUQV06IHRydWUsXG4gICAgWyQuTk9CUl06IHRydWUsXG4gICAgWyQuT0xdOiB0cnVlLFxuICAgIFskLlBdOiB0cnVlLFxuICAgIFskLlBSRV06IHRydWUsXG4gICAgWyQuUlVCWV06IHRydWUsXG4gICAgWyQuU106IHRydWUsXG4gICAgWyQuU01BTExdOiB0cnVlLFxuICAgIFskLlNQQU5dOiB0cnVlLFxuICAgIFskLlNUUk9OR106IHRydWUsXG4gICAgWyQuU1RSSUtFXTogdHJ1ZSxcbiAgICBbJC5TVUJdOiB0cnVlLFxuICAgIFskLlNVUF06IHRydWUsXG4gICAgWyQuVEFCTEVdOiB0cnVlLFxuICAgIFskLlRUXTogdHJ1ZSxcbiAgICBbJC5VXTogdHJ1ZSxcbiAgICBbJC5VTF06IHRydWUsXG4gICAgWyQuVkFSXTogdHJ1ZVxufTtcblxuLy9DaGVjayBleGl0IGZyb20gZm9yZWlnbiBjb250ZW50XG5leHBvcnRzLmNhdXNlc0V4aXQgPSBmdW5jdGlvbihzdGFydFRhZ1Rva2VuKSB7XG4gICAgY29uc3QgdG4gPSBzdGFydFRhZ1Rva2VuLnRhZ05hbWU7XG4gICAgY29uc3QgaXNGb250V2l0aEF0dHJzID1cbiAgICAgICAgdG4gPT09ICQuRk9OVCAmJlxuICAgICAgICAoVG9rZW5pemVyLmdldFRva2VuQXR0cihzdGFydFRhZ1Rva2VuLCBBVFRSUy5DT0xPUikgIT09IG51bGwgfHxcbiAgICAgICAgICAgIFRva2VuaXplci5nZXRUb2tlbkF0dHIoc3RhcnRUYWdUb2tlbiwgQVRUUlMuU0laRSkgIT09IG51bGwgfHxcbiAgICAgICAgICAgIFRva2VuaXplci5nZXRUb2tlbkF0dHIoc3RhcnRUYWdUb2tlbiwgQVRUUlMuRkFDRSkgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGlzRm9udFdpdGhBdHRycyA/IHRydWUgOiBFWElUU19GT1JFSUdOX0NPTlRFTlRbdG5dO1xufTtcblxuLy9Ub2tlbiBhZGp1c3RtZW50c1xuZXhwb3J0cy5hZGp1c3RUb2tlbk1hdGhNTEF0dHJzID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbi5hdHRyc1tpXS5uYW1lID09PSBERUZJTklUSU9OX1VSTF9BVFRSKSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gQURKVVNURURfREVGSU5JVElPTl9VUkxfQVRUUjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0cy5hZGp1c3RUb2tlblNWR0F0dHJzID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkQXR0ck5hbWUgPSBTVkdfQVRUUlNfQURKVVNUTUVOVF9NQVBbdG9rZW4uYXR0cnNbaV0ubmFtZV07XG5cbiAgICAgICAgaWYgKGFkanVzdGVkQXR0ck5hbWUpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWUgPSBhZGp1c3RlZEF0dHJOYW1lO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0cy5hZGp1c3RUb2tlblhNTEF0dHJzID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkQXR0ckVudHJ5ID0gWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQW3Rva2VuLmF0dHJzW2ldLm5hbWVdO1xuXG4gICAgICAgIGlmIChhZGp1c3RlZEF0dHJFbnRyeSkge1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ucHJlZml4ID0gYWRqdXN0ZWRBdHRyRW50cnkucHJlZml4O1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ubmFtZSA9IGFkanVzdGVkQXR0ckVudHJ5Lm5hbWU7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lc3BhY2UgPSBhZGp1c3RlZEF0dHJFbnRyeS5uYW1lc3BhY2U7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnRzLmFkanVzdFRva2VuU1ZHVGFnTmFtZSA9IGZ1bmN0aW9uKHRva2VuKSB7XG4gICAgY29uc3QgYWRqdXN0ZWRUYWdOYW1lID0gU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUFt0b2tlbi50YWdOYW1lXTtcblxuICAgIGlmIChhZGp1c3RlZFRhZ05hbWUpIHtcbiAgICAgICAgdG9rZW4udGFnTmFtZSA9IGFkanVzdGVkVGFnTmFtZTtcbiAgICB9XG59O1xuXG4vL0ludGVncmF0aW9uIHBvaW50c1xuZnVuY3Rpb24gaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCh0biwgbnMpIHtcbiAgICByZXR1cm4gbnMgPT09IE5TLk1BVEhNTCAmJiAodG4gPT09ICQuTUkgfHwgdG4gPT09ICQuTU8gfHwgdG4gPT09ICQuTU4gfHwgdG4gPT09ICQuTVMgfHwgdG4gPT09ICQuTVRFWFQpO1xufVxuXG5mdW5jdGlvbiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpIHtcbiAgICBpZiAobnMgPT09IE5TLk1BVEhNTCAmJiB0biA9PT0gJC5BTk5PVEFUSU9OX1hNTCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYXR0cnNbaV0ubmFtZSA9PT0gQVRUUlMuRU5DT0RJTkcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJzW2ldLnZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT09IE1JTUVfVFlQRVMuVEVYVF9IVE1MIHx8IHZhbHVlID09PSBNSU1FX1RZUEVTLkFQUExJQ0FUSU9OX1hNTDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBucyA9PT0gTlMuU1ZHICYmICh0biA9PT0gJC5GT1JFSUdOX09CSkVDVCB8fCB0biA9PT0gJC5ERVNDIHx8IHRuID09PSAkLlRJVExFKTtcbn1cblxuZXhwb3J0cy5pc0ludGVncmF0aW9uUG9pbnQgPSBmdW5jdGlvbih0biwgbnMsIGF0dHJzLCBmb3JlaWduTlMpIHtcbiAgICBpZiAoKCFmb3JlaWduTlMgfHwgZm9yZWlnbk5TID09PSBOUy5IVE1MKSAmJiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICgoIWZvcmVpZ25OUyB8fCBmb3JlaWduTlMgPT09IE5TLk1BVEhNTCkgJiYgaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCh0biwgbnMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFRva2VuaXplciA9IHJlcXVpcmUoJy4uL3Rva2VuaXplcicpO1xuY29uc3QgT3BlbkVsZW1lbnRTdGFjayA9IHJlcXVpcmUoJy4vb3Blbi1lbGVtZW50LXN0YWNrJyk7XG5jb25zdCBGb3JtYXR0aW5nRWxlbWVudExpc3QgPSByZXF1aXJlKCcuL2Zvcm1hdHRpbmctZWxlbWVudC1saXN0Jyk7XG5jb25zdCBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiA9IHJlcXVpcmUoJy4uL2V4dGVuc2lvbnMvbG9jYXRpb24taW5mby9wYXJzZXItbWl4aW4nKTtcbmNvbnN0IEVycm9yUmVwb3J0aW5nUGFyc2VyTWl4aW4gPSByZXF1aXJlKCcuLi9leHRlbnNpb25zL2Vycm9yLXJlcG9ydGluZy9wYXJzZXItbWl4aW4nKTtcbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vdXRpbHMvbWl4aW4nKTtcbmNvbnN0IGRlZmF1bHRUcmVlQWRhcHRlciA9IHJlcXVpcmUoJy4uL3RyZWUtYWRhcHRlcnMvZGVmYXVsdCcpO1xuY29uc3QgbWVyZ2VPcHRpb25zID0gcmVxdWlyZSgnLi4vdXRpbHMvbWVyZ2Utb3B0aW9ucycpO1xuY29uc3QgZG9jdHlwZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi9kb2N0eXBlJyk7XG5jb25zdCBmb3JlaWduQ29udGVudCA9IHJlcXVpcmUoJy4uL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQnKTtcbmNvbnN0IEVSUiA9IHJlcXVpcmUoJy4uL2NvbW1vbi9lcnJvci1jb2RlcycpO1xuY29uc3QgdW5pY29kZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91bmljb2RlJyk7XG5jb25zdCBIVE1MID0gcmVxdWlyZSgnLi4vY29tbW9uL2h0bWwnKTtcblxuLy9BbGlhc2VzXG5jb25zdCAkID0gSFRNTC5UQUdfTkFNRVM7XG5jb25zdCBOUyA9IEhUTUwuTkFNRVNQQUNFUztcbmNvbnN0IEFUVFJTID0gSFRNTC5BVFRSUztcblxuY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICAgIHNjcmlwdGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgc291cmNlQ29kZUxvY2F0aW9uSW5mbzogZmFsc2UsXG4gICAgb25QYXJzZUVycm9yOiBudWxsLFxuICAgIHRyZWVBZGFwdGVyOiBkZWZhdWx0VHJlZUFkYXB0ZXJcbn07XG5cbi8vTWlzYyBjb25zdGFudHNcbmNvbnN0IEhJRERFTl9JTlBVVF9UWVBFID0gJ2hpZGRlbic7XG5cbi8vQWRvcHRpb24gYWdlbmN5IGxvb3BzIGl0ZXJhdGlvbiBjb3VudFxuY29uc3QgQUFfT1VURVJfTE9PUF9JVEVSID0gODtcbmNvbnN0IEFBX0lOTkVSX0xPT1BfSVRFUiA9IDM7XG5cbi8vSW5zZXJ0aW9uIG1vZGVzXG5jb25zdCBJTklUSUFMX01PREUgPSAnSU5JVElBTF9NT0RFJztcbmNvbnN0IEJFRk9SRV9IVE1MX01PREUgPSAnQkVGT1JFX0hUTUxfTU9ERSc7XG5jb25zdCBCRUZPUkVfSEVBRF9NT0RFID0gJ0JFRk9SRV9IRUFEX01PREUnO1xuY29uc3QgSU5fSEVBRF9NT0RFID0gJ0lOX0hFQURfTU9ERSc7XG5jb25zdCBJTl9IRUFEX05PX1NDUklQVF9NT0RFID0gJ0lOX0hFQURfTk9fU0NSSVBUX01PREUnO1xuY29uc3QgQUZURVJfSEVBRF9NT0RFID0gJ0FGVEVSX0hFQURfTU9ERSc7XG5jb25zdCBJTl9CT0RZX01PREUgPSAnSU5fQk9EWV9NT0RFJztcbmNvbnN0IFRFWFRfTU9ERSA9ICdURVhUX01PREUnO1xuY29uc3QgSU5fVEFCTEVfTU9ERSA9ICdJTl9UQUJMRV9NT0RFJztcbmNvbnN0IElOX1RBQkxFX1RFWFRfTU9ERSA9ICdJTl9UQUJMRV9URVhUX01PREUnO1xuY29uc3QgSU5fQ0FQVElPTl9NT0RFID0gJ0lOX0NBUFRJT05fTU9ERSc7XG5jb25zdCBJTl9DT0xVTU5fR1JPVVBfTU9ERSA9ICdJTl9DT0xVTU5fR1JPVVBfTU9ERSc7XG5jb25zdCBJTl9UQUJMRV9CT0RZX01PREUgPSAnSU5fVEFCTEVfQk9EWV9NT0RFJztcbmNvbnN0IElOX1JPV19NT0RFID0gJ0lOX1JPV19NT0RFJztcbmNvbnN0IElOX0NFTExfTU9ERSA9ICdJTl9DRUxMX01PREUnO1xuY29uc3QgSU5fU0VMRUNUX01PREUgPSAnSU5fU0VMRUNUX01PREUnO1xuY29uc3QgSU5fU0VMRUNUX0lOX1RBQkxFX01PREUgPSAnSU5fU0VMRUNUX0lOX1RBQkxFX01PREUnO1xuY29uc3QgSU5fVEVNUExBVEVfTU9ERSA9ICdJTl9URU1QTEFURV9NT0RFJztcbmNvbnN0IEFGVEVSX0JPRFlfTU9ERSA9ICdBRlRFUl9CT0RZX01PREUnO1xuY29uc3QgSU5fRlJBTUVTRVRfTU9ERSA9ICdJTl9GUkFNRVNFVF9NT0RFJztcbmNvbnN0IEFGVEVSX0ZSQU1FU0VUX01PREUgPSAnQUZURVJfRlJBTUVTRVRfTU9ERSc7XG5jb25zdCBBRlRFUl9BRlRFUl9CT0RZX01PREUgPSAnQUZURVJfQUZURVJfQk9EWV9NT0RFJztcbmNvbnN0IEFGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREUgPSAnQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERSc7XG5cbi8vSW5zZXJ0aW9uIG1vZGUgcmVzZXQgbWFwXG5jb25zdCBJTlNFUlRJT05fTU9ERV9SRVNFVF9NQVAgPSB7XG4gICAgWyQuVFJdOiBJTl9ST1dfTU9ERSxcbiAgICBbJC5UQk9EWV06IElOX1RBQkxFX0JPRFlfTU9ERSxcbiAgICBbJC5USEVBRF06IElOX1RBQkxFX0JPRFlfTU9ERSxcbiAgICBbJC5URk9PVF06IElOX1RBQkxFX0JPRFlfTU9ERSxcbiAgICBbJC5DQVBUSU9OXTogSU5fQ0FQVElPTl9NT0RFLFxuICAgIFskLkNPTEdST1VQXTogSU5fQ09MVU1OX0dST1VQX01PREUsXG4gICAgWyQuVEFCTEVdOiBJTl9UQUJMRV9NT0RFLFxuICAgIFskLkJPRFldOiBJTl9CT0RZX01PREUsXG4gICAgWyQuRlJBTUVTRVRdOiBJTl9GUkFNRVNFVF9NT0RFXG59O1xuXG4vL1RlbXBsYXRlIGluc2VydGlvbiBtb2RlIHN3aXRjaCBtYXBcbmNvbnN0IFRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVAgPSB7XG4gICAgWyQuQ0FQVElPTl06IElOX1RBQkxFX01PREUsXG4gICAgWyQuQ09MR1JPVVBdOiBJTl9UQUJMRV9NT0RFLFxuICAgIFskLlRCT0RZXTogSU5fVEFCTEVfTU9ERSxcbiAgICBbJC5URk9PVF06IElOX1RBQkxFX01PREUsXG4gICAgWyQuVEhFQURdOiBJTl9UQUJMRV9NT0RFLFxuICAgIFskLkNPTF06IElOX0NPTFVNTl9HUk9VUF9NT0RFLFxuICAgIFskLlRSXTogSU5fVEFCTEVfQk9EWV9NT0RFLFxuICAgIFskLlREXTogSU5fUk9XX01PREUsXG4gICAgWyQuVEhdOiBJTl9ST1dfTU9ERVxufTtcblxuLy9Ub2tlbiBoYW5kbGVycyBtYXAgZm9yIGluc2VydGlvbiBtb2Rlc1xuY29uc3QgVE9LRU5fSEFORExFUlMgPSB7XG4gICAgW0lOSVRJQUxfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogZG9jdHlwZUluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogdG9rZW5JbkluaXRpYWxNb2RlLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5JbkluaXRpYWxNb2RlXG4gICAgfSxcbiAgICBbQkVGT1JFX0hUTUxfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkJlZm9yZUh0bWwsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkJlZm9yZUh0bWwsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdCZWZvcmVIdG1sLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdCZWZvcmVIdG1sLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuQmVmb3JlSHRtbFxuICAgIH0sXG4gICAgW0JFRk9SRV9IRUFEX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5CZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5CZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IG1pc3BsYWNlZERvY3R5cGUsXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdCZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdCZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuQmVmb3JlSGVhZFxuICAgIH0sXG4gICAgW0lOX0hFQURfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuSW5IZWFkLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogbWlzcGxhY2VkRG9jdHlwZSxcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luSGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5IZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuSW5IZWFkXG4gICAgfSxcbiAgICBbSU5fSEVBRF9OT19TQ1JJUFRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSGVhZE5vU2NyaXB0LFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5JbkhlYWROb1NjcmlwdCxcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IG1pc3BsYWNlZERvY3R5cGUsXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkhlYWROb1NjcmlwdCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5IZWFkTm9TY3JpcHQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5JbkhlYWROb1NjcmlwdFxuICAgIH0sXG4gICAgW0FGVEVSX0hFQURfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkFmdGVySGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogbWlzcGxhY2VkRG9jdHlwZSxcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0FmdGVySGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnQWZ0ZXJIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuQWZ0ZXJIZWFkXG4gICAgfSxcbiAgICBbSU5fQk9EWV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtURVhUX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luVGV4dCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJblRleHRcbiAgICB9LFxuICAgIFtJTl9UQUJMRV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1RBQkxFX1RFWFRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlVGV4dCxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluVGFibGVUZXh0LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiB0b2tlbkluVGFibGVUZXh0LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiB0b2tlbkluVGFibGVUZXh0LFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHRva2VuSW5UYWJsZVRleHQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IHRva2VuSW5UYWJsZVRleHQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5JblRhYmxlVGV4dFxuICAgIH0sXG4gICAgW0lOX0NBUFRJT05fTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnSW5DYXB0aW9uLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkNhcHRpb24sXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5Cb2R5XG4gICAgfSxcbiAgICBbSU5fQ09MVU1OX0dST1VQX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5JbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5JbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1RBQkxFX0JPRFlfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnSW5UYWJsZUJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luVGFibGVCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1JPV19NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJblJvdyxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5Sb3csXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5Cb2R5XG4gICAgfSxcbiAgICBbSU5fQ0VMTF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkNlbGwsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luQ2VsbCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtJTl9TRUxFQ1RfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luU2VsZWN0LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJblNlbGVjdCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luU2VsZWN0SW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5TZWxlY3RJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1RFTVBMQVRFX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luVGVtcGxhdGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luVGVtcGxhdGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5UZW1wbGF0ZVxuICAgIH0sXG4gICAgW0FGVEVSX0JPRFlfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkFmdGVyQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudFRvUm9vdEh0bWxFbGVtZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0FmdGVyQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfSxcbiAgICBbSU5fRlJBTUVTRVRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfSxcbiAgICBbQUZURVJfRlJBTUVTRVRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdBZnRlckZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdBZnRlckZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfSxcbiAgICBbQUZURVJfQUZURVJfQk9EWV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkFmdGVyQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnQWZ0ZXJBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IHRva2VuQWZ0ZXJBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogc3RvcFBhcnNpbmdcbiAgICB9LFxuICAgIFtBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50VG9Eb2N1bWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdBZnRlckFmdGVyRnJhbWVzZXQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfVxufTtcblxuLy9QYXJzZXJcbmNsYXNzIFBhcnNlciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoREVGQVVMVF9PUFRJT05TLCBvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdGhpcy5vcHRpb25zLnRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLnBlbmRpbmdTY3JpcHQgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLCBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9uUGFyc2VFcnJvcikge1xuICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLCBFcnJvclJlcG9ydGluZ1BhcnNlck1peGluLCB7IG9uUGFyc2VFcnJvcjogdGhpcy5vcHRpb25zLm9uUGFyc2VFcnJvciB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFQSVxuICAgIHBhcnNlKGh0bWwpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50KCk7XG5cbiAgICAgICAgdGhpcy5fYm9vdHN0cmFwKGRvY3VtZW50LCBudWxsKTtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIud3JpdGUoaHRtbCwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKG51bGwpO1xuXG4gICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICB9XG5cbiAgICBwYXJzZUZyYWdtZW50KGh0bWwsIGZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAvL05PVEU6IHVzZSA8dGVtcGxhdGU+IGVsZW1lbnQgYXMgYSBmcmFnbWVudCBjb250ZXh0IGlmIGNvbnRleHQgZWxlbWVudCB3YXMgbm90IHByb3ZpZGVkLFxuICAgICAgICAvL3NvIHdlIHdpbGwgcGFyc2UgaW4gXCJmb3JnaXZpbmdcIiBtYW5uZXJcbiAgICAgICAgaWYgKCFmcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgIGZyYWdtZW50Q29udGV4dCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgkLlRFTVBMQVRFLCBOUy5IVE1MLCBbXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IGNyZWF0ZSBmYWtlIGVsZW1lbnQgd2hpY2ggd2lsbCBiZSB1c2VkIGFzICdkb2N1bWVudCcgZm9yIGZyYWdtZW50IHBhcnNpbmcuXG4gICAgICAgIC8vVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGpzZG9tIHRoZXJlICdkb2N1bWVudCcgY2FuJ3QgYmUgcmVjcmVhdGVkLCB0aGVyZWZvcmVcbiAgICAgICAgLy9mcmFnbWVudCBwYXJzaW5nIGNhdXNlcyBtZXNzaW5nIG9mIHRoZSBtYWluIGBkb2N1bWVudGAuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50TW9jayA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgnZG9jdW1lbnRtb2NrJywgTlMuSFRNTCwgW10pO1xuXG4gICAgICAgIHRoaXMuX2Jvb3RzdHJhcChkb2N1bWVudE1vY2ssIGZyYWdtZW50Q29udGV4dCk7XG5cbiAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShmcmFnbWVudENvbnRleHQpID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICB0aGlzLl9wdXNoVG1wbEluc2VydGlvbk1vZGUoSU5fVEVNUExBVEVfTU9ERSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pbml0VG9rZW5pemVyRm9yRnJhZ21lbnRQYXJzaW5nKCk7XG4gICAgICAgIHRoaXMuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xuICAgICAgICB0aGlzLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgdGhpcy5fZmluZEZvcm1JbkZyYWdtZW50Q29udGV4dCgpO1xuICAgICAgICB0aGlzLnRva2VuaXplci53cml0ZShodG1sLCB0cnVlKTtcbiAgICAgICAgdGhpcy5fcnVuUGFyc2luZ0xvb3AobnVsbCk7XG5cbiAgICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9jdW1lbnRNb2NrKTtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgICAgICB0aGlzLl9hZG9wdE5vZGVzKHJvb3RFbGVtZW50LCBmcmFnbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIGZyYWdtZW50O1xuICAgIH1cblxuICAgIC8vQm9vdHN0cmFwIHBhcnNlclxuICAgIF9ib290c3RyYXAoZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICB0aGlzLnRva2VuaXplciA9IG5ldyBUb2tlbml6ZXIodGhpcy5vcHRpb25zKTtcblxuICAgICAgICB0aGlzLnN0b3BwZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTklUSUFMX01PREU7XG4gICAgICAgIHRoaXMub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gJyc7XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuICAgICAgICB0aGlzLmZyYWdtZW50Q29udGV4dCA9IGZyYWdtZW50Q29udGV4dDtcblxuICAgICAgICB0aGlzLmhlYWRFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5mb3JtRWxlbWVudCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMgPSBuZXcgT3BlbkVsZW1lbnRTdGFjayh0aGlzLmRvY3VtZW50LCB0aGlzLnRyZWVBZGFwdGVyKTtcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMgPSBuZXcgRm9ybWF0dGluZ0VsZW1lbnRMaXN0KHRoaXMudHJlZUFkYXB0ZXIpO1xuXG4gICAgICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFjayA9IFtdO1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AgPSAtMTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSBudWxsO1xuXG4gICAgICAgIHRoaXMucGVuZGluZ0NoYXJhY3RlclRva2VucyA9IFtdO1xuICAgICAgICB0aGlzLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4gPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmZyYW1lc2V0T2sgPSB0cnVlO1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvL0Vycm9yc1xuICAgIF9lcnIoKSB7XG4gICAgICAgIC8vIE5PVEU6IGVyciByZXBvcnRpbmcgaXMgbm9vcCBieSBkZWZhdWx0LiBFbmFibGVkIGJ5IG1peGluLlxuICAgIH1cblxuICAgIC8vUGFyc2luZyBsb29wXG4gICAgX3J1blBhcnNpbmdMb29wKHNjcmlwdEhhbmRsZXIpIHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLnN0b3BwZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwVG9rZW5pemVyQ0RBVEFNb2RlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbml6ZXIuZ2V0TmV4dFRva2VuKCk7XG5cbiAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuSElCRVJOQVRJT05fVE9LRU4pIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc2tpcE5leHROZXdMaW5lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gJiYgdG9rZW4uY2hhcnNbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi5jaGFycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uY2hhcnMgPSB0b2tlbi5jaGFycy5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzSW5wdXRUb2tlbih0b2tlbik7XG5cbiAgICAgICAgICAgIGlmIChzY3JpcHRIYW5kbGVyICYmIHRoaXMucGVuZGluZ1NjcmlwdCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcnVuUGFyc2luZ0xvb3BGb3JDdXJyZW50Q2h1bmsod3JpdGVDYWxsYmFjaywgc2NyaXB0SGFuZGxlcikge1xuICAgICAgICB0aGlzLl9ydW5QYXJzaW5nTG9vcChzY3JpcHRIYW5kbGVyKTtcblxuICAgICAgICBpZiAoc2NyaXB0SGFuZGxlciAmJiB0aGlzLnBlbmRpbmdTY3JpcHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMucGVuZGluZ1NjcmlwdDtcblxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nU2NyaXB0ID0gbnVsbDtcblxuICAgICAgICAgICAgc2NyaXB0SGFuZGxlcihzY3JpcHQpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod3JpdGVDYWxsYmFjaykge1xuICAgICAgICAgICAgd3JpdGVDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9UZXh0IHBhcnNpbmdcbiAgICBfc2V0dXBUb2tlbml6ZXJDREFUQU1vZGUoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICAgICAgdGhpcy50b2tlbml6ZXIuYWxsb3dDREFUQSA9XG4gICAgICAgICAgICBjdXJyZW50ICYmXG4gICAgICAgICAgICBjdXJyZW50ICE9PSB0aGlzLmRvY3VtZW50ICYmXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KSAhPT0gTlMuSFRNTCAmJlxuICAgICAgICAgICAgIXRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludChjdXJyZW50KTtcbiAgICB9XG5cbiAgICBfc3dpdGNoVG9UZXh0UGFyc2luZyhjdXJyZW50VG9rZW4sIG5leHRUb2tlbml6ZXJTdGF0ZSkge1xuICAgICAgICB0aGlzLl9pbnNlcnRFbGVtZW50KGN1cnJlbnRUb2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gbmV4dFRva2VuaXplclN0YXRlO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHRoaXMuaW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gVEVYVF9NT0RFO1xuICAgIH1cblxuICAgIHN3aXRjaFRvUGxhaW50ZXh0UGFyc2luZygpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gVEVYVF9NT0RFO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5QTEFJTlRFWFQ7XG4gICAgfVxuXG4gICAgLy9GcmFnbWVudCBwYXJzaW5nXG4gICAgX2dldEFkanVzdGVkQ3VycmVudEVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLmZyYWdtZW50Q29udGV4dFxuICAgICAgICAgICAgPyB0aGlzLmZyYWdtZW50Q29udGV4dFxuICAgICAgICAgICAgOiB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgIH1cblxuICAgIF9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0KCkge1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMuZnJhZ21lbnRDb250ZXh0O1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUobm9kZSkgPT09ICQuRk9STSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlID0gdGhpcy50cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICB9IHdoaWxlIChub2RlKTtcbiAgICB9XG5cbiAgICBfaW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZygpIHtcbiAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuZnJhZ21lbnRDb250ZXh0KSA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5mcmFnbWVudENvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVElUTEUgfHwgdG4gPT09ICQuVEVYVEFSRUEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlJDREFUQTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuU1RZTEUgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5YTVAgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5JRlJBTUUgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5OT0VNQkVEIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuTk9GUkFNRVMgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5OT1NDUklQVFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5SQVdURVhUO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TQ1JJUFQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlNDUklQVF9EQVRBO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5QTEFJTlRFWFQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlBMQUlOVEVYVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vVHJlZSBtdXRhdGlvblxuICAgIF9zZXREb2N1bWVudFR5cGUodG9rZW4pIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRva2VuLm5hbWUgfHwgJyc7XG4gICAgICAgIGNvbnN0IHB1YmxpY0lkID0gdG9rZW4ucHVibGljSWQgfHwgJyc7XG4gICAgICAgIGNvbnN0IHN5c3RlbUlkID0gdG9rZW4uc3lzdGVtSWQgfHwgJyc7XG5cbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXREb2N1bWVudFR5cGUodGhpcy5kb2N1bWVudCwgbmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTtcbiAgICB9XG5cbiAgICBfYXR0YWNoRWxlbWVudFRvVHJlZShlbGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3N0ZXJQYXJlbnRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50IHx8IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9hcHBlbmRFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBuYW1lc3BhY2VVUkksIHRva2VuLmF0dHJzKTtcblxuICAgICAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIF9pbnNlcnRFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBuYW1lc3BhY2VVUkksIHRva2VuLmF0dHJzKTtcblxuICAgICAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIF9pbnNlcnRGYWtlRWxlbWVudCh0YWdOYW1lKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgTlMuSFRNTCwgW10pO1xuXG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuXG4gICAgX2luc2VydFRlbXBsYXRlKHRva2VuKSB7XG4gICAgICAgIGNvbnN0IHRtcGwgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgTlMuSFRNTCwgdG9rZW4uYXR0cnMpO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG5cbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXRUZW1wbGF0ZUNvbnRlbnQodG1wbCwgY29udGVudCk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUodG1wbCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2godG1wbCk7XG4gICAgfVxuXG4gICAgX2luc2VydEZha2VSb290RWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgkLkhUTUwsIE5TLkhUTUwsIFtdKTtcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQsIGVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIF9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVDb21tZW50Tm9kZSh0b2tlbi5kYXRhKTtcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHBhcmVudCwgY29tbWVudE5vZGUpO1xuICAgIH1cblxuICAgIF9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3N0ZXJQYXJlbnRUZXh0KHRva2VuLmNoYXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudCB8fCB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHQocGFyZW50LCB0b2tlbi5jaGFycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfYWRvcHROb2Rlcyhkb25vciwgcmVjaXBpZW50KSB7XG4gICAgICAgIGZvciAobGV0IGNoaWxkID0gdGhpcy50cmVlQWRhcHRlci5nZXRGaXJzdENoaWxkKGRvbm9yKTsgY2hpbGQ7IGNoaWxkID0gdGhpcy50cmVlQWRhcHRlci5nZXRGaXJzdENoaWxkKGRvbm9yKSkge1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGNoaWxkKTtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocmVjaXBpZW50LCBjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1Rva2VuIHByb2Nlc3NpbmdcbiAgICBfc2hvdWxkUHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCh0b2tlbikge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCgpO1xuXG4gICAgICAgIGlmICghY3VycmVudCB8fCBjdXJyZW50ID09PSB0aGlzLmRvY3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpO1xuXG4gICAgICAgIGlmIChucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGN1cnJlbnQpID09PSAkLkFOTk9UQVRJT05fWE1MICYmXG4gICAgICAgICAgICBucyA9PT0gTlMuTUFUSE1MICYmXG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOICYmXG4gICAgICAgICAgICB0b2tlbi50YWdOYW1lID09PSAkLlNWR1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzQ2hhcmFjdGVyVG9rZW4gPVxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTiB8fFxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOIHx8XG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU47XG5cbiAgICAgICAgY29uc3QgaXNNYXRoTUxUZXh0U3RhcnRUYWcgPVxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTiAmJiB0b2tlbi50YWdOYW1lICE9PSAkLk1HTFlQSCAmJiB0b2tlbi50YWdOYW1lICE9PSAkLk1BTElHTk1BUks7XG5cbiAgICAgICAgaWYgKChpc01hdGhNTFRleHRTdGFydFRhZyB8fCBpc0NoYXJhY3RlclRva2VuKSAmJiB0aGlzLl9pc0ludGVncmF0aW9uUG9pbnQoY3VycmVudCwgTlMuTUFUSE1MKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gfHwgaXNDaGFyYWN0ZXJUb2tlbikgJiZcbiAgICAgICAgICAgIHRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludChjdXJyZW50LCBOUy5IVE1MKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b2tlbi50eXBlICE9PSBUb2tlbml6ZXIuRU9GX1RPS0VOO1xuICAgIH1cblxuICAgIF9wcm9jZXNzVG9rZW4odG9rZW4pIHtcbiAgICAgICAgVE9LRU5fSEFORExFUlNbdGhpcy5pbnNlcnRpb25Nb2RlXVt0b2tlbi50eXBlXSh0aGlzLCB0b2tlbik7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUodG9rZW4pIHtcbiAgICAgICAgVE9LRU5fSEFORExFUlNbSU5fQk9EWV9NT0RFXVt0b2tlbi50eXBlXSh0aGlzLCB0b2tlbik7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQodG9rZW4pIHtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5DSEFSQUNURVJfVE9LRU4pIHtcbiAgICAgICAgICAgIGNoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTikge1xuICAgICAgICAgICAgbnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTikge1xuICAgICAgICAgICAgaW5zZXJ0Q2hhcmFjdGVycyh0aGlzLCB0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkNPTU1FTlRfVE9LRU4pIHtcbiAgICAgICAgICAgIGFwcGVuZENvbW1lbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4pIHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVORF9UQUdfVE9LRU4pIHtcbiAgICAgICAgICAgIGVuZFRhZ0luRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NJbnB1dFRva2VuKHRva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSkge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gJiYgdG9rZW4uc2VsZkNsb3NpbmcgJiYgIXRva2VuLmFja1NlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5vblZvaWRIdG1sRWxlbWVudFN0YXJ0VGFnV2l0aFRyYWlsaW5nU29saWR1cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL0ludGVncmF0aW9uIHBvaW50c1xuICAgIF9pc0ludGVncmF0aW9uUG9pbnQoZWxlbWVudCwgZm9yZWlnbk5TKSB7XG4gICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBhdHRycyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QoZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcmVpZ25Db250ZW50LmlzSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzLCBmb3JlaWduTlMpO1xuICAgIH1cblxuICAgIC8vQWN0aXZlIGZvcm1hdHRpbmcgZWxlbWVudHMgcmVjb25zdHJ1Y3Rpb25cbiAgICBfcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKSB7XG4gICAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGxpc3RMZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCB1bm9wZW5JZHggPSBsaXN0TGVuZ3RoO1xuICAgICAgICAgICAgbGV0IGVudHJ5ID0gbnVsbDtcblxuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHVub3BlbklkeC0tO1xuICAgICAgICAgICAgICAgIGVudHJ5ID0gdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZW50cmllc1t1bm9wZW5JZHhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5NQVJLRVJfRU5UUlkgfHwgdGhpcy5vcGVuRWxlbWVudHMuY29udGFpbnMoZW50cnkuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5vcGVuSWR4Kys7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHVub3BlbklkeCA+IDApO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdW5vcGVuSWR4OyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZW50cnkgPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5lbnRyaWVzW2ldO1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydEVsZW1lbnQoZW50cnkudG9rZW4sIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVudHJ5LmVsZW1lbnQpKTtcbiAgICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vQ2xvc2UgZWxlbWVudHNcbiAgICBfY2xvc2VUYWJsZUNlbGwoKSB7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucG9wVW50aWxUYWJsZUNlbGxQb3BwZWQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fUk9XX01PREU7XG4gICAgfVxuXG4gICAgX2Nsb3NlUEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKCQuUCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlApO1xuICAgIH1cblxuICAgIC8vSW5zZXJ0aW9uIG1vZGVzXG4gICAgX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wLCBsYXN0ID0gZmFsc2U7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuXG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGxhc3QgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLmZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbmV3SW5zZXJ0aW9uTW9kZSA9IElOU0VSVElPTl9NT0RFX1JFU0VUX01BUFt0bl07XG5cbiAgICAgICAgICAgIGlmIChuZXdJbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gbmV3SW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxhc3QgJiYgKHRuID09PSAkLlREIHx8IHRuID09PSAkLlRIKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX0NFTExfTU9ERTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxhc3QgJiYgdG4gPT09ICQuSEVBRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTU9ERTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0KGkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IHRoaXMuY3VycmVudFRtcGxJbnNlcnRpb25Nb2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gdGhpcy5oZWFkRWxlbWVudCA/IEFGVEVSX0hFQURfTU9ERSA6IEJFRk9SRV9IRUFEX01PREU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0KHNlbGVjdElkeCkge1xuICAgICAgICBpZiAoc2VsZWN0SWR4ID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdElkeCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmNlc3RvciA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGFuY2VzdG9yKTtcblxuICAgICAgICAgICAgICAgIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9JTl9UQUJMRV9NT0RFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fU0VMRUNUX01PREU7XG4gICAgfVxuXG4gICAgX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZShtb2RlKSB7XG4gICAgICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFjay5wdXNoKG1vZGUpO1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3ArKztcbiAgICAgICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSBtb2RlO1xuICAgIH1cblxuICAgIF9wb3BUbXBsSW5zZXJ0aW9uTW9kZSgpIHtcbiAgICAgICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrLnBvcCgpO1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AtLTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrVG9wXTtcbiAgICB9XG5cbiAgICAvL0Zvc3RlciBwYXJlbnRpbmdcbiAgICBfaXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRGT09UIHx8IHRuID09PSAkLlRIRUFEIHx8IHRuID09PSAkLlRSO1xuICAgIH1cblxuICAgIF9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCAmJiB0aGlzLl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcodGhpcy5vcGVuRWxlbWVudHMuY3VycmVudCk7XG4gICAgfVxuXG4gICAgX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB7XG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBiZWZvcmVFbGVtZW50OiBudWxsXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3Qgb3BlbkVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG9wZW5FbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkob3BlbkVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBsb2NhdGlvbi5wYXJlbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudChvcGVuRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb24ucGFyZW50ID0gdGhpcy50cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG9wZW5FbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uYmVmb3JlRWxlbWVudCA9IG9wZW5FbGVtZW50O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2kgLSAxXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbG9jYXRpb24ucGFyZW50KSB7XG4gICAgICAgICAgICBsb2NhdGlvbi5wYXJlbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1swXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsb2NhdGlvbjtcbiAgICB9XG5cbiAgICBfZm9zdGVyUGFyZW50RWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5fZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0QmVmb3JlKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCwgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfZm9zdGVyUGFyZW50VGV4dChjaGFycykge1xuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpO1xuXG4gICAgICAgIGlmIChsb2NhdGlvbi5iZWZvcmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHRCZWZvcmUobG9jYXRpb24ucGFyZW50LCBjaGFycywgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHQobG9jYXRpb24ucGFyZW50LCBjaGFycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1NwZWNpYWwgZWxlbWVudHNcbiAgICBfaXNTcGVjaWFsRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBIVE1MLlNQRUNJQUxfRUxFTUVOVFNbbnNdW3RuXTtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyO1xuXG4vL0Fkb3B0aW9uIGFnZW5jeSBhbGdvcml0aG1cbi8vKHNlZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCNhZG9wdGlvbkFnZW5jeSlcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vU3RlcHMgNS04IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeShwLCB0b2tlbikge1xuICAgIGxldCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lKHRva2VuLnRhZ05hbWUpO1xuXG4gICAgaWYgKGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICAgICAgaWYgKCFwLm9wZW5FbGVtZW50cy5jb250YWlucyhmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRva2VuLnRhZ05hbWUpKSB7XG4gICAgICAgICAgICBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0aW5nRWxlbWVudEVudHJ5O1xufVxuXG4vL1N0ZXBzIDkgYW5kIDEwIG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhT2J0YWluRnVydGhlc3RCbG9jayhwLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgbGV0IGZ1cnRoZXN0QmxvY2sgPSBudWxsO1xuXG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG5cbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC5faXNTcGVjaWFsRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgZnVydGhlc3RCbG9jayA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZ1cnRoZXN0QmxvY2spIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxFbGVtZW50UG9wcGVkKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgIH1cblxuICAgIHJldHVybiBmdXJ0aGVzdEJsb2NrO1xufVxuXG4vL1N0ZXAgMTMgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFJbm5lckxvb3AocCwgZnVydGhlc3RCbG9jaywgZm9ybWF0dGluZ0VsZW1lbnQpIHtcbiAgICBsZXQgbGFzdEVsZW1lbnQgPSBmdXJ0aGVzdEJsb2NrO1xuICAgIGxldCBuZXh0RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZ1cnRoZXN0QmxvY2spO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGVsZW1lbnQgPSBuZXh0RWxlbWVudDsgZWxlbWVudCAhPT0gZm9ybWF0dGluZ0VsZW1lbnQ7IGkrKywgZWxlbWVudCA9IG5leHRFbGVtZW50KSB7XG4gICAgICAgIC8vTk9URTogc3RvcmUgbmV4dCBlbGVtZW50IGZvciB0aGUgbmV4dCBsb29wIGl0ZXJhdGlvbiAoaXQgbWF5IGJlIGRlbGV0ZWQgZnJvbSB0aGUgc3RhY2sgYnkgc3RlcCA5LjUpXG4gICAgICAgIG5leHRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuZ2V0Q29tbW9uQW5jZXN0b3IoZWxlbWVudCk7XG5cbiAgICAgICAgY29uc3QgZWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb3VudGVyT3ZlcmZsb3cgPSBlbGVtZW50RW50cnkgJiYgaSA+PSBBQV9JTk5FUl9MT09QX0lURVI7XG4gICAgICAgIGNvbnN0IHNob3VsZFJlbW92ZUZyb21PcGVuRWxlbWVudHMgPSAhZWxlbWVudEVudHJ5IHx8IGNvdW50ZXJPdmVyZmxvdztcblxuICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlRnJvbU9wZW5FbGVtZW50cykge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXJPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGVsZW1lbnRFbnRyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBhYVJlY3JlYXRlRWxlbWVudEZyb21FbnRyeShwLCBlbGVtZW50RW50cnkpO1xuXG4gICAgICAgICAgICBpZiAobGFzdEVsZW1lbnQgPT09IGZ1cnRoZXN0QmxvY2spIHtcbiAgICAgICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5ib29rbWFyayA9IGVsZW1lbnRFbnRyeTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcC50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGxhc3RFbGVtZW50KTtcbiAgICAgICAgICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCwgbGFzdEVsZW1lbnQpO1xuICAgICAgICAgICAgbGFzdEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RFbGVtZW50O1xufVxuXG4vL1N0ZXAgMTMuNyBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYVJlY3JlYXRlRWxlbWVudEZyb21FbnRyeShwLCBlbGVtZW50RW50cnkpIHtcbiAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnRFbnRyeS5lbGVtZW50KTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gcC50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KGVsZW1lbnRFbnRyeS50b2tlbi50YWdOYW1lLCBucywgZWxlbWVudEVudHJ5LnRva2VuLmF0dHJzKTtcblxuICAgIHAub3BlbkVsZW1lbnRzLnJlcGxhY2UoZWxlbWVudEVudHJ5LmVsZW1lbnQsIG5ld0VsZW1lbnQpO1xuICAgIGVsZW1lbnRFbnRyeS5lbGVtZW50ID0gbmV3RWxlbWVudDtcblxuICAgIHJldHVybiBuZXdFbGVtZW50O1xufVxuXG4vL1N0ZXAgMTQgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFJbnNlcnRMYXN0Tm9kZUluQ29tbW9uQW5jZXN0b3IocCwgY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KSB7XG4gICAgaWYgKHAuX2lzRWxlbWVudENhdXNlc0Zvc3RlclBhcmVudGluZyhjb21tb25BbmNlc3RvcikpIHtcbiAgICAgICAgcC5fZm9zdGVyUGFyZW50RWxlbWVudChsYXN0RWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdG4gPSBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoY29tbW9uQW5jZXN0b3IpO1xuICAgICAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGNvbW1vbkFuY2VzdG9yKTtcblxuICAgICAgICBpZiAodG4gPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gcC50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQoY29tbW9uQW5jZXN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChjb21tb25BbmNlc3RvciwgbGFzdEVsZW1lbnQpO1xuICAgIH1cbn1cblxuLy9TdGVwcyAxNS0xOSBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgY29uc3QgbnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIGNvbnN0IHRva2VuID0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS50b2tlbjtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gcC50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIG5zLCB0b2tlbi5hdHRycyk7XG5cbiAgICBwLl9hZG9wdE5vZGVzKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xuICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCk7XG5cbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayhuZXdFbGVtZW50LCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LnRva2VuKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcblxuICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIHAub3BlbkVsZW1lbnRzLmluc2VydEFmdGVyKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xufVxuXG4vL0FsZ29yaXRobSBlbnRyeSBwb2ludFxuZnVuY3Rpb24gY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKSB7XG4gICAgbGV0IGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IEFBX09VVEVSX0xPT1BfSVRFUjsgaSsrKSB7XG4gICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBhYU9idGFpbkZvcm1hdHRpbmdFbGVtZW50RW50cnkocCwgdG9rZW4sIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuXG4gICAgICAgIGlmICghZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmdXJ0aGVzdEJsb2NrID0gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuXG4gICAgICAgIGlmICghZnVydGhlc3RCbG9jaykge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5ib29rbWFyayA9IGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG5cbiAgICAgICAgY29uc3QgbGFzdEVsZW1lbnQgPSBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21tb25BbmNlc3RvciA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG5cbiAgICAgICAgcC50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGxhc3RFbGVtZW50KTtcbiAgICAgICAgYWFJbnNlcnRMYXN0Tm9kZUluQ29tbW9uQW5jZXN0b3IocCwgY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KTtcbiAgICAgICAgYWFSZXBsYWNlRm9ybWF0dGluZ0VsZW1lbnQocCwgZnVydGhlc3RCbG9jaywgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSk7XG4gICAgfVxufVxuXG4vL0dlbmVyaWMgdG9rZW4gaGFuZGxlcnNcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBpZ25vcmVUb2tlbigpIHtcbiAgICAvL05PVEU6IGRvIG5vdGhpbmcgPSlcbn1cblxuZnVuY3Rpb24gbWlzcGxhY2VkRG9jdHlwZShwKSB7XG4gICAgcC5fZXJyKEVSUi5taXNwbGFjZWREb2N0eXBlKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ29tbWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5jdXJyZW50VG1wbENvbnRlbnQgfHwgcC5vcGVuRWxlbWVudHMuY3VycmVudCk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb1Jvb3RIdG1sRWxlbWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5pdGVtc1swXSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb0RvY3VtZW50KHAsIHRva2VuKSB7XG4gICAgcC5fYXBwZW5kQ29tbWVudE5vZGUodG9rZW4sIHAuZG9jdW1lbnQpO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRDaGFyYWN0ZXJzKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5cbmZ1bmN0aW9uIHN0b3BQYXJzaW5nKHApIHtcbiAgICBwLnN0b3BwZWQgPSB0cnVlO1xufVxuXG4vLyBUaGUgXCJpbml0aWFsXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBkb2N0eXBlSW5Jbml0aWFsTW9kZShwLCB0b2tlbikge1xuICAgIHAuX3NldERvY3VtZW50VHlwZSh0b2tlbik7XG5cbiAgICBjb25zdCBtb2RlID0gdG9rZW4uZm9yY2VRdWlya3MgPyBIVE1MLkRPQ1VNRU5UX01PREUuUVVJUktTIDogZG9jdHlwZS5nZXREb2N1bWVudE1vZGUodG9rZW4pO1xuXG4gICAgaWYgKCFkb2N0eXBlLmlzQ29uZm9ybWluZyh0b2tlbikpIHtcbiAgICAgICAgcC5fZXJyKEVSUi5ub25Db25mb3JtaW5nRG9jdHlwZSk7XG4gICAgfVxuXG4gICAgcC50cmVlQWRhcHRlci5zZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCwgbW9kZSk7XG5cbiAgICBwLmluc2VydGlvbk1vZGUgPSBCRUZPUkVfSFRNTF9NT0RFO1xufVxuXG5mdW5jdGlvbiB0b2tlbkluSW5pdGlhbE1vZGUocCwgdG9rZW4pIHtcbiAgICBwLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlLCB7IGJlZm9yZVRva2VuOiB0cnVlIH0pO1xuICAgIHAudHJlZUFkYXB0ZXIuc2V0RG9jdW1lbnRNb2RlKHAuZG9jdW1lbnQsIEhUTUwuRE9DVU1FTlRfTU9ERS5RVUlSS1MpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IVE1MX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiYmVmb3JlIGh0bWxcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwpIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IRUFEX01PREU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0JlZm9yZUh0bWwocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCB8fCB0biA9PT0gJC5IRUFEIHx8IHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IRUFEX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiYmVmb3JlIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkhFQUQpIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaGVhZEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9IRUFEX01PREU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0JlZm9yZUhlYWQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSEVBRCB8fCB0biA9PT0gJC5CT0RZIHx8IHRuID09PSAkLkhUTUwgfHwgdG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9lcnIoRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuSEVBRCk7XG4gICAgcC5oZWFkRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQkFTRSB8fCB0biA9PT0gJC5CQVNFRk9OVCB8fCB0biA9PT0gJC5CR1NPVU5EIHx8IHRuID09PSAkLkxJTksgfHwgdG4gPT09ICQuTUVUQSkge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVElUTEUpIHtcbiAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkNEQVRBKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PU0NSSVBUKSB7XG4gICAgICAgIGlmIChwLm9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkFXVEVYVCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTk9fU0NSSVBUX01PREU7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PRlJBTUVTIHx8IHRuID09PSAkLlNUWUxFKSB7XG4gICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlJBV1RFWFQpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU0NSSVBUKSB7XG4gICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlNDUklQVF9EQVRBKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHAuX2luc2VydFRlbXBsYXRlKHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9URU1QTEFURV9NT0RFO1xuICAgICAgICBwLl9wdXNoVG1wbEluc2VydGlvbk1vZGUoSU5fVEVNUExBVEVfTU9ERSk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5IRUFEKSB7XG4gICAgICAgIHAuX2VycihFUlIubWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5JbkhlYWQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhFQUQpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0hFQURfTU9ERTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuQlIgfHwgdG4gPT09ICQuSFRNTCkge1xuICAgICAgICB0b2tlbkluSGVhZChwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMCkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1Rob3JvdWdobHkoKTtcblxuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgcC5fZXJyKEVSUi5jbG9zaW5nT2ZFbGVtZW50V2l0aE9wZW5DaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEVNUExBVEUpO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgIHAuX3BvcFRtcGxJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHAuX2VycihFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcC5fZXJyKEVSUi5lbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b2tlbkluSGVhZChwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0hFQURfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG4vLyBUaGUgXCJpbiBoZWFkIG5vIHNjcmlwdFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0biA9PT0gJC5CQVNFRk9OVCB8fFxuICAgICAgICB0biA9PT0gJC5CR1NPVU5EIHx8XG4gICAgICAgIHRuID09PSAkLkhFQUQgfHxcbiAgICAgICAgdG4gPT09ICQuTElOSyB8fFxuICAgICAgICB0biA9PT0gJC5NRVRBIHx8XG4gICAgICAgIHRuID09PSAkLk5PRlJBTUVTIHx8XG4gICAgICAgIHRuID09PSAkLlNUWUxFXG4gICAgKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PU0NSSVBUKSB7XG4gICAgICAgIHAuX2VycihFUlIubmVzdGVkTm9zY3JpcHRJbkhlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuTk9TQ1JJUFQpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTU9ERTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJSKSB7XG4gICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuX2VycihFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5JbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIGNvbnN0IGVyckNvZGUgPVxuICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuRU9GX1RPS0VOID8gRVJSLm9wZW5FbGVtZW50c0xlZnRBZnRlckVvZiA6IEVSUi5kaXNhbGxvd2VkQ29udGVudEluTm9zY3JpcHRJbkhlYWQ7XG5cbiAgICBwLl9lcnIoZXJyQ29kZSk7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImFmdGVyIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQk9EWSkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZSQU1FU0VUKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9GUkFNRVNFVF9NT0RFO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRuID09PSAkLkJBU0UgfHxcbiAgICAgICAgdG4gPT09ICQuQkFTRUZPTlQgfHxcbiAgICAgICAgdG4gPT09ICQuQkdTT1VORCB8fFxuICAgICAgICB0biA9PT0gJC5MSU5LIHx8XG4gICAgICAgIHRuID09PSAkLk1FVEEgfHxcbiAgICAgICAgdG4gPT09ICQuTk9GUkFNRVMgfHxcbiAgICAgICAgdG4gPT09ICQuU0NSSVBUIHx8XG4gICAgICAgIHRuID09PSAkLlNUWUxFIHx8XG4gICAgICAgIHRuID09PSAkLlRFTVBMQVRFIHx8XG4gICAgICAgIHRuID09PSAkLlRJVExFXG4gICAgKSB7XG4gICAgICAgIHAuX2VycihFUlIuYWJhbmRvbmVkSGVhZEVsZW1lbnRDaGlsZCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnB1c2gocC5oZWFkRWxlbWVudCk7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKHAuaGVhZEVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSEVBRCkge1xuICAgICAgICBwLl9lcnIoRVJSLm1pc3BsYWNlZFN0YXJ0VGFnRm9ySGVhZEVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJIZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0FmdGVySGVhZChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5CT0RZIHx8IHRuID09PSAkLkhUTUwgfHwgdG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9lcnIoRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5CT0RZKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiaW4gYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGNoYXJhY3RlckluQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGh0bWxTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC50cmVlQWRhcHRlci5hZG9wdEF0dHJpYnV0ZXMocC5vcGVuRWxlbWVudHMuaXRlbXNbMF0sIHRva2VuLmF0dHJzKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJvZHlTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMudHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKTtcblxuICAgIGlmIChib2R5RWxlbWVudCAmJiBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYWRvcHRBdHRyaWJ1dGVzKGJvZHlFbGVtZW50LCB0b2tlbi5hdHRycyk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBmcmFtZXNldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy50cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpO1xuXG4gICAgaWYgKHAuZnJhbWVzZXRPayAmJiBib2R5RWxlbWVudCkge1xuICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUoYm9keUVsZW1lbnQpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BBbGxVcFRvSHRtbEVsZW1lbnQoKTtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0ZSQU1FU0VUX01PREU7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gbnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIGNvbnN0IHRuID0gcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDYpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbmZ1bmN0aW9uIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgLy9OT1RFOiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG9rZW4sIHRoZW4gaWdub3JlIHRoYXQgdG9rZW4gYW5kIG1vdmVcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiBwcmUgYmxvY2tzIGFyZSBpZ25vcmVkIGFzIGFuIGF1dGhvcmluZyBjb252ZW5pZW5jZS4pXG4gICAgcC5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBmb3JtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCBpblRlbXBsYXRlID0gcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMDtcblxuICAgIGlmICghcC5mb3JtRWxlbWVudCB8fCBpblRlbXBsYXRlKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuXG4gICAgICAgIGlmICghaW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcC5mb3JtRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGZvciAobGV0IGkgPSBwLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICBjb25zdCBlbGVtZW50VG4gPSBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG4gICAgICAgIGxldCBjbG9zZVRuID0gbnVsbDtcblxuICAgICAgICBpZiAodG4gPT09ICQuTEkgJiYgZWxlbWVudFRuID09PSAkLkxJKSB7XG4gICAgICAgICAgICBjbG9zZVRuID0gJC5MSTtcbiAgICAgICAgfSBlbHNlIGlmICgodG4gPT09ICQuREQgfHwgdG4gPT09ICQuRFQpICYmIChlbGVtZW50VG4gPT09ICQuREQgfHwgZWxlbWVudFRuID09PSAkLkRUKSkge1xuICAgICAgICAgICAgY2xvc2VUbiA9IGVsZW1lbnRUbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zZVRuKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihjbG9zZVRuKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChjbG9zZVRuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVsZW1lbnRUbiAhPT0gJC5BRERSRVNTICYmIGVsZW1lbnRUbiAhPT0gJC5ESVYgJiYgZWxlbWVudFRuICE9PSAkLlAgJiYgcC5faXNTcGVjaWFsRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gcGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlBMQUlOVEVYVDtcbn1cblxuZnVuY3Rpb24gYnV0dG9uU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJVVFRPTikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5CVVRUT04pO1xuICAgIH1cblxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnRFbnRyeSA9IHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZSgkLkEpO1xuXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnRFbnRyeSkge1xuICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoYWN0aXZlRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShhY3RpdmVFbGVtZW50RW50cnkpO1xuICAgIH1cblxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnB1c2hFbGVtZW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gbm9iclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcblxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuTk9CUikpIHtcbiAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5wdXNoRWxlbWVudChwLm9wZW5FbGVtZW50cy5jdXJyZW50LCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGFwcGxldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdGFibGVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChcbiAgICAgICAgcC50cmVlQWRhcHRlci5nZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCkgIT09IEhUTUwuRE9DVU1FTlRfTU9ERS5RVUlSS1MgJiZcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApXG4gICAgKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xufVxuXG5mdW5jdGlvbiBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaW5wdXRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG5cbiAgICBjb25zdCBpbnB1dFR5cGUgPSBUb2tlbml6ZXIuZ2V0VG9rZW5BdHRyKHRva2VuLCBBVFRSUy5UWVBFKTtcblxuICAgIGlmICghaW5wdXRUeXBlIHx8IGlucHV0VHlwZS50b0xvd2VyQ2FzZSgpICE9PSBISURERU5fSU5QVVRfVFlQRSkge1xuICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIHBhcmFtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGhyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaW1hZ2VTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHRva2VuLnRhZ05hbWUgPSAkLklNRztcbiAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiB0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgLy9OT1RFOiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG9rZW4sIHRoZW4gaWdub3JlIHRoYXQgdG9rZW4gYW5kIG1vdmVcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiB0ZXh0YXJlYSBlbGVtZW50cyBhcmUgaWdub3JlZCBhcyBhbiBhdXRob3JpbmcgY29udmVuaWVuY2UuKVxuICAgIHAuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICBwLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlJDREFUQTtcbiAgICBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHAuaW5zZXJ0aW9uTW9kZTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBURVhUX01PREU7XG59XG5cbmZ1bmN0aW9uIHhtcFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXIuTU9ERS5SQVdURVhUKTtcbn1cblxuZnVuY3Rpb24gaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXIuTU9ERS5SQVdURVhUKTtcbn1cblxuLy9OT1RFOiBoZXJlIHdlIGFzc3VtZSB0aGF0IHdlIGFsd2F5cyBhY3QgYXMgYW4gdXNlciBhZ2VudCB3aXRoIGVuYWJsZWQgcGx1Z2lucywgc28gd2UgcGFyc2Vcbi8vPG5vZW1iZWQ+IGFzIGEgcmF3dGV4dC5cbmZ1bmN0aW9uIG5vZW1iZWRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlJBV1RFWFQpO1xufVxuXG5mdW5jdGlvbiBzZWxlY3RTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG5cbiAgICBpZiAoXG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fVEFCTEVfTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX0NBUFRJT05fTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX1RBQkxFX0JPRFlfTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX1JPV19NT0RFIHx8XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fQ0VMTF9NT0RFXG4gICAgKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9JTl9UQUJMRV9NT0RFO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9NT0RFO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gb3B0Z3JvdXBTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuUlVCWSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5SVUJZKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbigkLlJUQyk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbmZ1bmN0aW9uIG1lbnVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBtYXRoU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuXG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG5cbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuTUFUSE1MKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5NQVRITUwpO1xuICAgIH1cblxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gc3ZnU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuXG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5TVkdBdHRycyh0b2tlbik7XG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG5cbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuU1ZHKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5TVkcpO1xuICAgIH1cblxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuLy9PUFRJTUlaQVRJT046IEludGVnZXIgY29tcGFyaXNvbnMgYXJlIGxvdy1jb3N0LCBzbyB3ZSBjYW4gdXNlIHZlcnkgZmFzdCB0YWcgbmFtZSBsZW5ndGggZmlsdGVycyBoZXJlLlxuLy9JdCdzIGZhc3RlciB0aGFuIHVzaW5nIGRpY3Rpb25hcnkuXG5mdW5jdGlvbiBzdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5JIHx8IHRuID09PSAkLlMgfHwgdG4gPT09ICQuQiB8fCB0biA9PT0gJC5VKSB7XG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUCkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkEpIHtcbiAgICAgICAgICAgICAgICBhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuREwgfHwgdG4gPT09ICQuT0wgfHwgdG4gPT09ICQuVUwpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INikge1xuICAgICAgICAgICAgICAgIG51bWJlcmVkSGVhZGVyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5MSSB8fCB0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCkge1xuICAgICAgICAgICAgICAgIGxpc3RJdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5FTSB8fCB0biA9PT0gJC5UVCkge1xuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJSKSB7XG4gICAgICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSFIpIHtcbiAgICAgICAgICAgICAgICBoclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUkIpIHtcbiAgICAgICAgICAgICAgICByYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUlQgfHwgdG4gPT09ICQuUlApIHtcbiAgICAgICAgICAgICAgICBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gIT09ICQuVEggJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVFIpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuRElWIHx8IHRuID09PSAkLkRJUiB8fCB0biA9PT0gJC5OQVYpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5QUkUpIHtcbiAgICAgICAgICAgICAgICBwcmVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJJRykge1xuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLklNRyB8fCB0biA9PT0gJC5XQlIpIHtcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5YTVApIHtcbiAgICAgICAgICAgICAgICB4bXBTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNWRykge1xuICAgICAgICAgICAgICAgIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUlRDKSB7XG4gICAgICAgICAgICAgICAgcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkNPTCkge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgaHRtbFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQkFTRSB8fCB0biA9PT0gJC5MSU5LIHx8IHRuID09PSAkLk1FVEEpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJPRFkpIHtcbiAgICAgICAgICAgICAgICBib2R5U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NQUlOIHx8IHRuID09PSAkLk1FTlUpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5GT1JNKSB7XG4gICAgICAgICAgICAgICAgZm9ybVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQ09ERSB8fCB0biA9PT0gJC5GT05UKSB7XG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTk9CUikge1xuICAgICAgICAgICAgICAgIG5vYnJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkFSRUEpIHtcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NQVRIKSB7XG4gICAgICAgICAgICAgICAgbWF0aFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTUVOVSkge1xuICAgICAgICAgICAgICAgIG1lbnVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkhFQUQpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuU1RZTEUgfHwgdG4gPT09ICQuVElUTEUpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkFTSURFKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU01BTEwpIHtcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICAgICAgICAgIHRhYmxlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5FTUJFRCkge1xuICAgICAgICAgICAgICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLklOUFVUKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlBBUkFNIHx8IHRuID09PSAkLlRSQUNLKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLklNQUdFKSB7XG4gICAgICAgICAgICAgICAgaW1hZ2VTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkZSQU1FICYmIHRuICE9PSAkLlRCT0RZICYmIHRuICE9PSAkLlRGT09UICYmIHRuICE9PSAkLlRIRUFEKSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlNDUklQVCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuQ0VOVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRklHVVJFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRk9PVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEVBREVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEdST1VQIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRElBTE9HXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5CVVRUT04pIHtcbiAgICAgICAgICAgICAgICBidXR0b25TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNUUklLRSB8fCB0biA9PT0gJC5TVFJPTkcpIHtcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5BUFBMRVQgfHwgdG4gPT09ICQuT0JKRUNUKSB7XG4gICAgICAgICAgICAgICAgYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5LRVlHRU4pIHtcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TT1VSQ0UpIHtcbiAgICAgICAgICAgICAgICBwYXJhbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSUZSQU1FKSB7XG4gICAgICAgICAgICAgICAgaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk9QVElPTikge1xuICAgICAgICAgICAgICAgIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkdTT1VORCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuREVUQUlMUyB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkFERFJFU1MgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5BUlRJQ0xFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuU0VDVElPTiB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlNVTU1BUllcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkxJU1RJTkcpIHtcbiAgICAgICAgICAgICAgICBwcmVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk1BUlFVRUUpIHtcbiAgICAgICAgICAgICAgICBhcHBsZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PRU1CRUQpIHtcbiAgICAgICAgICAgICAgICBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biAhPT0gJC5DQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkJBU0VGT05UKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5GUkFNRVNFVCkge1xuICAgICAgICAgICAgICAgIGZyYW1lc2V0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5GSUVMRFNFVCkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFWFRBUkVBKSB7XG4gICAgICAgICAgICAgICAgdGV4dGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT1NDUklQVCkge1xuICAgICAgICAgICAgICAgIGlmIChwLm9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biAhPT0gJC5DT0xHUk9VUCkge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5QTEFJTlRFWFQpIHtcbiAgICAgICAgICAgICAgICBwbGFpbnRleHRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkxPQ0tRVU9URSB8fCB0biA9PT0gJC5GSUdDQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBib2R5RW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0JPRFlfTU9ERTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGh0bWxFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0JPRFlfTU9ERTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZm9ybUVuZFRhZ0luQm9keShwKSB7XG4gICAgY29uc3QgaW5UZW1wbGF0ZSA9IHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDA7XG4gICAgY29uc3QgZm9ybUVsZW1lbnQgPSBwLmZvcm1FbGVtZW50O1xuXG4gICAgaWYgKCFpblRlbXBsYXRlKSB7XG4gICAgICAgIHAuZm9ybUVsZW1lbnQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICgoZm9ybUVsZW1lbnQgfHwgaW5UZW1wbGF0ZSkgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkZPUk0pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcblxuICAgICAgICBpZiAoaW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuRk9STSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoZm9ybUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBwRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAoIXAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLlApO1xuICAgIH1cblxuICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbn1cblxuZnVuY3Rpb24gbGlFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkxpc3RJdGVtU2NvcGUoJC5MSSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5MSSk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkxJKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRkRW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG4pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKHRuKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG51bWJlcmVkSGVhZGVyRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYnJFbmRUYWdJbkJvZHkocCkge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5CUik7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuXG4gICAgICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IHRuKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbih0bik7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbEVsZW1lbnRQb3BwZWQoZWxlbWVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy9PUFRJTUlaQVRJT046IEludGVnZXIgY29tcGFyaXNvbnMgYXJlIGxvdy1jb3N0LCBzbyB3ZSBjYW4gdXNlIHZlcnkgZmFzdCB0YWcgbmFtZSBsZW5ndGggZmlsdGVycyBoZXJlLlxuLy9JdCdzIGZhc3RlciB0aGFuIHVzaW5nIGRpY3Rpb25hcnkuXG5mdW5jdGlvbiBlbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBzd2l0Y2ggKHRuLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQSB8fCB0biA9PT0gJC5CIHx8IHRuID09PSAkLkkgfHwgdG4gPT09ICQuUyB8fCB0biA9PT0gJC5VKSB7XG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUCkge1xuICAgICAgICAgICAgICAgIHBFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkRMIHx8IHRuID09PSAkLlVMIHx8IHRuID09PSAkLk9MKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkxJKSB7XG4gICAgICAgICAgICAgICAgbGlFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCkge1xuICAgICAgICAgICAgICAgIGRkRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDYpIHtcbiAgICAgICAgICAgICAgICBudW1iZXJlZEhlYWRlckVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJSKSB7XG4gICAgICAgICAgICAgICAgYnJFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5FTSB8fCB0biA9PT0gJC5UVCkge1xuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQklHKSB7XG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuRElSIHx8IHRuID09PSAkLkRJViB8fCB0biA9PT0gJC5OQVYgfHwgdG4gPT09ICQuUFJFKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQk9EWSkge1xuICAgICAgICAgICAgICAgIGJvZHlFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgaHRtbEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZPUk0pIHtcbiAgICAgICAgICAgICAgICBmb3JtRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQ09ERSB8fCB0biA9PT0gJC5GT05UIHx8IHRuID09PSAkLk5PQlIpIHtcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NQUlOIHx8IHRuID09PSAkLk1FTlUpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5BU0lERSkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TTUFMTCkge1xuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuQ0VOVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRklHVVJFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRk9PVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEVBREVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEdST1VQIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRElBTE9HXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQVBQTEVUIHx8IHRuID09PSAkLk9CSkVDVCkge1xuICAgICAgICAgICAgICAgIGFwcGxldEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNUUklLRSB8fCB0biA9PT0gJC5TVFJPTkcpIHtcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkFERFJFU1MgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5BUlRJQ0xFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuREVUQUlMUyB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlNFQ1RJT04gfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5TVU1NQVJZIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuTElTVElOR1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk1BUlFVRUUpIHtcbiAgICAgICAgICAgICAgICBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkZJRUxEU0VUKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkxPQ0tRVU9URSB8fCB0biA9PT0gJC5GSUdDQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlb2ZJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrVG9wID4gLTEpIHtcbiAgICAgICAgZW9mSW5UZW1wbGF0ZShwLCB0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcC5zdG9wcGVkID0gdHJ1ZTtcbiAgICB9XG59XG5cbi8vIFRoZSBcInRleHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGVuZFRhZ0luVGV4dChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLlNDUklQVCkge1xuICAgICAgICBwLnBlbmRpbmdTY3JpcHQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgIH1cblxuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xufVxuXG5mdW5jdGlvbiBlb2ZJblRleHQocCwgdG9rZW4pIHtcbiAgICBwLl9lcnIoRVJSLmVvZkluRWxlbWVudFRoYXRDYW5Db250YWluT25seVRleHQpO1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIHRhYmxlXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBjaGFyYWN0ZXJJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgY3VyVG4gPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZTtcblxuICAgIGlmIChjdXJUbiA9PT0gJC5UQUJMRSB8fCBjdXJUbiA9PT0gJC5UQk9EWSB8fCBjdXJUbiA9PT0gJC5URk9PVCB8fCBjdXJUbiA9PT0gJC5USEVBRCB8fCBjdXJUbiA9PT0gJC5UUikge1xuICAgICAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMgPSBbXTtcbiAgICAgICAgcC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gZmFsc2U7XG4gICAgICAgIHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gcC5pbnNlcnRpb25Nb2RlO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9URVhUX01PREU7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNhcHRpb25TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0NBUFRJT05fTU9ERTtcbn1cblxuZnVuY3Rpb24gY29sZ3JvdXBTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0NPTFVNTl9HUk9VUF9NT0RFO1xufVxuXG5mdW5jdGlvbiBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuQ09MR1JPVVApO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0NPTFVNTl9HUk9VUF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbmZ1bmN0aW9uIHRib2R5U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XG59XG5cbmZ1bmN0aW9uIHRkU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLlRCT0RZKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gdGFibGVTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEFCTEUpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRBQkxFKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IGlucHV0VHlwZSA9IFRva2VuaXplci5nZXRUb2tlbkF0dHIodG9rZW4sIEFUVFJTLlRZUEUpO1xuXG4gICAgaWYgKGlucHV0VHlwZSAmJiBpbnB1dFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gSElEREVOX0lOUFVUX1RZUEUpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG5cbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGZvcm1TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBpZiAoIXAuZm9ybUVsZW1lbnQgJiYgcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID09PSAwKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmZvcm1FbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBzd2l0Y2ggKHRuLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEggfHwgdG4gPT09ICQuVFIpIHtcbiAgICAgICAgICAgICAgICB0ZFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DT0wpIHtcbiAgICAgICAgICAgICAgICBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuRk9STSkge1xuICAgICAgICAgICAgICAgIGZvcm1TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNUWUxFKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xuICAgICAgICAgICAgICAgIHRib2R5U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSU5QVVQpIHtcbiAgICAgICAgICAgICAgICBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5TQ1JJUFQpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgY2FwdGlvblN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DT0xHUk9VUCkge1xuICAgICAgICAgICAgICAgIGNvbGdyb3VwU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEFCTEUpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5UQUJMRSk7XG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0biAhPT0gJC5CT0RZICYmXG4gICAgICAgIHRuICE9PSAkLkNBUFRJT04gJiZcbiAgICAgICAgdG4gIT09ICQuQ09MICYmXG4gICAgICAgIHRuICE9PSAkLkNPTEdST1VQICYmXG4gICAgICAgIHRuICE9PSAkLkhUTUwgJiZcbiAgICAgICAgdG4gIT09ICQuVEJPRFkgJiZcbiAgICAgICAgdG4gIT09ICQuVEQgJiZcbiAgICAgICAgdG4gIT09ICQuVEZPT1QgJiZcbiAgICAgICAgdG4gIT09ICQuVEggJiZcbiAgICAgICAgdG4gIT09ICQuVEhFQUQgJiZcbiAgICAgICAgdG4gIT09ICQuVFJcbiAgICApIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGUgPSBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQ7XG5cbiAgICBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSB0cnVlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUodG9rZW4pO1xuICAgIHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGU7XG59XG5cbi8vIFRoZSBcImluIHRhYmxlIHRleHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHdoaXRlc3BhY2VDaGFyYWN0ZXJJblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5wdXNoKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gY2hhcmFjdGVySW5UYWJsZVRleHQocCwgdG9rZW4pIHtcbiAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgcC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gdG9rZW5JblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIGxldCBpID0gMDtcblxuICAgIGlmIChwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgZm9yICg7IGkgPCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnNbaV0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICg7IGkgPCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHAuX2luc2VydENoYXJhY3RlcnMocC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIGNhcHRpb25cIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5DYXB0aW9uKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLkNPTCB8fFxuICAgICAgICB0biA9PT0gJC5DT0xHUk9VUCB8fFxuICAgICAgICB0biA9PT0gJC5UQk9EWSB8fFxuICAgICAgICB0biA9PT0gJC5URCB8fFxuICAgICAgICB0biA9PT0gJC5URk9PVCB8fFxuICAgICAgICB0biA9PT0gJC5USCB8fFxuICAgICAgICB0biA9PT0gJC5USEVBRCB8fFxuICAgICAgICB0biA9PT0gJC5UUlxuICAgICkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuQ0FQVElPTikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkNBUFRJT04pO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5DYXB0aW9uKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkNBUFRJT04gfHwgdG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLkNBUFRJT04pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5DQVBUSU9OKTtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgdG4gIT09ICQuQk9EWSAmJlxuICAgICAgICB0biAhPT0gJC5DT0wgJiZcbiAgICAgICAgdG4gIT09ICQuQ09MR1JPVVAgJiZcbiAgICAgICAgdG4gIT09ICQuSFRNTCAmJlxuICAgICAgICB0biAhPT0gJC5UQk9EWSAmJlxuICAgICAgICB0biAhPT0gJC5URCAmJlxuICAgICAgICB0biAhPT0gJC5URk9PVCAmJlxuICAgICAgICB0biAhPT0gJC5USCAmJlxuICAgICAgICB0biAhPT0gJC5USEVBRCAmJlxuICAgICAgICB0biAhPT0gJC5UUlxuICAgICkge1xuICAgICAgICBlbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gY29sdW1uIGdyb3VwXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luQ29sdW1uR3JvdXAocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5DT0wpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5DT0xHUk9VUCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuQ09MR1JPVVApIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkNPTCkge1xuICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLkNPTEdST1VQKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gdGFibGUgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblRhYmxlQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5UUikge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1JPV19NT0RFO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEggfHwgdG4gPT09ICQuVEQpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuVFIpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9ST1dfTU9ERTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLkNPTCB8fFxuICAgICAgICB0biA9PT0gJC5DT0xHUk9VUCB8fFxuICAgICAgICB0biA9PT0gJC5UQk9EWSB8fFxuICAgICAgICB0biA9PT0gJC5URk9PVCB8fFxuICAgICAgICB0biA9PT0gJC5USEVBRFxuICAgICkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodG4gIT09ICQuQk9EWSAmJiB0biAhPT0gJC5DQVBUSU9OICYmIHRuICE9PSAkLkNPTCAmJiB0biAhPT0gJC5DT0xHUk9VUCkgfHxcbiAgICAgICAgKHRuICE9PSAkLkhUTUwgJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVEggJiYgdG4gIT09ICQuVFIpXG4gICAgKSB7XG4gICAgICAgIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gcm93XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luUm93KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLlRIIHx8IHRuID09PSAkLlREKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9DRUxMX01PREU7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuQ09MIHx8XG4gICAgICAgIHRuID09PSAkLkNPTEdST1VQIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5Sb3cocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuVFIpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRSKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfQk9EWV9NT0RFO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVFIpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSB8fCBwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodG4gIT09ICQuQk9EWSAmJiB0biAhPT0gJC5DQVBUSU9OICYmIHRuICE9PSAkLkNPTCAmJiB0biAhPT0gJC5DT0xHUk9VUCkgfHxcbiAgICAgICAgKHRuICE9PSAkLkhUTUwgJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVEgpXG4gICAgKSB7XG4gICAgICAgIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gY2VsbFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkNlbGwocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAoXG4gICAgICAgIHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuQ09MIHx8XG4gICAgICAgIHRuID09PSAkLkNPTEdST1VQIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5URCkgfHwgcC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEgpKSB7XG4gICAgICAgICAgICBwLl9jbG9zZVRhYmxlQ2VsbCgpO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luQ2VsbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9ST1dfTU9ERTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEFCTEUgfHwgdG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVFIpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgIHAuX2Nsb3NlVGFibGVDZWxsKCk7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biAhPT0gJC5CT0RZICYmIHRuICE9PSAkLkNBUFRJT04gJiYgdG4gIT09ICQuQ09MICYmIHRuICE9PSAkLkNPTEdST1VQICYmIHRuICE9PSAkLkhUTUwpIHtcbiAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbi8vIFRoZSBcImluIHNlbGVjdFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblNlbGVjdChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk9QVElPTikge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUSU9OKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVElPTikge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5JTlBVVCB8fCB0biA9PT0gJC5LRVlHRU4gfHwgdG4gPT09ICQuVEVYVEFSRUEgfHwgdG4gPT09ICQuU0VMRUNUKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNlbGVjdFNjb3BlKCQuU0VMRUNUKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuXG4gICAgICAgICAgICBpZiAodG4gIT09ICQuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU0NSSVBUIHx8IHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luU2VsZWN0KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLk9QVEdST1VQKSB7XG4gICAgICAgIGNvbnN0IHByZXZPcGVuRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW3Aub3BlbkVsZW1lbnRzLnN0YWNrVG9wIC0gMV07XG4gICAgICAgIGNvbnN0IHByZXZPcGVuRWxlbWVudFRuID0gcHJldk9wZW5FbGVtZW50ICYmIHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShwcmV2T3BlbkVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04gJiYgcHJldk9wZW5FbGVtZW50VG4gPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVEdST1VQKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuT1BUSU9OKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5TRUxFQ1QgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5TZWxlY3RTY29wZSgkLlNFTEVDVCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICBlbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8xMi4yLjUuNC4xNyBUaGUgXCJpbiBzZWxlY3QgaW4gdGFibGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5TZWxlY3RJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLlRBQkxFIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRIXG4gICAgKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XG4gICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5TZWxlY3QocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5TZWxlY3RJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLlRBQkxFIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRIXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZW5kVGFnSW5TZWxlY3QocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gdGVtcGxhdGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmIChcbiAgICAgICAgdG4gPT09ICQuQkFTRSB8fFxuICAgICAgICB0biA9PT0gJC5CQVNFRk9OVCB8fFxuICAgICAgICB0biA9PT0gJC5CR1NPVU5EIHx8XG4gICAgICAgIHRuID09PSAkLkxJTksgfHxcbiAgICAgICAgdG4gPT09ICQuTUVUQSB8fFxuICAgICAgICB0biA9PT0gJC5OT0ZSQU1FUyB8fFxuICAgICAgICB0biA9PT0gJC5TQ1JJUFQgfHxcbiAgICAgICAgdG4gPT09ICQuU1RZTEUgfHxcbiAgICAgICAgdG4gPT09ICQuVEVNUExBVEUgfHxcbiAgICAgICAgdG4gPT09ICQuVElUTEVcbiAgICApIHtcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5ld0luc2VydGlvbk1vZGUgPSBURU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQW3RuXSB8fCBJTl9CT0RZX01PREU7XG5cbiAgICAgICAgcC5fcG9wVG1wbEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHVzaFRtcGxJbnNlcnRpb25Nb2RlKG5ld0luc2VydGlvbk1vZGUpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBuZXdJbnNlcnRpb25Nb2RlO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIGVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlb2ZJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDApIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEVNUExBVEUpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICBwLl9wb3BUbXBsSW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLnN0b3BwZWQgPSB0cnVlO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiYWZ0ZXIgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkFmdGVyQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKSB7XG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0FGVEVSX0JPRFlfTU9ERTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQk9EWV9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5GUkFNRVNFVCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZSQU1FKSB7XG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUykge1xuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuRlJBTUVTRVQgJiYgIXAub3BlbkVsZW1lbnRzLmlzUm9vdEh0bWxFbGVtZW50Q3VycmVudCgpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuXG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQgJiYgcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgIT09ICQuRlJBTUVTRVQpIHtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0ZSQU1FU0VUX01PREU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRoZSBcImFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUykge1xuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdBZnRlckZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuSFRNTCkge1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiYWZ0ZXIgYWZ0ZXIgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckFmdGVyQm9keShwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJBZnRlckJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5BZnRlckFmdGVyQm9keShwLCB0b2tlbikge1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG4vLyBUaGUgXCJhZnRlciBhZnRlciBmcmFtZXNldFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckFmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUykge1xuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG4vLyBUaGUgcnVsZXMgZm9yIHBhcnNpbmcgdG9rZW5zIGluIGZvcmVpZ24gY29udGVudFxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIG51bGxDaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgdG9rZW4uY2hhcnMgPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gY2hhcmFjdGVySW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBzdGFydFRhZ0luRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICBpZiAoZm9yZWlnbkNvbnRlbnQuY2F1c2VzRXhpdCh0b2tlbikgJiYgIXAuZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpICE9PSBOUy5IVE1MICYmXG4gICAgICAgICAgICAhcC5faXNJbnRlZ3JhdGlvblBvaW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBwLl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnROcyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpO1xuXG4gICAgICAgIGlmIChjdXJyZW50TnMgPT09IE5TLk1BVEhNTCkge1xuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudE5zID09PSBOUy5TVkcpIHtcbiAgICAgICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuU1ZHVGFnTmFtZSh0b2tlbik7XG4gICAgICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuWE1MQXR0cnModG9rZW4pO1xuXG4gICAgICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZykge1xuICAgICAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgY3VycmVudE5zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGN1cnJlbnROcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcblxuICAgICAgICBpZiAocC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCkgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkudG9Mb3dlckNhc2UoKSA9PT0gdG9rZW4udGFnTmFtZSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxFbGVtZW50UG9wcGVkKGVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBTY2hlbWFcblxudmFyIHByb3RvID0gU2NoZW1hLnByb3RvdHlwZVxuXG5wcm90by5zcGFjZSA9IG51bGxcbnByb3RvLm5vcm1hbCA9IHt9XG5wcm90by5wcm9wZXJ0eSA9IHt9XG5cbmZ1bmN0aW9uIFNjaGVtYShwcm9wZXJ0eSwgbm9ybWFsLCBzcGFjZSkge1xuICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHlcbiAgdGhpcy5ub3JtYWwgPSBub3JtYWxcblxuICBpZiAoc3BhY2UpIHtcbiAgICB0aGlzLnNwYWNlID0gc3BhY2VcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuL3NjaGVtYScpXG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2VcblxuZnVuY3Rpb24gbWVyZ2UoZGVmaW5pdGlvbnMpIHtcbiAgdmFyIGxlbmd0aCA9IGRlZmluaXRpb25zLmxlbmd0aFxuICB2YXIgcHJvcGVydHkgPSBbXVxuICB2YXIgbm9ybWFsID0gW11cbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGluZm9cbiAgdmFyIHNwYWNlXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpbmZvID0gZGVmaW5pdGlvbnNbaW5kZXhdXG4gICAgcHJvcGVydHkucHVzaChpbmZvLnByb3BlcnR5KVxuICAgIG5vcm1hbC5wdXNoKGluZm8ubm9ybWFsKVxuICAgIHNwYWNlID0gaW5mby5zcGFjZVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTY2hlbWEoXG4gICAgeHRlbmQuYXBwbHkobnVsbCwgcHJvcGVydHkpLFxuICAgIHh0ZW5kLmFwcGx5KG51bGwsIG5vcm1hbCksXG4gICAgc3BhY2VcbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbm9ybWFsaXplXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gSW5mb1xuXG52YXIgcHJvdG8gPSBJbmZvLnByb3RvdHlwZVxuXG5wcm90by5zcGFjZSA9IG51bGxcbnByb3RvLmF0dHJpYnV0ZSA9IG51bGxcbnByb3RvLnByb3BlcnR5ID0gbnVsbFxucHJvdG8uYm9vbGVhbiA9IGZhbHNlXG5wcm90by5ib29sZWFuaXNoID0gZmFsc2VcbnByb3RvLm92ZXJsb2FkZWRCb29sZWFuID0gZmFsc2VcbnByb3RvLm51bWJlciA9IGZhbHNlXG5wcm90by5jb21tYVNlcGFyYXRlZCA9IGZhbHNlXG5wcm90by5zcGFjZVNlcGFyYXRlZCA9IGZhbHNlXG5wcm90by5jb21tYU9yU3BhY2VTZXBhcmF0ZWQgPSBmYWxzZVxucHJvdG8ubXVzdFVzZVByb3BlcnR5ID0gZmFsc2VcbnByb3RvLmRlZmluZWQgPSBmYWxzZVxuXG5mdW5jdGlvbiBJbmZvKHByb3BlcnR5LCBhdHRyaWJ1dGUpIHtcbiAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5XG4gIHRoaXMuYXR0cmlidXRlID0gYXR0cmlidXRlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHBvd2VycyA9IDBcblxuZXhwb3J0cy5ib29sZWFuID0gaW5jcmVtZW50KClcbmV4cG9ydHMuYm9vbGVhbmlzaCA9IGluY3JlbWVudCgpXG5leHBvcnRzLm92ZXJsb2FkZWRCb29sZWFuID0gaW5jcmVtZW50KClcbmV4cG9ydHMubnVtYmVyID0gaW5jcmVtZW50KClcbmV4cG9ydHMuc3BhY2VTZXBhcmF0ZWQgPSBpbmNyZW1lbnQoKVxuZXhwb3J0cy5jb21tYVNlcGFyYXRlZCA9IGluY3JlbWVudCgpXG5leHBvcnRzLmNvbW1hT3JTcGFjZVNlcGFyYXRlZCA9IGluY3JlbWVudCgpXG5cbmZ1bmN0aW9uIGluY3JlbWVudCgpIHtcbiAgcmV0dXJuIE1hdGgucG93KDIsICsrcG93ZXJzKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBJbmZvID0gcmVxdWlyZSgnLi9pbmZvJylcbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IERlZmluZWRJbmZvXG5cbkRlZmluZWRJbmZvLnByb3RvdHlwZSA9IG5ldyBJbmZvKClcbkRlZmluZWRJbmZvLnByb3RvdHlwZS5kZWZpbmVkID0gdHJ1ZVxuXG52YXIgY2hlY2tzID0gW1xuICAnYm9vbGVhbicsXG4gICdib29sZWFuaXNoJyxcbiAgJ292ZXJsb2FkZWRCb29sZWFuJyxcbiAgJ251bWJlcicsXG4gICdjb21tYVNlcGFyYXRlZCcsXG4gICdzcGFjZVNlcGFyYXRlZCcsXG4gICdjb21tYU9yU3BhY2VTZXBhcmF0ZWQnXG5dXG52YXIgY2hlY2tzTGVuZ3RoID0gY2hlY2tzLmxlbmd0aFxuXG5mdW5jdGlvbiBEZWZpbmVkSW5mbyhwcm9wZXJ0eSwgYXR0cmlidXRlLCBtYXNrLCBzcGFjZSkge1xuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgY2hlY2tcblxuICBtYXJrKHRoaXMsICdzcGFjZScsIHNwYWNlKVxuXG4gIEluZm8uY2FsbCh0aGlzLCBwcm9wZXJ0eSwgYXR0cmlidXRlKVxuXG4gIHdoaWxlICgrK2luZGV4IDwgY2hlY2tzTGVuZ3RoKSB7XG4gICAgY2hlY2sgPSBjaGVja3NbaW5kZXhdXG4gICAgbWFyayh0aGlzLCBjaGVjaywgKG1hc2sgJiB0eXBlc1tjaGVja10pID09PSB0eXBlc1tjaGVja10pXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFyayh2YWx1ZXMsIGtleSwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgdmFsdWVzW2tleV0gPSB2YWx1ZVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uLy4uL25vcm1hbGl6ZScpXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi9zY2hlbWEnKVxudmFyIERlZmluZWRJbmZvID0gcmVxdWlyZSgnLi9kZWZpbmVkLWluZm8nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVxuXG5mdW5jdGlvbiBjcmVhdGUoZGVmaW5pdGlvbikge1xuICB2YXIgc3BhY2UgPSBkZWZpbml0aW9uLnNwYWNlXG4gIHZhciBtdXN0VXNlUHJvcGVydHkgPSBkZWZpbml0aW9uLm11c3RVc2VQcm9wZXJ0eSB8fCBbXVxuICB2YXIgYXR0cmlidXRlcyA9IGRlZmluaXRpb24uYXR0cmlidXRlcyB8fCB7fVxuICB2YXIgcHJvcHMgPSBkZWZpbml0aW9uLnByb3BlcnRpZXNcbiAgdmFyIHRyYW5zZm9ybSA9IGRlZmluaXRpb24udHJhbnNmb3JtXG4gIHZhciBwcm9wZXJ0eSA9IHt9XG4gIHZhciBub3JtYWwgPSB7fVxuICB2YXIgcHJvcFxuICB2YXIgaW5mb1xuXG4gIGZvciAocHJvcCBpbiBwcm9wcykge1xuICAgIGluZm8gPSBuZXcgRGVmaW5lZEluZm8oXG4gICAgICBwcm9wLFxuICAgICAgdHJhbnNmb3JtKGF0dHJpYnV0ZXMsIHByb3ApLFxuICAgICAgcHJvcHNbcHJvcF0sXG4gICAgICBzcGFjZVxuICAgIClcblxuICAgIGlmIChtdXN0VXNlUHJvcGVydHkuaW5kZXhPZihwcm9wKSAhPT0gLTEpIHtcbiAgICAgIGluZm8ubXVzdFVzZVByb3BlcnR5ID0gdHJ1ZVxuICAgIH1cblxuICAgIHByb3BlcnR5W3Byb3BdID0gaW5mb1xuXG4gICAgbm9ybWFsW25vcm1hbGl6ZShwcm9wKV0gPSBwcm9wXG4gICAgbm9ybWFsW25vcm1hbGl6ZShpbmZvLmF0dHJpYnV0ZSldID0gcHJvcFxuICB9XG5cbiAgcmV0dXJuIG5ldyBTY2hlbWEocHJvcGVydHksIG5vcm1hbCwgc3BhY2UpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vdXRpbC9jcmVhdGUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAneGxpbmsnLFxuICB0cmFuc2Zvcm06IHhsaW5rVHJhbnNmb3JtLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgeExpbmtBY3R1YXRlOiBudWxsLFxuICAgIHhMaW5rQXJjUm9sZTogbnVsbCxcbiAgICB4TGlua0hyZWY6IG51bGwsXG4gICAgeExpbmtSb2xlOiBudWxsLFxuICAgIHhMaW5rU2hvdzogbnVsbCxcbiAgICB4TGlua1RpdGxlOiBudWxsLFxuICAgIHhMaW5rVHlwZTogbnVsbFxuICB9XG59KVxuXG5mdW5jdGlvbiB4bGlua1RyYW5zZm9ybShfLCBwcm9wKSB7XG4gIHJldHVybiAneGxpbms6JyArIHByb3Auc2xpY2UoNSkudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL3V0aWwvY3JlYXRlJylcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGUoe1xuICBzcGFjZTogJ3htbCcsXG4gIHRyYW5zZm9ybTogeG1sVHJhbnNmb3JtLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgeG1sTGFuZzogbnVsbCxcbiAgICB4bWxCYXNlOiBudWxsLFxuICAgIHhtbFNwYWNlOiBudWxsXG4gIH1cbn0pXG5cbmZ1bmN0aW9uIHhtbFRyYW5zZm9ybShfLCBwcm9wKSB7XG4gIHJldHVybiAneG1sOicgKyBwcm9wLnNsaWNlKDMpLnRvTG93ZXJDYXNlKClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc2VTZW5zaXRpdmVUcmFuc2Zvcm1cblxuZnVuY3Rpb24gY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybShhdHRyaWJ1dGVzLCBhdHRyaWJ1dGUpIHtcbiAgcmV0dXJuIGF0dHJpYnV0ZSBpbiBhdHRyaWJ1dGVzID8gYXR0cmlidXRlc1thdHRyaWJ1dGVdIDogYXR0cmlidXRlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNhc2VTZW5zaXRpdmVUcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2Nhc2Utc2Vuc2l0aXZlLXRyYW5zZm9ybScpXG5cbm1vZHVsZS5leHBvcnRzID0gY2FzZUluc2Vuc2l0aXZlVHJhbnNmb3JtXG5cbmZ1bmN0aW9uIGNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybShhdHRyaWJ1dGVzLCBwcm9wZXJ0eSkge1xuICByZXR1cm4gY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybShhdHRyaWJ1dGVzLCBwcm9wZXJ0eS50b0xvd2VyQ2FzZSgpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL3V0aWwvY3JlYXRlJylcbnZhciBjYXNlSW5zZW5zaXRpdmVUcmFuc2Zvcm0gPSByZXF1aXJlKCcuL3V0aWwvY2FzZS1pbnNlbnNpdGl2ZS10cmFuc2Zvcm0nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAneG1sbnMnLFxuICBhdHRyaWJ1dGVzOiB7XG4gICAgeG1sbnN4bGluazogJ3htbG5zOnhsaW5rJ1xuICB9LFxuICB0cmFuc2Zvcm06IGNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybSxcbiAgcHJvcGVydGllczoge1xuICAgIHhtbG5zOiBudWxsLFxuICAgIHhtbG5zWExpbms6IG51bGxcbiAgfVxufSlcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHlwZXMgPSByZXF1aXJlKCcuL3V0aWwvdHlwZXMnKVxudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vdXRpbC9jcmVhdGUnKVxuXG52YXIgYm9vbGVhbmlzaCA9IHR5cGVzLmJvb2xlYW5pc2hcbnZhciBudW1iZXIgPSB0eXBlcy5udW1iZXJcbnZhciBzcGFjZVNlcGFyYXRlZCA9IHR5cGVzLnNwYWNlU2VwYXJhdGVkXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlKHtcbiAgdHJhbnNmb3JtOiBhcmlhVHJhbnNmb3JtLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgYXJpYUFjdGl2ZURlc2NlbmRhbnQ6IG51bGwsXG4gICAgYXJpYUF0b21pYzogYm9vbGVhbmlzaCxcbiAgICBhcmlhQXV0b0NvbXBsZXRlOiBudWxsLFxuICAgIGFyaWFCdXN5OiBib29sZWFuaXNoLFxuICAgIGFyaWFDaGVja2VkOiBib29sZWFuaXNoLFxuICAgIGFyaWFDb2xDb3VudDogbnVtYmVyLFxuICAgIGFyaWFDb2xJbmRleDogbnVtYmVyLFxuICAgIGFyaWFDb2xTcGFuOiBudW1iZXIsXG4gICAgYXJpYUNvbnRyb2xzOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhcmlhQ3VycmVudDogbnVsbCxcbiAgICBhcmlhRGVzY3JpYmVkQnk6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFyaWFEZXRhaWxzOiBudWxsLFxuICAgIGFyaWFEaXNhYmxlZDogYm9vbGVhbmlzaCxcbiAgICBhcmlhRHJvcEVmZmVjdDogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYUVycm9yTWVzc2FnZTogbnVsbCxcbiAgICBhcmlhRXhwYW5kZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYUZsb3dUbzogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYUdyYWJiZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYUhhc1BvcHVwOiBudWxsLFxuICAgIGFyaWFIaWRkZW46IGJvb2xlYW5pc2gsXG4gICAgYXJpYUludmFsaWQ6IG51bGwsXG4gICAgYXJpYUtleVNob3J0Y3V0czogbnVsbCxcbiAgICBhcmlhTGFiZWw6IG51bGwsXG4gICAgYXJpYUxhYmVsbGVkQnk6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFyaWFMZXZlbDogbnVtYmVyLFxuICAgIGFyaWFMaXZlOiBudWxsLFxuICAgIGFyaWFNb2RhbDogYm9vbGVhbmlzaCxcbiAgICBhcmlhTXVsdGlMaW5lOiBib29sZWFuaXNoLFxuICAgIGFyaWFNdWx0aVNlbGVjdGFibGU6IGJvb2xlYW5pc2gsXG4gICAgYXJpYU9yaWVudGF0aW9uOiBudWxsLFxuICAgIGFyaWFPd25zOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhcmlhUGxhY2Vob2xkZXI6IG51bGwsXG4gICAgYXJpYVBvc0luU2V0OiBudW1iZXIsXG4gICAgYXJpYVByZXNzZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYVJlYWRPbmx5OiBib29sZWFuaXNoLFxuICAgIGFyaWFSZWxldmFudDogbnVsbCxcbiAgICBhcmlhUmVxdWlyZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYVJvbGVEZXNjcmlwdGlvbjogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYVJvd0NvdW50OiBudW1iZXIsXG4gICAgYXJpYVJvd0luZGV4OiBudW1iZXIsXG4gICAgYXJpYVJvd1NwYW46IG51bWJlcixcbiAgICBhcmlhU2VsZWN0ZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYVNldFNpemU6IG51bWJlcixcbiAgICBhcmlhU29ydDogbnVsbCxcbiAgICBhcmlhVmFsdWVNYXg6IG51bWJlcixcbiAgICBhcmlhVmFsdWVNaW46IG51bWJlcixcbiAgICBhcmlhVmFsdWVOb3c6IG51bWJlcixcbiAgICBhcmlhVmFsdWVUZXh0OiBudWxsLFxuICAgIHJvbGU6IG51bGxcbiAgfVxufSlcblxuZnVuY3Rpb24gYXJpYVRyYW5zZm9ybShfLCBwcm9wKSB7XG4gIHJldHVybiBwcm9wID09PSAncm9sZScgPyBwcm9wIDogJ2FyaWEtJyArIHByb3Auc2xpY2UoNCkudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdXRpbC90eXBlcycpXG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi91dGlsL2NyZWF0ZScpXG52YXIgY2FzZUluc2Vuc2l0aXZlVHJhbnNmb3JtID0gcmVxdWlyZSgnLi91dGlsL2Nhc2UtaW5zZW5zaXRpdmUtdHJhbnNmb3JtJylcblxudmFyIGJvb2xlYW4gPSB0eXBlcy5ib29sZWFuXG52YXIgb3ZlcmxvYWRlZEJvb2xlYW4gPSB0eXBlcy5vdmVybG9hZGVkQm9vbGVhblxudmFyIGJvb2xlYW5pc2ggPSB0eXBlcy5ib29sZWFuaXNoXG52YXIgbnVtYmVyID0gdHlwZXMubnVtYmVyXG52YXIgc3BhY2VTZXBhcmF0ZWQgPSB0eXBlcy5zcGFjZVNlcGFyYXRlZFxudmFyIGNvbW1hU2VwYXJhdGVkID0gdHlwZXMuY29tbWFTZXBhcmF0ZWRcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGUoe1xuICBzcGFjZTogJ2h0bWwnLFxuICBhdHRyaWJ1dGVzOiB7XG4gICAgYWNjZXB0Y2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0JyxcbiAgICBjbGFzc25hbWU6ICdjbGFzcycsXG4gICAgaHRtbGZvcjogJ2ZvcicsXG4gICAgaHR0cGVxdWl2OiAnaHR0cC1lcXVpdidcbiAgfSxcbiAgdHJhbnNmb3JtOiBjYXNlSW5zZW5zaXRpdmVUcmFuc2Zvcm0sXG4gIG11c3RVc2VQcm9wZXJ0eTogWydjaGVja2VkJywgJ211bHRpcGxlJywgJ211dGVkJywgJ3NlbGVjdGVkJ10sXG4gIHByb3BlcnRpZXM6IHtcbiAgICAvLyBTdGFuZGFyZCBQcm9wZXJ0aWVzLlxuICAgIGFiYnI6IG51bGwsXG4gICAgYWNjZXB0OiBjb21tYVNlcGFyYXRlZCxcbiAgICBhY2NlcHRDaGFyc2V0OiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhY2Nlc3NLZXk6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFjdGlvbjogbnVsbCxcbiAgICBhbGxvdzogbnVsbCxcbiAgICBhbGxvd0Z1bGxTY3JlZW46IGJvb2xlYW4sXG4gICAgYWxsb3dQYXltZW50UmVxdWVzdDogYm9vbGVhbixcbiAgICBhbGxvd1VzZXJNZWRpYTogYm9vbGVhbixcbiAgICBhbHQ6IG51bGwsXG4gICAgYXM6IG51bGwsXG4gICAgYXN5bmM6IGJvb2xlYW4sXG4gICAgYXV0b0NhcGl0YWxpemU6IG51bGwsXG4gICAgYXV0b0NvbXBsZXRlOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhdXRvRm9jdXM6IGJvb2xlYW4sXG4gICAgYXV0b1BsYXk6IGJvb2xlYW4sXG4gICAgY2FwdHVyZTogYm9vbGVhbixcbiAgICBjaGFyU2V0OiBudWxsLFxuICAgIGNoZWNrZWQ6IGJvb2xlYW4sXG4gICAgY2l0ZTogbnVsbCxcbiAgICBjbGFzc05hbWU6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGNvbHM6IG51bWJlcixcbiAgICBjb2xTcGFuOiBudWxsLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgY29udGVudEVkaXRhYmxlOiBib29sZWFuaXNoLFxuICAgIGNvbnRyb2xzOiBib29sZWFuLFxuICAgIGNvbnRyb2xzTGlzdDogc3BhY2VTZXBhcmF0ZWQsXG4gICAgY29vcmRzOiBudW1iZXIgfCBjb21tYVNlcGFyYXRlZCxcbiAgICBjcm9zc09yaWdpbjogbnVsbCxcbiAgICBkYXRhOiBudWxsLFxuICAgIGRhdGVUaW1lOiBudWxsLFxuICAgIGRlY29kaW5nOiBudWxsLFxuICAgIGRlZmF1bHQ6IGJvb2xlYW4sXG4gICAgZGVmZXI6IGJvb2xlYW4sXG4gICAgZGlyOiBudWxsLFxuICAgIGRpck5hbWU6IG51bGwsXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW4sXG4gICAgZG93bmxvYWQ6IG92ZXJsb2FkZWRCb29sZWFuLFxuICAgIGRyYWdnYWJsZTogYm9vbGVhbmlzaCxcbiAgICBlbmNUeXBlOiBudWxsLFxuICAgIGVudGVyS2V5SGludDogbnVsbCxcbiAgICBmb3JtOiBudWxsLFxuICAgIGZvcm1BY3Rpb246IG51bGwsXG4gICAgZm9ybUVuY1R5cGU6IG51bGwsXG4gICAgZm9ybU1ldGhvZDogbnVsbCxcbiAgICBmb3JtTm9WYWxpZGF0ZTogYm9vbGVhbixcbiAgICBmb3JtVGFyZ2V0OiBudWxsLFxuICAgIGhlYWRlcnM6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICAgIGhpZGRlbjogYm9vbGVhbixcbiAgICBoaWdoOiBudW1iZXIsXG4gICAgaHJlZjogbnVsbCxcbiAgICBocmVmTGFuZzogbnVsbCxcbiAgICBodG1sRm9yOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBodHRwRXF1aXY6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGlkOiBudWxsLFxuICAgIGltYWdlU2l6ZXM6IG51bGwsXG4gICAgaW1hZ2VTcmNTZXQ6IGNvbW1hU2VwYXJhdGVkLFxuICAgIGlucHV0TW9kZTogbnVsbCxcbiAgICBpbnRlZ3JpdHk6IG51bGwsXG4gICAgaXM6IG51bGwsXG4gICAgaXNNYXA6IGJvb2xlYW4sXG4gICAgaXRlbUlkOiBudWxsLFxuICAgIGl0ZW1Qcm9wOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBpdGVtUmVmOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBpdGVtU2NvcGU6IGJvb2xlYW4sXG4gICAgaXRlbVR5cGU6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGtpbmQ6IG51bGwsXG4gICAgbGFiZWw6IG51bGwsXG4gICAgbGFuZzogbnVsbCxcbiAgICBsYW5ndWFnZTogbnVsbCxcbiAgICBsaXN0OiBudWxsLFxuICAgIGxvb3A6IGJvb2xlYW4sXG4gICAgbG93OiBudW1iZXIsXG4gICAgbWFuaWZlc3Q6IG51bGwsXG4gICAgbWF4OiBudWxsLFxuICAgIG1heExlbmd0aDogbnVtYmVyLFxuICAgIG1lZGlhOiBudWxsLFxuICAgIG1ldGhvZDogbnVsbCxcbiAgICBtaW46IG51bGwsXG4gICAgbWluTGVuZ3RoOiBudW1iZXIsXG4gICAgbXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgbXV0ZWQ6IGJvb2xlYW4sXG4gICAgbmFtZTogbnVsbCxcbiAgICBub25jZTogbnVsbCxcbiAgICBub01vZHVsZTogYm9vbGVhbixcbiAgICBub1ZhbGlkYXRlOiBib29sZWFuLFxuICAgIG9uQWJvcnQ6IG51bGwsXG4gICAgb25BZnRlclByaW50OiBudWxsLFxuICAgIG9uQXV4Q2xpY2s6IG51bGwsXG4gICAgb25CZWZvcmVQcmludDogbnVsbCxcbiAgICBvbkJlZm9yZVVubG9hZDogbnVsbCxcbiAgICBvbkJsdXI6IG51bGwsXG4gICAgb25DYW5jZWw6IG51bGwsXG4gICAgb25DYW5QbGF5OiBudWxsLFxuICAgIG9uQ2FuUGxheVRocm91Z2g6IG51bGwsXG4gICAgb25DaGFuZ2U6IG51bGwsXG4gICAgb25DbGljazogbnVsbCxcbiAgICBvbkNsb3NlOiBudWxsLFxuICAgIG9uQ29udGV4dE1lbnU6IG51bGwsXG4gICAgb25Db3B5OiBudWxsLFxuICAgIG9uQ3VlQ2hhbmdlOiBudWxsLFxuICAgIG9uQ3V0OiBudWxsLFxuICAgIG9uRGJsQ2xpY2s6IG51bGwsXG4gICAgb25EcmFnOiBudWxsLFxuICAgIG9uRHJhZ0VuZDogbnVsbCxcbiAgICBvbkRyYWdFbnRlcjogbnVsbCxcbiAgICBvbkRyYWdFeGl0OiBudWxsLFxuICAgIG9uRHJhZ0xlYXZlOiBudWxsLFxuICAgIG9uRHJhZ092ZXI6IG51bGwsXG4gICAgb25EcmFnU3RhcnQ6IG51bGwsXG4gICAgb25Ecm9wOiBudWxsLFxuICAgIG9uRHVyYXRpb25DaGFuZ2U6IG51bGwsXG4gICAgb25FbXB0aWVkOiBudWxsLFxuICAgIG9uRW5kZWQ6IG51bGwsXG4gICAgb25FcnJvcjogbnVsbCxcbiAgICBvbkZvY3VzOiBudWxsLFxuICAgIG9uRm9ybURhdGE6IG51bGwsXG4gICAgb25IYXNoQ2hhbmdlOiBudWxsLFxuICAgIG9uSW5wdXQ6IG51bGwsXG4gICAgb25JbnZhbGlkOiBudWxsLFxuICAgIG9uS2V5RG93bjogbnVsbCxcbiAgICBvbktleVByZXNzOiBudWxsLFxuICAgIG9uS2V5VXA6IG51bGwsXG4gICAgb25MYW5ndWFnZUNoYW5nZTogbnVsbCxcbiAgICBvbkxvYWQ6IG51bGwsXG4gICAgb25Mb2FkZWREYXRhOiBudWxsLFxuICAgIG9uTG9hZGVkTWV0YWRhdGE6IG51bGwsXG4gICAgb25Mb2FkRW5kOiBudWxsLFxuICAgIG9uTG9hZFN0YXJ0OiBudWxsLFxuICAgIG9uTWVzc2FnZTogbnVsbCxcbiAgICBvbk1lc3NhZ2VFcnJvcjogbnVsbCxcbiAgICBvbk1vdXNlRG93bjogbnVsbCxcbiAgICBvbk1vdXNlRW50ZXI6IG51bGwsXG4gICAgb25Nb3VzZUxlYXZlOiBudWxsLFxuICAgIG9uTW91c2VNb3ZlOiBudWxsLFxuICAgIG9uTW91c2VPdXQ6IG51bGwsXG4gICAgb25Nb3VzZU92ZXI6IG51bGwsXG4gICAgb25Nb3VzZVVwOiBudWxsLFxuICAgIG9uT2ZmbGluZTogbnVsbCxcbiAgICBvbk9ubGluZTogbnVsbCxcbiAgICBvblBhZ2VIaWRlOiBudWxsLFxuICAgIG9uUGFnZVNob3c6IG51bGwsXG4gICAgb25QYXN0ZTogbnVsbCxcbiAgICBvblBhdXNlOiBudWxsLFxuICAgIG9uUGxheTogbnVsbCxcbiAgICBvblBsYXlpbmc6IG51bGwsXG4gICAgb25Qb3BTdGF0ZTogbnVsbCxcbiAgICBvblByb2dyZXNzOiBudWxsLFxuICAgIG9uUmF0ZUNoYW5nZTogbnVsbCxcbiAgICBvblJlamVjdGlvbkhhbmRsZWQ6IG51bGwsXG4gICAgb25SZXNldDogbnVsbCxcbiAgICBvblJlc2l6ZTogbnVsbCxcbiAgICBvblNjcm9sbDogbnVsbCxcbiAgICBvblNlY3VyaXR5UG9saWN5VmlvbGF0aW9uOiBudWxsLFxuICAgIG9uU2Vla2VkOiBudWxsLFxuICAgIG9uU2Vla2luZzogbnVsbCxcbiAgICBvblNlbGVjdDogbnVsbCxcbiAgICBvblN0YWxsZWQ6IG51bGwsXG4gICAgb25TdG9yYWdlOiBudWxsLFxuICAgIG9uU3VibWl0OiBudWxsLFxuICAgIG9uU3VzcGVuZDogbnVsbCxcbiAgICBvblRpbWVVcGRhdGU6IG51bGwsXG4gICAgb25Ub2dnbGU6IG51bGwsXG4gICAgb25VbmhhbmRsZWRSZWplY3Rpb246IG51bGwsXG4gICAgb25VbmxvYWQ6IG51bGwsXG4gICAgb25Wb2x1bWVDaGFuZ2U6IG51bGwsXG4gICAgb25XYWl0aW5nOiBudWxsLFxuICAgIG9uV2hlZWw6IG51bGwsXG4gICAgb3BlbjogYm9vbGVhbixcbiAgICBvcHRpbXVtOiBudW1iZXIsXG4gICAgcGF0dGVybjogbnVsbCxcbiAgICBwaW5nOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBwbGFjZWhvbGRlcjogbnVsbCxcbiAgICBwbGF5c0lubGluZTogYm9vbGVhbixcbiAgICBwb3N0ZXI6IG51bGwsXG4gICAgcHJlbG9hZDogbnVsbCxcbiAgICByZWFkT25seTogYm9vbGVhbixcbiAgICByZWZlcnJlclBvbGljeTogbnVsbCxcbiAgICByZWw6IHNwYWNlU2VwYXJhdGVkLFxuICAgIHJlcXVpcmVkOiBib29sZWFuLFxuICAgIHJldmVyc2VkOiBib29sZWFuLFxuICAgIHJvd3M6IG51bWJlcixcbiAgICByb3dTcGFuOiBudW1iZXIsXG4gICAgc2FuZGJveDogc3BhY2VTZXBhcmF0ZWQsXG4gICAgc2NvcGU6IG51bGwsXG4gICAgc2NvcGVkOiBib29sZWFuLFxuICAgIHNlYW1sZXNzOiBib29sZWFuLFxuICAgIHNlbGVjdGVkOiBib29sZWFuLFxuICAgIHNoYXBlOiBudWxsLFxuICAgIHNpemU6IG51bWJlcixcbiAgICBzaXplczogbnVsbCxcbiAgICBzbG90OiBudWxsLFxuICAgIHNwYW46IG51bWJlcixcbiAgICBzcGVsbENoZWNrOiBib29sZWFuaXNoLFxuICAgIHNyYzogbnVsbCxcbiAgICBzcmNEb2M6IG51bGwsXG4gICAgc3JjTGFuZzogbnVsbCxcbiAgICBzcmNTZXQ6IGNvbW1hU2VwYXJhdGVkLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgc3RlcDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICB0YWJJbmRleDogbnVtYmVyLFxuICAgIHRhcmdldDogbnVsbCxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB0cmFuc2xhdGU6IG51bGwsXG4gICAgdHlwZTogbnVsbCxcbiAgICB0eXBlTXVzdE1hdGNoOiBib29sZWFuLFxuICAgIHVzZU1hcDogbnVsbCxcbiAgICB2YWx1ZTogYm9vbGVhbmlzaCxcbiAgICB3aWR0aDogbnVtYmVyLFxuICAgIHdyYXA6IG51bGwsXG5cbiAgICAvLyBMZWdhY3kuXG4gICAgLy8gU2VlOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNvdGhlci1lbGVtZW50cywtYXR0cmlidXRlcy1hbmQtYXBpc1xuICAgIGFsaWduOiBudWxsLCAvLyBTZXZlcmFsLiBVc2UgQ1NTIGB0ZXh0LWFsaWduYCBpbnN0ZWFkLFxuICAgIGFMaW5rOiBudWxsLCAvLyBgPGJvZHk+YC4gVXNlIENTUyBgYTphY3RpdmUge2NvbG9yfWAgaW5zdGVhZFxuICAgIGFyY2hpdmU6IHNwYWNlU2VwYXJhdGVkLCAvLyBgPG9iamVjdD5gLiBMaXN0IG9mIFVSSXMgdG8gYXJjaGl2ZXNcbiAgICBheGlzOiBudWxsLCAvLyBgPHRkPmAgYW5kIGA8dGg+YC4gVXNlIGBzY29wZWAgb24gYDx0aD5gXG4gICAgYmFja2dyb3VuZDogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGJhY2tncm91bmQtaW1hZ2VgIGluc3RlYWRcbiAgICBiZ0NvbG9yOiBudWxsLCAvLyBgPGJvZHk+YCBhbmQgdGFibGUgZWxlbWVudHMuIFVzZSBDU1MgYGJhY2tncm91bmQtY29sb3JgIGluc3RlYWRcbiAgICBib3JkZXI6IG51bWJlciwgLy8gYDx0YWJsZT5gLiBVc2UgQ1NTIGBib3JkZXItd2lkdGhgIGluc3RlYWQsXG4gICAgYm9yZGVyQ29sb3I6IG51bGwsIC8vIGA8dGFibGU+YC4gVXNlIENTUyBgYm9yZGVyLWNvbG9yYCBpbnN0ZWFkLFxuICAgIGJvdHRvbU1hcmdpbjogbnVtYmVyLCAvLyBgPGJvZHk+YFxuICAgIGNlbGxQYWRkaW5nOiBudWxsLCAvLyBgPHRhYmxlPmBcbiAgICBjZWxsU3BhY2luZzogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgY2hhcjogbnVsbCwgLy8gU2V2ZXJhbCB0YWJsZSBlbGVtZW50cy4gV2hlbiBgYWxpZ249Y2hhcmAsIHNldHMgdGhlIGNoYXJhY3RlciB0byBhbGlnbiBvblxuICAgIGNoYXJPZmY6IG51bGwsIC8vIFNldmVyYWwgdGFibGUgZWxlbWVudHMuIFdoZW4gYGNoYXJgLCBvZmZzZXRzIHRoZSBhbGlnbm1lbnRcbiAgICBjbGFzc0lkOiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgY2xlYXI6IG51bGwsIC8vIGA8YnI+YC4gVXNlIENTUyBgY2xlYXJgIGluc3RlYWRcbiAgICBjb2RlOiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgY29kZUJhc2U6IG51bGwsIC8vIGA8b2JqZWN0PmBcbiAgICBjb2RlVHlwZTogbnVsbCwgLy8gYDxvYmplY3Q+YFxuICAgIGNvbG9yOiBudWxsLCAvLyBgPGZvbnQ+YCBhbmQgYDxocj5gLiBVc2UgQ1NTIGluc3RlYWRcbiAgICBjb21wYWN0OiBib29sZWFuLCAvLyBMaXN0cy4gVXNlIENTUyB0byByZWR1Y2Ugc3BhY2UgYmV0d2VlbiBpdGVtcyBpbnN0ZWFkXG4gICAgZGVjbGFyZTogYm9vbGVhbiwgLy8gYDxvYmplY3Q+YFxuICAgIGV2ZW50OiBudWxsLCAvLyBgPHNjcmlwdD5gXG4gICAgZmFjZTogbnVsbCwgLy8gYDxmb250PmAuIFVzZSBDU1MgaW5zdGVhZFxuICAgIGZyYW1lOiBudWxsLCAvLyBgPHRhYmxlPmBcbiAgICBmcmFtZUJvcmRlcjogbnVsbCwgLy8gYDxpZnJhbWU+YC4gVXNlIENTUyBgYm9yZGVyYCBpbnN0ZWFkXG4gICAgaFNwYWNlOiBudW1iZXIsIC8vIGA8aW1nPmAgYW5kIGA8b2JqZWN0PmBcbiAgICBsZWZ0TWFyZ2luOiBudW1iZXIsIC8vIGA8Ym9keT5gXG4gICAgbGluazogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGE6bGluayB7Y29sb3I6ICp9YCBpbnN0ZWFkXG4gICAgbG9uZ0Rlc2M6IG51bGwsIC8vIGA8ZnJhbWU+YCwgYDxpZnJhbWU+YCwgYW5kIGA8aW1nPmAuIFVzZSBhbiBgPGE+YFxuICAgIGxvd1NyYzogbnVsbCwgLy8gYDxpbWc+YC4gVXNlIGEgYDxwaWN0dXJlPmBcbiAgICBtYXJnaW5IZWlnaHQ6IG51bWJlciwgLy8gYDxib2R5PmBcbiAgICBtYXJnaW5XaWR0aDogbnVtYmVyLCAvLyBgPGJvZHk+YFxuICAgIG5vUmVzaXplOiBib29sZWFuLCAvLyBgPGZyYW1lPmBcbiAgICBub0hyZWY6IGJvb2xlYW4sIC8vIGA8YXJlYT5gLiBVc2Ugbm8gaHJlZiBpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGBub2hyZWZgXG4gICAgbm9TaGFkZTogYm9vbGVhbiwgLy8gYDxocj5gLiBVc2UgYmFja2dyb3VuZC1jb2xvciBhbmQgaGVpZ2h0IGluc3RlYWQgb2YgYm9yZGVyc1xuICAgIG5vV3JhcDogYm9vbGVhbiwgLy8gYDx0ZD5gIGFuZCBgPHRoPmBcbiAgICBvYmplY3Q6IG51bGwsIC8vIGA8YXBwbGV0PmBcbiAgICBwcm9maWxlOiBudWxsLCAvLyBgPGhlYWQ+YFxuICAgIHByb21wdDogbnVsbCwgLy8gYDxpc2luZGV4PmBcbiAgICByZXY6IG51bGwsIC8vIGA8bGluaz5gXG4gICAgcmlnaHRNYXJnaW46IG51bWJlciwgLy8gYDxib2R5PmBcbiAgICBydWxlczogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgc2NoZW1lOiBudWxsLCAvLyBgPG1ldGE+YFxuICAgIHNjcm9sbGluZzogYm9vbGVhbmlzaCwgLy8gYDxmcmFtZT5gLiBVc2Ugb3ZlcmZsb3cgaW4gdGhlIGNoaWxkIGNvbnRleHRcbiAgICBzdGFuZGJ5OiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgc3VtbWFyeTogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgdGV4dDogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGNvbG9yYCBpbnN0ZWFkXG4gICAgdG9wTWFyZ2luOiBudW1iZXIsIC8vIGA8Ym9keT5gXG4gICAgdmFsdWVUeXBlOiBudWxsLCAvLyBgPHBhcmFtPmBcbiAgICB2ZXJzaW9uOiBudWxsLCAvLyBgPGh0bWw+YC4gVXNlIGEgZG9jdHlwZS5cbiAgICB2QWxpZ246IG51bGwsIC8vIFNldmVyYWwuIFVzZSBDU1MgYHZlcnRpY2FsLWFsaWduYCBpbnN0ZWFkXG4gICAgdkxpbms6IG51bGwsIC8vIGA8Ym9keT5gLiBVc2UgQ1NTIGBhOnZpc2l0ZWQge2NvbG9yfWAgaW5zdGVhZFxuICAgIHZTcGFjZTogbnVtYmVyLCAvLyBgPGltZz5gIGFuZCBgPG9iamVjdD5gXG5cbiAgICAvLyBOb24tc3RhbmRhcmQgUHJvcGVydGllcy5cbiAgICBhbGxvd1RyYW5zcGFyZW5jeTogbnVsbCxcbiAgICBhdXRvQ29ycmVjdDogbnVsbCxcbiAgICBhdXRvU2F2ZTogbnVsbCxcbiAgICBkaXNhYmxlUGljdHVyZUluUGljdHVyZTogYm9vbGVhbixcbiAgICBwcmVmaXg6IG51bGwsXG4gICAgcHJvcGVydHk6IG51bGwsXG4gICAgcmVzdWx0czogbnVtYmVyLFxuICAgIHNlY3VyaXR5OiBudWxsLFxuICAgIHVuc2VsZWN0YWJsZTogbnVsbFxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBtZXJnZSA9IHJlcXVpcmUoJy4vbGliL3V0aWwvbWVyZ2UnKVxudmFyIHhsaW5rID0gcmVxdWlyZSgnLi9saWIveGxpbmsnKVxudmFyIHhtbCA9IHJlcXVpcmUoJy4vbGliL3htbCcpXG52YXIgeG1sbnMgPSByZXF1aXJlKCcuL2xpYi94bWxucycpXG52YXIgYXJpYSA9IHJlcXVpcmUoJy4vbGliL2FyaWEnKVxudmFyIGh0bWwgPSByZXF1aXJlKCcuL2xpYi9odG1sJylcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZShbeG1sLCB4bGluaywgeG1sbnMsIGFyaWEsIGh0bWxdKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdXRpbC90eXBlcycpXG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi91dGlsL2NyZWF0ZScpXG52YXIgY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vdXRpbC9jYXNlLXNlbnNpdGl2ZS10cmFuc2Zvcm0nKVxuXG52YXIgYm9vbGVhbiA9IHR5cGVzLmJvb2xlYW5cbnZhciBudW1iZXIgPSB0eXBlcy5udW1iZXJcbnZhciBzcGFjZVNlcGFyYXRlZCA9IHR5cGVzLnNwYWNlU2VwYXJhdGVkXG52YXIgY29tbWFTZXBhcmF0ZWQgPSB0eXBlcy5jb21tYVNlcGFyYXRlZFxudmFyIGNvbW1hT3JTcGFjZVNlcGFyYXRlZCA9IHR5cGVzLmNvbW1hT3JTcGFjZVNlcGFyYXRlZFxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAnc3ZnJyxcbiAgYXR0cmlidXRlczoge1xuICAgIGFjY2VudEhlaWdodDogJ2FjY2VudC1oZWlnaHQnLFxuICAgIGFsaWdubWVudEJhc2VsaW5lOiAnYWxpZ25tZW50LWJhc2VsaW5lJyxcbiAgICBhcmFiaWNGb3JtOiAnYXJhYmljLWZvcm0nLFxuICAgIGJhc2VsaW5lU2hpZnQ6ICdiYXNlbGluZS1zaGlmdCcsXG4gICAgY2FwSGVpZ2h0OiAnY2FwLWhlaWdodCcsXG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGNsaXBQYXRoOiAnY2xpcC1wYXRoJyxcbiAgICBjbGlwUnVsZTogJ2NsaXAtcnVsZScsXG4gICAgY29sb3JJbnRlcnBvbGF0aW9uOiAnY29sb3ItaW50ZXJwb2xhdGlvbicsXG4gICAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycsXG4gICAgY29sb3JQcm9maWxlOiAnY29sb3ItcHJvZmlsZScsXG4gICAgY29sb3JSZW5kZXJpbmc6ICdjb2xvci1yZW5kZXJpbmcnLFxuICAgIGNyb3NzT3JpZ2luOiAnY3Jvc3NvcmlnaW4nLFxuICAgIGRhdGFUeXBlOiAnZGF0YXR5cGUnLFxuICAgIGRvbWluYW50QmFzZWxpbmU6ICdkb21pbmFudC1iYXNlbGluZScsXG4gICAgZW5hYmxlQmFja2dyb3VuZDogJ2VuYWJsZS1iYWNrZ3JvdW5kJyxcbiAgICBmaWxsT3BhY2l0eTogJ2ZpbGwtb3BhY2l0eScsXG4gICAgZmlsbFJ1bGU6ICdmaWxsLXJ1bGUnLFxuICAgIGZsb29kQ29sb3I6ICdmbG9vZC1jb2xvcicsXG4gICAgZmxvb2RPcGFjaXR5OiAnZmxvb2Qtb3BhY2l0eScsXG4gICAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5JyxcbiAgICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsXG4gICAgZm9udFNpemVBZGp1c3Q6ICdmb250LXNpemUtYWRqdXN0JyxcbiAgICBmb250U3RyZXRjaDogJ2ZvbnQtc3RyZXRjaCcsXG4gICAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsXG4gICAgZm9udFZhcmlhbnQ6ICdmb250LXZhcmlhbnQnLFxuICAgIGZvbnRXZWlnaHQ6ICdmb250LXdlaWdodCcsXG4gICAgZ2x5cGhOYW1lOiAnZ2x5cGgtbmFtZScsXG4gICAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6ICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJyxcbiAgICBnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ICdnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCcsXG4gICAgaHJlZkxhbmc6ICdocmVmbGFuZycsXG4gICAgaG9yaXpBZHZYOiAnaG9yaXotYWR2LXgnLFxuICAgIGhvcml6T3JpZ2luWDogJ2hvcml6LW9yaWdpbi14JyxcbiAgICBob3Jpek9yaWdpblk6ICdob3Jpei1vcmlnaW4teScsXG4gICAgaW1hZ2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcnLFxuICAgIGxldHRlclNwYWNpbmc6ICdsZXR0ZXItc3BhY2luZycsXG4gICAgbGlnaHRpbmdDb2xvcjogJ2xpZ2h0aW5nLWNvbG9yJyxcbiAgICBtYXJrZXJFbmQ6ICdtYXJrZXItZW5kJyxcbiAgICBtYXJrZXJNaWQ6ICdtYXJrZXItbWlkJyxcbiAgICBtYXJrZXJTdGFydDogJ21hcmtlci1zdGFydCcsXG4gICAgbmF2RG93bjogJ25hdi1kb3duJyxcbiAgICBuYXZEb3duTGVmdDogJ25hdi1kb3duLWxlZnQnLFxuICAgIG5hdkRvd25SaWdodDogJ25hdi1kb3duLXJpZ2h0JyxcbiAgICBuYXZMZWZ0OiAnbmF2LWxlZnQnLFxuICAgIG5hdk5leHQ6ICduYXYtbmV4dCcsXG4gICAgbmF2UHJldjogJ25hdi1wcmV2JyxcbiAgICBuYXZSaWdodDogJ25hdi1yaWdodCcsXG4gICAgbmF2VXA6ICduYXYtdXAnLFxuICAgIG5hdlVwTGVmdDogJ25hdi11cC1sZWZ0JyxcbiAgICBuYXZVcFJpZ2h0OiAnbmF2LXVwLXJpZ2h0JyxcbiAgICBvbkFib3J0OiAnb25hYm9ydCcsXG4gICAgb25BY3RpdmF0ZTogJ29uYWN0aXZhdGUnLFxuICAgIG9uQWZ0ZXJQcmludDogJ29uYWZ0ZXJwcmludCcsXG4gICAgb25CZWZvcmVQcmludDogJ29uYmVmb3JlcHJpbnQnLFxuICAgIG9uQmVnaW46ICdvbmJlZ2luJyxcbiAgICBvbkNhbmNlbDogJ29uY2FuY2VsJyxcbiAgICBvbkNhblBsYXk6ICdvbmNhbnBsYXknLFxuICAgIG9uQ2FuUGxheVRocm91Z2g6ICdvbmNhbnBsYXl0aHJvdWdoJyxcbiAgICBvbkNoYW5nZTogJ29uY2hhbmdlJyxcbiAgICBvbkNsaWNrOiAnb25jbGljaycsXG4gICAgb25DbG9zZTogJ29uY2xvc2UnLFxuICAgIG9uQ29weTogJ29uY29weScsXG4gICAgb25DdWVDaGFuZ2U6ICdvbmN1ZWNoYW5nZScsXG4gICAgb25DdXQ6ICdvbmN1dCcsXG4gICAgb25EYmxDbGljazogJ29uZGJsY2xpY2snLFxuICAgIG9uRHJhZzogJ29uZHJhZycsXG4gICAgb25EcmFnRW5kOiAnb25kcmFnZW5kJyxcbiAgICBvbkRyYWdFbnRlcjogJ29uZHJhZ2VudGVyJyxcbiAgICBvbkRyYWdFeGl0OiAnb25kcmFnZXhpdCcsXG4gICAgb25EcmFnTGVhdmU6ICdvbmRyYWdsZWF2ZScsXG4gICAgb25EcmFnT3ZlcjogJ29uZHJhZ292ZXInLFxuICAgIG9uRHJhZ1N0YXJ0OiAnb25kcmFnc3RhcnQnLFxuICAgIG9uRHJvcDogJ29uZHJvcCcsXG4gICAgb25EdXJhdGlvbkNoYW5nZTogJ29uZHVyYXRpb25jaGFuZ2UnLFxuICAgIG9uRW1wdGllZDogJ29uZW1wdGllZCcsXG4gICAgb25FbmQ6ICdvbmVuZCcsXG4gICAgb25FbmRlZDogJ29uZW5kZWQnLFxuICAgIG9uRXJyb3I6ICdvbmVycm9yJyxcbiAgICBvbkZvY3VzOiAnb25mb2N1cycsXG4gICAgb25Gb2N1c0luOiAnb25mb2N1c2luJyxcbiAgICBvbkZvY3VzT3V0OiAnb25mb2N1c291dCcsXG4gICAgb25IYXNoQ2hhbmdlOiAnb25oYXNoY2hhbmdlJyxcbiAgICBvbklucHV0OiAnb25pbnB1dCcsXG4gICAgb25JbnZhbGlkOiAnb25pbnZhbGlkJyxcbiAgICBvbktleURvd246ICdvbmtleWRvd24nLFxuICAgIG9uS2V5UHJlc3M6ICdvbmtleXByZXNzJyxcbiAgICBvbktleVVwOiAnb25rZXl1cCcsXG4gICAgb25Mb2FkOiAnb25sb2FkJyxcbiAgICBvbkxvYWRlZERhdGE6ICdvbmxvYWRlZGRhdGEnLFxuICAgIG9uTG9hZGVkTWV0YWRhdGE6ICdvbmxvYWRlZG1ldGFkYXRhJyxcbiAgICBvbkxvYWRTdGFydDogJ29ubG9hZHN0YXJ0JyxcbiAgICBvbk1lc3NhZ2U6ICdvbm1lc3NhZ2UnLFxuICAgIG9uTW91c2VEb3duOiAnb25tb3VzZWRvd24nLFxuICAgIG9uTW91c2VFbnRlcjogJ29ubW91c2VlbnRlcicsXG4gICAgb25Nb3VzZUxlYXZlOiAnb25tb3VzZWxlYXZlJyxcbiAgICBvbk1vdXNlTW92ZTogJ29ubW91c2Vtb3ZlJyxcbiAgICBvbk1vdXNlT3V0OiAnb25tb3VzZW91dCcsXG4gICAgb25Nb3VzZU92ZXI6ICdvbm1vdXNlb3ZlcicsXG4gICAgb25Nb3VzZVVwOiAnb25tb3VzZXVwJyxcbiAgICBvbk1vdXNlV2hlZWw6ICdvbm1vdXNld2hlZWwnLFxuICAgIG9uT2ZmbGluZTogJ29ub2ZmbGluZScsXG4gICAgb25PbmxpbmU6ICdvbm9ubGluZScsXG4gICAgb25QYWdlSGlkZTogJ29ucGFnZWhpZGUnLFxuICAgIG9uUGFnZVNob3c6ICdvbnBhZ2VzaG93JyxcbiAgICBvblBhc3RlOiAnb25wYXN0ZScsXG4gICAgb25QYXVzZTogJ29ucGF1c2UnLFxuICAgIG9uUGxheTogJ29ucGxheScsXG4gICAgb25QbGF5aW5nOiAnb25wbGF5aW5nJyxcbiAgICBvblBvcFN0YXRlOiAnb25wb3BzdGF0ZScsXG4gICAgb25Qcm9ncmVzczogJ29ucHJvZ3Jlc3MnLFxuICAgIG9uUmF0ZUNoYW5nZTogJ29ucmF0ZWNoYW5nZScsXG4gICAgb25SZXBlYXQ6ICdvbnJlcGVhdCcsXG4gICAgb25SZXNldDogJ29ucmVzZXQnLFxuICAgIG9uUmVzaXplOiAnb25yZXNpemUnLFxuICAgIG9uU2Nyb2xsOiAnb25zY3JvbGwnLFxuICAgIG9uU2Vla2VkOiAnb25zZWVrZWQnLFxuICAgIG9uU2Vla2luZzogJ29uc2Vla2luZycsXG4gICAgb25TZWxlY3Q6ICdvbnNlbGVjdCcsXG4gICAgb25TaG93OiAnb25zaG93JyxcbiAgICBvblN0YWxsZWQ6ICdvbnN0YWxsZWQnLFxuICAgIG9uU3RvcmFnZTogJ29uc3RvcmFnZScsXG4gICAgb25TdWJtaXQ6ICdvbnN1Ym1pdCcsXG4gICAgb25TdXNwZW5kOiAnb25zdXNwZW5kJyxcbiAgICBvblRpbWVVcGRhdGU6ICdvbnRpbWV1cGRhdGUnLFxuICAgIG9uVG9nZ2xlOiAnb250b2dnbGUnLFxuICAgIG9uVW5sb2FkOiAnb251bmxvYWQnLFxuICAgIG9uVm9sdW1lQ2hhbmdlOiAnb252b2x1bWVjaGFuZ2UnLFxuICAgIG9uV2FpdGluZzogJ29ud2FpdGluZycsXG4gICAgb25ab29tOiAnb256b29tJyxcbiAgICBvdmVybGluZVBvc2l0aW9uOiAnb3ZlcmxpbmUtcG9zaXRpb24nLFxuICAgIG92ZXJsaW5lVGhpY2tuZXNzOiAnb3ZlcmxpbmUtdGhpY2tuZXNzJyxcbiAgICBwYWludE9yZGVyOiAncGFpbnQtb3JkZXInLFxuICAgIHBhbm9zZTE6ICdwYW5vc2UtMScsXG4gICAgcG9pbnRlckV2ZW50czogJ3BvaW50ZXItZXZlbnRzJyxcbiAgICByZWZlcnJlclBvbGljeTogJ3JlZmVycmVycG9saWN5JyxcbiAgICByZW5kZXJpbmdJbnRlbnQ6ICdyZW5kZXJpbmctaW50ZW50JyxcbiAgICBzaGFwZVJlbmRlcmluZzogJ3NoYXBlLXJlbmRlcmluZycsXG4gICAgc3RvcENvbG9yOiAnc3RvcC1jb2xvcicsXG4gICAgc3RvcE9wYWNpdHk6ICdzdG9wLW9wYWNpdHknLFxuICAgIHN0cmlrZXRocm91Z2hQb3NpdGlvbjogJ3N0cmlrZXRocm91Z2gtcG9zaXRpb24nLFxuICAgIHN0cmlrZXRocm91Z2hUaGlja25lc3M6ICdzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcycsXG4gICAgc3Ryb2tlRGFzaEFycmF5OiAnc3Ryb2tlLWRhc2hhcnJheScsXG4gICAgc3Ryb2tlRGFzaE9mZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0JyxcbiAgICBzdHJva2VMaW5lQ2FwOiAnc3Ryb2tlLWxpbmVjYXAnLFxuICAgIHN0cm9rZUxpbmVKb2luOiAnc3Ryb2tlLWxpbmVqb2luJyxcbiAgICBzdHJva2VNaXRlckxpbWl0OiAnc3Ryb2tlLW1pdGVybGltaXQnLFxuICAgIHN0cm9rZU9wYWNpdHk6ICdzdHJva2Utb3BhY2l0eScsXG4gICAgc3Ryb2tlV2lkdGg6ICdzdHJva2Utd2lkdGgnLFxuICAgIHRhYkluZGV4OiAndGFiaW5kZXgnLFxuICAgIHRleHRBbmNob3I6ICd0ZXh0LWFuY2hvcicsXG4gICAgdGV4dERlY29yYXRpb246ICd0ZXh0LWRlY29yYXRpb24nLFxuICAgIHRleHRSZW5kZXJpbmc6ICd0ZXh0LXJlbmRlcmluZycsXG4gICAgdHlwZU9mOiAndHlwZW9mJyxcbiAgICB1bmRlcmxpbmVQb3NpdGlvbjogJ3VuZGVybGluZS1wb3NpdGlvbicsXG4gICAgdW5kZXJsaW5lVGhpY2tuZXNzOiAndW5kZXJsaW5lLXRoaWNrbmVzcycsXG4gICAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLFxuICAgIHVuaWNvZGVSYW5nZTogJ3VuaWNvZGUtcmFuZ2UnLFxuICAgIHVuaXRzUGVyRW06ICd1bml0cy1wZXItZW0nLFxuICAgIHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJyxcbiAgICB2SGFuZ2luZzogJ3YtaGFuZ2luZycsXG4gICAgdklkZW9ncmFwaGljOiAndi1pZGVvZ3JhcGhpYycsXG4gICAgdk1hdGhlbWF0aWNhbDogJ3YtbWF0aGVtYXRpY2FsJyxcbiAgICB2ZWN0b3JFZmZlY3Q6ICd2ZWN0b3ItZWZmZWN0JyxcbiAgICB2ZXJ0QWR2WTogJ3ZlcnQtYWR2LXknLFxuICAgIHZlcnRPcmlnaW5YOiAndmVydC1vcmlnaW4teCcsXG4gICAgdmVydE9yaWdpblk6ICd2ZXJ0LW9yaWdpbi15JyxcbiAgICB3b3JkU3BhY2luZzogJ3dvcmQtc3BhY2luZycsXG4gICAgd3JpdGluZ01vZGU6ICd3cml0aW5nLW1vZGUnLFxuICAgIHhIZWlnaHQ6ICd4LWhlaWdodCcsXG4gICAgLy8gVGhlc2Ugd2VyZSBjYW1lbGNhc2VkIGluIFRpbnkuIE5vdyBsb3dlcmNhc2VkIGluIFNWRyAyXG4gICAgcGxheWJhY2tPcmRlcjogJ3BsYXliYWNrb3JkZXInLFxuICAgIHRpbWVsaW5lQmVnaW46ICd0aW1lbGluZWJlZ2luJ1xuICB9LFxuICB0cmFuc2Zvcm06IGNhc2VTZW5zaXRpdmVUcmFuc2Zvcm0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICBhYm91dDogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIGFjY2VudEhlaWdodDogbnVtYmVyLFxuICAgIGFjY3VtdWxhdGU6IG51bGwsXG4gICAgYWRkaXRpdmU6IG51bGwsXG4gICAgYWxpZ25tZW50QmFzZWxpbmU6IG51bGwsXG4gICAgYWxwaGFiZXRpYzogbnVtYmVyLFxuICAgIGFtcGxpdHVkZTogbnVtYmVyLFxuICAgIGFyYWJpY0Zvcm06IG51bGwsXG4gICAgYXNjZW50OiBudW1iZXIsXG4gICAgYXR0cmlidXRlTmFtZTogbnVsbCxcbiAgICBhdHRyaWJ1dGVUeXBlOiBudWxsLFxuICAgIGF6aW11dGg6IG51bWJlcixcbiAgICBiYW5kd2lkdGg6IG51bGwsXG4gICAgYmFzZWxpbmVTaGlmdDogbnVsbCxcbiAgICBiYXNlRnJlcXVlbmN5OiBudWxsLFxuICAgIGJhc2VQcm9maWxlOiBudWxsLFxuICAgIGJib3g6IG51bGwsXG4gICAgYmVnaW46IG51bGwsXG4gICAgYmlhczogbnVtYmVyLFxuICAgIGJ5OiBudWxsLFxuICAgIGNhbGNNb2RlOiBudWxsLFxuICAgIGNhcEhlaWdodDogbnVtYmVyLFxuICAgIGNsYXNzTmFtZTogc3BhY2VTZXBhcmF0ZWQsXG4gICAgY2xpcDogbnVsbCxcbiAgICBjbGlwUGF0aDogbnVsbCxcbiAgICBjbGlwUGF0aFVuaXRzOiBudWxsLFxuICAgIGNsaXBSdWxlOiBudWxsLFxuICAgIGNvbG9yOiBudWxsLFxuICAgIGNvbG9ySW50ZXJwb2xhdGlvbjogbnVsbCxcbiAgICBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiBudWxsLFxuICAgIGNvbG9yUHJvZmlsZTogbnVsbCxcbiAgICBjb2xvclJlbmRlcmluZzogbnVsbCxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGNvbnRlbnRTY3JpcHRUeXBlOiBudWxsLFxuICAgIGNvbnRlbnRTdHlsZVR5cGU6IG51bGwsXG4gICAgY3Jvc3NPcmlnaW46IG51bGwsXG4gICAgY3Vyc29yOiBudWxsLFxuICAgIGN4OiBudWxsLFxuICAgIGN5OiBudWxsLFxuICAgIGQ6IG51bGwsXG4gICAgZGF0YVR5cGU6IG51bGwsXG4gICAgZGVmYXVsdEFjdGlvbjogbnVsbCxcbiAgICBkZXNjZW50OiBudW1iZXIsXG4gICAgZGlmZnVzZUNvbnN0YW50OiBudW1iZXIsXG4gICAgZGlyZWN0aW9uOiBudWxsLFxuICAgIGRpc3BsYXk6IG51bGwsXG4gICAgZHVyOiBudWxsLFxuICAgIGRpdmlzb3I6IG51bWJlcixcbiAgICBkb21pbmFudEJhc2VsaW5lOiBudWxsLFxuICAgIGRvd25sb2FkOiBib29sZWFuLFxuICAgIGR4OiBudWxsLFxuICAgIGR5OiBudWxsLFxuICAgIGVkZ2VNb2RlOiBudWxsLFxuICAgIGVkaXRhYmxlOiBudWxsLFxuICAgIGVsZXZhdGlvbjogbnVtYmVyLFxuICAgIGVuYWJsZUJhY2tncm91bmQ6IG51bGwsXG4gICAgZW5kOiBudWxsLFxuICAgIGV2ZW50OiBudWxsLFxuICAgIGV4cG9uZW50OiBudW1iZXIsXG4gICAgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDogbnVsbCxcbiAgICBmaWxsOiBudWxsLFxuICAgIGZpbGxPcGFjaXR5OiBudW1iZXIsXG4gICAgZmlsbFJ1bGU6IG51bGwsXG4gICAgZmlsdGVyOiBudWxsLFxuICAgIGZpbHRlclJlczogbnVsbCxcbiAgICBmaWx0ZXJVbml0czogbnVsbCxcbiAgICBmbG9vZENvbG9yOiBudWxsLFxuICAgIGZsb29kT3BhY2l0eTogbnVsbCxcbiAgICBmb2N1c2FibGU6IG51bGwsXG4gICAgZm9jdXNIaWdobGlnaHQ6IG51bGwsXG4gICAgZm9udEZhbWlseTogbnVsbCxcbiAgICBmb250U2l6ZTogbnVsbCxcbiAgICBmb250U2l6ZUFkanVzdDogbnVsbCxcbiAgICBmb250U3RyZXRjaDogbnVsbCxcbiAgICBmb250U3R5bGU6IG51bGwsXG4gICAgZm9udFZhcmlhbnQ6IG51bGwsXG4gICAgZm9udFdlaWdodDogbnVsbCxcbiAgICBmb3JtYXQ6IG51bGwsXG4gICAgZnI6IG51bGwsXG4gICAgZnJvbTogbnVsbCxcbiAgICBmeDogbnVsbCxcbiAgICBmeTogbnVsbCxcbiAgICBnMTogY29tbWFTZXBhcmF0ZWQsXG4gICAgZzI6IGNvbW1hU2VwYXJhdGVkLFxuICAgIGdseXBoTmFtZTogY29tbWFTZXBhcmF0ZWQsXG4gICAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6IG51bGwsXG4gICAgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiBudWxsLFxuICAgIGdseXBoUmVmOiBudWxsLFxuICAgIGdyYWRpZW50VHJhbnNmb3JtOiBudWxsLFxuICAgIGdyYWRpZW50VW5pdHM6IG51bGwsXG4gICAgaGFuZGxlcjogbnVsbCxcbiAgICBoYW5naW5nOiBudW1iZXIsXG4gICAgaGF0Y2hDb250ZW50VW5pdHM6IG51bGwsXG4gICAgaGF0Y2hVbml0czogbnVsbCxcbiAgICBoZWlnaHQ6IG51bGwsXG4gICAgaHJlZjogbnVsbCxcbiAgICBocmVmTGFuZzogbnVsbCxcbiAgICBob3JpekFkdlg6IG51bWJlcixcbiAgICBob3Jpek9yaWdpblg6IG51bWJlcixcbiAgICBob3Jpek9yaWdpblk6IG51bWJlcixcbiAgICBpZDogbnVsbCxcbiAgICBpZGVvZ3JhcGhpYzogbnVtYmVyLFxuICAgIGltYWdlUmVuZGVyaW5nOiBudWxsLFxuICAgIGluaXRpYWxWaXNpYmlsaXR5OiBudWxsLFxuICAgIGluOiBudWxsLFxuICAgIGluMjogbnVsbCxcbiAgICBpbnRlcmNlcHQ6IG51bWJlcixcbiAgICBrOiBudW1iZXIsXG4gICAgazE6IG51bWJlcixcbiAgICBrMjogbnVtYmVyLFxuICAgIGszOiBudW1iZXIsXG4gICAgazQ6IG51bWJlcixcbiAgICBrZXJuZWxNYXRyaXg6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICBrZXJuZWxVbml0TGVuZ3RoOiBudWxsLFxuICAgIGtleVBvaW50czogbnVsbCwgLy8gU0VNSV9DT0xPTl9TRVBBUkFURURcbiAgICBrZXlTcGxpbmVzOiBudWxsLCAvLyBTRU1JX0NPTE9OX1NFUEFSQVRFRFxuICAgIGtleVRpbWVzOiBudWxsLCAvLyBTRU1JX0NPTE9OX1NFUEFSQVRFRFxuICAgIGtlcm5pbmc6IG51bGwsXG4gICAgbGFuZzogbnVsbCxcbiAgICBsZW5ndGhBZGp1c3Q6IG51bGwsXG4gICAgbGV0dGVyU3BhY2luZzogbnVsbCxcbiAgICBsaWdodGluZ0NvbG9yOiBudWxsLFxuICAgIGxpbWl0aW5nQ29uZUFuZ2xlOiBudW1iZXIsXG4gICAgbG9jYWw6IG51bGwsXG4gICAgbWFya2VyRW5kOiBudWxsLFxuICAgIG1hcmtlck1pZDogbnVsbCxcbiAgICBtYXJrZXJTdGFydDogbnVsbCxcbiAgICBtYXJrZXJIZWlnaHQ6IG51bGwsXG4gICAgbWFya2VyVW5pdHM6IG51bGwsXG4gICAgbWFya2VyV2lkdGg6IG51bGwsXG4gICAgbWFzazogbnVsbCxcbiAgICBtYXNrQ29udGVudFVuaXRzOiBudWxsLFxuICAgIG1hc2tVbml0czogbnVsbCxcbiAgICBtYXRoZW1hdGljYWw6IG51bGwsXG4gICAgbWF4OiBudWxsLFxuICAgIG1lZGlhOiBudWxsLFxuICAgIG1lZGlhQ2hhcmFjdGVyRW5jb2Rpbmc6IG51bGwsXG4gICAgbWVkaWFDb250ZW50RW5jb2RpbmdzOiBudWxsLFxuICAgIG1lZGlhU2l6ZTogbnVtYmVyLFxuICAgIG1lZGlhVGltZTogbnVsbCxcbiAgICBtZXRob2Q6IG51bGwsXG4gICAgbWluOiBudWxsLFxuICAgIG1vZGU6IG51bGwsXG4gICAgbmFtZTogbnVsbCxcbiAgICBuYXZEb3duOiBudWxsLFxuICAgIG5hdkRvd25MZWZ0OiBudWxsLFxuICAgIG5hdkRvd25SaWdodDogbnVsbCxcbiAgICBuYXZMZWZ0OiBudWxsLFxuICAgIG5hdk5leHQ6IG51bGwsXG4gICAgbmF2UHJldjogbnVsbCxcbiAgICBuYXZSaWdodDogbnVsbCxcbiAgICBuYXZVcDogbnVsbCxcbiAgICBuYXZVcExlZnQ6IG51bGwsXG4gICAgbmF2VXBSaWdodDogbnVsbCxcbiAgICBudW1PY3RhdmVzOiBudWxsLFxuICAgIG9ic2VydmVyOiBudWxsLFxuICAgIG9mZnNldDogbnVsbCxcbiAgICBvbkFib3J0OiBudWxsLFxuICAgIG9uQWN0aXZhdGU6IG51bGwsXG4gICAgb25BZnRlclByaW50OiBudWxsLFxuICAgIG9uQmVmb3JlUHJpbnQ6IG51bGwsXG4gICAgb25CZWdpbjogbnVsbCxcbiAgICBvbkNhbmNlbDogbnVsbCxcbiAgICBvbkNhblBsYXk6IG51bGwsXG4gICAgb25DYW5QbGF5VGhyb3VnaDogbnVsbCxcbiAgICBvbkNoYW5nZTogbnVsbCxcbiAgICBvbkNsaWNrOiBudWxsLFxuICAgIG9uQ2xvc2U6IG51bGwsXG4gICAgb25Db3B5OiBudWxsLFxuICAgIG9uQ3VlQ2hhbmdlOiBudWxsLFxuICAgIG9uQ3V0OiBudWxsLFxuICAgIG9uRGJsQ2xpY2s6IG51bGwsXG4gICAgb25EcmFnOiBudWxsLFxuICAgIG9uRHJhZ0VuZDogbnVsbCxcbiAgICBvbkRyYWdFbnRlcjogbnVsbCxcbiAgICBvbkRyYWdFeGl0OiBudWxsLFxuICAgIG9uRHJhZ0xlYXZlOiBudWxsLFxuICAgIG9uRHJhZ092ZXI6IG51bGwsXG4gICAgb25EcmFnU3RhcnQ6IG51bGwsXG4gICAgb25Ecm9wOiBudWxsLFxuICAgIG9uRHVyYXRpb25DaGFuZ2U6IG51bGwsXG4gICAgb25FbXB0aWVkOiBudWxsLFxuICAgIG9uRW5kOiBudWxsLFxuICAgIG9uRW5kZWQ6IG51bGwsXG4gICAgb25FcnJvcjogbnVsbCxcbiAgICBvbkZvY3VzOiBudWxsLFxuICAgIG9uRm9jdXNJbjogbnVsbCxcbiAgICBvbkZvY3VzT3V0OiBudWxsLFxuICAgIG9uSGFzaENoYW5nZTogbnVsbCxcbiAgICBvbklucHV0OiBudWxsLFxuICAgIG9uSW52YWxpZDogbnVsbCxcbiAgICBvbktleURvd246IG51bGwsXG4gICAgb25LZXlQcmVzczogbnVsbCxcbiAgICBvbktleVVwOiBudWxsLFxuICAgIG9uTG9hZDogbnVsbCxcbiAgICBvbkxvYWRlZERhdGE6IG51bGwsXG4gICAgb25Mb2FkZWRNZXRhZGF0YTogbnVsbCxcbiAgICBvbkxvYWRTdGFydDogbnVsbCxcbiAgICBvbk1lc3NhZ2U6IG51bGwsXG4gICAgb25Nb3VzZURvd246IG51bGwsXG4gICAgb25Nb3VzZUVudGVyOiBudWxsLFxuICAgIG9uTW91c2VMZWF2ZTogbnVsbCxcbiAgICBvbk1vdXNlTW92ZTogbnVsbCxcbiAgICBvbk1vdXNlT3V0OiBudWxsLFxuICAgIG9uTW91c2VPdmVyOiBudWxsLFxuICAgIG9uTW91c2VVcDogbnVsbCxcbiAgICBvbk1vdXNlV2hlZWw6IG51bGwsXG4gICAgb25PZmZsaW5lOiBudWxsLFxuICAgIG9uT25saW5lOiBudWxsLFxuICAgIG9uUGFnZUhpZGU6IG51bGwsXG4gICAgb25QYWdlU2hvdzogbnVsbCxcbiAgICBvblBhc3RlOiBudWxsLFxuICAgIG9uUGF1c2U6IG51bGwsXG4gICAgb25QbGF5OiBudWxsLFxuICAgIG9uUGxheWluZzogbnVsbCxcbiAgICBvblBvcFN0YXRlOiBudWxsLFxuICAgIG9uUHJvZ3Jlc3M6IG51bGwsXG4gICAgb25SYXRlQ2hhbmdlOiBudWxsLFxuICAgIG9uUmVwZWF0OiBudWxsLFxuICAgIG9uUmVzZXQ6IG51bGwsXG4gICAgb25SZXNpemU6IG51bGwsXG4gICAgb25TY3JvbGw6IG51bGwsXG4gICAgb25TZWVrZWQ6IG51bGwsXG4gICAgb25TZWVraW5nOiBudWxsLFxuICAgIG9uU2VsZWN0OiBudWxsLFxuICAgIG9uU2hvdzogbnVsbCxcbiAgICBvblN0YWxsZWQ6IG51bGwsXG4gICAgb25TdG9yYWdlOiBudWxsLFxuICAgIG9uU3VibWl0OiBudWxsLFxuICAgIG9uU3VzcGVuZDogbnVsbCxcbiAgICBvblRpbWVVcGRhdGU6IG51bGwsXG4gICAgb25Ub2dnbGU6IG51bGwsXG4gICAgb25VbmxvYWQ6IG51bGwsXG4gICAgb25Wb2x1bWVDaGFuZ2U6IG51bGwsXG4gICAgb25XYWl0aW5nOiBudWxsLFxuICAgIG9uWm9vbTogbnVsbCxcbiAgICBvcGFjaXR5OiBudWxsLFxuICAgIG9wZXJhdG9yOiBudWxsLFxuICAgIG9yZGVyOiBudWxsLFxuICAgIG9yaWVudDogbnVsbCxcbiAgICBvcmllbnRhdGlvbjogbnVsbCxcbiAgICBvcmlnaW46IG51bGwsXG4gICAgb3ZlcmZsb3c6IG51bGwsXG4gICAgb3ZlcmxheTogbnVsbCxcbiAgICBvdmVybGluZVBvc2l0aW9uOiBudW1iZXIsXG4gICAgb3ZlcmxpbmVUaGlja25lc3M6IG51bWJlcixcbiAgICBwYWludE9yZGVyOiBudWxsLFxuICAgIHBhbm9zZTE6IG51bGwsXG4gICAgcGF0aDogbnVsbCxcbiAgICBwYXRoTGVuZ3RoOiBudW1iZXIsXG4gICAgcGF0dGVybkNvbnRlbnRVbml0czogbnVsbCxcbiAgICBwYXR0ZXJuVHJhbnNmb3JtOiBudWxsLFxuICAgIHBhdHRlcm5Vbml0czogbnVsbCxcbiAgICBwaGFzZTogbnVsbCxcbiAgICBwaW5nOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBwaXRjaDogbnVsbCxcbiAgICBwbGF5YmFja09yZGVyOiBudWxsLFxuICAgIHBvaW50ZXJFdmVudHM6IG51bGwsXG4gICAgcG9pbnRzOiBudWxsLFxuICAgIHBvaW50c0F0WDogbnVtYmVyLFxuICAgIHBvaW50c0F0WTogbnVtYmVyLFxuICAgIHBvaW50c0F0WjogbnVtYmVyLFxuICAgIHByZXNlcnZlQWxwaGE6IG51bGwsXG4gICAgcHJlc2VydmVBc3BlY3RSYXRpbzogbnVsbCxcbiAgICBwcmltaXRpdmVVbml0czogbnVsbCxcbiAgICBwcm9wYWdhdGU6IG51bGwsXG4gICAgcHJvcGVydHk6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByOiBudWxsLFxuICAgIHJhZGl1czogbnVsbCxcbiAgICByZWZlcnJlclBvbGljeTogbnVsbCxcbiAgICByZWZYOiBudWxsLFxuICAgIHJlZlk6IG51bGwsXG4gICAgcmVsOiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmV2OiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVuZGVyaW5nSW50ZW50OiBudWxsLFxuICAgIHJlcGVhdENvdW50OiBudWxsLFxuICAgIHJlcGVhdER1cjogbnVsbCxcbiAgICByZXF1aXJlZEV4dGVuc2lvbnM6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByZXF1aXJlZEZlYXR1cmVzOiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVxdWlyZWRGb250czogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHJlcXVpcmVkRm9ybWF0czogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHJlc291cmNlOiBudWxsLFxuICAgIHJlc3RhcnQ6IG51bGwsXG4gICAgcmVzdWx0OiBudWxsLFxuICAgIHJvdGF0ZTogbnVsbCxcbiAgICByeDogbnVsbCxcbiAgICByeTogbnVsbCxcbiAgICBzY2FsZTogbnVsbCxcbiAgICBzZWVkOiBudWxsLFxuICAgIHNoYXBlUmVuZGVyaW5nOiBudWxsLFxuICAgIHNpZGU6IG51bGwsXG4gICAgc2xvcGU6IG51bGwsXG4gICAgc25hcHNob3RUaW1lOiBudWxsLFxuICAgIHNwZWN1bGFyQ29uc3RhbnQ6IG51bWJlcixcbiAgICBzcGVjdWxhckV4cG9uZW50OiBudW1iZXIsXG4gICAgc3ByZWFkTWV0aG9kOiBudWxsLFxuICAgIHNwYWNpbmc6IG51bGwsXG4gICAgc3RhcnRPZmZzZXQ6IG51bGwsXG4gICAgc3RkRGV2aWF0aW9uOiBudWxsLFxuICAgIHN0ZW1oOiBudWxsLFxuICAgIHN0ZW12OiBudWxsLFxuICAgIHN0aXRjaFRpbGVzOiBudWxsLFxuICAgIHN0b3BDb2xvcjogbnVsbCxcbiAgICBzdG9wT3BhY2l0eTogbnVsbCxcbiAgICBzdHJpa2V0aHJvdWdoUG9zaXRpb246IG51bWJlcixcbiAgICBzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiBudW1iZXIsXG4gICAgc3RyaW5nOiBudWxsLFxuICAgIHN0cm9rZTogbnVsbCxcbiAgICBzdHJva2VEYXNoQXJyYXk6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICBzdHJva2VEYXNoT2Zmc2V0OiBudWxsLFxuICAgIHN0cm9rZUxpbmVDYXA6IG51bGwsXG4gICAgc3Ryb2tlTGluZUpvaW46IG51bGwsXG4gICAgc3Ryb2tlTWl0ZXJMaW1pdDogbnVtYmVyLFxuICAgIHN0cm9rZU9wYWNpdHk6IG51bWJlcixcbiAgICBzdHJva2VXaWR0aDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICBzdXJmYWNlU2NhbGU6IG51bWJlcixcbiAgICBzeW5jQmVoYXZpb3I6IG51bGwsXG4gICAgc3luY0JlaGF2aW9yRGVmYXVsdDogbnVsbCxcbiAgICBzeW5jTWFzdGVyOiBudWxsLFxuICAgIHN5bmNUb2xlcmFuY2U6IG51bGwsXG4gICAgc3luY1RvbGVyYW5jZURlZmF1bHQ6IG51bGwsXG4gICAgc3lzdGVtTGFuZ3VhZ2U6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICB0YWJJbmRleDogbnVtYmVyLFxuICAgIHRhYmxlVmFsdWVzOiBudWxsLFxuICAgIHRhcmdldDogbnVsbCxcbiAgICB0YXJnZXRYOiBudW1iZXIsXG4gICAgdGFyZ2V0WTogbnVtYmVyLFxuICAgIHRleHRBbmNob3I6IG51bGwsXG4gICAgdGV4dERlY29yYXRpb246IG51bGwsXG4gICAgdGV4dFJlbmRlcmluZzogbnVsbCxcbiAgICB0ZXh0TGVuZ3RoOiBudWxsLFxuICAgIHRpbWVsaW5lQmVnaW46IG51bGwsXG4gICAgdGl0bGU6IG51bGwsXG4gICAgdHJhbnNmb3JtQmVoYXZpb3I6IG51bGwsXG4gICAgdHlwZTogbnVsbCxcbiAgICB0eXBlT2Y6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICB0bzogbnVsbCxcbiAgICB0cmFuc2Zvcm06IG51bGwsXG4gICAgdTE6IG51bGwsXG4gICAgdTI6IG51bGwsXG4gICAgdW5kZXJsaW5lUG9zaXRpb246IG51bWJlcixcbiAgICB1bmRlcmxpbmVUaGlja25lc3M6IG51bWJlcixcbiAgICB1bmljb2RlOiBudWxsLFxuICAgIHVuaWNvZGVCaWRpOiBudWxsLFxuICAgIHVuaWNvZGVSYW5nZTogbnVsbCxcbiAgICB1bml0c1BlckVtOiBudW1iZXIsXG4gICAgdmFsdWVzOiBudWxsLFxuICAgIHZBbHBoYWJldGljOiBudW1iZXIsXG4gICAgdk1hdGhlbWF0aWNhbDogbnVtYmVyLFxuICAgIHZlY3RvckVmZmVjdDogbnVsbCxcbiAgICB2SGFuZ2luZzogbnVtYmVyLFxuICAgIHZJZGVvZ3JhcGhpYzogbnVtYmVyLFxuICAgIHZlcnNpb246IG51bGwsXG4gICAgdmVydEFkdlk6IG51bWJlcixcbiAgICB2ZXJ0T3JpZ2luWDogbnVtYmVyLFxuICAgIHZlcnRPcmlnaW5ZOiBudW1iZXIsXG4gICAgdmlld0JveDogbnVsbCxcbiAgICB2aWV3VGFyZ2V0OiBudWxsLFxuICAgIHZpc2liaWxpdHk6IG51bGwsXG4gICAgd2lkdGg6IG51bGwsXG4gICAgd2lkdGhzOiBudWxsLFxuICAgIHdvcmRTcGFjaW5nOiBudWxsLFxuICAgIHdyaXRpbmdNb2RlOiBudWxsLFxuICAgIHg6IG51bGwsXG4gICAgeDE6IG51bGwsXG4gICAgeDI6IG51bGwsXG4gICAgeENoYW5uZWxTZWxlY3RvcjogbnVsbCxcbiAgICB4SGVpZ2h0OiBudW1iZXIsXG4gICAgeTogbnVsbCxcbiAgICB5MTogbnVsbCxcbiAgICB5MjogbnVsbCxcbiAgICB5Q2hhbm5lbFNlbGVjdG9yOiBudWxsLFxuICAgIHo6IG51bGwsXG4gICAgem9vbUFuZFBhbjogbnVsbFxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBtZXJnZSA9IHJlcXVpcmUoJy4vbGliL3V0aWwvbWVyZ2UnKVxudmFyIHhsaW5rID0gcmVxdWlyZSgnLi9saWIveGxpbmsnKVxudmFyIHhtbCA9IHJlcXVpcmUoJy4vbGliL3htbCcpXG52YXIgeG1sbnMgPSByZXF1aXJlKCcuL2xpYi94bWxucycpXG52YXIgYXJpYSA9IHJlcXVpcmUoJy4vbGliL2FyaWEnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJy4vbGliL3N2ZycpXG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2UoW3htbCwgeGxpbmssIHhtbG5zLCBhcmlhLCBzdmddKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCcuL25vcm1hbGl6ZScpXG52YXIgRGVmaW5lZEluZm8gPSByZXF1aXJlKCcuL2xpYi91dGlsL2RlZmluZWQtaW5mbycpXG52YXIgSW5mbyA9IHJlcXVpcmUoJy4vbGliL3V0aWwvaW5mbycpXG5cbnZhciBkYXRhID0gJ2RhdGEnXG5cbm1vZHVsZS5leHBvcnRzID0gZmluZFxuXG52YXIgdmFsaWQgPSAvXmRhdGFbLWEtejAtOS46X10rJC9pXG52YXIgZGFzaCA9IC8tW2Etel0vZ1xudmFyIGNhcCA9IC9bQS1aXS9nXG5cbmZ1bmN0aW9uIGZpbmQoc2NoZW1hLCB2YWx1ZSkge1xuICB2YXIgbm9ybWFsID0gbm9ybWFsaXplKHZhbHVlKVxuICB2YXIgcHJvcCA9IHZhbHVlXG4gIHZhciBUeXBlID0gSW5mb1xuXG4gIGlmIChub3JtYWwgaW4gc2NoZW1hLm5vcm1hbCkge1xuICAgIHJldHVybiBzY2hlbWEucHJvcGVydHlbc2NoZW1hLm5vcm1hbFtub3JtYWxdXVxuICB9XG5cbiAgaWYgKG5vcm1hbC5sZW5ndGggPiA0ICYmIG5vcm1hbC5zbGljZSgwLCA0KSA9PT0gZGF0YSAmJiB2YWxpZC50ZXN0KHZhbHVlKSkge1xuICAgIC8vIEF0dHJpYnV0ZSBvciBwcm9wZXJ0eS5cbiAgICBpZiAodmFsdWUuY2hhckF0KDQpID09PSAnLScpIHtcbiAgICAgIHByb3AgPSBkYXRhc2V0VG9Qcm9wZXJ0eSh2YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBkYXRhc2V0VG9BdHRyaWJ1dGUodmFsdWUpXG4gICAgfVxuXG4gICAgVHlwZSA9IERlZmluZWRJbmZvXG4gIH1cblxuICByZXR1cm4gbmV3IFR5cGUocHJvcCwgdmFsdWUpXG59XG5cbmZ1bmN0aW9uIGRhdGFzZXRUb1Byb3BlcnR5KGF0dHJpYnV0ZSkge1xuICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGUuc2xpY2UoNSkucmVwbGFjZShkYXNoLCBjYW1lbGNhc2UpXG4gIHJldHVybiBkYXRhICsgdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKVxufVxuXG5mdW5jdGlvbiBkYXRhc2V0VG9BdHRyaWJ1dGUocHJvcGVydHkpIHtcbiAgdmFyIHZhbHVlID0gcHJvcGVydHkuc2xpY2UoNClcblxuICBpZiAoZGFzaC50ZXN0KHZhbHVlKSkge1xuICAgIHJldHVybiBwcm9wZXJ0eVxuICB9XG5cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGNhcCwga2ViYWIpXG5cbiAgaWYgKHZhbHVlLmNoYXJBdCgwKSAhPT0gJy0nKSB7XG4gICAgdmFsdWUgPSAnLScgKyB2YWx1ZVxuICB9XG5cbiAgcmV0dXJuIGRhdGEgKyB2YWx1ZVxufVxuXG5mdW5jdGlvbiBrZWJhYigkMCkge1xuICByZXR1cm4gJy0nICsgJDAudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBjYW1lbGNhc2UoJDApIHtcbiAgcmV0dXJuICQwLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVxuXG52YXIgbnVtYmVyU2lnbiA9IDM1IC8vICAnIydcbnZhciBkb3QgPSA0NiAvLyAgJy4nXG5cbi8vIENyZWF0ZSBhIGhhc3QgZWxlbWVudCBmcm9tIGEgc2ltcGxlIENTUyBzZWxlY3Rvci5cbmZ1bmN0aW9uIHBhcnNlKHNlbGVjdG9yLCBkZWZhdWx0VGFnTmFtZSkge1xuICB2YXIgdmFsdWUgPSBzZWxlY3RvciB8fCAnJ1xuICB2YXIgbmFtZSA9IGRlZmF1bHRUYWdOYW1lIHx8ICdkaXYnXG4gIHZhciBwcm9wcyA9IHt9XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGNsYXNzTmFtZVxuICB2YXIgdHlwZVxuICB2YXIgY29kZVxuICB2YXIgc3VidmFsdWVcbiAgdmFyIGxhc3RJbmRleFxuXG4gIHdoaWxlICgrK2luZGV4IDw9IGxlbmd0aCkge1xuICAgIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgaWYgKCFjb2RlIHx8IGNvZGUgPT09IGRvdCB8fCBjb2RlID09PSBudW1iZXJTaWduKSB7XG4gICAgICBzdWJ2YWx1ZSA9IHZhbHVlLnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpXG5cbiAgICAgIGlmIChzdWJ2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZSA9PT0gZG90KSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1kZXB0aFxuICAgICAgICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZS5wdXNoKHN1YnZhbHVlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbGFzc05hbWUgPSBbc3VidmFsdWVdXG4gICAgICAgICAgICBwcm9wcy5jbGFzc05hbWUgPSBjbGFzc05hbWVcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgICAgIHByb3BzLmlkID0gc3VidmFsdWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuYW1lID0gc3VidmFsdWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsYXN0SW5kZXggPSBpbmRleCArIDFcbiAgICAgIHR5cGUgPSBjb2RlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZWxlbWVudCcsXG4gICAgdGFnTmFtZTogbmFtZSxcbiAgICBwcm9wZXJ0aWVzOiBwcm9wcyxcbiAgICBjaGlsZHJlbjogW11cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucGFyc2UgPSBwYXJzZVxuZXhwb3J0cy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcblxudmFyIGVtcHR5ID0gJydcbnZhciBzcGFjZSA9ICcgJ1xudmFyIHdoaXRlU3BhY2UgPSAvWyBcXHRcXG5cXHJcXGZdKy9nXG5cbmZ1bmN0aW9uIHBhcnNlKHZhbHVlKSB7XG4gIHZhciBpbnB1dCA9IFN0cmluZyh2YWx1ZSB8fCBlbXB0eSkudHJpbSgpXG4gIHJldHVybiBpbnB1dCA9PT0gZW1wdHkgPyBbXSA6IGlucHV0LnNwbGl0KHdoaXRlU3BhY2UpXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZXMpIHtcbiAgcmV0dXJuIHZhbHVlcy5qb2luKHNwYWNlKS50cmltKClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLnBhcnNlID0gcGFyc2VcbmV4cG9ydHMuc3RyaW5naWZ5ID0gc3RyaW5naWZ5XG5cbnZhciBjb21tYSA9ICcsJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgZW1wdHkgPSAnJ1xuXG4vLyBQYXJzZSBjb21tYS1zZXBhcmF0ZWQgdG9rZW5zIHRvIGFuIGFycmF5LlxuZnVuY3Rpb24gcGFyc2UodmFsdWUpIHtcbiAgdmFyIHZhbHVlcyA9IFtdXG4gIHZhciBpbnB1dCA9IFN0cmluZyh2YWx1ZSB8fCBlbXB0eSlcbiAgdmFyIGluZGV4ID0gaW5wdXQuaW5kZXhPZihjb21tYSlcbiAgdmFyIGxhc3RJbmRleCA9IDBcbiAgdmFyIGVuZCA9IGZhbHNlXG4gIHZhciB2YWxcblxuICB3aGlsZSAoIWVuZCkge1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIGluZGV4ID0gaW5wdXQubGVuZ3RoXG4gICAgICBlbmQgPSB0cnVlXG4gICAgfVxuXG4gICAgdmFsID0gaW5wdXQuc2xpY2UobGFzdEluZGV4LCBpbmRleCkudHJpbSgpXG5cbiAgICBpZiAodmFsIHx8ICFlbmQpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHZhbClcbiAgICB9XG5cbiAgICBsYXN0SW5kZXggPSBpbmRleCArIDFcbiAgICBpbmRleCA9IGlucHV0LmluZGV4T2YoY29tbWEsIGxhc3RJbmRleClcbiAgfVxuXG4gIHJldHVybiB2YWx1ZXNcbn1cblxuLy8gQ29tcGlsZSBhbiBhcnJheSB0byBjb21tYS1zZXBhcmF0ZWQgdG9rZW5zLlxuLy8gYG9wdGlvbnMucGFkTGVmdGAgKGRlZmF1bHQ6IGB0cnVlYCkgcGFkcyBhIHNwYWNlIGxlZnQgb2YgZWFjaCB0b2tlbiwgYW5kXG4vLyBgb3B0aW9ucy5wYWRSaWdodGAgKGRlZmF1bHQ6IGBmYWxzZWApIHBhZHMgYSBzcGFjZSB0byB0aGUgcmlnaHQgb2YgZWFjaCB0b2tlbi5cbmZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgbGVmdCA9IHNldHRpbmdzLnBhZExlZnQgPT09IGZhbHNlID8gZW1wdHkgOiBzcGFjZVxuICB2YXIgcmlnaHQgPSBzZXR0aW5ncy5wYWRSaWdodCA/IHNwYWNlIDogZW1wdHlcblxuICAvLyBFbnN1cmUgdGhlIGxhc3QgZW1wdHkgZW50cnkgaXMgc2Vlbi5cbiAgaWYgKHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0gPT09IGVtcHR5KSB7XG4gICAgdmFsdWVzID0gdmFsdWVzLmNvbmNhdChlbXB0eSlcbiAgfVxuXG4gIHJldHVybiB2YWx1ZXMuam9pbihyaWdodCArIGNvbW1hICsgbGVmdCkudHJpbSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGZpbmQgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9maW5kJylcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9ub3JtYWxpemUnKVxudmFyIHBhcnNlU2VsZWN0b3IgPSByZXF1aXJlKCdoYXN0LXV0aWwtcGFyc2Utc2VsZWN0b3InKVxudmFyIHNwYWNlcyA9IHJlcXVpcmUoJ3NwYWNlLXNlcGFyYXRlZC10b2tlbnMnKS5wYXJzZVxudmFyIGNvbW1hcyA9IHJlcXVpcmUoJ2NvbW1hLXNlcGFyYXRlZC10b2tlbnMnKS5wYXJzZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbmZ1bmN0aW9uIGZhY3Rvcnkoc2NoZW1hLCBkZWZhdWx0VGFnTmFtZSwgY2FzZVNlbnNpdGl2ZSkge1xuICB2YXIgYWRqdXN0ID0gY2FzZVNlbnNpdGl2ZSA/IGNyZWF0ZUFkanVzdE1hcChjYXNlU2Vuc2l0aXZlKSA6IG51bGxcblxuICByZXR1cm4gaFxuXG4gIC8vIEh5cGVyc2NyaXB0IGNvbXBhdGlibGUgRFNMIGZvciBjcmVhdGluZyB2aXJ0dWFsIGhhc3QgdHJlZXMuXG4gIGZ1bmN0aW9uIGgoc2VsZWN0b3IsIHByb3BlcnRpZXMpIHtcbiAgICB2YXIgbm9kZSA9IHBhcnNlU2VsZWN0b3Ioc2VsZWN0b3IsIGRlZmF1bHRUYWdOYW1lKVxuICAgIHZhciBjaGlsZHJlbiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMilcbiAgICB2YXIgbmFtZSA9IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIHByb3BlcnR5XG5cbiAgICBub2RlLnRhZ05hbWUgPSBhZGp1c3QgJiYgb3duLmNhbGwoYWRqdXN0LCBuYW1lKSA/IGFkanVzdFtuYW1lXSA6IG5hbWVcblxuICAgIGlmIChwcm9wZXJ0aWVzICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcywgbm9kZSkpIHtcbiAgICAgIGNoaWxkcmVuLnVuc2hpZnQocHJvcGVydGllcylcbiAgICAgIHByb3BlcnRpZXMgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnRpZXMpIHtcbiAgICAgIGZvciAocHJvcGVydHkgaW4gcHJvcGVydGllcykge1xuICAgICAgICBhZGRQcm9wZXJ0eShub2RlLnByb3BlcnRpZXMsIHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRDaGlsZChub2RlLmNoaWxkcmVuLCBjaGlsZHJlbilcblxuICAgIGlmIChub2RlLnRhZ05hbWUgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIG5vZGUuY29udGVudCA9IHt0eXBlOiAncm9vdCcsIGNoaWxkcmVuOiBub2RlLmNoaWxkcmVufVxuICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFByb3BlcnR5KHByb3BlcnRpZXMsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgaW5mb1xuICAgIHZhciBwcm9wZXJ0eVxuICAgIHZhciByZXN1bHRcblxuICAgIC8vIElnbm9yZSBudWxseSBhbmQgTmFOIHZhbHVlcy5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGluZm8gPSBmaW5kKHNjaGVtYSwga2V5KVxuICAgIHByb3BlcnR5ID0gaW5mby5wcm9wZXJ0eVxuICAgIHJlc3VsdCA9IHZhbHVlXG5cbiAgICAvLyBIYW5kbGUgbGlzdCB2YWx1ZXMuXG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoaW5mby5zcGFjZVNlcGFyYXRlZCkge1xuICAgICAgICByZXN1bHQgPSBzcGFjZXMocmVzdWx0KVxuICAgICAgfSBlbHNlIGlmIChpbmZvLmNvbW1hU2VwYXJhdGVkKSB7XG4gICAgICAgIHJlc3VsdCA9IGNvbW1hcyhyZXN1bHQpXG4gICAgICB9IGVsc2UgaWYgKGluZm8uY29tbWFPclNwYWNlU2VwYXJhdGVkKSB7XG4gICAgICAgIHJlc3VsdCA9IHNwYWNlcyhjb21tYXMocmVzdWx0KS5qb2luKCcgJykpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWNjZXB0IGBvYmplY3RgIG9uIHN0eWxlLlxuICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3N0eWxlJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHQgPSBzdHlsZShyZXN1bHQpXG4gICAgfVxuXG4gICAgLy8gQ2xhc3MtbmFtZXMgKHdoaWNoIGNhbiBiZSBhZGRlZCBib3RoIG9uIHRoZSBgc2VsZWN0b3JgIGFuZCBoZXJlKS5cbiAgICBpZiAocHJvcGVydHkgPT09ICdjbGFzc05hbWUnICYmIHByb3BlcnRpZXMuY2xhc3NOYW1lKSB7XG4gICAgICByZXN1bHQgPSBwcm9wZXJ0aWVzLmNsYXNzTmFtZS5jb25jYXQocmVzdWx0KVxuICAgIH1cblxuICAgIHByb3BlcnRpZXNbcHJvcGVydHldID0gcGFyc2VQcmltaXRpdmVzKGluZm8sIHByb3BlcnR5LCByZXN1bHQpXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih2YWx1ZSwgbm9kZSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHxcbiAgICAnbGVuZ3RoJyBpbiB2YWx1ZSB8fFxuICAgIGlzTm9kZShub2RlLnRhZ05hbWUsIHZhbHVlKVxuICApXG59XG5cbmZ1bmN0aW9uIGlzTm9kZSh0YWdOYW1lLCB2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHZhbHVlLnR5cGVcblxuICBpZiAodGFnTmFtZSA9PT0gJ2lucHV0JyB8fCAhdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUuY2hpbGRyZW4gPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlLmNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKClcblxuICBpZiAodGFnTmFtZSA9PT0gJ2J1dHRvbicpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZSAhPT0gJ21lbnUnICYmXG4gICAgICB0eXBlICE9PSAnc3VibWl0JyAmJlxuICAgICAgdHlwZSAhPT0gJ3Jlc2V0JyAmJlxuICAgICAgdHlwZSAhPT0gJ2J1dHRvbidcbiAgICApXG4gIH1cblxuICByZXR1cm4gJ3ZhbHVlJyBpbiB2YWx1ZVxufVxuXG5mdW5jdGlvbiBhZGRDaGlsZChub2RlcywgdmFsdWUpIHtcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgbm9kZXMucHVzaCh7dHlwZTogJ3RleHQnLCB2YWx1ZTogU3RyaW5nKHZhbHVlKX0pXG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgIGluZGV4ID0gLTFcbiAgICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhZGRDaGlsZChub2RlcywgdmFsdWVbaW5kZXhdKVxuICAgIH1cblxuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgISgndHlwZScgaW4gdmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBub2RlLCBub2Rlcywgb3Igc3RyaW5nLCBnb3QgYCcgKyB2YWx1ZSArICdgJylcbiAgfVxuXG4gIG5vZGVzLnB1c2godmFsdWUpXG59XG5cbi8vIFBhcnNlIGEgKGxpc3Qgb2YpIHByaW1pdGl2ZXMuXG5mdW5jdGlvbiBwYXJzZVByaW1pdGl2ZXMoaW5mbywgbmFtZSwgdmFsdWUpIHtcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcbiAgdmFyIHJlc3VsdFxuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8ICEoJ2xlbmd0aCcgaW4gdmFsdWUpKSB7XG4gICAgcmV0dXJuIHBhcnNlUHJpbWl0aXZlKGluZm8sIG5hbWUsIHZhbHVlKVxuICB9XG5cbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIGluZGV4ID0gLTFcbiAgcmVzdWx0ID0gW11cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBwYXJzZVByaW1pdGl2ZShpbmZvLCBuYW1lLCB2YWx1ZVtpbmRleF0pXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIFBhcnNlIGEgc2luZ2xlIHByaW1pdGl2ZXMuXG5mdW5jdGlvbiBwYXJzZVByaW1pdGl2ZShpbmZvLCBuYW1lLCB2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdmFsdWVcblxuICBpZiAoaW5mby5udW1iZXIgfHwgaW5mby5wb3NpdGl2ZU51bWJlcikge1xuICAgIGlmICghaXNOYU4ocmVzdWx0KSAmJiByZXN1bHQgIT09ICcnKSB7XG4gICAgICByZXN1bHQgPSBOdW1iZXIocmVzdWx0KVxuICAgIH1cbiAgfSBlbHNlIGlmIChpbmZvLmJvb2xlYW4gfHwgaW5mby5vdmVybG9hZGVkQm9vbGVhbikge1xuICAgIC8vIEFjY2VwdCBgYm9vbGVhbmAgYW5kIGBzdHJpbmdgLlxuICAgIGlmIChcbiAgICAgIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnICYmXG4gICAgICAocmVzdWx0ID09PSAnJyB8fCBub3JtYWxpemUodmFsdWUpID09PSBub3JtYWxpemUobmFtZSkpXG4gICAgKSB7XG4gICAgICByZXN1bHQgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBzdHlsZSh2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGtleVxuXG4gIGZvciAoa2V5IGluIHZhbHVlKSB7XG4gICAgcmVzdWx0LnB1c2goW2tleSwgdmFsdWVba2V5XV0uam9pbignOiAnKSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuam9pbignOyAnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVBZGp1c3RNYXAodmFsdWVzKSB7XG4gIHZhciBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciByZXN1bHQgPSB7fVxuICB2YXIgdmFsdWVcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhbHVlID0gdmFsdWVzW2luZGV4XVxuICAgIHJlc3VsdFt2YWx1ZS50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHNjaGVtYSA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgY2FzZVNlbnNpdGl2ZSA9IHJlcXVpcmUoJy4vc3ZnLWNhc2Utc2Vuc2l0aXZlLXRhZy1uYW1lcy5qc29uJylcbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5JylcblxudmFyIHN2ZyA9IGZhY3Rvcnkoc2NoZW1hLCAnZycsIGNhc2VTZW5zaXRpdmUpXG5zdmcuZGlzcGxheU5hbWUgPSAnc3ZnJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN2Z1xuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBzY2hlbWEgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sJylcbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5JylcblxudmFyIGh0bWwgPSBmYWN0b3J5KHNjaGVtYSwgJ2RpdicpXG5odG1sLmRpc3BsYXlOYW1lID0gJ2h0bWwnXG5cbm1vZHVsZS5leHBvcnRzID0gaHRtbFxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY2NvdW50XG5cbmZ1bmN0aW9uIGNjb3VudCh2YWx1ZSwgY2hhcmFjdGVyKSB7XG4gIHZhciBjb3VudCA9IDBcbiAgdmFyIGluZGV4XG5cbiAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG5cbiAgaWYgKHR5cGVvZiBjaGFyYWN0ZXIgIT09ICdzdHJpbmcnIHx8IGNoYXJhY3Rlci5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGNoYXJhY3RlcicpXG4gIH1cblxuICBpbmRleCA9IHZhbHVlLmluZGV4T2YoY2hhcmFjdGVyKVxuXG4gIHdoaWxlIChpbmRleCAhPT0gLTEpIHtcbiAgICBjb3VudCsrXG4gICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGNoYXJhY3RlciwgaW5kZXggKyAxKVxuICB9XG5cbiAgcmV0dXJuIGNvdW50XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGh0bWwgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sJylcbnZhciBzdmcgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9zdmcnKVxudmFyIGZpbmQgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9maW5kJylcbnZhciBucyA9IHJlcXVpcmUoJ3dlYi1uYW1lc3BhY2VzJylcbnZhciBzID0gcmVxdWlyZSgnaGFzdHNjcmlwdC9zdmcnKVxudmFyIGggPSByZXF1aXJlKCdoYXN0c2NyaXB0JylcbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBjb3VudCA9IHJlcXVpcmUoJ2Njb3VudCcpXG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcHBlclxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gSGFuZGxlcnMuXG52YXIgbWFwID0ge1xuICAnI2RvY3VtZW50Jzogcm9vdCxcbiAgJyNkb2N1bWVudC1mcmFnbWVudCc6IHJvb3QsXG4gICcjdGV4dCc6IHRleHQsXG4gICcjY29tbWVudCc6IGNvbW1lbnQsXG4gICcjZG9jdW1lbnRUeXBlJzogZG9jdHlwZVxufVxuXG4vLyBXcmFwcGVyIHRvIG5vcm1hbGlzZSBvcHRpb25zLlxuZnVuY3Rpb24gd3JhcHBlcihhc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgZmlsZVxuXG4gIGlmIChzZXR0aW5ncy5tZXNzYWdlcykge1xuICAgIGZpbGUgPSBzZXR0aW5nc1xuICAgIHNldHRpbmdzID0ge31cbiAgfSBlbHNlIHtcbiAgICBmaWxlID0gc2V0dGluZ3MuZmlsZVxuICB9XG5cbiAgcmV0dXJuIHRyYW5zZm9ybShhc3QsIHtcbiAgICBzY2hlbWE6IHNldHRpbmdzLnNwYWNlID09PSAnc3ZnJyA/IHN2ZyA6IGh0bWwsXG4gICAgZmlsZTogZmlsZSxcbiAgICB2ZXJib3NlOiBzZXR0aW5ncy52ZXJib3NlLFxuICAgIGxvY2F0aW9uOiBmYWxzZVxuICB9KVxufVxuXG4vLyBUcmFuc2Zvcm0gYSBub2RlLlxuZnVuY3Rpb24gdHJhbnNmb3JtKGFzdCwgY29uZmlnKSB7XG4gIHZhciBzY2hlbWEgPSBjb25maWcuc2NoZW1hXG4gIHZhciBmbiA9IG93bi5jYWxsKG1hcCwgYXN0Lm5vZGVOYW1lKSA/IG1hcFthc3Qubm9kZU5hbWVdIDogZWxlbWVudFxuICB2YXIgY2hpbGRyZW5cbiAgdmFyIG5vZGVcbiAgdmFyIHBvc1xuXG4gIGlmIChmbiA9PT0gZWxlbWVudCkge1xuICAgIGNvbmZpZy5zY2hlbWEgPSBhc3QubmFtZXNwYWNlVVJJID09PSBucy5zdmcgPyBzdmcgOiBodG1sXG4gIH1cblxuICBpZiAoYXN0LmNoaWxkTm9kZXMpIHtcbiAgICBjaGlsZHJlbiA9IG5vZGVzKGFzdC5jaGlsZE5vZGVzLCBjb25maWcpXG4gIH1cblxuICBub2RlID0gZm4oYXN0LCBjaGlsZHJlbiwgY29uZmlnKVxuXG4gIGlmIChhc3Quc291cmNlQ29kZUxvY2F0aW9uICYmIGNvbmZpZy5maWxlKSB7XG4gICAgcG9zID0gbG9jYXRpb24obm9kZSwgYXN0LnNvdXJjZUNvZGVMb2NhdGlvbiwgY29uZmlnKVxuXG4gICAgaWYgKHBvcykge1xuICAgICAgY29uZmlnLmxvY2F0aW9uID0gdHJ1ZVxuICAgICAgbm9kZS5wb3NpdGlvbiA9IHBvc1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpZy5zY2hlbWEgPSBzY2hlbWFcblxuICByZXR1cm4gbm9kZVxufVxuXG4vLyBUcmFuc2Zvcm0gY2hpbGRyZW4uXG5mdW5jdGlvbiBub2RlcyhjaGlsZHJlbiwgY29uZmlnKSB7XG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHJlc3VsdCA9IFtdXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gdHJhbnNmb3JtKGNoaWxkcmVuW2luZGV4XSwgY29uZmlnKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBUcmFuc2Zvcm0gYSBkb2N1bWVudC5cbi8vIFN0b3JlcyBgYXN0LnF1aXJrc01vZGVgIGluIGBub2RlLmRhdGEucXVpcmtzTW9kZWAuXG5mdW5jdGlvbiByb290KGFzdCwgY2hpbGRyZW4sIGNvbmZpZykge1xuICB2YXIgbm9kZSA9IHt0eXBlOiAncm9vdCcsIGNoaWxkcmVuOiBjaGlsZHJlbiwgZGF0YToge319XG4gIHZhciBkb2NcblxuICBub2RlLmRhdGEucXVpcmtzTW9kZSA9IGFzdC5tb2RlID09PSAncXVpcmtzJyB8fCBhc3QubW9kZSA9PT0gJ2xpbWl0ZWQtcXVpcmtzJ1xuXG4gIGlmIChjb25maWcuZmlsZSAmJiBjb25maWcubG9jYXRpb24pIHtcbiAgICBkb2MgPSBTdHJpbmcoY29uZmlnLmZpbGUpXG5cbiAgICBub2RlLnBvc2l0aW9uID0ge1xuICAgICAgc3RhcnQ6IHtsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMH0sXG4gICAgICBlbmQ6IHtcbiAgICAgICAgbGluZTogY291bnQoZG9jLCAnXFxuJykgKyAxLFxuICAgICAgICBjb2x1bW46IGRvYy5sZW5ndGggLSBkb2MubGFzdEluZGV4T2YoJ1xcbicpLFxuICAgICAgICBvZmZzZXQ6IGRvYy5sZW5ndGhcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZVxufVxuXG4vLyBUcmFuc2Zvcm0gYSBkb2N0eXBlLlxuZnVuY3Rpb24gZG9jdHlwZShhc3QpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZG9jdHlwZScsXG4gICAgbmFtZTogYXN0Lm5hbWUgfHwgJycsXG4gICAgcHVibGljOiBhc3QucHVibGljSWQgfHwgbnVsbCxcbiAgICBzeXN0ZW06IGFzdC5zeXN0ZW1JZCB8fCBudWxsXG4gIH1cbn1cblxuLy8gVHJhbnNmb3JtIGEgdGV4dC5cbmZ1bmN0aW9uIHRleHQoYXN0KSB7XG4gIHJldHVybiB7dHlwZTogJ3RleHQnLCB2YWx1ZTogYXN0LnZhbHVlfVxufVxuXG4vLyBUcmFuc2Zvcm0gYSBjb21tZW50LlxuZnVuY3Rpb24gY29tbWVudChhc3QpIHtcbiAgcmV0dXJuIHt0eXBlOiAnY29tbWVudCcsIHZhbHVlOiBhc3QuZGF0YX1cbn1cblxuLy8gVHJhbnNmb3JtIGFuIGVsZW1lbnQuXG5mdW5jdGlvbiBlbGVtZW50KGFzdCwgY2hpbGRyZW4sIGNvbmZpZykge1xuICB2YXIgZm4gPSBjb25maWcuc2NoZW1hLnNwYWNlID09PSAnc3ZnJyA/IHMgOiBoXG4gIHZhciBuYW1lID0gYXN0LnRhZ05hbWVcbiAgdmFyIGF0dHJpYnV0ZXMgPSBhc3QuYXR0cnNcbiAgdmFyIGxlbmd0aCA9IGF0dHJpYnV0ZXMubGVuZ3RoXG4gIHZhciBwcm9wcyA9IHt9XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBhdHRyaWJ1dGVcbiAgdmFyIHByb3BcbiAgdmFyIG5vZGVcbiAgdmFyIHBvc1xuICB2YXIgc3RhcnRcbiAgdmFyIGVuZFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpbmRleF1cbiAgICBwcm9wID0gKGF0dHJpYnV0ZS5wcmVmaXggPyBhdHRyaWJ1dGUucHJlZml4ICsgJzonIDogJycpICsgYXR0cmlidXRlLm5hbWVcbiAgICBwcm9wc1twcm9wXSA9IGF0dHJpYnV0ZS52YWx1ZVxuICB9XG5cbiAgbm9kZSA9IGZuKG5hbWUsIHByb3BzLCBjaGlsZHJlbilcblxuICBpZiAobmFtZSA9PT0gJ3RlbXBsYXRlJyAmJiAnY29udGVudCcgaW4gYXN0KSB7XG4gICAgcG9zID0gYXN0LnNvdXJjZUNvZGVMb2NhdGlvblxuICAgIHN0YXJ0ID0gcG9zICYmIHBvcy5zdGFydFRhZyAmJiBwb3NpdGlvbihwb3Muc3RhcnRUYWcpLmVuZFxuICAgIGVuZCA9IHBvcyAmJiBwb3MuZW5kVGFnICYmIHBvc2l0aW9uKHBvcy5lbmRUYWcpLnN0YXJ0XG5cbiAgICBub2RlLmNvbnRlbnQgPSB0cmFuc2Zvcm0oYXN0LmNvbnRlbnQsIGNvbmZpZylcblxuICAgIGlmICgoc3RhcnQgfHwgZW5kKSAmJiBjb25maWcuZmlsZSkge1xuICAgICAgbm9kZS5jb250ZW50LnBvc2l0aW9uID0ge3N0YXJ0OiBzdGFydCwgZW5kOiBlbmR9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVcbn1cblxuLy8gQ3JlYXRlIGNsZWFuIHBvc2l0aW9uYWwgaW5mb3JtYXRpb24uXG5mdW5jdGlvbiBsb2NhdGlvbihub2RlLCBsb2NhdGlvbiwgY29uZmlnKSB7XG4gIHZhciBzY2hlbWEgPSBjb25maWcuc2NoZW1hXG4gIHZhciB2ZXJib3NlID0gY29uZmlnLnZlcmJvc2VcbiAgdmFyIHBvcyA9IHBvc2l0aW9uKGxvY2F0aW9uKVxuICB2YXIgcmVmZXJlbmNlXG4gIHZhciBhdHRyaWJ1dGVzXG4gIHZhciBhdHRyaWJ1dGVcbiAgdmFyIHByb3BzXG4gIHZhciBwcm9wXG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgcmVmZXJlbmNlID0gbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdXG5cbiAgICAvLyBCdWcgZm9yIHVuY2xvc2VkIHdpdGggY2hpbGRyZW4uXG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9pc3N1ZXMvMTA5Pi5cbiAgICBpZiAoXG4gICAgICAhbG9jYXRpb24uZW5kVGFnICYmXG4gICAgICByZWZlcmVuY2UgJiZcbiAgICAgIHJlZmVyZW5jZS5wb3NpdGlvbiAmJlxuICAgICAgcmVmZXJlbmNlLnBvc2l0aW9uLmVuZFxuICAgICkge1xuICAgICAgcG9zLmVuZCA9IHh0ZW5kKHJlZmVyZW5jZS5wb3NpdGlvbi5lbmQpXG4gICAgfVxuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGF0dHJpYnV0ZXMgPSBsb2NhdGlvbi5hdHRyc1xuICAgICAgcHJvcHMgPSB7fVxuXG4gICAgICBmb3IgKGF0dHJpYnV0ZSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIHByb3AgPSBmaW5kKHNjaGVtYSwgYXR0cmlidXRlKS5wcm9wZXJ0eVxuICAgICAgICBwcm9wc1twcm9wXSA9IHBvc2l0aW9uKGF0dHJpYnV0ZXNbYXR0cmlidXRlXSlcbiAgICAgIH1cblxuICAgICAgbm9kZS5kYXRhID0ge1xuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIG9wZW5pbmc6IHBvc2l0aW9uKGxvY2F0aW9uLnN0YXJ0VGFnKSxcbiAgICAgICAgICBjbG9zaW5nOiBsb2NhdGlvbi5lbmRUYWcgPyBwb3NpdGlvbihsb2NhdGlvbi5lbmRUYWcpIDogbnVsbCxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBvc1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvbihsb2MpIHtcbiAgdmFyIHN0YXJ0ID0gcG9pbnQoe1xuICAgIGxpbmU6IGxvYy5zdGFydExpbmUsXG4gICAgY29sdW1uOiBsb2Muc3RhcnRDb2wsXG4gICAgb2Zmc2V0OiBsb2Muc3RhcnRPZmZzZXRcbiAgfSlcbiAgdmFyIGVuZCA9IHBvaW50KHtcbiAgICBsaW5lOiBsb2MuZW5kTGluZSxcbiAgICBjb2x1bW46IGxvYy5lbmRDb2wsXG4gICAgb2Zmc2V0OiBsb2MuZW5kT2Zmc2V0XG4gIH0pXG4gIHJldHVybiBzdGFydCB8fCBlbmQgPyB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZH0gOiBudWxsXG59XG5cbmZ1bmN0aW9uIHBvaW50KHBvaW50KSB7XG4gIHJldHVybiBwb2ludC5saW5lICYmIHBvaW50LmNvbHVtbiA/IHBvaW50IDogbnVsbFxufVxuIiwiLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvZ3JhbW1hci5odG1sXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdmlzaW9ubWVkaWEvY3NzLXBhcnNlL3B1bGwvNDkjaXNzdWVjb21tZW50LTMwMDg4MDI3XG52YXIgQ09NTUVOVF9SRUdFWCA9IC9cXC9cXCpbXipdKlxcKisoW14vKl1bXipdKlxcKispKlxcLy9nO1xuXG52YXIgTkVXTElORV9SRUdFWCA9IC9cXG4vZztcbnZhciBXSElURVNQQUNFX1JFR0VYID0gL15cXHMqLztcblxuLy8gZGVjbGFyYXRpb25cbnZhciBQUk9QRVJUWV9SRUdFWCA9IC9eKFxcKj9bLSMvKlxcXFxcXHddKyhcXFtbMC05YS16Xy1dK1xcXSk/KVxccyovO1xudmFyIENPTE9OX1JFR0VYID0gL146XFxzKi87XG52YXIgVkFMVUVfUkVHRVggPSAvXigoPzonKD86XFxcXCd8LikqPyd8XCIoPzpcXFxcXCJ8LikqP1wifFxcKFteKV0qP1xcKXxbXn07XSkrKS87XG52YXIgU0VNSUNPTE9OX1JFR0VYID0gL15bO1xcc10qLztcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL1RyaW0jUG9seWZpbGxcbnZhciBUUklNX1JFR0VYID0gL15cXHMrfFxccyskL2c7XG5cbi8vIHN0cmluZ3NcbnZhciBORVdMSU5FID0gJ1xcbic7XG52YXIgRk9SV0FSRF9TTEFTSCA9ICcvJztcbnZhciBBU1RFUklTSyA9ICcqJztcbnZhciBFTVBUWV9TVFJJTkcgPSAnJztcblxuLy8gdHlwZXNcbnZhciBUWVBFX0NPTU1FTlQgPSAnY29tbWVudCc7XG52YXIgVFlQRV9ERUNMQVJBVElPTiA9ICdkZWNsYXJhdGlvbic7XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0eWxlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn1cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHN0eWxlLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygc3R5bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICB9XG5cbiAgaWYgKCFzdHlsZSkgcmV0dXJuIFtdO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbmFsLlxuICAgKi9cbiAgdmFyIGxpbmVubyA9IDE7XG4gIHZhciBjb2x1bW4gPSAxO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgbGluZW5vIGFuZCBjb2x1bW4gYmFzZWQgb24gYHN0cmAuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKHN0cikge1xuICAgIHZhciBsaW5lcyA9IHN0ci5tYXRjaChORVdMSU5FX1JFR0VYKTtcbiAgICBpZiAobGluZXMpIGxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgdmFyIGkgPSBzdHIubGFzdEluZGV4T2YoTkVXTElORSk7XG4gICAgY29sdW1uID0gfmkgPyBzdHIubGVuZ3RoIC0gaSA6IGNvbHVtbiArIHN0ci5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogTWFyayBwb3NpdGlvbiBhbmQgcGF0Y2ggYG5vZGUucG9zaXRpb25gLlxuICAgKlxuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIHBvc2l0aW9uKCkge1xuICAgIHZhciBzdGFydCA9IHsgbGluZTogbGluZW5vLCBjb2x1bW46IGNvbHVtbiB9O1xuICAgIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgICBub2RlLnBvc2l0aW9uID0gbmV3IFBvc2l0aW9uKHN0YXJ0KTtcbiAgICAgIHdoaXRlc3BhY2UoKTtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU3RvcmUgcG9zaXRpb24gaW5mb3JtYXRpb24gZm9yIGEgbm9kZS5cbiAgICpcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBzdGFydFxuICAgKiBAcHJvcGVydHkge09iamVjdH0gZW5kXG4gICAqIEBwcm9wZXJ0eSB7dW5kZWZpbmVkfFN0cmluZ30gc291cmNlXG4gICAqL1xuICBmdW5jdGlvbiBQb3NpdGlvbihzdGFydCkge1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IHsgbGluZTogbGluZW5vLCBjb2x1bW46IGNvbHVtbiB9O1xuICAgIHRoaXMuc291cmNlID0gb3B0aW9ucy5zb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogTm9uLWVudW1lcmFibGUgc291cmNlIHN0cmluZy5cbiAgICovXG4gIFBvc2l0aW9uLnByb3RvdHlwZS5jb250ZW50ID0gc3R5bGU7XG5cbiAgdmFyIGVycm9yc0xpc3QgPSBbXTtcblxuICAvKipcbiAgICogRXJyb3IgYG1zZ2AuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtc2dcbiAgICogQHRocm93cyB7RXJyb3J9XG4gICAqL1xuICBmdW5jdGlvbiBlcnJvcihtc2cpIHtcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgb3B0aW9ucy5zb3VyY2UgKyAnOicgKyBsaW5lbm8gKyAnOicgKyBjb2x1bW4gKyAnOiAnICsgbXNnXG4gICAgKTtcbiAgICBlcnIucmVhc29uID0gbXNnO1xuICAgIGVyci5maWxlbmFtZSA9IG9wdGlvbnMuc291cmNlO1xuICAgIGVyci5saW5lID0gbGluZW5vO1xuICAgIGVyci5jb2x1bW4gPSBjb2x1bW47XG4gICAgZXJyLnNvdXJjZSA9IHN0eWxlO1xuXG4gICAgaWYgKG9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBlcnJvcnNMaXN0LnB1c2goZXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaCBgcmVgIGFuZCByZXR1cm4gY2FwdHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVnRXhwfSByZVxuICAgKiBAcmV0dXJuIHt1bmRlZmluZWR8QXJyYXl9XG4gICAqL1xuICBmdW5jdGlvbiBtYXRjaChyZSkge1xuICAgIHZhciBtID0gcmUuZXhlYyhzdHlsZSk7XG4gICAgaWYgKCFtKSByZXR1cm47XG4gICAgdmFyIHN0ciA9IG1bMF07XG4gICAgdXBkYXRlUG9zaXRpb24oc3RyKTtcbiAgICBzdHlsZSA9IHN0eWxlLnNsaWNlKHN0ci5sZW5ndGgpO1xuICAgIHJldHVybiBtO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIHdoaXRlc3BhY2UuXG4gICAqL1xuICBmdW5jdGlvbiB3aGl0ZXNwYWNlKCkge1xuICAgIG1hdGNoKFdISVRFU1BBQ0VfUkVHRVgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGNvbW1lbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdFtdfSBbcnVsZXNdXG4gICAqIEByZXR1cm4ge09iamVjdFtdfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tbWVudHMocnVsZXMpIHtcbiAgICB2YXIgYztcbiAgICBydWxlcyA9IHJ1bGVzIHx8IFtdO1xuICAgIHdoaWxlICgoYyA9IGNvbW1lbnQoKSkpIHtcbiAgICAgIGlmIChjICE9PSBmYWxzZSkge1xuICAgICAgICBydWxlcy5wdXNoKGMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgY29tbWVudC5cbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKiBAdGhyb3dzIHtFcnJvcn1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnQoKSB7XG4gICAgdmFyIHBvcyA9IHBvc2l0aW9uKCk7XG4gICAgaWYgKEZPUldBUkRfU0xBU0ggIT0gc3R5bGUuY2hhckF0KDApIHx8IEFTVEVSSVNLICE9IHN0eWxlLmNoYXJBdCgxKSkgcmV0dXJuO1xuXG4gICAgdmFyIGkgPSAyO1xuICAgIHdoaWxlIChcbiAgICAgIEVNUFRZX1NUUklORyAhPSBzdHlsZS5jaGFyQXQoaSkgJiZcbiAgICAgIChBU1RFUklTSyAhPSBzdHlsZS5jaGFyQXQoaSkgfHwgRk9SV0FSRF9TTEFTSCAhPSBzdHlsZS5jaGFyQXQoaSArIDEpKVxuICAgICkge1xuICAgICAgKytpO1xuICAgIH1cbiAgICBpICs9IDI7XG5cbiAgICBpZiAoRU1QVFlfU1RSSU5HID09PSBzdHlsZS5jaGFyQXQoaSAtIDEpKSB7XG4gICAgICByZXR1cm4gZXJyb3IoJ0VuZCBvZiBjb21tZW50IG1pc3NpbmcnKTtcbiAgICB9XG5cbiAgICB2YXIgc3RyID0gc3R5bGUuc2xpY2UoMiwgaSAtIDIpO1xuICAgIGNvbHVtbiArPSAyO1xuICAgIHVwZGF0ZVBvc2l0aW9uKHN0cik7XG4gICAgc3R5bGUgPSBzdHlsZS5zbGljZShpKTtcbiAgICBjb2x1bW4gKz0gMjtcblxuICAgIHJldHVybiBwb3Moe1xuICAgICAgdHlwZTogVFlQRV9DT01NRU5ULFxuICAgICAgY29tbWVudDogc3RyXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgZGVjbGFyYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICogQHRocm93cyB7RXJyb3J9XG4gICAqL1xuICBmdW5jdGlvbiBkZWNsYXJhdGlvbigpIHtcbiAgICB2YXIgcG9zID0gcG9zaXRpb24oKTtcblxuICAgIC8vIHByb3BcbiAgICB2YXIgcHJvcCA9IG1hdGNoKFBST1BFUlRZX1JFR0VYKTtcbiAgICBpZiAoIXByb3ApIHJldHVybjtcbiAgICBjb21tZW50KCk7XG5cbiAgICAvLyA6XG4gICAgaWYgKCFtYXRjaChDT0xPTl9SRUdFWCkpIHJldHVybiBlcnJvcihcInByb3BlcnR5IG1pc3NpbmcgJzonXCIpO1xuXG4gICAgLy8gdmFsXG4gICAgdmFyIHZhbCA9IG1hdGNoKFZBTFVFX1JFR0VYKTtcblxuICAgIHZhciByZXQgPSBwb3Moe1xuICAgICAgdHlwZTogVFlQRV9ERUNMQVJBVElPTixcbiAgICAgIHByb3BlcnR5OiB0cmltKHByb3BbMF0ucmVwbGFjZShDT01NRU5UX1JFR0VYLCBFTVBUWV9TVFJJTkcpKSxcbiAgICAgIHZhbHVlOiB2YWxcbiAgICAgICAgPyB0cmltKHZhbFswXS5yZXBsYWNlKENPTU1FTlRfUkVHRVgsIEVNUFRZX1NUUklORykpXG4gICAgICAgIDogRU1QVFlfU1RSSU5HXG4gICAgfSk7XG5cbiAgICAvLyA7XG4gICAgbWF0Y2goU0VNSUNPTE9OX1JFR0VYKTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgZGVjbGFyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAgICovXG4gIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucygpIHtcbiAgICB2YXIgZGVjbHMgPSBbXTtcblxuICAgIGNvbW1lbnRzKGRlY2xzKTtcblxuICAgIC8vIGRlY2xhcmF0aW9uc1xuICAgIHZhciBkZWNsO1xuICAgIHdoaWxlICgoZGVjbCA9IGRlY2xhcmF0aW9uKCkpKSB7XG4gICAgICBpZiAoZGVjbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgZGVjbHMucHVzaChkZWNsKTtcbiAgICAgICAgY29tbWVudHMoZGVjbHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZWNscztcbiAgfVxuXG4gIHdoaXRlc3BhY2UoKTtcbiAgcmV0dXJuIGRlY2xhcmF0aW9ucygpO1xufTtcblxuLyoqXG4gKiBUcmltIGBzdHJgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gdHJpbShzdHIpIHtcbiAgcmV0dXJuIHN0ciA/IHN0ci5yZXBsYWNlKFRSSU1fUkVHRVgsIEVNUFRZX1NUUklORykgOiBFTVBUWV9TVFJJTkc7XG59XG4iLCJ2YXIgcGFyc2UgPSByZXF1aXJlKCdpbmxpbmUtc3R5bGUtcGFyc2VyJyk7XG5cbi8qKlxuICogUGFyc2VzIGlubGluZSBzdHlsZSB0byBvYmplY3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIHJldHVybnMgeyAnbGluZS1oZWlnaHQnOiAnNDInIH1cbiAqIFN0eWxlVG9PYmplY3QoJ2xpbmUtaGVpZ2h0OiA0MjsnKTtcbiAqXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgc3R5bGUgICAgICAtIFRoZSBpbmxpbmUgc3R5bGUuXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gICAgW2l0ZXJhdG9yXSAtIFRoZSBpdGVyYXRvciBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge251bGx8T2JqZWN0fVxuICovXG5mdW5jdGlvbiBTdHlsZVRvT2JqZWN0KHN0eWxlLCBpdGVyYXRvcikge1xuICB2YXIgb3V0cHV0ID0gbnVsbDtcbiAgaWYgKCFzdHlsZSB8fCB0eXBlb2Ygc3R5bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIHZhciBkZWNsYXJhdGlvbjtcbiAgdmFyIGRlY2xhcmF0aW9ucyA9IHBhcnNlKHN0eWxlKTtcbiAgdmFyIGhhc0l0ZXJhdG9yID0gdHlwZW9mIGl0ZXJhdG9yID09PSAnZnVuY3Rpb24nO1xuICB2YXIgcHJvcGVydHk7XG4gIHZhciB2YWx1ZTtcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gZGVjbGFyYXRpb25zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgZGVjbGFyYXRpb24gPSBkZWNsYXJhdGlvbnNbaV07XG4gICAgcHJvcGVydHkgPSBkZWNsYXJhdGlvbi5wcm9wZXJ0eTtcbiAgICB2YWx1ZSA9IGRlY2xhcmF0aW9uLnZhbHVlO1xuXG4gICAgaWYgKGhhc0l0ZXJhdG9yKSB7XG4gICAgICBpdGVyYXRvcihwcm9wZXJ0eSwgdmFsdWUsIGRlY2xhcmF0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICBvdXRwdXQgfHwgKG91dHB1dCA9IHt9KTtcbiAgICAgIG91dHB1dFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0eWxlVG9PYmplY3Q7XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGh0bWwgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sJylcbnZhciBzdmcgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9zdmcnKVxudmFyIGZpbmQgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9maW5kJylcbnZhciBoYXN0VG9SZWFjdCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2hhc3QtdG8tcmVhY3QuanNvbicpXG52YXIgc3BhY2VzID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpXG52YXIgY29tbWFzID0gcmVxdWlyZSgnY29tbWEtc2VwYXJhdGVkLXRva2VucycpXG52YXIgc3R5bGUgPSByZXF1aXJlKCdzdHlsZS10by1vYmplY3QnKVxudmFyIG5zID0gcmVxdWlyZSgnd2ViLW5hbWVzcGFjZXMnKVxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG52YXIgcm9vdCA9IGNvbnZlcnQoJ3Jvb3QnKVxudmFyIGVsZW1lbnQgPSBjb252ZXJ0KCdlbGVtZW50JylcbnZhciB0ZXh0ID0gY29udmVydCgndGV4dCcpXG5cbnZhciBkYXNoZXMgPSAvLShbYS16XSkvZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXBwZXJcblxuZnVuY3Rpb24gd3JhcHBlcihoLCBub2RlLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIHByZWZpeFxuICB2YXIgclxuICB2YXIgdlxuICB2YXIgdmRcblxuICBpZiAodHlwZW9mIGggIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ggaXMgbm90IGEgZnVuY3Rpb24nKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBzZXR0aW5ncyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHNldHRpbmdzID09PSAnYm9vbGVhbicpIHtcbiAgICBwcmVmaXggPSBzZXR0aW5nc1xuICAgIHNldHRpbmdzID0ge31cbiAgfSBlbHNlIHtcbiAgICBwcmVmaXggPSBzZXR0aW5ncy5wcmVmaXhcbiAgfVxuXG4gIHIgPSByZWFjdChoKVxuICB2ID0gdnVlKGgpXG4gIHZkID0gdmRvbShoKVxuXG4gIGlmIChwcmVmaXggPT09IG51bGwgfHwgcHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICBwcmVmaXggPSByID09PSB0cnVlIHx8IHYgPT09IHRydWUgfHwgdmQgPT09IHRydWUgPyAnaC0nIDogZmFsc2VcbiAgfVxuXG4gIGlmIChyb290KG5vZGUpKSB7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGVsZW1lbnQobm9kZS5jaGlsZHJlblswXSkpIHtcbiAgICAgIG5vZGUgPSBub2RlLmNoaWxkcmVuWzBdXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSB7XG4gICAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgICAgdGFnTmFtZTogJ2RpdicsXG4gICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICBjaGlsZHJlbjogbm9kZS5jaGlsZHJlblxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICghZWxlbWVudChub2RlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdFeHBlY3RlZCByb290IG9yIGVsZW1lbnQsIG5vdCBgJyArICgobm9kZSAmJiBub2RlLnR5cGUpIHx8IG5vZGUpICsgJ2AnXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHRvSChoLCBub2RlLCB7XG4gICAgc2NoZW1hOiBzZXR0aW5ncy5zcGFjZSA9PT0gJ3N2ZycgPyBzdmcgOiBodG1sLFxuICAgIHByZWZpeDogcHJlZml4LFxuICAgIGtleTogMCxcbiAgICByZWFjdDogcixcbiAgICB2dWU6IHYsXG4gICAgdmRvbTogdmQsXG4gICAgaHlwZXJzY3JpcHQ6IGh5cGVyc2NyaXB0KGgpXG4gIH0pXG59XG5cbi8vIFRyYW5zZm9ybSBhIGhhc3Qgbm9kZSB0aHJvdWdoIGEgaHlwZXJzY3JpcHQgaW50ZXJmYWNlIHRvICphbnl0aGluZyohXG5mdW5jdGlvbiB0b0goaCwgbm9kZSwgY3R4KSB7XG4gIHZhciBwYXJlbnRTY2hlbWEgPSBjdHguc2NoZW1hXG4gIHZhciBzY2hlbWEgPSBwYXJlbnRTY2hlbWFcbiAgdmFyIG5hbWUgPSBub2RlLnRhZ05hbWVcbiAgdmFyIHByb3BlcnRpZXNcbiAgdmFyIGF0dHJpYnV0ZXNcbiAgdmFyIGNoaWxkcmVuXG4gIHZhciBwcm9wZXJ0eVxuICB2YXIgZWxlbWVudHNcbiAgdmFyIGxlbmd0aFxuICB2YXIgaW5kZXhcbiAgdmFyIHZhbHVlXG4gIHZhciByZXN1bHRcblxuICBpZiAocGFyZW50U2NoZW1hLnNwYWNlID09PSAnaHRtbCcgJiYgbmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ZnJykge1xuICAgIHNjaGVtYSA9IHN2Z1xuICAgIGN0eC5zY2hlbWEgPSBzY2hlbWFcbiAgfVxuXG4gIGlmIChjdHgudmRvbSA9PT0gdHJ1ZSAmJiBzY2hlbWEuc3BhY2UgPT09ICdodG1sJykge1xuICAgIG5hbWUgPSBuYW1lLnRvVXBwZXJDYXNlKClcbiAgfVxuXG4gIHByb3BlcnRpZXMgPSBub2RlLnByb3BlcnRpZXNcbiAgYXR0cmlidXRlcyA9IHt9XG5cbiAgZm9yIChwcm9wZXJ0eSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZXMsIHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSwgY3R4KVxuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiBhdHRyaWJ1dGVzLnN0eWxlID09PSAnc3RyaW5nJyAmJlxuICAgIChjdHgudmRvbSA9PT0gdHJ1ZSB8fCBjdHgudnVlID09PSB0cnVlIHx8IGN0eC5yZWFjdCA9PT0gdHJ1ZSlcbiAgKSB7XG4gICAgLy8gVkRPTSwgVnVlLCBhbmQgUmVhY3QgYWNjZXB0IGBzdHlsZWAgYXMgb2JqZWN0LlxuICAgIGF0dHJpYnV0ZXMuc3R5bGUgPSBwYXJzZVN0eWxlKGF0dHJpYnV0ZXMuc3R5bGUsIG5hbWUpXG4gIH1cblxuICBpZiAoY3R4LnByZWZpeCkge1xuICAgIGN0eC5rZXkrK1xuICAgIGF0dHJpYnV0ZXMua2V5ID0gY3R4LnByZWZpeCArIGN0eC5rZXlcbiAgfVxuXG4gIGlmIChjdHgudmRvbSAmJiBzY2hlbWEuc3BhY2UgIT09ICdodG1sJykge1xuICAgIGF0dHJpYnV0ZXMubmFtZXNwYWNlID0gbnNbc2NoZW1hLnNwYWNlXVxuICB9XG5cbiAgZWxlbWVudHMgPSBbXVxuICBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW5cbiAgbGVuZ3RoID0gY2hpbGRyZW4gPyBjaGlsZHJlbi5sZW5ndGggOiAwXG4gIGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhbHVlID0gY2hpbGRyZW5baW5kZXhdXG5cbiAgICBpZiAoZWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2godG9IKGgsIHZhbHVlLCBjdHgpKVxuICAgIH0gZWxzZSBpZiAodGV4dCh2YWx1ZSkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2godmFsdWUudmFsdWUpXG4gICAgfVxuICB9XG5cbiAgLy8gRW5zdXJlIG5vIFJlYWN0IHdhcm5pbmdzIGFyZSB0cmlnZ2VyZWQgZm9yIHZvaWQgZWxlbWVudHMgaGF2aW5nIGNoaWxkcmVuXG4gIC8vIHBhc3NlZCBpbi5cbiAgcmVzdWx0ID1cbiAgICBlbGVtZW50cy5sZW5ndGggPT09IDAgPyBoKG5hbWUsIGF0dHJpYnV0ZXMpIDogaChuYW1lLCBhdHRyaWJ1dGVzLCBlbGVtZW50cylcblxuICAvLyBSZXN0b3JlIHBhcmVudCBzY2hlbWEuXG4gIGN0eC5zY2hlbWEgPSBwYXJlbnRTY2hlbWFcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGFkZEF0dHJpYnV0ZShwcm9wcywgcHJvcCwgdmFsdWUsIGN0eCkge1xuICB2YXIgaHlwZXJsaWtlID0gY3R4Lmh5cGVyc2NyaXB0IHx8IGN0eC52ZG9tIHx8IGN0eC52dWVcbiAgdmFyIHNjaGVtYSA9IGN0eC5zY2hlbWFcbiAgdmFyIGluZm8gPSBmaW5kKHNjaGVtYSwgcHJvcClcbiAgdmFyIHN1YnByb3BcblxuICAvLyBJZ25vcmUgbnVsbHkgYW5kIGBOYU5gIHZhbHVlcy5cbiAgLy8gSWdub3JlIGBmYWxzZWAgYW5kIGZhbHNleSBrbm93biBib29sZWFucyBmb3IgaHlwZXJsaWtlIERTTHMuXG4gIGlmIChcbiAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICB2YWx1ZSAhPT0gdmFsdWUgfHxcbiAgICAoaHlwZXJsaWtlICYmIHZhbHVlID09PSBmYWxzZSkgfHxcbiAgICAoaHlwZXJsaWtlICYmIGluZm8uYm9vbGVhbiAmJiAhdmFsdWUpXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gdmFsdWUpIHtcbiAgICAvLyBBY2NlcHQgYGFycmF5YC5cbiAgICAvLyBNb3N0IHByb3BzIGFyZSBzcGFjZS1zZXBhcmF0ZWQuXG4gICAgdmFsdWUgPSAoaW5mby5jb21tYVNlcGFyYXRlZCA/IGNvbW1hcyA6IHNwYWNlcykuc3RyaW5naWZ5KHZhbHVlKVxuICB9XG5cbiAgLy8gVHJlYXQgYHRydWVgIGFuZCB0cnV0aHkga25vd24gYm9vbGVhbnMuXG4gIGlmIChpbmZvLmJvb2xlYW4gJiYgY3R4Lmh5cGVyc2NyaXB0ID09PSB0cnVlKSB7XG4gICAgdmFsdWUgPSAnJ1xuICB9XG5cbiAgaWYgKGN0eC52dWUpIHtcbiAgICBpZiAocHJvcCAhPT0gJ3N0eWxlJykge1xuICAgICAgc3VicHJvcCA9ICdhdHRycydcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWluZm8ubXVzdFVzZVByb3BlcnR5KSB7XG4gICAgaWYgKGN0eC52ZG9tID09PSB0cnVlKSB7XG4gICAgICBzdWJwcm9wID0gJ2F0dHJpYnV0ZXMnXG4gICAgfSBlbHNlIGlmIChjdHguaHlwZXJzY3JpcHQgPT09IHRydWUpIHtcbiAgICAgIHN1YnByb3AgPSAnYXR0cnMnXG4gICAgfVxuICB9XG5cbiAgaWYgKHN1YnByb3ApIHtcbiAgICBpZiAocHJvcHNbc3VicHJvcF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvcHNbc3VicHJvcF0gPSB7fVxuICAgIH1cblxuICAgIHByb3BzW3N1YnByb3BdW2luZm8uYXR0cmlidXRlXSA9IHZhbHVlXG4gIH0gZWxzZSBpZiAoY3R4LnJlYWN0ICYmIGluZm8uc3BhY2UpIHtcbiAgICBwcm9wc1toYXN0VG9SZWFjdFtpbmZvLnByb3BlcnR5XSB8fCBpbmZvLnByb3BlcnR5XSA9IHZhbHVlXG4gIH0gZWxzZSB7XG4gICAgcHJvcHNbaW5mby5hdHRyaWJ1dGVdID0gdmFsdWVcbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgaGAgaXMgYHJlYWN0LmNyZWF0ZUVsZW1lbnRgLlxuZnVuY3Rpb24gcmVhY3QoaCkge1xuICB2YXIgbm9kZSA9IGggJiYgaCgnZGl2JylcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgbm9kZSAmJiAoJ19vd25lcicgaW4gbm9kZSB8fCAnX3N0b3JlJyBpbiBub2RlKSAmJiBub2RlLmtleSA9PT0gbnVsbFxuICApXG59XG5cbi8vIENoZWNrIGlmIGBoYCBpcyBgaHlwZXJzY3JpcHRgLlxuZnVuY3Rpb24gaHlwZXJzY3JpcHQoaCkge1xuICByZXR1cm4gQm9vbGVhbihoICYmIGguY29udGV4dCAmJiBoLmNsZWFudXApXG59XG5cbi8vIENoZWNrIGlmIGBoYCBpcyBgdmlydHVhbC1kb20vaGAuXG5mdW5jdGlvbiB2ZG9tKGgpIHtcbiAgcmV0dXJuIGggJiYgaCgnZGl2JykudHlwZSA9PT0gJ1ZpcnR1YWxOb2RlJ1xufVxuXG5mdW5jdGlvbiB2dWUoaCkge1xuICB2YXIgbm9kZSA9IGggJiYgaCgnZGl2JylcbiAgcmV0dXJuIEJvb2xlYW4obm9kZSAmJiBub2RlLmNvbnRleHQgJiYgbm9kZS5jb250ZXh0Ll9pc1Z1ZSlcbn1cblxuZnVuY3Rpb24gcGFyc2VTdHlsZSh2YWx1ZSwgdGFnTmFtZSkge1xuICB2YXIgcmVzdWx0ID0ge31cblxuICB0cnkge1xuICAgIHN0eWxlKHZhbHVlLCBpdGVyYXRvcilcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBlcnJvci5tZXNzYWdlID1cbiAgICAgIHRhZ05hbWUgKyAnW3N0eWxlXScgKyBlcnJvci5tZXNzYWdlLnNsaWNlKCd1bmRlZmluZWQnLmxlbmd0aClcbiAgICB0aHJvdyBlcnJvclxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxuXG4gIGZ1bmN0aW9uIGl0ZXJhdG9yKG5hbWUsIHZhbHVlKSB7XG4gICAgcmVzdWx0W3N0eWxlQ2FzZShuYW1lKV0gPSB2YWx1ZVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0eWxlQ2FzZSh2YWwpIHtcbiAgaWYgKHZhbC5zbGljZSgwLCA0KSA9PT0gJy1tcy0nKSB7XG4gICAgdmFsID0gJ21zLScgKyB2YWwuc2xpY2UoNClcbiAgfVxuXG4gIHJldHVybiB2YWwucmVwbGFjZShkYXNoZXMsIHN0eWxlUmVwbGFjZXIpXG59XG5cbmZ1bmN0aW9uIHN0eWxlUmVwbGFjZXIoJDAsICQxKSB7XG4gIHJldHVybiAkMS50b1VwcGVyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG5cbnZhciBub29wID0gRnVuY3Rpb24ucHJvdG90eXBlXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gSGFuZGxlIHZhbHVlcyBiYXNlZCBvbiBhIHByb3BlcnR5LlxuZnVuY3Rpb24gZmFjdG9yeShrZXksIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuXG4gIGZ1bmN0aW9uIG9uZSh2YWx1ZSkge1xuICAgIHZhciBmbiA9IG9uZS5pbnZhbGlkXG4gICAgdmFyIGhhbmRsZXJzID0gb25lLmhhbmRsZXJzXG5cbiAgICBpZiAodmFsdWUgJiYgb3duLmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgIGZuID0gb3duLmNhbGwoaGFuZGxlcnMsIHZhbHVlW2tleV0pID8gaGFuZGxlcnNbdmFsdWVba2V5XV0gOiBvbmUudW5rbm93blxuICAgIH1cblxuICAgIHJldHVybiAoZm4gfHwgbm9vcCkuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICB9XG5cbiAgb25lLmhhbmRsZXJzID0gc2V0dGluZ3MuaGFuZGxlcnMgfHwge31cbiAgb25lLmludmFsaWQgPSBzZXR0aW5ncy5pbnZhbGlkXG4gIG9uZS51bmtub3duID0gc2V0dGluZ3MudW5rbm93blxuXG4gIHJldHVybiBvbmVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgaHRtbCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2h0bWwnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgZmluZCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2ZpbmQnKVxudmFyIHRvSCA9IHJlcXVpcmUoJ2hhc3QtdG8taHlwZXJzY3JpcHQnKVxudmFyIG5zID0gcmVxdWlyZSgnd2ViLW5hbWVzcGFjZXMnKVxudmFyIHp3aXRjaCA9IHJlcXVpcmUoJ3p3aXRjaCcpXG5cbm1vZHVsZS5leHBvcnRzID0gdHJhbnNmb3JtXG5cbnZhciBpZ25vcmVkU3BhY2VzID0gWydzdmcnLCAnaHRtbCddXG5cbnZhciBvbmUgPSB6d2l0Y2goJ3R5cGUnKVxuXG5vbmUuaGFuZGxlcnMucm9vdCA9IHJvb3Rcbm9uZS5oYW5kbGVycy5lbGVtZW50ID0gZWxlbWVudFxub25lLmhhbmRsZXJzLnRleHQgPSB0ZXh0XG5vbmUuaGFuZGxlcnMuY29tbWVudCA9IGNvbW1lbnRcbm9uZS5oYW5kbGVycy5kb2N0eXBlID0gZG9jdHlwZVxuXG4vLyBUcmFuc2Zvcm0gYSB0cmVlIGZyb20gaGFzdCB0byBQYXJzZTXigJlzIEFTVC5cbmZ1bmN0aW9uIHRyYW5zZm9ybSh0cmVlLCBzcGFjZSkge1xuICByZXR1cm4gb25lKHRyZWUsIHNwYWNlID09PSAnc3ZnJyA/IHN2ZyA6IGh0bWwpXG59XG5cbmZ1bmN0aW9uIHJvb3Qobm9kZSwgc2NoZW1hKSB7XG4gIHZhciBkYXRhID0gbm9kZS5kYXRhIHx8IHt9XG4gIHZhciBtb2RlID0gZGF0YS5xdWlya3NNb2RlID8gJ3F1aXJrcycgOiAnbm8tcXVpcmtzJ1xuXG4gIHJldHVybiBwYXRjaChub2RlLCB7bm9kZU5hbWU6ICcjZG9jdW1lbnQnLCBtb2RlOiBtb2RlfSwgc2NoZW1hKVxufVxuXG5mdW5jdGlvbiBmcmFnbWVudChub2RlLCBzY2hlbWEpIHtcbiAgcmV0dXJuIHBhdGNoKG5vZGUsIHtub2RlTmFtZTogJyNkb2N1bWVudC1mcmFnbWVudCd9LCBzY2hlbWEpXG59XG5cbmZ1bmN0aW9uIGRvY3R5cGUobm9kZSwgc2NoZW1hKSB7XG4gIHJldHVybiBwYXRjaChcbiAgICBub2RlLFxuICAgIHtcbiAgICAgIG5vZGVOYW1lOiAnI2RvY3VtZW50VHlwZScsXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgICBwdWJsaWNJZDogbm9kZS5wdWJsaWMgfHwgJycsXG4gICAgICBzeXN0ZW1JZDogbm9kZS5zeXN0ZW0gfHwgJydcbiAgICB9LFxuICAgIHNjaGVtYVxuICApXG59XG5cbmZ1bmN0aW9uIHRleHQobm9kZSwgc2NoZW1hKSB7XG4gIHJldHVybiBwYXRjaChub2RlLCB7bm9kZU5hbWU6ICcjdGV4dCcsIHZhbHVlOiBub2RlLnZhbHVlfSwgc2NoZW1hKVxufVxuXG5mdW5jdGlvbiBjb21tZW50KG5vZGUsIHNjaGVtYSkge1xuICByZXR1cm4gcGF0Y2gobm9kZSwge25vZGVOYW1lOiAnI2NvbW1lbnQnLCBkYXRhOiBub2RlLnZhbHVlfSwgc2NoZW1hKVxufVxuXG5mdW5jdGlvbiBlbGVtZW50KG5vZGUsIHNjaGVtYSkge1xuICB2YXIgc3BhY2UgPSBzY2hlbWEuc3BhY2VcbiAgdmFyIHNoYWxsb3cgPSB4dGVuZChub2RlLCB7Y2hpbGRyZW46IFtdfSlcblxuICByZXR1cm4gdG9IKGgsIHNoYWxsb3csIHtzcGFjZTogc3BhY2V9KVxuXG4gIGZ1bmN0aW9uIGgobmFtZSwgYXR0cnMpIHtcbiAgICB2YXIgdmFsdWVzID0gW11cbiAgICB2YXIgcDVcbiAgICB2YXIgYXR0clxuICAgIHZhciB2YWx1ZVxuICAgIHZhciBrZXlcbiAgICB2YXIgaW5mb1xuICAgIHZhciBwb3NcblxuICAgIGZvciAoa2V5IGluIGF0dHJzKSB7XG4gICAgICBpbmZvID0gZmluZChzY2hlbWEsIGtleSlcbiAgICAgIGF0dHIgPSBhdHRyc1trZXldXG5cbiAgICAgIGlmIChhdHRyID09PSBmYWxzZSB8fCAoaW5mby5ib29sZWFuICYmICFhdHRyKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IHtuYW1lOiBrZXksIHZhbHVlOiBhdHRyID09PSB0cnVlID8gJycgOiBTdHJpbmcoYXR0cil9XG5cbiAgICAgIGlmIChpbmZvLnNwYWNlICYmIGlnbm9yZWRTcGFjZXMuaW5kZXhPZihpbmZvLnNwYWNlKSA9PT0gLTEpIHtcbiAgICAgICAgcG9zID0ga2V5LmluZGV4T2YoJzonKVxuXG4gICAgICAgIGlmIChwb3MgPT09IC0xKSB7XG4gICAgICAgICAgdmFsdWUucHJlZml4ID0gJydcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZS5uYW1lID0ga2V5LnNsaWNlKHBvcyArIDEpXG4gICAgICAgICAgdmFsdWUucHJlZml4ID0ga2V5LnNsaWNlKDAsIHBvcylcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlLm5hbWVzcGFjZSA9IG5zW2luZm8uc3BhY2VdXG4gICAgICB9XG5cbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKVxuICAgIH1cblxuICAgIHA1ID0gcGF0Y2gobm9kZSwge25vZGVOYW1lOiBuYW1lLCB0YWdOYW1lOiBuYW1lLCBhdHRyczogdmFsdWVzfSwgc2NoZW1hKVxuXG4gICAgaWYgKG5hbWUgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIHA1LmNvbnRlbnQgPSBmcmFnbWVudChzaGFsbG93LmNvbnRlbnQsIHNjaGVtYSlcbiAgICB9XG5cbiAgICByZXR1cm4gcDVcbiAgfVxufVxuXG4vLyBQYXRjaCBzcGVjaWZpYyBwcm9wZXJ0aWVzLlxuZnVuY3Rpb24gcGF0Y2gobm9kZSwgcDUsIHBhcmVudFNjaGVtYSkge1xuICB2YXIgc2NoZW1hID0gcGFyZW50U2NoZW1hXG4gIHZhciBwb3NpdGlvbiA9IG5vZGUucG9zaXRpb25cbiAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlblxuICB2YXIgY2hpbGROb2RlcyA9IFtdXG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbiA/IGNoaWxkcmVuLmxlbmd0aCA6IDBcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGNoaWxkXG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgaWYgKHNjaGVtYS5zcGFjZSA9PT0gJ2h0bWwnICYmIG5vZGUudGFnTmFtZSA9PT0gJ3N2ZycpIHtcbiAgICAgIHNjaGVtYSA9IHN2Z1xuICAgIH1cblxuICAgIHA1Lm5hbWVzcGFjZVVSSSA9IG5zW3NjaGVtYS5zcGFjZV1cbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hpbGQgPSBvbmUoY2hpbGRyZW5baW5kZXhdLCBzY2hlbWEpXG4gICAgY2hpbGQucGFyZW50Tm9kZSA9IHA1XG4gICAgY2hpbGROb2Rlc1tpbmRleF0gPSBjaGlsZFxuICB9XG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnIHx8IG5vZGUudHlwZSA9PT0gJ3Jvb3QnKSB7XG4gICAgcDUuY2hpbGROb2RlcyA9IGNoaWxkTm9kZXNcbiAgfVxuXG4gIGlmIChwb3NpdGlvbiAmJiBwb3NpdGlvbi5zdGFydCAmJiBwb3NpdGlvbi5lbmQpIHtcbiAgICBwNS5zb3VyY2VDb2RlTG9jYXRpb24gPSB7XG4gICAgICBzdGFydExpbmU6IHBvc2l0aW9uLnN0YXJ0LmxpbmUsXG4gICAgICBzdGFydENvbDogcG9zaXRpb24uc3RhcnQuY29sdW1uLFxuICAgICAgc3RhcnRPZmZzZXQ6IHBvc2l0aW9uLnN0YXJ0Lm9mZnNldCxcbiAgICAgIGVuZExpbmU6IHBvc2l0aW9uLmVuZC5saW5lLFxuICAgICAgZW5kQ29sOiBwb3NpdGlvbi5lbmQuY29sdW1uLFxuICAgICAgZW5kT2Zmc2V0OiBwb3NpdGlvbi5lbmQub2Zmc2V0XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHA1XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIFBhcnNlciA9IHJlcXVpcmUoJ3BhcnNlNS9saWIvcGFyc2VyJylcbnZhciBwb3MgPSByZXF1aXJlKCd1bmlzdC11dGlsLXBvc2l0aW9uJylcbnZhciBmcm9tUGFyc2U1ID0gcmVxdWlyZSgnaGFzdC11dGlsLWZyb20tcGFyc2U1JylcbnZhciB0b1BhcnNlNSA9IHJlcXVpcmUoJ2hhc3QtdXRpbC10by1wYXJzZTUnKVxudmFyIHZvaWRzID0gcmVxdWlyZSgnaHRtbC12b2lkLWVsZW1lbnRzJylcbnZhciBucyA9IHJlcXVpcmUoJ3dlYi1uYW1lc3BhY2VzJylcbnZhciB6d2l0Y2ggPSByZXF1aXJlKCd6d2l0Y2gnKVxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXBcblxudmFyIGluVGVtcGxhdGVNb2RlID0gJ0lOX1RFTVBMQVRFX01PREUnXG52YXIgZGF0YVN0YXRlID0gJ0RBVEFfU1RBVEUnXG52YXIgY2hhcmFjdGVyVG9rZW4gPSAnQ0hBUkFDVEVSX1RPS0VOJ1xudmFyIHN0YXJ0VGFnVG9rZW4gPSAnU1RBUlRfVEFHX1RPS0VOJ1xudmFyIGVuZFRhZ1Rva2VuID0gJ0VORF9UQUdfVE9LRU4nXG52YXIgY29tbWVudFRva2VuID0gJ0NPTU1FTlRfVE9LRU4nXG52YXIgZG9jdHlwZVRva2VuID0gJ0RPQ1RZUEVfVE9LRU4nXG5cbnZhciBwYXJzZU9wdGlvbnMgPSB7XG4gIHNvdXJjZUNvZGVMb2NhdGlvbkluZm86IHRydWUsXG4gIHNjcmlwdGluZ0VuYWJsZWQ6IGZhbHNlXG59XG5cbmZ1bmN0aW9uIHdyYXAodHJlZSwgZmlsZSkge1xuICB2YXIgcGFyc2VyID0gbmV3IFBhcnNlcihwYXJzZU9wdGlvbnMpXG4gIHZhciBvbmUgPSB6d2l0Y2goJ3R5cGUnKVxuICB2YXIgdG9rZW5pemVyXG4gIHZhciBwcmVwcm9jZXNzb3JcbiAgdmFyIHBvc1RyYWNrZXJcbiAgdmFyIGxvY2F0aW9uVHJhY2tlclxuICB2YXIgcmVzdWx0XG5cbiAgb25lLmhhbmRsZXJzLnJvb3QgPSByb290XG4gIG9uZS5oYW5kbGVycy5lbGVtZW50ID0gZWxlbWVudFxuICBvbmUuaGFuZGxlcnMudGV4dCA9IHRleHRcbiAgb25lLmhhbmRsZXJzLmNvbW1lbnQgPSBjb21tZW50XG4gIG9uZS5oYW5kbGVycy5kb2N0eXBlID0gZG9jdHlwZVxuICBvbmUuaGFuZGxlcnMucmF3ID0gcmF3XG4gIG9uZS51bmtub3duID0gdW5rbm93blxuXG4gIHJlc3VsdCA9IGZyb21QYXJzZTUoZG9jdW1lbnRNb2RlKHRyZWUpID8gZG9jdW1lbnQoKSA6IGZyYWdtZW50KCksIGZpbGUpXG5cbiAgLy8gVW5wYWNrIGlmIHBvc3NpYmxlIGFuZCB3aGVuIG5vdCBnaXZlbiBhIGByb290YC5cbiAgaWYgKHRyZWUudHlwZSAhPT0gJ3Jvb3QnICYmIHJlc3VsdC5jaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gcmVzdWx0LmNoaWxkcmVuWzBdXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG5cbiAgZnVuY3Rpb24gZnJhZ21lbnQoKSB7XG4gICAgdmFyIGNvbnRleHRcbiAgICB2YXIgbW9ja1xuICAgIHZhciBkb2NcblxuICAgIGNvbnRleHQgPSB7XG4gICAgICBub2RlTmFtZTogJ3RlbXBsYXRlJyxcbiAgICAgIHRhZ05hbWU6ICd0ZW1wbGF0ZScsXG4gICAgICBhdHRyczogW10sXG4gICAgICBuYW1lc3BhY2VVUkk6IG5zLmh0bWwsXG4gICAgICBjaGlsZE5vZGVzOiBbXVxuICAgIH1cblxuICAgIG1vY2sgPSB7XG4gICAgICBub2RlTmFtZTogJ2RvY3VtZW50bW9jaycsXG4gICAgICB0YWdOYW1lOiAnZG9jdW1lbnRtb2NrJyxcbiAgICAgIGF0dHJzOiBbXSxcbiAgICAgIG5hbWVzcGFjZVVSSTogbnMuaHRtbCxcbiAgICAgIGNoaWxkTm9kZXM6IFtdXG4gICAgfVxuXG4gICAgZG9jID0ge1xuICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnQtZnJhZ21lbnQnLFxuICAgICAgY2hpbGROb2RlczogW11cbiAgICB9XG5cbiAgICBwYXJzZXIuX2Jvb3RzdHJhcChtb2NrLCBjb250ZXh0KVxuICAgIHBhcnNlci5fcHVzaFRtcGxJbnNlcnRpb25Nb2RlKGluVGVtcGxhdGVNb2RlKVxuICAgIHBhcnNlci5faW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZygpXG4gICAgcGFyc2VyLl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKVxuICAgIHBhcnNlci5fcmVzZXRJbnNlcnRpb25Nb2RlKClcbiAgICBwYXJzZXIuX2ZpbmRGb3JtSW5GcmFnbWVudENvbnRleHQoKVxuXG4gICAgdG9rZW5pemVyID0gcGFyc2VyLnRva2VuaXplclxuICAgIHByZXByb2Nlc3NvciA9IHRva2VuaXplci5wcmVwcm9jZXNzb3JcbiAgICBsb2NhdGlvblRyYWNrZXIgPSB0b2tlbml6ZXIuX19taXhpbnNbMF1cbiAgICBwb3NUcmFja2VyID0gbG9jYXRpb25UcmFja2VyLnBvc1RyYWNrZXJcblxuICAgIG9uZSh0cmVlKVxuXG4gICAgcGFyc2VyLl9hZG9wdE5vZGVzKG1vY2suY2hpbGROb2Rlc1swXSwgZG9jKVxuXG4gICAgcmV0dXJuIGRvY1xuICB9XG5cbiAgZnVuY3Rpb24gZG9jdW1lbnQoKSB7XG4gICAgdmFyIGRvYyA9IHBhcnNlci50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudCgpXG5cbiAgICBwYXJzZXIuX2Jvb3RzdHJhcChkb2MsIG51bGwpXG4gICAgdG9rZW5pemVyID0gcGFyc2VyLnRva2VuaXplclxuICAgIHByZXByb2Nlc3NvciA9IHRva2VuaXplci5wcmVwcm9jZXNzb3JcbiAgICBsb2NhdGlvblRyYWNrZXIgPSB0b2tlbml6ZXIuX19taXhpbnNbMF1cbiAgICBwb3NUcmFja2VyID0gbG9jYXRpb25UcmFja2VyLnBvc1RyYWNrZXJcblxuICAgIG9uZSh0cmVlKVxuXG4gICAgcmV0dXJuIGRvY1xuICB9XG5cbiAgZnVuY3Rpb24gYWxsKG5vZGVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IDBcbiAgICB2YXIgaW5kZXggPSAtMVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgLSBpbnZhbGlkIG5vZGVzLCBzZWUgcmVoeXBlanMvcmVoeXBlLXJhdyM3LiAqL1xuICAgIGlmIChub2Rlcykge1xuICAgICAgbGVuZ3RoID0gbm9kZXMubGVuZ3RoXG4gICAgfVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIG9uZShub2Rlc1tpbmRleF0pXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcm9vdChub2RlKSB7XG4gICAgYWxsKG5vZGUuY2hpbGRyZW4pXG4gIH1cblxuICBmdW5jdGlvbiBlbGVtZW50KG5vZGUpIHtcbiAgICB2YXIgZW1wdHkgPSB2b2lkcy5pbmRleE9mKG5vZGUudGFnTmFtZSkgIT09IC0xXG5cbiAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbihzdGFydFRhZyhub2RlKSwgbnMuaHRtbClcblxuICAgIGFsbChub2RlLmNoaWxkcmVuKVxuXG4gICAgaWYgKCFlbXB0eSkge1xuICAgICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oZW5kVGFnKG5vZGUpKVxuXG4gICAgICAvLyBQdXQgdGhlIHBhcnNlciBiYWNrIGluIHRoZSBkYXRhIHN0YXRlOiBzb21lIGVsZW1lbnRzLCBsaWtlIHRleHRhcmVhc1xuICAgICAgLy8gYW5kIGlmcmFtZXMsIGNoYW5nZSB0aGUgc3RhdGUuXG4gICAgICAvLyBTZWUgPHN5bnRheC10cmVlL2hhc3QtdXRpbC1yYXcjNz4uXG4gICAgICAvLyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi8yNTI4MTk2L3BhY2thZ2VzL3BhcnNlNS9saWIvdG9rZW5pemVyL2luZGV4LmpzI0wyMjI+LlxuICAgICAgdG9rZW5pemVyLnN0YXRlID0gZGF0YVN0YXRlXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdGV4dChub2RlKSB7XG4gICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oe1xuICAgICAgdHlwZTogY2hhcmFjdGVyVG9rZW4sXG4gICAgICBjaGFyczogbm9kZS52YWx1ZSxcbiAgICAgIGxvY2F0aW9uOiBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBkb2N0eXBlKG5vZGUpIHtcbiAgICB2YXIgcDUgPSB0b1BhcnNlNShub2RlKVxuXG4gICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oe1xuICAgICAgdHlwZTogZG9jdHlwZVRva2VuLFxuICAgICAgbmFtZTogcDUubmFtZSxcbiAgICAgIGZvcmNlUXVpcmtzOiBmYWxzZSxcbiAgICAgIHB1YmxpY0lkOiBwNS5wdWJsaWNJZCxcbiAgICAgIHN5c3RlbUlkOiBwNS5zeXN0ZW1JZCxcbiAgICAgIGxvY2F0aW9uOiBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBjb21tZW50KG5vZGUpIHtcbiAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbih7XG4gICAgICB0eXBlOiBjb21tZW50VG9rZW4sXG4gICAgICBkYXRhOiBub2RlLnZhbHVlLFxuICAgICAgbG9jYXRpb246IGNyZWF0ZVBhcnNlNUxvY2F0aW9uKG5vZGUpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHJhdyhub2RlKSB7XG4gICAgdmFyIHN0YXJ0ID0gcG9zLnN0YXJ0KG5vZGUpXG4gICAgdmFyIHRva2VuXG5cbiAgICAvLyBSZXNldCBwcmVwcm9jZXNzb3I6XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvcHJlcHJvY2Vzc29yLmpzPi5cbiAgICBwcmVwcm9jZXNzb3IuaHRtbCA9IG51bGxcbiAgICBwcmVwcm9jZXNzb3IuZW5kT2ZDaHVua0hpdCA9IGZhbHNlXG4gICAgcHJlcHJvY2Vzc29yLmxhc3RDaHVua1dyaXR0ZW4gPSBmYWxzZVxuICAgIHByZXByb2Nlc3Nvci5sYXN0Q2hhclBvcyA9IC0xXG4gICAgcHJlcHJvY2Vzc29yLnBvcyA9IC0xXG5cbiAgICAvLyBSZXNldCBwcmVwcm9jZXNzb3IgbWl4aW46XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL3Bvc2l0aW9uLXRyYWNraW5nL3ByZXByb2Nlc3Nvci1taXhpbi5qcz4uXG4gICAgcG9zVHJhY2tlci5kcm9wcGVkQnVmZmVyU2l6ZSA9IDBcbiAgICBwb3NUcmFja2VyLmxpbmUgPSBzdGFydC5saW5lXG4gICAgcG9zVHJhY2tlci5jb2wgPSAxXG4gICAgcG9zVHJhY2tlci5vZmZzZXQgPSAwXG4gICAgcG9zVHJhY2tlci5saW5lU3RhcnRQb3MgPSAtc3RhcnQuY29sdW1uICsgMVxuICAgIHBvc1RyYWNrZXIuZHJvcHBlZEJ1ZmZlclNpemUgPSBzdGFydC5vZmZzZXRcblxuICAgIC8vIFJlc2V0IGxvY2F0aW9uIHRyYWNrZXI6XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL2xvY2F0aW9uLWluZm8vdG9rZW5pemVyLW1peGluLmpzPi5cbiAgICBsb2NhdGlvblRyYWNrZXIuY3VycmVudEF0dHJMb2NhdGlvbiA9IG51bGxcbiAgICBsb2NhdGlvblRyYWNrZXIuY3RMb2MgPSBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuXG4gICAgLy8gU2VlIHRoZSBjb2RlIGZvciBgcGFyc2VgIGFuZCBgcGFyc2VGcmFnbWVudGA6XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi9wYXJzZXIvaW5kZXguanMjTDM3MT4uXG4gICAgdG9rZW5pemVyLndyaXRlKG5vZGUudmFsdWUpXG4gICAgcGFyc2VyLl9ydW5QYXJzaW5nTG9vcChudWxsKVxuXG4gICAgLy8gUHJvY2VzcyBmaW5hbCBjaGFyYWN0ZXJzIGlmIHRoZXnigJlyZSBzdGlsbCB0aGVyZSBhZnRlciBoaWJlcm5hdGluZy5cbiAgICAvLyBTaW1pbGFyIHRvOlxuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi8zYmZhN2Q5L3BhY2thZ2VzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9sb2NhdGlvbi1pbmZvL3Rva2VuaXplci1taXhpbi5qcyNMOTU+LlxuICAgIHRva2VuID0gdG9rZW5pemVyLmN1cnJlbnRDaGFyYWN0ZXJUb2tlblxuXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0b2tlbi5sb2NhdGlvbi5lbmRMaW5lID0gcG9zVHJhY2tlci5saW5lXG4gICAgICB0b2tlbi5sb2NhdGlvbi5lbmRDb2wgPSBwb3NUcmFja2VyLmNvbCArIDFcbiAgICAgIHRva2VuLmxvY2F0aW9uLmVuZE9mZnNldCA9IHBvc1RyYWNrZXIub2Zmc2V0ICsgMVxuICAgICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4odG9rZW4pXG4gICAgfVxuXG4gICAgLy8gUmVzZXQgdG9rZW5pemVyOlxuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi84YjAwNDhlL3BhY2thZ2VzL3BhcnNlNS9saWIvdG9rZW5pemVyL2luZGV4LmpzI0wyMTU+LlxuICAgIHRva2VuaXplci5jdXJyZW50VG9rZW4gPSBudWxsXG4gICAgdG9rZW5pemVyLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGxcbiAgICB0b2tlbml6ZXIuY3VycmVudEF0dHIgPSBudWxsXG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhcnRUYWcobm9kZSkge1xuICB2YXIgbG9jYXRpb24gPSBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuXG4gIGxvY2F0aW9uLnN0YXJ0VGFnID0geHRlbmQobG9jYXRpb24pXG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBzdGFydFRhZ1Rva2VuLFxuICAgIHRhZ05hbWU6IG5vZGUudGFnTmFtZSxcbiAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgYXR0cnM6IGF0dHJpYnV0ZXMobm9kZSksXG4gICAgbG9jYXRpb246IGxvY2F0aW9uXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0cmlidXRlcyhub2RlKSB7XG4gIHJldHVybiB0b1BhcnNlNSh7XG4gICAgdGFnTmFtZTogbm9kZS50YWdOYW1lLFxuICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICBwcm9wZXJ0aWVzOiBub2RlLnByb3BlcnRpZXNcbiAgfSkuYXR0cnNcbn1cblxuZnVuY3Rpb24gZW5kVGFnKG5vZGUpIHtcbiAgdmFyIGxvY2F0aW9uID0gY3JlYXRlUGFyc2U1TG9jYXRpb24obm9kZSlcblxuICBsb2NhdGlvbi5lbmRUYWcgPSB4dGVuZChsb2NhdGlvbilcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGVuZFRhZ1Rva2VuLFxuICAgIHRhZ05hbWU6IG5vZGUudGFnTmFtZSxcbiAgICBhdHRyczogW10sXG4gICAgbG9jYXRpb246IGxvY2F0aW9uXG4gIH1cbn1cblxuZnVuY3Rpb24gdW5rbm93bihub2RlKSB7XG4gIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbXBpbGUgYCcgKyBub2RlLnR5cGUgKyAnYCBub2RlJylcbn1cblxuZnVuY3Rpb24gZG9jdW1lbnRNb2RlKG5vZGUpIHtcbiAgdmFyIGhlYWQgPSBub2RlLnR5cGUgPT09ICdyb290JyA/IG5vZGUuY2hpbGRyZW5bMF0gOiBub2RlXG5cbiAgcmV0dXJuIGhlYWQgJiYgKGhlYWQudHlwZSA9PT0gJ2RvY3R5cGUnIHx8IGhlYWQudGFnTmFtZSA9PT0gJ2h0bWwnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKSB7XG4gIHZhciBzdGFydCA9IHBvcy5zdGFydChub2RlKVxuICB2YXIgZW5kID0gcG9zLmVuZChub2RlKVxuXG4gIHJldHVybiB7XG4gICAgc3RhcnRMaW5lOiBzdGFydC5saW5lLFxuICAgIHN0YXJ0Q29sOiBzdGFydC5jb2x1bW4sXG4gICAgc3RhcnRPZmZzZXQ6IHN0YXJ0Lm9mZnNldCxcbiAgICBlbmRMaW5lOiBlbmQubGluZSxcbiAgICBlbmRDb2w6IGVuZC5jb2x1bW4sXG4gICAgZW5kT2Zmc2V0OiBlbmQub2Zmc2V0XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1yYXcnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJhd1xuXG5mdW5jdGlvbiByYXcoKSB7XG4gIHJldHVybiB1dGlsXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0XG5cbmZ1bmN0aW9uIGNvbnZlcnQodGVzdCkge1xuICBpZiAodHlwZW9mIHRlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGVGYWN0b3J5KHRlc3QpXG4gIH1cblxuICBpZiAodGVzdCA9PT0gbnVsbCB8fCB0ZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gb2tcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gKCdsZW5ndGgnIGluIHRlc3QgPyBhbnlGYWN0b3J5IDogbWF0Y2hlc0ZhY3RvcnkpKHRlc3QpXG4gIH1cblxuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdGVzdFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiwgc3RyaW5nLCBvciBvYmplY3QgYXMgdGVzdCcpXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRBbGwodGVzdHMpIHtcbiAgdmFyIHJlc3VsdHMgPSBbXVxuICB2YXIgbGVuZ3RoID0gdGVzdHMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRzW2luZGV4XSA9IGNvbnZlcnQodGVzdHNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHNcbn1cblxuLy8gVXRpbGl0eSBhc3NlcnQgZWFjaCBwcm9wZXJ0eSBpbiBgdGVzdGAgaXMgcmVwcmVzZW50ZWQgaW4gYG5vZGVgLCBhbmQgZWFjaFxuLy8gdmFsdWVzIGFyZSBzdHJpY3RseSBlcXVhbC5cbmZ1bmN0aW9uIG1hdGNoZXNGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIG1hdGNoZXNcblxuICBmdW5jdGlvbiBtYXRjaGVzKG5vZGUpIHtcbiAgICB2YXIga2V5XG5cbiAgICBmb3IgKGtleSBpbiB0ZXN0KSB7XG4gICAgICBpZiAobm9kZVtrZXldICE9PSB0ZXN0W2tleV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG5mdW5jdGlvbiBhbnlGYWN0b3J5KHRlc3RzKSB7XG4gIHZhciBjaGVja3MgPSBjb252ZXJ0QWxsKHRlc3RzKVxuICB2YXIgbGVuZ3RoID0gY2hlY2tzLmxlbmd0aFxuXG4gIHJldHVybiBtYXRjaGVzXG5cbiAgZnVuY3Rpb24gbWF0Y2hlcygpIHtcbiAgICB2YXIgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjaGVja3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIGNvbnZlcnQgYSBzdHJpbmcgaW50byBhIGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBhIGdpdmVuIG5vZGXigJlzIHR5cGVcbi8vIGZvciBzYWlkIHN0cmluZy5cbmZ1bmN0aW9uIHR5cGVGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIHR5cGVcblxuICBmdW5jdGlvbiB0eXBlKG5vZGUpIHtcbiAgICByZXR1cm4gQm9vbGVhbihub2RlICYmIG5vZGUudHlwZSA9PT0gdGVzdClcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIHJldHVybiB0cnVlLlxuZnVuY3Rpb24gb2soKSB7XG4gIHJldHVybiB0cnVlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB2aXNpdFBhcmVudHNcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG52YXIgQ09OVElOVUUgPSB0cnVlXG52YXIgU0tJUCA9ICdza2lwJ1xudmFyIEVYSVQgPSBmYWxzZVxuXG52aXNpdFBhcmVudHMuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXRQYXJlbnRzLlNLSVAgPSBTS0lQXG52aXNpdFBhcmVudHMuRVhJVCA9IEVYSVRcblxuZnVuY3Rpb24gdmlzaXRQYXJlbnRzKHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgdmFyIGlzXG5cbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICBpcyA9IGNvbnZlcnQodGVzdClcblxuICBvbmUodHJlZSwgbnVsbCwgW10pXG5cbiAgLy8gVmlzaXQgYSBzaW5nbGUgbm9kZS5cbiAgZnVuY3Rpb24gb25lKG5vZGUsIGluZGV4LCBwYXJlbnRzKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdXG4gICAgdmFyIHN1YnJlc3VsdFxuXG4gICAgaWYgKCF0ZXN0IHx8IGlzKG5vZGUsIGluZGV4LCBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV0gfHwgbnVsbCkpIHtcbiAgICAgIHJlc3VsdCA9IHRvUmVzdWx0KHZpc2l0b3Iobm9kZSwgcGFyZW50cykpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLmNoaWxkcmVuICYmIHJlc3VsdFswXSAhPT0gU0tJUCkge1xuICAgICAgc3VicmVzdWx0ID0gdG9SZXN1bHQoYWxsKG5vZGUuY2hpbGRyZW4sIHBhcmVudHMuY29uY2F0KG5vZGUpKSlcbiAgICAgIHJldHVybiBzdWJyZXN1bHRbMF0gPT09IEVYSVQgPyBzdWJyZXN1bHQgOiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBWaXNpdCBjaGlsZHJlbiBpbiBgcGFyZW50YC5cbiAgZnVuY3Rpb24gYWxsKGNoaWxkcmVuLCBwYXJlbnRzKSB7XG4gICAgdmFyIG1pbiA9IC0xXG4gICAgdmFyIHN0ZXAgPSByZXZlcnNlID8gLTEgOiAxXG4gICAgdmFyIGluZGV4ID0gKHJldmVyc2UgPyBjaGlsZHJlbi5sZW5ndGggOiBtaW4pICsgc3RlcFxuICAgIHZhciByZXN1bHRcblxuICAgIHdoaWxlIChpbmRleCA+IG1pbiAmJiBpbmRleCA8IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmVzdWx0ID0gb25lKGNoaWxkcmVuW2luZGV4XSwgaW5kZXgsIHBhcmVudHMpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHR5cGVvZiByZXN1bHRbMV0gPT09ICdudW1iZXInID8gcmVzdWx0WzFdIDogaW5kZXggKyBzdGVwXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRvUmVzdWx0KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbQ09OVElOVUUsIHZhbHVlXVxuICB9XG5cbiAgcmV0dXJuIFt2YWx1ZV1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0XG5cbnZhciB2aXNpdFBhcmVudHMgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0LXBhcmVudHMnKVxuXG52YXIgQ09OVElOVUUgPSB2aXNpdFBhcmVudHMuQ09OVElOVUVcbnZhciBTS0lQID0gdmlzaXRQYXJlbnRzLlNLSVBcbnZhciBFWElUID0gdmlzaXRQYXJlbnRzLkVYSVRcblxudmlzaXQuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXQuU0tJUCA9IFNLSVBcbnZpc2l0LkVYSVQgPSBFWElUXG5cbmZ1bmN0aW9uIHZpc2l0KHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICB2aXNpdFBhcmVudHModHJlZSwgdGVzdCwgb3ZlcmxvYWQsIHJldmVyc2UpXG5cbiAgZnVuY3Rpb24gb3ZlcmxvYWQobm9kZSwgcGFyZW50cykge1xuICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV1cbiAgICB2YXIgaW5kZXggPSBwYXJlbnQgPyBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihub2RlKSA6IG51bGxcbiAgICByZXR1cm4gdmlzaXRvcihub2RlLCBpbmRleCwgcGFyZW50KVxuICB9XG59XG4iLCIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJrYXRleFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJrYXRleFwiXSA9IGZhY3RvcnkoKTtcbn0pKCh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcyksIGZ1bmN0aW9uKCkge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4vKioqKioqLyBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vKioqKioqLyBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuLyoqKioqKi8gXHRcdHJldHVybiBucztcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMSk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9zcmMva2F0ZXgubGVzc1xudmFyIGthdGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvU291cmNlTG9jYXRpb24uanNcbi8qKlxuICogTGV4aW5nIG9yIHBhcnNpbmcgcG9zaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgZXJyb3IgcmVwb3J0aW5nLlxuICogVGhpcyBvYmplY3QgaXMgaW1tdXRhYmxlLlxuICovXG52YXIgU291cmNlTG9jYXRpb24gPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICAvLyBUaGUgKyBwcmVmaXggaW5kaWNhdGVzIHRoYXQgdGhlc2UgZmllbGRzIGFyZW4ndCB3cml0ZWFibGVcbiAgLy8gTGV4ZXIgaG9sZGluZyB0aGUgaW5wdXQgc3RyaW5nLlxuICAvLyBTdGFydCBvZmZzZXQsIHplcm8tYmFzZWQgaW5jbHVzaXZlLlxuICAvLyBFbmQgb2Zmc2V0LCB6ZXJvLWJhc2VkIGV4Y2x1c2l2ZS5cbiAgZnVuY3Rpb24gU291cmNlTG9jYXRpb24obGV4ZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICB0aGlzLmxleGVyID0gdm9pZCAwO1xuICAgIHRoaXMuc3RhcnQgPSB2b2lkIDA7XG4gICAgdGhpcy5lbmQgPSB2b2lkIDA7XG4gICAgdGhpcy5sZXhlciA9IGxleGVyO1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZDtcbiAgfVxuICAvKipcbiAgICogTWVyZ2VzIHR3byBgU291cmNlTG9jYXRpb25gcyBmcm9tIGxvY2F0aW9uIHByb3ZpZGVycywgZ2l2ZW4gdGhleSBhcmVcbiAgICogcHJvdmlkZWQgaW4gb3JkZXIgb2YgYXBwZWFyYW5jZS5cbiAgICogLSBSZXR1cm5zIHRoZSBmaXJzdCBvbmUncyBsb2NhdGlvbiBpZiBvbmx5IHRoZSBmaXJzdCBpcyBwcm92aWRlZC5cbiAgICogLSBSZXR1cm5zIGEgbWVyZ2VkIHJhbmdlIG9mIHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgaWYgYm90aCBhcmUgcHJvdmlkZWRcbiAgICogICBhbmQgdGhlaXIgbGV4ZXJzIG1hdGNoLlxuICAgKiAtIE90aGVyd2lzZSwgcmV0dXJucyBudWxsLlxuICAgKi9cblxuXG4gIFNvdXJjZUxvY2F0aW9uLnJhbmdlID0gZnVuY3Rpb24gcmFuZ2UoZmlyc3QsIHNlY29uZCkge1xuICAgIGlmICghc2Vjb25kKSB7XG4gICAgICByZXR1cm4gZmlyc3QgJiYgZmlyc3QubG9jO1xuICAgIH0gZWxzZSBpZiAoIWZpcnN0IHx8ICFmaXJzdC5sb2MgfHwgIXNlY29uZC5sb2MgfHwgZmlyc3QubG9jLmxleGVyICE9PSBzZWNvbmQubG9jLmxleGVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBTb3VyY2VMb2NhdGlvbihmaXJzdC5sb2MubGV4ZXIsIGZpcnN0LmxvYy5zdGFydCwgc2Vjb25kLmxvYy5lbmQpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU291cmNlTG9jYXRpb247XG59KCk7XG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvVG9rZW4uanNcblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVxdWlyZWQgdG8gYnJlYWsgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIFRva2VuLCBMZXhlciwgYW5kXG4gKiBQYXJzZUVycm9yLlxuICovXG5cbi8qKlxuICogVGhlIHJlc3VsdGluZyB0b2tlbiByZXR1cm5lZCBmcm9tIGBsZXhgLlxuICpcbiAqIEl0IGNvbnNpc3RzIG9mIHRoZSB0b2tlbiB0ZXh0IHBsdXMgc29tZSBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAqIFRoZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWxseSBhIHJhbmdlIGluIGFuIGlucHV0IHN0cmluZyxcbiAqIGJ1dCBpbnN0ZWFkIG9mIHJlZmVyZW5jaW5nIHRoZSBiYXJlIGlucHV0IHN0cmluZywgd2UgcmVmZXIgdG8gdGhlIGxleGVyLlxuICogVGhhdCB3YXkgaXQgaXMgcG9zc2libGUgdG8gYXR0YWNoIGV4dHJhIG1ldGFkYXRhIHRvIHRoZSBpbnB1dCBzdHJpbmcsXG4gKiBsaWtlIGZvciBleGFtcGxlIGEgZmlsZSBuYW1lIG9yIHNpbWlsYXIuXG4gKlxuICogVGhlIHBvc2l0aW9uIGluZm9ybWF0aW9uIGlzIG9wdGlvbmFsLCBzbyBpdCBpcyBPSyB0byBjb25zdHJ1Y3Qgc3ludGhldGljXG4gKiB0b2tlbnMgaWYgYXBwcm9wcmlhdGUuIE5vdCBwcm92aWRpbmcgYXZhaWxhYmxlIHBvc2l0aW9uIGluZm9ybWF0aW9uIG1heVxuICogbGVhZCB0byBkZWdyYWRlZCBlcnJvciByZXBvcnRpbmcsIHRob3VnaC5cbiAqL1xudmFyIFRva2VuX1Rva2VuID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVG9rZW4odGV4dCwgLy8gdGhlIHRleHQgb2YgdGhpcyB0b2tlblxuICBsb2MpIHtcbiAgICB0aGlzLnRleHQgPSB2b2lkIDA7XG4gICAgdGhpcy5sb2MgPSB2b2lkIDA7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB0aGlzLmxvYyA9IGxvYztcbiAgfVxuICAvKipcbiAgICogR2l2ZW4gYSBwYWlyIG9mIHRva2VucyAodGhpcyBhbmQgZW5kVG9rZW4pLCBjb21wdXRlIGEgYFRva2VuYCBlbmNvbXBhc3NpbmdcbiAgICogdGhlIHdob2xlIGlucHV0IHJhbmdlIGVuY2xvc2VkIGJ5IHRoZXNlIHR3by5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gVG9rZW4ucHJvdG90eXBlO1xuXG4gIF9wcm90by5yYW5nZSA9IGZ1bmN0aW9uIHJhbmdlKGVuZFRva2VuLCAvLyBsYXN0IHRva2VuIG9mIHRoZSByYW5nZSwgaW5jbHVzaXZlXG4gIHRleHQpIC8vIHRoZSB0ZXh0IG9mIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCB0b2tlblxuICB7XG4gICAgcmV0dXJuIG5ldyBUb2tlbih0ZXh0LCBTb3VyY2VMb2NhdGlvbi5yYW5nZSh0aGlzLCBlbmRUb2tlbikpO1xuICB9O1xuXG4gIHJldHVybiBUb2tlbjtcbn0oKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL1BhcnNlRXJyb3IuanNcblxuXG4vKipcbiAqIFRoaXMgaXMgdGhlIFBhcnNlRXJyb3IgY2xhc3MsIHdoaWNoIGlzIHRoZSBtYWluIGVycm9yIHRocm93biBieSBLYVRlWFxuICogZnVuY3Rpb25zIHdoZW4gc29tZXRoaW5nIGhhcyBnb25lIHdyb25nLiBUaGlzIGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggaW50ZXJuYWxcbiAqIGVycm9ycyBmcm9tIGVycm9ycyBpbiB0aGUgZXhwcmVzc2lvbiB0aGF0IHRoZSB1c2VyIHByb3ZpZGVkLlxuICpcbiAqIElmIHBvc3NpYmxlLCBhIGNhbGxlciBzaG91bGQgcHJvdmlkZSBhIFRva2VuIG9yIFBhcnNlTm9kZSB3aXRoIGluZm9ybWF0aW9uXG4gKiBhYm91dCB3aGVyZSBpbiB0aGUgc291cmNlIHN0cmluZyB0aGUgcHJvYmxlbSBvY2N1cnJlZC5cbiAqL1xudmFyIFBhcnNlRXJyb3IgPSAvLyBFcnJvciBwb3NpdGlvbiBiYXNlZCBvbiBwYXNzZWQtaW4gVG9rZW4gb3IgUGFyc2VOb2RlLlxuZnVuY3Rpb24gUGFyc2VFcnJvcihtZXNzYWdlLCAvLyBUaGUgZXJyb3IgbWVzc2FnZVxudG9rZW4pIC8vIEFuIG9iamVjdCBwcm92aWRpbmcgcG9zaXRpb24gaW5mb3JtYXRpb25cbntcbiAgdGhpcy5wb3NpdGlvbiA9IHZvaWQgMDtcbiAgdmFyIGVycm9yID0gXCJLYVRlWCBwYXJzZSBlcnJvcjogXCIgKyBtZXNzYWdlO1xuICB2YXIgc3RhcnQ7XG4gIHZhciBsb2MgPSB0b2tlbiAmJiB0b2tlbi5sb2M7XG5cbiAgaWYgKGxvYyAmJiBsb2Muc3RhcnQgPD0gbG9jLmVuZCkge1xuICAgIC8vIElmIHdlIGhhdmUgdGhlIGlucHV0IGFuZCBhIHBvc2l0aW9uLCBtYWtlIHRoZSBlcnJvciBhIGJpdCBmYW5jaWVyXG4gICAgLy8gR2V0IHRoZSBpbnB1dFxuICAgIHZhciBpbnB1dCA9IGxvYy5sZXhlci5pbnB1dDsgLy8gUHJlcGVuZCBzb21lIGluZm9ybWF0aW9uXG5cbiAgICBzdGFydCA9IGxvYy5zdGFydDtcbiAgICB2YXIgZW5kID0gbG9jLmVuZDtcblxuICAgIGlmIChzdGFydCA9PT0gaW5wdXQubGVuZ3RoKSB7XG4gICAgICBlcnJvciArPSBcIiBhdCBlbmQgb2YgaW5wdXQ6IFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvciArPSBcIiBhdCBwb3NpdGlvbiBcIiArIChzdGFydCArIDEpICsgXCI6IFwiO1xuICAgIH0gLy8gVW5kZXJsaW5lIHRva2VuIGluIHF1ZXN0aW9uIHVzaW5nIGNvbWJpbmluZyB1bmRlcnNjb3Jlc1xuXG5cbiAgICB2YXIgdW5kZXJsaW5lZCA9IGlucHV0LnNsaWNlKHN0YXJ0LCBlbmQpLnJlcGxhY2UoL1teXS9nLCBcIiQmXFx1MDMzMlwiKTsgLy8gRXh0cmFjdCBzb21lIGNvbnRleHQgZnJvbSB0aGUgaW5wdXQgYW5kIGFkZCBpdCB0byB0aGUgZXJyb3JcblxuICAgIHZhciBsZWZ0O1xuXG4gICAgaWYgKHN0YXJ0ID4gMTUpIHtcbiAgICAgIGxlZnQgPSBcIuKAplwiICsgaW5wdXQuc2xpY2Uoc3RhcnQgLSAxNSwgc3RhcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZWZ0ID0gaW5wdXQuc2xpY2UoMCwgc3RhcnQpO1xuICAgIH1cblxuICAgIHZhciByaWdodDtcblxuICAgIGlmIChlbmQgKyAxNSA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgcmlnaHQgPSBpbnB1dC5zbGljZShlbmQsIGVuZCArIDE1KSArIFwi4oCmXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJpZ2h0ID0gaW5wdXQuc2xpY2UoZW5kKTtcbiAgICB9XG5cbiAgICBlcnJvciArPSBsZWZ0ICsgdW5kZXJsaW5lZCArIHJpZ2h0O1xuICB9IC8vIFNvbWUgaGFja2VyeSB0byBtYWtlIFBhcnNlRXJyb3IgYSBwcm90b3R5cGUgb2YgRXJyb3JcbiAgLy8gU2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzg0NjA3NTNcblxuXG4gIHZhciBzZWxmID0gbmV3IEVycm9yKGVycm9yKTtcbiAgc2VsZi5uYW1lID0gXCJQYXJzZUVycm9yXCI7IC8vICRGbG93Rml4TWVcblxuICBzZWxmLl9fcHJvdG9fXyA9IFBhcnNlRXJyb3IucHJvdG90eXBlOyAvLyAkRmxvd0ZpeE1lXG5cbiAgc2VsZi5wb3NpdGlvbiA9IHN0YXJ0O1xuICByZXR1cm4gc2VsZjtcbn07IC8vICRGbG93Rml4TWUgTW9yZSBoYWNrZXJ5XG5cblxuUGFyc2VFcnJvci5wcm90b3R5cGUuX19wcm90b19fID0gRXJyb3IucHJvdG90eXBlO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX1BhcnNlRXJyb3IgPSAoUGFyc2VFcnJvcik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy91dGlscy5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIHdoaWNoIGFyZSB1c2VmdWwgaW4gb3RoZXJcbiAqIGZpbGVzLlxuICovXG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBjb250YWluZWQgaW4gYSBsaXN0XG4gKi9cbnZhciBjb250YWlucyA9IGZ1bmN0aW9uIGNvbnRhaW5zKGxpc3QsIGVsZW0pIHtcbiAgcmV0dXJuIGxpc3QuaW5kZXhPZihlbGVtKSAhPT0gLTE7XG59O1xuLyoqXG4gKiBQcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSBpZiBhIHNldHRpbmcgaXMgdW5kZWZpbmVkXG4gKiBOT1RFOiBDb3VsZG4ndCB1c2UgYFRgIGFzIHRoZSBvdXRwdXQgdHlwZSBkdWUgdG8gZmFjZWJvb2svZmxvdyM1MDIyLlxuICovXG5cblxudmFyIGRlZmx0ID0gZnVuY3Rpb24gZGVmbHQoc2V0dGluZywgZGVmYXVsdElmVW5kZWZpbmVkKSB7XG4gIHJldHVybiBzZXR0aW5nID09PSB1bmRlZmluZWQgPyBkZWZhdWx0SWZVbmRlZmluZWQgOiBzZXR0aW5nO1xufTsgLy8gaHlwaGVuYXRlIGFuZCBlc2NhcGUgYWRhcHRlZCBmcm9tIEZhY2Vib29rJ3MgUmVhY3QgdW5kZXIgQXBhY2hlIDIgbGljZW5zZVxuXG5cbnZhciB1cHBlcmNhc2UgPSAvKFtBLVpdKS9nO1xuXG52YXIgaHlwaGVuYXRlID0gZnVuY3Rpb24gaHlwaGVuYXRlKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UodXBwZXJjYXNlLCBcIi0kMVwiKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIEVTQ0FQRV9MT09LVVAgPSB7XG4gIFwiJlwiOiBcIiZhbXA7XCIsXG4gIFwiPlwiOiBcIiZndDtcIixcbiAgXCI8XCI6IFwiJmx0O1wiLFxuICBcIlxcXCJcIjogXCImcXVvdDtcIixcbiAgXCInXCI6IFwiJiN4Mjc7XCJcbn07XG52YXIgRVNDQVBFX1JFR0VYID0gL1smPjxcIiddL2c7XG4vKipcbiAqIEVzY2FwZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICovXG5cbmZ1bmN0aW9uIHV0aWxzX2VzY2FwZSh0ZXh0KSB7XG4gIHJldHVybiBTdHJpbmcodGV4dCkucmVwbGFjZShFU0NBUEVfUkVHRVgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBFU0NBUEVfTE9PS1VQW21hdGNoXTtcbiAgfSk7XG59XG4vKipcbiAqIFNvbWV0aW1lcyB3ZSB3YW50IHRvIHB1bGwgb3V0IHRoZSBpbm5lcm1vc3QgZWxlbWVudCBvZiBhIGdyb3VwLiBJbiBtb3N0XG4gKiBjYXNlcywgdGhpcyB3aWxsIGp1c3QgYmUgdGhlIGdyb3VwIGl0c2VsZiwgYnV0IHdoZW4gb3JkZ3JvdXBzIGFuZCBjb2xvcnMgaGF2ZVxuICogYSBzaW5nbGUgZWxlbWVudCwgd2Ugd2FudCB0byBwdWxsIHRoYXQgb3V0LlxuICovXG5cblxudmFyIGdldEJhc2VFbGVtID0gZnVuY3Rpb24gZ2V0QmFzZUVsZW0oZ3JvdXApIHtcbiAgaWYgKGdyb3VwLnR5cGUgPT09IFwib3JkZ3JvdXBcIikge1xuICAgIGlmIChncm91cC5ib2R5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLmJvZHlbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfVxuICB9IGVsc2UgaWYgKGdyb3VwLnR5cGUgPT09IFwiY29sb3JcIikge1xuICAgIGlmIChncm91cC5ib2R5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLmJvZHlbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfVxuICB9IGVsc2UgaWYgKGdyb3VwLnR5cGUgPT09IFwiZm9udFwiKSB7XG4gICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLmJvZHkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBncm91cDtcbiAgfVxufTtcbi8qKlxuICogVGVYYm9vayBhbGdvcml0aG1zIG9mdGVuIHJlZmVyZW5jZSBcImNoYXJhY3RlciBib3hlc1wiLCB3aGljaCBhcmUgc2ltcGx5IGdyb3Vwc1xuICogd2l0aCBhIHNpbmdsZSBjaGFyYWN0ZXIgaW4gdGhlbS4gVG8gZGVjaWRlIGlmIHNvbWV0aGluZyBpcyBhIGNoYXJhY3RlciBib3gsXG4gKiB3ZSBmaW5kIGl0cyBpbm5lcm1vc3QgZ3JvdXAsIGFuZCBzZWUgaWYgaXQgaXMgYSBzaW5nbGUgY2hhcmFjdGVyLlxuICovXG5cblxudmFyIHV0aWxzX2lzQ2hhcmFjdGVyQm94ID0gZnVuY3Rpb24gaXNDaGFyYWN0ZXJCb3goZ3JvdXApIHtcbiAgdmFyIGJhc2VFbGVtID0gZ2V0QmFzZUVsZW0oZ3JvdXApOyAvLyBUaGVzZSBhcmUgYWxsIHRoZXkgdHlwZXMgb2YgZ3JvdXBzIHdoaWNoIGhvbGQgc2luZ2xlIGNoYXJhY3RlcnNcblxuICByZXR1cm4gYmFzZUVsZW0udHlwZSA9PT0gXCJtYXRob3JkXCIgfHwgYmFzZUVsZW0udHlwZSA9PT0gXCJ0ZXh0b3JkXCIgfHwgYmFzZUVsZW0udHlwZSA9PT0gXCJhdG9tXCI7XG59O1xuXG52YXIgYXNzZXJ0ID0gZnVuY3Rpb24gYXNzZXJ0KHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG5vbi1udWxsLCBidXQgZ290ICcgKyBTdHJpbmcodmFsdWUpKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG4vKipcbiAqIFJldHVybiB0aGUgcHJvdG9jb2wgb2YgYSBVUkwsIG9yIFwiX3JlbGF0aXZlXCIgaWYgdGhlIFVSTCBkb2VzIG5vdCBzcGVjaWZ5IGFcbiAqIHByb3RvY29sIChhbmQgdGh1cyBpcyByZWxhdGl2ZSkuXG4gKi9cblxudmFyIHByb3RvY29sRnJvbVVybCA9IGZ1bmN0aW9uIHByb3RvY29sRnJvbVVybCh1cmwpIHtcbiAgdmFyIHByb3RvY29sID0gL15cXHMqKFteXFxcXC8jXSo/KSg/Ojp8JiMwKjU4fCYjeDAqM2EpL2kuZXhlYyh1cmwpO1xuICByZXR1cm4gcHJvdG9jb2wgIT0gbnVsbCA/IHByb3RvY29sWzFdIDogXCJfcmVsYXRpdmVcIjtcbn07XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB1dGlscyA9ICh7XG4gIGNvbnRhaW5zOiBjb250YWlucyxcbiAgZGVmbHQ6IGRlZmx0LFxuICBlc2NhcGU6IHV0aWxzX2VzY2FwZSxcbiAgaHlwaGVuYXRlOiBoeXBoZW5hdGUsXG4gIGdldEJhc2VFbGVtOiBnZXRCYXNlRWxlbSxcbiAgaXNDaGFyYWN0ZXJCb3g6IHV0aWxzX2lzQ2hhcmFjdGVyQm94LFxuICBwcm90b2NvbEZyb21Vcmw6IHByb3RvY29sRnJvbVVybFxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9TZXR0aW5ncy5qc1xuLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYSBtb2R1bGUgZm9yIHN0b3Jpbmcgc2V0dGluZ3MgcGFzc2VkIGludG8gS2FUZVguIEl0IGNvcnJlY3RseSBoYW5kbGVzXG4gKiBkZWZhdWx0IHNldHRpbmdzLlxuICovXG5cblxuXG5cbi8qKlxuICogVGhlIG1haW4gU2V0dGluZ3Mgb2JqZWN0XG4gKlxuICogVGhlIGN1cnJlbnQgb3B0aW9ucyBzdG9yZWQgYXJlOlxuICogIC0gZGlzcGxheU1vZGU6IFdoZXRoZXIgdGhlIGV4cHJlc3Npb24gc2hvdWxkIGJlIHR5cGVzZXQgYXMgaW5saW5lIG1hdGhcbiAqICAgICAgICAgICAgICAgICAoZmFsc2UsIHRoZSBkZWZhdWx0KSwgbWVhbmluZyB0aGF0IHRoZSBtYXRoIHN0YXJ0cyBpblxuICogICAgICAgICAgICAgICAgIFxcdGV4dHN0eWxlIGFuZCBpcyBwbGFjZWQgaW4gYW4gaW5saW5lLWJsb2NrKTsgb3IgYXMgZGlzcGxheVxuICogICAgICAgICAgICAgICAgIG1hdGggKHRydWUpLCBtZWFuaW5nIHRoYXQgdGhlIG1hdGggc3RhcnRzIGluIFxcZGlzcGxheXN0eWxlXG4gKiAgICAgICAgICAgICAgICAgYW5kIGlzIHBsYWNlZCBpbiBhIGJsb2NrIHdpdGggdmVydGljYWwgbWFyZ2luLlxuICovXG52YXIgU2V0dGluZ3NfU2V0dGluZ3MgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTZXR0aW5ncyhvcHRpb25zKSB7XG4gICAgdGhpcy5kaXNwbGF5TW9kZSA9IHZvaWQgMDtcbiAgICB0aGlzLm91dHB1dCA9IHZvaWQgMDtcbiAgICB0aGlzLmxlcW5vID0gdm9pZCAwO1xuICAgIHRoaXMuZmxlcW4gPSB2b2lkIDA7XG4gICAgdGhpcy50aHJvd09uRXJyb3IgPSB2b2lkIDA7XG4gICAgdGhpcy5lcnJvckNvbG9yID0gdm9pZCAwO1xuICAgIHRoaXMubWFjcm9zID0gdm9pZCAwO1xuICAgIHRoaXMubWluUnVsZVRoaWNrbmVzcyA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbG9ySXNUZXh0Q29sb3IgPSB2b2lkIDA7XG4gICAgdGhpcy5zdHJpY3QgPSB2b2lkIDA7XG4gICAgdGhpcy50cnVzdCA9IHZvaWQgMDtcbiAgICB0aGlzLm1heFNpemUgPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhFeHBhbmQgPSB2b2lkIDA7XG4gICAgLy8gYWxsb3cgbnVsbCBvcHRpb25zXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgdGhpcy5kaXNwbGF5TW9kZSA9IHV0aWxzLmRlZmx0KG9wdGlvbnMuZGlzcGxheU1vZGUsIGZhbHNlKTtcbiAgICB0aGlzLm91dHB1dCA9IHV0aWxzLmRlZmx0KG9wdGlvbnMub3V0cHV0LCBcImh0bWxBbmRNYXRobWxcIik7XG4gICAgdGhpcy5sZXFubyA9IHV0aWxzLmRlZmx0KG9wdGlvbnMubGVxbm8sIGZhbHNlKTtcbiAgICB0aGlzLmZsZXFuID0gdXRpbHMuZGVmbHQob3B0aW9ucy5mbGVxbiwgZmFsc2UpO1xuICAgIHRoaXMudGhyb3dPbkVycm9yID0gdXRpbHMuZGVmbHQob3B0aW9ucy50aHJvd09uRXJyb3IsIHRydWUpO1xuICAgIHRoaXMuZXJyb3JDb2xvciA9IHV0aWxzLmRlZmx0KG9wdGlvbnMuZXJyb3JDb2xvciwgXCIjY2MwMDAwXCIpO1xuICAgIHRoaXMubWFjcm9zID0gb3B0aW9ucy5tYWNyb3MgfHwge307XG4gICAgdGhpcy5taW5SdWxlVGhpY2tuZXNzID0gTWF0aC5tYXgoMCwgdXRpbHMuZGVmbHQob3B0aW9ucy5taW5SdWxlVGhpY2tuZXNzLCAwKSk7XG4gICAgdGhpcy5jb2xvcklzVGV4dENvbG9yID0gdXRpbHMuZGVmbHQob3B0aW9ucy5jb2xvcklzVGV4dENvbG9yLCBmYWxzZSk7XG4gICAgdGhpcy5zdHJpY3QgPSB1dGlscy5kZWZsdChvcHRpb25zLnN0cmljdCwgXCJ3YXJuXCIpO1xuICAgIHRoaXMudHJ1c3QgPSB1dGlscy5kZWZsdChvcHRpb25zLnRydXN0LCBmYWxzZSk7XG4gICAgdGhpcy5tYXhTaXplID0gTWF0aC5tYXgoMCwgdXRpbHMuZGVmbHQob3B0aW9ucy5tYXhTaXplLCBJbmZpbml0eSkpO1xuICAgIHRoaXMubWF4RXhwYW5kID0gTWF0aC5tYXgoMCwgdXRpbHMuZGVmbHQob3B0aW9ucy5tYXhFeHBhbmQsIDEwMDApKTtcbiAgfVxuICAvKipcbiAgICogUmVwb3J0IG5vbnN0cmljdCAobm9uLUxhVGVYLWNvbXBhdGlibGUpIGlucHV0LlxuICAgKiBDYW4gc2FmZWx5IG5vdCBiZSBjYWxsZWQgaWYgYHRoaXMuc3RyaWN0YCBpcyBmYWxzZSBpbiBKYXZhU2NyaXB0LlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBTZXR0aW5ncy5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnJlcG9ydE5vbnN0cmljdCA9IGZ1bmN0aW9uIHJlcG9ydE5vbnN0cmljdChlcnJvckNvZGUsIGVycm9yTXNnLCB0b2tlbikge1xuICAgIHZhciBzdHJpY3QgPSB0aGlzLnN0cmljdDtcblxuICAgIGlmICh0eXBlb2Ygc3RyaWN0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIC8vIEFsbG93IHJldHVybiB2YWx1ZSBvZiBzdHJpY3QgZnVuY3Rpb24gdG8gYmUgYm9vbGVhbiBvciBzdHJpbmdcbiAgICAgIC8vIChvciBudWxsL3VuZGVmaW5lZCwgbWVhbmluZyBubyBmdXJ0aGVyIHByb2Nlc3NpbmcpLlxuICAgICAgc3RyaWN0ID0gc3RyaWN0KGVycm9yQ29kZSwgZXJyb3JNc2csIHRva2VuKTtcbiAgICB9XG5cbiAgICBpZiAoIXN0cmljdCB8fCBzdHJpY3QgPT09IFwiaWdub3JlXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHN0cmljdCA9PT0gdHJ1ZSB8fCBzdHJpY3QgPT09IFwiZXJyb3JcIikge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTGFUZVgtaW5jb21wYXRpYmxlIGlucHV0IGFuZCBzdHJpY3QgbW9kZSBpcyBzZXQgdG8gJ2Vycm9yJzogXCIgKyAoZXJyb3JNc2cgKyBcIiBbXCIgKyBlcnJvckNvZGUgKyBcIl1cIiksIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHN0cmljdCA9PT0gXCJ3YXJuXCIpIHtcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvICd3YXJuJzogXCIgKyAoZXJyb3JNc2cgKyBcIiBbXCIgKyBlcnJvckNvZGUgKyBcIl1cIikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3b24ndCBoYXBwZW4gaW4gdHlwZS1zYWZlIGNvZGVcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvIFwiICsgKFwidW5yZWNvZ25pemVkICdcIiArIHN0cmljdCArIFwiJzogXCIgKyBlcnJvck1zZyArIFwiIFtcIiArIGVycm9yQ29kZSArIFwiXVwiKSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRvIGFwcGx5IHN0cmljdCAoTGFUZVgtYWRoZXJpbmcpIGJlaGF2aW9yIGZvciB1bnVzdWFsXG4gICAqIGlucHV0IChsaWtlIGBcXFxcYCkuICBVbmxpa2UgYG5vbnN0cmljdGAsIHdpbGwgbm90IHRocm93IGFuIGVycm9yO1xuICAgKiBpbnN0ZWFkLCBcImVycm9yXCIgdHJhbnNsYXRlcyB0byBhIHJldHVybiB2YWx1ZSBvZiBgdHJ1ZWAsIHdoaWxlIFwiaWdub3JlXCJcbiAgICogdHJhbnNsYXRlcyB0byBhIHJldHVybiB2YWx1ZSBvZiBgZmFsc2VgLiAgTWF5IHN0aWxsIHByaW50IGEgd2FybmluZzpcbiAgICogXCJ3YXJuXCIgcHJpbnRzIGEgd2FybmluZyBhbmQgcmV0dXJucyBgZmFsc2VgLlxuICAgKiBUaGlzIGlzIGZvciB0aGUgc2Vjb25kIGNhdGVnb3J5IG9mIGBlcnJvckNvZGVgcyBsaXN0ZWQgaW4gdGhlIFJFQURNRS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8udXNlU3RyaWN0QmVoYXZpb3IgPSBmdW5jdGlvbiB1c2VTdHJpY3RCZWhhdmlvcihlcnJvckNvZGUsIGVycm9yTXNnLCB0b2tlbikge1xuICAgIHZhciBzdHJpY3QgPSB0aGlzLnN0cmljdDtcblxuICAgIGlmICh0eXBlb2Ygc3RyaWN0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIC8vIEFsbG93IHJldHVybiB2YWx1ZSBvZiBzdHJpY3QgZnVuY3Rpb24gdG8gYmUgYm9vbGVhbiBvciBzdHJpbmdcbiAgICAgIC8vIChvciBudWxsL3VuZGVmaW5lZCwgbWVhbmluZyBubyBmdXJ0aGVyIHByb2Nlc3NpbmcpLlxuICAgICAgLy8gQnV0IGNhdGNoIGFueSBleGNlcHRpb25zIHRocm93biBieSBmdW5jdGlvbiwgdHJlYXRpbmcgdGhlbVxuICAgICAgLy8gbGlrZSBcImVycm9yXCIuXG4gICAgICB0cnkge1xuICAgICAgICBzdHJpY3QgPSBzdHJpY3QoZXJyb3JDb2RlLCBlcnJvck1zZywgdG9rZW4pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc3RyaWN0ID0gXCJlcnJvclwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghc3RyaWN0IHx8IHN0cmljdCA9PT0gXCJpZ25vcmVcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoc3RyaWN0ID09PSB0cnVlIHx8IHN0cmljdCA9PT0gXCJlcnJvclwiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHN0cmljdCA9PT0gXCJ3YXJuXCIpIHtcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvICd3YXJuJzogXCIgKyAoZXJyb3JNc2cgKyBcIiBbXCIgKyBlcnJvckNvZGUgKyBcIl1cIikpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3b24ndCBoYXBwZW4gaW4gdHlwZS1zYWZlIGNvZGVcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvIFwiICsgKFwidW5yZWNvZ25pemVkICdcIiArIHN0cmljdCArIFwiJzogXCIgKyBlcnJvck1zZyArIFwiIFtcIiArIGVycm9yQ29kZSArIFwiXVwiKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRvIHRlc3QgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIGlucHV0LCBhbmQgcmV0dXJuXG4gICAqIGB0cnVlYCAodHJ1c3RlZCkgb3IgYGZhbHNlYCAodW50cnVzdGVkKS4gIFRoZSBzb2xlIGFyZ3VtZW50IGBjb250ZXh0YFxuICAgKiBzaG91bGQgYmUgYW4gb2JqZWN0IHdpdGggYGNvbW1hbmRgIGZpZWxkIHNwZWNpZnlpbmcgdGhlIHJlbGV2YW50IExhVGVYXG4gICAqIGNvbW1hbmQgKGFzIGEgc3RyaW5nIHN0YXJ0aW5nIHdpdGggYFxcYCksIGFuZCBhbnkgb3RoZXIgYXJndW1lbnRzLCBldGMuXG4gICAqIElmIGBjb250ZXh0YCBoYXMgYSBgdXJsYCBmaWVsZCwgYSBgcHJvdG9jb2xgIGZpZWxkIHdpbGwgYXV0b21hdGljYWxseVxuICAgKiBnZXQgYWRkZWQgYnkgdGhpcyBmdW5jdGlvbiAoY2hhbmdpbmcgdGhlIHNwZWNpZmllZCBvYmplY3QpLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5pc1RydXN0ZWQgPSBmdW5jdGlvbiBpc1RydXN0ZWQoY29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LnVybCAmJiAhY29udGV4dC5wcm90b2NvbCkge1xuICAgICAgY29udGV4dC5wcm90b2NvbCA9IHV0aWxzLnByb3RvY29sRnJvbVVybChjb250ZXh0LnVybCk7XG4gICAgfVxuXG4gICAgdmFyIHRydXN0ID0gdHlwZW9mIHRoaXMudHJ1c3QgPT09IFwiZnVuY3Rpb25cIiA/IHRoaXMudHJ1c3QoY29udGV4dCkgOiB0aGlzLnRydXN0O1xuICAgIHJldHVybiBCb29sZWFuKHRydXN0KTtcbiAgfTtcblxuICByZXR1cm4gU2V0dGluZ3M7XG59KCk7XG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvU3R5bGUuanNcbi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFuZCBjbGFzc2VzIGZvciB0aGUgdmFyaW91cyBraW5kcyBvZiBzdHlsZXNcbiAqIHVzZWQgaW4gVGVYLiBJdCBwcm92aWRlcyBhIGdlbmVyaWMgYFN0eWxlYCBjbGFzcywgd2hpY2ggaG9sZHMgaW5mb3JtYXRpb25cbiAqIGFib3V0IGEgc3BlY2lmaWMgc3R5bGUuIEl0IHRoZW4gcHJvdmlkZXMgaW5zdGFuY2VzIG9mIGFsbCB0aGUgZGlmZmVyZW50IGtpbmRzXG4gKiBvZiBzdHlsZXMgcG9zc2libGUsIGFuZCBwcm92aWRlcyBmdW5jdGlvbnMgdG8gbW92ZSBiZXR3ZWVuIHRoZW0gYW5kIGdldFxuICogaW5mb3JtYXRpb24gYWJvdXQgdGhlbS5cbiAqL1xuXG4vKipcbiAqIFRoZSBtYWluIHN0eWxlIGNsYXNzLiBDb250YWlucyBhIHVuaXF1ZSBpZCBmb3IgdGhlIHN0eWxlLCBhIHNpemUgKHdoaWNoIGlzXG4gKiB0aGUgc2FtZSBmb3IgY3JhbXBlZCBhbmQgdW5jcmFtcGVkIHZlcnNpb24gb2YgYSBzdHlsZSksIGFuZCBhIGNyYW1wZWQgZmxhZy5cbiAqL1xudmFyIFN0eWxlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3R5bGUoaWQsIHNpemUsIGNyYW1wZWQpIHtcbiAgICB0aGlzLmlkID0gdm9pZCAwO1xuICAgIHRoaXMuc2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLmNyYW1wZWQgPSB2b2lkIDA7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgdGhpcy5jcmFtcGVkID0gY3JhbXBlZDtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBzdHlsZSBvZiBhIHN1cGVyc2NyaXB0IGdpdmVuIGEgYmFzZSBpbiB0aGUgY3VycmVudCBzdHlsZS5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gU3R5bGUucHJvdG90eXBlO1xuXG4gIF9wcm90by5zdXAgPSBmdW5jdGlvbiBzdXAoKSB7XG4gICAgcmV0dXJuIFN0eWxlX3N0eWxlc1tfc3VwW3RoaXMuaWRdXTtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBzdHlsZSBvZiBhIHN1YnNjcmlwdCBnaXZlbiBhIGJhc2UgaW4gdGhlIGN1cnJlbnQgc3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnN1YiA9IGZ1bmN0aW9uIHN1YigpIHtcbiAgICByZXR1cm4gU3R5bGVfc3R5bGVzW19zdWJbdGhpcy5pZF1dO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0eWxlIG9mIGEgZnJhY3Rpb24gbnVtZXJhdG9yIGdpdmVuIHRoZSBmcmFjdGlvbiBpbiB0aGUgY3VycmVudFxuICAgKiBzdHlsZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZnJhY051bSA9IGZ1bmN0aW9uIGZyYWNOdW0oKSB7XG4gICAgcmV0dXJuIFN0eWxlX3N0eWxlc1tfZnJhY051bVt0aGlzLmlkXV07XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgc3R5bGUgb2YgYSBmcmFjdGlvbiBkZW5vbWluYXRvciBnaXZlbiB0aGUgZnJhY3Rpb24gaW4gdGhlIGN1cnJlbnRcbiAgICogc3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmZyYWNEZW4gPSBmdW5jdGlvbiBmcmFjRGVuKCkge1xuICAgIHJldHVybiBTdHlsZV9zdHlsZXNbX2ZyYWNEZW5bdGhpcy5pZF1dO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIGNyYW1wZWQgdmVyc2lvbiBvZiBhIHN0eWxlIChpbiBwYXJ0aWN1bGFyLCBjcmFtcGluZyBhIGNyYW1wZWQgc3R5bGVcbiAgICogZG9lc24ndCBjaGFuZ2UgdGhlIHN0eWxlKS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY3JhbXAgPSBmdW5jdGlvbiBjcmFtcCgpIHtcbiAgICByZXR1cm4gU3R5bGVfc3R5bGVzW19jcmFtcFt0aGlzLmlkXV07XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIHRleHQgb3IgZGlzcGxheSB2ZXJzaW9uIG9mIHRoaXMgc3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnRleHQgPSBmdW5jdGlvbiB0ZXh0KCkge1xuICAgIHJldHVybiBTdHlsZV9zdHlsZXNbX3RleHRbdGhpcy5pZF1dO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHN0eWxlIGlzIHRpZ2h0bHkgc3BhY2VkIChzY3JpcHRzdHlsZS9zY3JpcHRzY3JpcHRzdHlsZSlcbiAgICovXG4gIDtcblxuICBfcHJvdG8uaXNUaWdodCA9IGZ1bmN0aW9uIGlzVGlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA+PSAyO1xuICB9O1xuXG4gIHJldHVybiBTdHlsZTtcbn0oKTsgLy8gRXhwb3J0IGFuIGludGVyZmFjZSBmb3IgdHlwZSBjaGVja2luZywgYnV0IGRvbid0IGV4cG9zZSB0aGUgaW1wbGVtZW50YXRpb24uXG4vLyBUaGlzIHdheSwgbm8gbW9yZSBzdHlsZXMgY2FuIGJlIGdlbmVyYXRlZC5cblxuXG4vLyBJRHMgb2YgdGhlIGRpZmZlcmVudCBzdHlsZXNcbnZhciBEID0gMDtcbnZhciBEYyA9IDE7XG52YXIgVCA9IDI7XG52YXIgVGMgPSAzO1xudmFyIFMgPSA0O1xudmFyIFNjID0gNTtcbnZhciBTUyA9IDY7XG52YXIgU1NjID0gNzsgLy8gSW5zdGFuY2VzIG9mIHRoZSBkaWZmZXJlbnQgc3R5bGVzXG5cbnZhciBTdHlsZV9zdHlsZXMgPSBbbmV3IFN0eWxlKEQsIDAsIGZhbHNlKSwgbmV3IFN0eWxlKERjLCAwLCB0cnVlKSwgbmV3IFN0eWxlKFQsIDEsIGZhbHNlKSwgbmV3IFN0eWxlKFRjLCAxLCB0cnVlKSwgbmV3IFN0eWxlKFMsIDIsIGZhbHNlKSwgbmV3IFN0eWxlKFNjLCAyLCB0cnVlKSwgbmV3IFN0eWxlKFNTLCAzLCBmYWxzZSksIG5ldyBTdHlsZShTU2MsIDMsIHRydWUpXTsgLy8gTG9va3VwIHRhYmxlcyBmb3Igc3dpdGNoaW5nIGZyb20gb25lIHN0eWxlIHRvIGFub3RoZXJcblxudmFyIF9zdXAgPSBbUywgU2MsIFMsIFNjLCBTUywgU1NjLCBTUywgU1NjXTtcbnZhciBfc3ViID0gW1NjLCBTYywgU2MsIFNjLCBTU2MsIFNTYywgU1NjLCBTU2NdO1xudmFyIF9mcmFjTnVtID0gW1QsIFRjLCBTLCBTYywgU1MsIFNTYywgU1MsIFNTY107XG52YXIgX2ZyYWNEZW4gPSBbVGMsIFRjLCBTYywgU2MsIFNTYywgU1NjLCBTU2MsIFNTY107XG52YXIgX2NyYW1wID0gW0RjLCBEYywgVGMsIFRjLCBTYywgU2MsIFNTYywgU1NjXTtcbnZhciBfdGV4dCA9IFtELCBEYywgVCwgVGMsIFQsIFRjLCBULCBUY107IC8vIFdlIG9ubHkgZXhwb3J0IHNvbWUgb2YgdGhlIHN0eWxlcy5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX1N0eWxlID0gKHtcbiAgRElTUExBWTogU3R5bGVfc3R5bGVzW0RdLFxuICBURVhUOiBTdHlsZV9zdHlsZXNbVF0sXG4gIFNDUklQVDogU3R5bGVfc3R5bGVzW1NdLFxuICBTQ1JJUFRTQ1JJUFQ6IFN0eWxlX3N0eWxlc1tTU11cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvdW5pY29kZVNjcmlwdHMuanNcbi8qXG4gKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgVW5pY29kZSBzY3JpcHRzIGFuZCBzY3JpcHQgZmFtaWxpZXMgdGhhdCB3ZVxuICogc3VwcG9ydC4gVG8gYWRkIG5ldyBzY3JpcHRzIG9yIGZhbWlsaWVzLCBqdXN0IGFkZCBhIG5ldyBlbnRyeSB0byB0aGVcbiAqIHNjcmlwdERhdGEgYXJyYXkgYmVsb3cuIEFkZGluZyBzY3JpcHRzIHRvIHRoZSBzY3JpcHREYXRhIGFycmF5IGFsbG93c1xuICogY2hhcmFjdGVycyBmcm9tIHRoYXQgc2NyaXB0IHRvIGFwcGVhciBpbiBcXHRleHR7fSBlbnZpcm9ubWVudHMuXG4gKi9cblxuLyoqXG4gKiBFYWNoIHNjcmlwdCBvciBzY3JpcHQgZmFtaWx5IGhhcyBhIG5hbWUgYW5kIGFuIGFycmF5IG9mIGJsb2Nrcy5cbiAqIEVhY2ggYmxvY2sgaXMgYW4gYXJyYXkgb2YgdHdvIG51bWJlcnMgd2hpY2ggc3BlY2lmeSB0aGUgc3RhcnQgYW5kXG4gKiBlbmQgcG9pbnRzIChpbmNsdXNpdmUpIG9mIGEgYmxvY2sgb2YgVW5pY29kZSBjb2RlcG9pbnRzLlxuICovXG5cbi8qKlxuICogVW5pY29kZSBibG9jayBkYXRhIGZvciB0aGUgZmFtaWxpZXMgb2Ygc2NyaXB0cyB3ZSBzdXBwb3J0IGluIFxcdGV4dHt9LlxuICogU2NyaXB0cyBvbmx5IG5lZWQgdG8gYXBwZWFyIGhlcmUgaWYgdGhleSBkbyBub3QgaGF2ZSBmb250IG1ldHJpY3MuXG4gKi9cbnZhciBzY3JpcHREYXRhID0gW3tcbiAgLy8gTGF0aW4gY2hhcmFjdGVycyBiZXlvbmQgdGhlIExhdGluLTEgY2hhcmFjdGVycyB3ZSBoYXZlIG1ldHJpY3MgZm9yLlxuICAvLyBOZWVkZWQgZm9yIEN6ZWNoLCBIdW5nYXJpYW4gYW5kIFR1cmtpc2ggdGV4dCwgZm9yIGV4YW1wbGUuXG4gIG5hbWU6ICdsYXRpbicsXG4gIGJsb2NrczogW1sweDAxMDAsIDB4MDI0Zl0sIC8vIExhdGluIEV4dGVuZGVkLUEgYW5kIExhdGluIEV4dGVuZGVkLUJcbiAgWzB4MDMwMCwgMHgwMzZmXV1cbn0sIHtcbiAgLy8gVGhlIEN5cmlsbGljIHNjcmlwdCB1c2VkIGJ5IFJ1c3NpYW4gYW5kIHJlbGF0ZWQgbGFuZ3VhZ2VzLlxuICAvLyBBIEN5cmlsbGljIHN1YnNldCB1c2VkIHRvIGJlIHN1cHBvcnRlZCBhcyBleHBsaWNpdGx5IGRlZmluZWRcbiAgLy8gc3ltYm9scyBpbiBzeW1ib2xzLmpzXG4gIG5hbWU6ICdjeXJpbGxpYycsXG4gIGJsb2NrczogW1sweDA0MDAsIDB4MDRmZl1dXG59LCB7XG4gIC8vIFRoZSBCcmFobWljIHNjcmlwdHMgb2YgU291dGggYW5kIFNvdXRoZWFzdCBBc2lhXG4gIC8vIERldmFuYWdhcmkgKDA5MDDigJMwOTdGKVxuICAvLyBCZW5nYWxpICgwOTgw4oCTMDlGRilcbiAgLy8gR3VybXVraGkgKDBBMDDigJMwQTdGKVxuICAvLyBHdWphcmF0aSAoMEE4MOKAkzBBRkYpXG4gIC8vIE9yaXlhICgwQjAw4oCTMEI3RilcbiAgLy8gVGFtaWwgKDBCODDigJMwQkZGKVxuICAvLyBUZWx1Z3UgKDBDMDDigJMwQzdGKVxuICAvLyBLYW5uYWRhICgwQzgw4oCTMENGRilcbiAgLy8gTWFsYXlhbGFtICgwRDAw4oCTMEQ3RilcbiAgLy8gU2luaGFsYSAoMEQ4MOKAkzBERkYpXG4gIC8vIFRoYWkgKDBFMDDigJMwRTdGKVxuICAvLyBMYW8gKDBFODDigJMwRUZGKVxuICAvLyBUaWJldGFuICgwRjAw4oCTMEZGRilcbiAgLy8gTXlhbm1hciAoMTAwMOKAkzEwOUYpXG4gIG5hbWU6ICdicmFobWljJyxcbiAgYmxvY2tzOiBbWzB4MDkwMCwgMHgxMDlGXV1cbn0sIHtcbiAgbmFtZTogJ2dlb3JnaWFuJyxcbiAgYmxvY2tzOiBbWzB4MTBBMCwgMHgxMGZmXV1cbn0sIHtcbiAgLy8gQ2hpbmVzZSBhbmQgSmFwYW5lc2UuXG4gIC8vIFRoZSBcImtcIiBpbiBjamsgaXMgZm9yIEtvcmVhbiwgYnV0IHdlJ3ZlIHNlcGFyYXRlZCBLb3JlYW4gb3V0XG4gIG5hbWU6IFwiY2prXCIsXG4gIGJsb2NrczogW1sweDMwMDAsIDB4MzBGRl0sIC8vIENKSyBzeW1ib2xzIGFuZCBwdW5jdHVhdGlvbiwgSGlyYWdhbmEsIEthdGFrYW5hXG4gIFsweDRFMDAsIDB4OUZBRl0sIC8vIENKSyBpZGVvZ3JhbXNcbiAgWzB4RkYwMCwgMHhGRjYwXV1cbn0sIHtcbiAgLy8gS29yZWFuXG4gIG5hbWU6ICdoYW5ndWwnLFxuICBibG9ja3M6IFtbMHhBQzAwLCAweEQ3QUZdXVxufV07XG4vKipcbiAqIEdpdmVuIGEgY29kZXBvaW50LCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCBvciBzY3JpcHQgZmFtaWx5XG4gKiBpdCBpcyBmcm9tLCBvciBudWxsIGlmIGl0IGlzIG5vdCBwYXJ0IG9mIGEga25vd24gYmxvY2tcbiAqL1xuXG5mdW5jdGlvbiBzY3JpcHRGcm9tQ29kZXBvaW50KGNvZGVwb2ludCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdERhdGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc2NyaXB0ID0gc2NyaXB0RGF0YVtpXTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBzY3JpcHQuYmxvY2tzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGJsb2NrID0gc2NyaXB0LmJsb2Nrc1tfaV07XG5cbiAgICAgIGlmIChjb2RlcG9pbnQgPj0gYmxvY2tbMF0gJiYgY29kZXBvaW50IDw9IGJsb2NrWzFdKSB7XG4gICAgICAgIHJldHVybiBzY3JpcHQubmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogQSBmbGF0dGVuZWQgdmVyc2lvbiBvZiBhbGwgdGhlIHN1cHBvcnRlZCBibG9ja3MgaW4gYSBzaW5nbGUgYXJyYXkuXG4gKiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB0byBtYWtlIHN1cHBvcnRlZENvZGVwb2ludCgpIGZhc3QuXG4gKi9cblxudmFyIGFsbEJsb2NrcyA9IFtdO1xuc2NyaXB0RGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7XG4gIHJldHVybiBzLmJsb2Nrcy5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7XG4gICAgcmV0dXJuIGFsbEJsb2Nrcy5wdXNoLmFwcGx5KGFsbEJsb2NrcywgYik7XG4gIH0pO1xufSk7XG4vKipcbiAqIEdpdmVuIGEgY29kZXBvaW50LCByZXR1cm4gdHJ1ZSBpZiBpdCBmYWxscyB3aXRoaW4gb25lIG9mIHRoZVxuICogc2NyaXB0cyBvciBzY3JpcHQgZmFtaWxpZXMgZGVmaW5lZCBhYm92ZSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLlxuICpcbiAqIE1pY3JvIGJlbmNobWFya3Mgc2hvd3MgdGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuXG4gKiAvW1xcdTMwMDAtXFx1MzBGRlxcdTRFMDAtXFx1OUZBRlxcdUZGMDAtXFx1RkY2MFxcdUFDMDAtXFx1RDdBRlxcdTA5MDAtXFx1MTA5Rl0vLnRlc3QoKVxuICogaW4gRmlyZWZveCwgQ2hyb21lIGFuZCBOb2RlLlxuICovXG5cbmZ1bmN0aW9uIHN1cHBvcnRlZENvZGVwb2ludChjb2RlcG9pbnQpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpICs9IDIpIHtcbiAgICBpZiAoY29kZXBvaW50ID49IGFsbEJsb2Nrc1tpXSAmJiBjb2RlcG9pbnQgPD0gYWxsQmxvY2tzW2kgKyAxXSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvc3ZnR2VvbWV0cnkuanNcbi8qKlxuICogVGhpcyBmaWxlIHByb3ZpZGVzIHN1cHBvcnQgdG8gZG9tVHJlZS5qcyBhbmQgZGVsaW1pdGVyLmpzLlxuICogSXQncyBhIHN0b3JlaG91c2Ugb2YgcGF0aCBnZW9tZXRyeSBmb3IgU1ZHIGltYWdlcy5cbiAqL1xuLy8gSW4gYWxsIHBhdGhzIGJlbG93LCB0aGUgdmlld0JveC10by1lbSBzY2FsZSBpcyAxMDAwOjEuXG52YXIgaExpbmVQYWQgPSA4MDsgLy8gcGFkZGluZyBhYm92ZSBhIHNxcnQgdmluaWN1bHVtLiBQcmV2ZW50cyBpbWFnZSBjcm9wcGluZy5cbi8vIFRoZSB2aW5pY3VsdW0gb2YgYSBcXHNxcnQgY2FuIGJlIG1hZGUgdGhpY2tlciBieSBhIEthVGVYIHJlbmRlcmluZyBvcHRpb24uXG4vLyBUaGluayBvZiB2YXJpYWJsZSBleHRyYVZpbmljdWx1bSBhcyB0d28gZGV0b3VycyBpbiB0aGUgU1ZHIHBhdGguXG4vLyBUaGUgZGV0b3VyIGJlZ2lucyBhdCB0aGUgbG93ZXIgbGVmdCBvZiB0aGUgYXJlYSBsYWJlbGVkIGV4dHJhVmluaWN1bHVtIGJlbG93LlxuLy8gVGhlIGRldG91ciBwcm9jZWVkcyBvbmUgZXh0cmFWaW5pY3VsdW0gZGlzdGFuY2UgdXAgYW5kIHNsaWdodGx5IHRvIHRoZSByaWdodCxcbi8vIGRpc3BsYWNpbmcgdGhlIHJhZGl1c2VkIGNvcm5lciBiZXR3ZWVuIHN1cmQgYW5kIHZpbmljdWx1bS4gVGhlIHJhZGl1cyBpc1xuLy8gdHJhdmVyc2VkIGFzIHVzdWFsLCB0aGVuIHRoZSBkZXRvdXIgcmVzdW1lcy4gSXQgZ29lcyByaWdodCwgdG8gdGhlIGVuZCBvZlxuLy8gdGhlIHZlcnkgbG9uZyB2aW5pY3VsdW1uLCB0aGVuIGRvd24gb25lIGV4dHJhVmluaWN1bHVtIGRpc3RhbmNlLFxuLy8gYWZ0ZXIgd2hpY2ggaXQgcmVzdW1lcyByZWd1bGFyIHBhdGggZ2VvbWV0cnkgZm9yIHRoZSByYWRpY2FsLlxuXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmluaWN1bHVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvXG4gICAgICAgICAv4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4oaQZXh0cmFWaW5pY3VsdW1cbiAgICAgICAgLyDilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojihpAwLjA0ZW0gKDQwIHVuaXQpIHN0ZCB2aW5pY3VsdW0gdGhpY2tuZXNzXG4gICAgICAgLyAvXG4gICAgICAvIC9cbiAgICAgLyAvXFxcbiAgICAvIC8gc3VyZFxuKi9cblxudmFyIHNxcnRNYWluID0gZnVuY3Rpb24gc3FydE1haW4oZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKSB7XG4gIC8vIHNxcnRNYWluIHBhdGggZ2VvbWV0cnkgaXMgZnJvbSBnbHlwaCBVMjIxQSBpbiB0aGUgZm9udCBLYVRlWCBNYWluXG4gIHJldHVybiBcIk05NSxcIiArICg2MjIgKyBleHRyYVZpbmljdWx1bSArIGhMaW5lUGFkKSArIFwiXFxuYy0yLjcsMCwtNy4xNywtMi43LC0xMy41LC04Yy01LjgsLTUuMywtOS41LC0xMCwtOS41LC0xNFxcbmMwLC0yLDAuMywtMy4zLDEsLTRjMS4zLC0yLjcsMjMuODMsLTIwLjcsNjcuNSwtNTRcXG5jNDQuMiwtMzMuMyw2NS44LC01MC4zLDY2LjUsLTUxYzEuMywtMS4zLDMsLTIsNSwtMmM0LjcsMCw4LjcsMy4zLDEyLDEwXFxuczE3MywzNzgsMTczLDM3OGMwLjcsMCwzNS4zLC03MSwxMDQsLTIxM2M2OC43LC0xNDIsMTM3LjUsLTI4NSwyMDYuNSwtNDI5XFxuYzY5LC0xNDQsMTA0LjUsLTIxNy43LDEwNi41LC0yMjFcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDIuMDc1ICsgXCIgLVwiICsgZXh0cmFWaW5pY3VsdW0gKyBcIlxcbmM1LjMsLTkuMywxMiwtMTQsMjAsLTE0XFxuSDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiSDg0NS4yNzI0XFxucy0yMjUuMjcyLDQ2NywtMjI1LjI3Miw0NjdzLTIzNSw0ODYsLTIzNSw0ODZjLTIuNyw0LjcsLTksNywtMTksN1xcbmMtNiwwLC0xMCwtMSwtMTIsLTNzLTE5NCwtNDIyLC0xOTQsLTQyMnMtNjUsNDcsLTY1LDQ3elxcbk1cIiArICg4MzQgKyBleHRyYVZpbmljdWx1bSkgKyBcIiBcIiArIGhMaW5lUGFkICsgXCJoNDAwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJoLTQwMDAwMHpcIjtcbn07XG5cbnZhciBzcXJ0U2l6ZTEgPSBmdW5jdGlvbiBzcXJ0U2l6ZTEoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKSB7XG4gIC8vIHNpemUxIGlzIGZyb20gZ2x5cGggVTIyMUEgaW4gdGhlIGZvbnQgS2FUZVhfU2l6ZTEtUmVndWxhclxuICByZXR1cm4gXCJNMjYzLFwiICsgKDYwMSArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJjMC43LDAsMTgsMzkuNyw1MiwxMTlcXG5jMzQsNzkuMyw2OC4xNjcsMTU4LjcsMTAyLjUsMjM4YzM0LjMsNzkuMyw1MS44LDExOS4zLDUyLjUsMTIwXFxuYzM0MCwtNzA0LjcsNTEwLjcsLTEwNjAuMyw1MTIsLTEwNjdcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDIuMDg0ICsgXCIgLVwiICsgZXh0cmFWaW5pY3VsdW0gKyBcIlxcbmM0LjcsLTcuMywxMSwtMTEsMTksLTExXFxuSDQwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIMTAxMi4zXFxucy0yNzEuMyw1NjcsLTI3MS4zLDU2N2MtMzguNyw4MC43LC04NCwxNzUsLTEzNiwyODNjLTUyLDEwOCwtODkuMTY3LDE4NS4zLC0xMTEuNSwyMzJcXG5jLTIyLjMsNDYuNywtMzMuOCw3MC4zLC0zNC41LDcxYy00LjcsNC43LC0xMi4zLDcsLTIzLDdzLTEyLC0xLC0xMiwtMVxcbnMtMTA5LC0yNTMsLTEwOSwtMjUzYy03Mi43LC0xNjgsLTEwOS4zLC0yNTIsLTExMCwtMjUyYy0xMC43LDgsLTIyLDE2LjcsLTM0LDI2XFxuYy0yMiwxNy4zLC0zMy4zLDI2LC0zNCwyNnMtMjYsLTI2LC0yNiwtMjZzNzYsLTU5LDc2LC01OXM3NiwtNjAsNzYsLTYwelxcbk1cIiArICgxMDAxICsgZXh0cmFWaW5pY3VsdW0pICsgXCIgXCIgKyBoTGluZVBhZCArIFwiaDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiaC00MDAwMDB6XCI7XG59O1xuXG52YXIgc3FydFNpemUyID0gZnVuY3Rpb24gc3FydFNpemUyKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCkge1xuICAvLyBzaXplMiBpcyBmcm9tIGdseXBoIFUyMjFBIGluIHRoZSBmb250IEthVGVYX1NpemUyLVJlZ3VsYXJcbiAgcmV0dXJuIFwiTTk4MyBcIiArICgxMCArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDMuMTMgKyBcIiAtXCIgKyBleHRyYVZpbmljdWx1bSArIFwiXFxuYzQsLTYuNywxMCwtMTAsMTgsLTEwIEg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcIlxcbkgxMDEzLjFzLTgzLjQsMjY4LC0yNjQuMSw4NDBjLTE4MC43LDU3MiwtMjc3LDg3Ni4zLC0yODksOTEzYy00LjcsNC43LC0xMi43LDcsLTI0LDdcXG5zLTEyLDAsLTEyLDBjLTEuMywtMy4zLC0zLjcsLTExLjcsLTcsLTI1Yy0zNS4zLC0xMjUuMywtMTA2LjcsLTM3My4zLC0yMTQsLTc0NFxcbmMtMTAsMTIsLTIxLDI1LC0zMywzOXMtMzIsMzksLTMyLDM5Yy02LC01LjMsLTE1LC0xNCwtMjcsLTI2czI1LC0zMCwyNSwtMzBcXG5jMjYuNywtMzIuNyw1MiwtNjMsNzYsLTkxczUyLC02MCw1MiwtNjBzMjA4LDcyMiwyMDgsNzIyXFxuYzU2LC0xNzUuMywxMjYuMywtMzk3LjMsMjExLC02NjZjODQuNywtMjY4LjcsMTUzLjgsLTQ4OC4yLDIwNy41LC02NTguNVxcbmM1My43LC0xNzAuMyw4NC41LC0yNjYuOCw5Mi41LC0yODkuNXpcXG5NXCIgKyAoMTAwMSArIGV4dHJhVmluaWN1bHVtKSArIFwiIFwiICsgaExpbmVQYWQgKyBcImg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcImgtNDAwMDAwelwiO1xufTtcblxudmFyIHNxcnRTaXplMyA9IGZ1bmN0aW9uIHNxcnRTaXplMyhleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpIHtcbiAgLy8gc2l6ZTMgaXMgZnJvbSBnbHlwaCBVMjIxQSBpbiB0aGUgZm9udCBLYVRlWF9TaXplMy1SZWd1bGFyXG4gIHJldHVybiBcIk00MjQsXCIgKyAoMjM5OCArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJcXG5jLTEuMywtMC43LC0zOC41LC0xNzIsLTExMS41LC01MTRjLTczLC0zNDIsLTEwOS44LC01MTMuMywtMTEwLjUsLTUxNFxcbmMwLC0yLC0xMC43LDE0LjMsLTMyLDQ5Yy00LjcsNy4zLC05LjgsMTUuNywtMTUuNSwyNWMtNS43LDkuMywtOS44LDE2LC0xMi41LDIwXFxucy01LDcsLTUsN2MtNCwtMy4zLC04LjMsLTcuNywtMTMsLTEzcy0xMywtMTMsLTEzLC0xM3M3NiwtMTIyLDc2LC0xMjJzNzcsLTEyMSw3NywtMTIxXFxuczIwOSw5NjgsMjA5LDk2OGMwLC0yLDg0LjcsLTM2MS43LDI1NCwtMTA3OWMxNjkuMywtNzE3LjMsMjU0LjcsLTEwNzcuNywyNTYsLTEwODFcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDQuMjIzICsgXCIgLVwiICsgZXh0cmFWaW5pY3VsdW0gKyBcImM0LC02LjcsMTAsLTEwLDE4LC0xMCBINDAwMDAwXFxudlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIMTAxNC42XFxucy04Ny4zLDM3OC43LC0yNzIuNiwxMTY2Yy0xODUuMyw3ODcuMywtMjc5LjMsMTE4Mi4zLC0yODIsMTE4NVxcbmMtMiw2LC0xMCw5LC0yNCw5XFxuYy04LDAsLTEyLC0wLjcsLTEyLC0yeiBNXCIgKyAoMTAwMSArIGV4dHJhVmluaWN1bHVtKSArIFwiIFwiICsgaExpbmVQYWQgKyBcIlxcbmg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcImgtNDAwMDAwelwiO1xufTtcblxudmFyIHNxcnRTaXplNCA9IGZ1bmN0aW9uIHNxcnRTaXplNChleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpIHtcbiAgLy8gc2l6ZTQgaXMgZnJvbSBnbHlwaCBVMjIxQSBpbiB0aGUgZm9udCBLYVRlWF9TaXplNC1SZWd1bGFyXG4gIHJldHVybiBcIk00NzMsXCIgKyAoMjcxMyArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJcXG5jMzM5LjMsLTE3OTkuMyw1MDkuMywtMjcwMCw1MTAsLTI3MDIgbFwiICsgZXh0cmFWaW5pY3VsdW0gLyA1LjI5OCArIFwiIC1cIiArIGV4dHJhVmluaWN1bHVtICsgXCJcXG5jMy4zLC03LjMsOS4zLC0xMSwxOCwtMTEgSDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiSDEwMTcuN1xcbnMtOTAuNSw0NzgsLTI3Ni4yLDE0NjZjLTE4NS43LDk4OCwtMjc5LjUsMTQ4MywtMjgxLjUsMTQ4NWMtMiw2LC0xMCw5LC0yNCw5XFxuYy04LDAsLTEyLC0wLjcsLTEyLC0yYzAsLTEuMywtNS4zLC0zMiwtMTYsLTkyYy01MC43LC0yOTMuMywtMTE5LjcsLTY5My4zLC0yMDcsLTEyMDBcXG5jMCwtMS4zLC01LjMsOC43LC0xNiwzMGMtMTAuNywyMS4zLC0yMS4zLDQyLjcsLTMyLDY0cy0xNiwzMywtMTYsMzNzLTI2LC0yNiwtMjYsLTI2XFxuczc2LC0xNTMsNzYsLTE1M3M3NywtMTUxLDc3LC0xNTFjMC43LDAuNywzNS43LDIwMiwxMDUsNjA0YzY3LjMsNDAwLjcsMTAyLDYwMi43LDEwNCxcXG42MDZ6TVwiICsgKDEwMDEgKyBleHRyYVZpbmljdWx1bSkgKyBcIiBcIiArIGhMaW5lUGFkICsgXCJoNDAwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIMTAxNy43elwiO1xufTtcblxudmFyIHNxcnRUYWxsID0gZnVuY3Rpb24gc3FydFRhbGwoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkLCB2aWV3Qm94SGVpZ2h0KSB7XG4gIC8vIHNxcnRUYWxsIGlzIGZyb20gZ2x5cGggVTIzQjcgaW4gdGhlIGZvbnQgS2FUZVhfU2l6ZTQtUmVndWxhclxuICAvLyBPbmUgcGF0aCBlZGdlIGhhcyBhIHZhcmlhYmxlIGxlbmd0aC4gSXQgcnVucyB2ZXJ0aWNhbGx5IGZyb20gdGhlIHZpbmljdWx1bW5cbiAgLy8gdG8gYSBwb2ludCBuZWFyICgxNCB1bml0cykgdGhlIGJvdHRvbSBvZiB0aGUgc3VyZC4gVGhlIHZpbmljdWx1bVxuICAvLyBpcyBub3JtYWxseSA0MCB1bml0cyB0aGljay4gU28gdGhlIGxlbmd0aCBvZiB0aGUgbGluZSBpbiBxdWVzdGlvbiBpczpcbiAgdmFyIHZlcnRTZWdtZW50ID0gdmlld0JveEhlaWdodCAtIDU0IC0gaExpbmVQYWQgLSBleHRyYVZpbmljdWx1bTtcbiAgcmV0dXJuIFwiTTcwMiBcIiArIChleHRyYVZpbmljdWx1bSArIGhMaW5lUGFkKSArIFwiSDQwMDAwMFwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJcXG5INzQydlwiICsgdmVydFNlZ21lbnQgKyBcImwtNCA0LTQgNGMtLjY2Ny43IC0yIDEuNS00IDIuNXMtNC4xNjcgMS44MzMtNi41IDIuNS01LjUgMS05LjUgMVxcbmgtMTJsLTI4LTg0Yy0xNi42NjctNTItOTYuNjY3IC0yOTQuMzMzLTI0MC03MjdsLTIxMiAtNjQzIC04NSAxNzBcXG5jLTQtMy4zMzMtOC4zMzMtNy42NjctMTMgLTEzbC0xMy0xM2w3Ny0xNTUgNzctMTU2YzY2IDE5OS4zMzMgMTM5IDQxOS42NjdcXG4yMTkgNjYxIGwyMTggNjYxek03MDIgXCIgKyBoTGluZVBhZCArIFwiSDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiSDc0MnpcIjtcbn07XG5cbnZhciBzcXJ0UGF0aCA9IGZ1bmN0aW9uIHNxcnRQYXRoKHNpemUsIGV4dHJhVmluaWN1bHVtLCB2aWV3Qm94SGVpZ2h0KSB7XG4gIGV4dHJhVmluaWN1bHVtID0gMTAwMCAqIGV4dHJhVmluaWN1bHVtOyAvLyBDb252ZXJ0IGZyb20gZG9jdW1lbnQgZW1zIHRvIHZpZXdCb3guXG5cbiAgdmFyIHBhdGggPSBcIlwiO1xuXG4gIHN3aXRjaCAoc2l6ZSkge1xuICAgIGNhc2UgXCJzcXJ0TWFpblwiOlxuICAgICAgcGF0aCA9IHNxcnRNYWluKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJzcXJ0U2l6ZTFcIjpcbiAgICAgIHBhdGggPSBzcXJ0U2l6ZTEoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInNxcnRTaXplMlwiOlxuICAgICAgcGF0aCA9IHNxcnRTaXplMihleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwic3FydFNpemUzXCI6XG4gICAgICBwYXRoID0gc3FydFNpemUzKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJzcXJ0U2l6ZTRcIjpcbiAgICAgIHBhdGggPSBzcXJ0U2l6ZTQoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInNxcnRUYWxsXCI6XG4gICAgICBwYXRoID0gc3FydFRhbGwoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkLCB2aWV3Qm94SGVpZ2h0KTtcbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcbnZhciBzdmdHZW9tZXRyeV9wYXRoID0ge1xuICAvLyBUaGUgZG91YmxlbGVmdGFycm93IGdlb21ldHJ5IGlzIGZyb20gZ2x5cGggVSsyMUQwIGluIHRoZSBmb250IEthVGVYIE1haW5cbiAgZG91YmxlbGVmdGFycm93OiBcIk0yNjIgMTU3XFxubDEwLTEwYzM0LTM2IDYyLjctNzcgODYtMTIzIDMuMy04IDUtMTMuMyA1LTE2IDAtNS4zLTYuNy04LTIwLTgtNy4zXFxuIDAtMTIuMi41LTE0LjUgMS41LTIuMyAxLTQuOCA0LjUtNy41IDEwLjUtNDkuMyA5Ny4zLTEyMS43IDE2OS4zLTIxNyAyMTYtMjhcXG4gMTQtNTcuMyAyNS04OCAzMy02LjcgMi0xMSAzLjgtMTMgNS41LTIgMS43LTMgNC4yLTMgNy41czEgNS44IDMgNy41XFxuYzIgMS43IDYuMyAzLjUgMTMgNS41IDY4IDE3LjMgMTI4LjIgNDcuOCAxODAuNSA5MS41IDUyLjMgNDMuNyA5My44IDk2LjIgMTI0LjVcXG4gMTU3LjUgOS4zIDggMTUuMyAxMi4zIDE4IDEzaDZjMTItLjcgMTgtNCAxOC0xMCAwLTItMS43LTctNS0xNS0yMy4zLTQ2LTUyLTg3XFxuLTg2LTEyM2wtMTAtMTBoMzk5NzM4di00MEgyMThjMzI4IDAgMCAwIDAgMGwtMTAtOGMtMjYuNy0yMC02NS43LTQzLTExNy02OSAyLjdcXG4tMiA2LTMuNyAxMC01IDM2LjctMTYgNzIuMy0zNy4zIDEwNy02NGwxMC04aDM5OTc4MnYtNDB6XFxubTggMHY0MGgzOTk3MzB2LTQwem0wIDE5NHY0MGgzOTk3MzB2LTQwelwiLFxuICAvLyBkb3VibGVyaWdodGFycm93IGlzIGZyb20gZ2x5cGggVSsyMUQyIGluIGZvbnQgS2FUZVggTWFpblxuICBkb3VibGVyaWdodGFycm93OiBcIk0zOTk3MzggMzkybFxcbi0xMCAxMGMtMzQgMzYtNjIuNyA3Ny04NiAxMjMtMy4zIDgtNSAxMy4zLTUgMTYgMCA1LjMgNi43IDggMjAgOCA3LjMgMCAxMi4yLS41XFxuIDE0LjUtMS41IDIuMy0xIDQuOC00LjUgNy41LTEwLjUgNDkuMy05Ny4zIDEyMS43LTE2OS4zIDIxNy0yMTYgMjgtMTQgNTcuMy0yNSA4OFxcbi0zMyA2LjctMiAxMS0zLjggMTMtNS41IDItMS43IDMtNC4yIDMtNy41cy0xLTUuOC0zLTcuNWMtMi0xLjctNi4zLTMuNS0xMy01LjUtNjhcXG4tMTcuMy0xMjguMi00Ny44LTE4MC41LTkxLjUtNTIuMy00My43LTkzLjgtOTYuMi0xMjQuNS0xNTcuNS05LjMtOC0xNS4zLTEyLjMtMThcXG4tMTNoLTZjLTEyIC43LTE4IDQtMTggMTAgMCAyIDEuNyA3IDUgMTUgMjMuMyA0NiA1MiA4NyA4NiAxMjNsMTAgMTBIMHY0MGgzOTk3ODJcXG5jLTMyOCAwIDAgMCAwIDBsMTAgOGMyNi43IDIwIDY1LjcgNDMgMTE3IDY5LTIuNyAyLTYgMy43LTEwIDUtMzYuNyAxNi03Mi4zIDM3LjNcXG4tMTA3IDY0bC0xMCA4SDB2NDB6TTAgMTU3djQwaDM5OTczMHYtNDB6bTAgMTk0djQwaDM5OTczMHYtNDB6XCIsXG4gIC8vIGxlZnRhcnJvdyBpcyBmcm9tIGdseXBoIFUrMjE5MCBpbiBmb250IEthVGVYIE1haW5cbiAgbGVmdGFycm93OiBcIk00MDAwMDAgMjQxSDExMGwzLTNjNjguNy01Mi43IDExMy43LTEyMFxcbiAxMzUtMjAyIDQtMTQuNyA2LTIzIDYtMjUgMC03LjMtNy0xMS0yMS0xMS04IDAtMTMuMi44LTE1LjUgMi41LTIuMyAxLjctNC4yIDUuOFxcbi01LjUgMTIuNS0xLjMgNC43LTIuNyAxMC4zLTQgMTctMTIgNDguNy0zNC44IDkyLTY4LjUgMTMwUzY1LjMgMjI4LjMgMTggMjQ3XFxuYy0xMCA0LTE2IDcuNy0xOCAxMSAwIDguNyA2IDE0LjMgMTggMTcgNDcuMyAxOC43IDg3LjggNDcgMTIxLjUgODVTMTk2IDQ0MS4zIDIwOFxcbiA0OTBjLjcgMiAxLjMgNSAyIDlzMS4yIDYuNyAxLjUgOGMuMyAxLjMgMSAzLjMgMiA2czIuMiA0LjUgMy41IDUuNWMxLjMgMSAzLjNcXG4gMS44IDYgMi41czYgMSAxMCAxYzE0IDAgMjEtMy43IDIxLTExIDAtMi0yLTEwLjMtNi0yNS0yMC03OS4zLTY1LTE0Ni43LTEzNS0yMDJcXG4gbC0zLTNoMzk5ODkwek0xMDAgMjQxdjQwaDM5OTkwMHYtNDB6XCIsXG4gIC8vIG92ZXJicmFjZSBpcyBmcm9tIGdseXBocyBVKzIzQTkvMjNBOC8yM0E3IGluIGZvbnQgS2FUZVhfU2l6ZTQtUmVndWxhclxuICBsZWZ0YnJhY2U6IFwiTTYgNTQ4bC02LTZ2LTM1bDYtMTFjNTYtMTA0IDEzNS4zLTE4MS4zIDIzOC0yMzIgNTcuMy0yOC43IDExN1xcbi00NSAxNzktNTBoMzk5NTc3djEyMEg0MDNjLTQzLjMgNy04MSAxNS0xMTMgMjYtMTAwLjcgMzMtMTc5LjcgOTEtMjM3IDE3NC0yLjdcXG4gNS02IDktMTAgMTMtLjcgMS03LjMgMS0yMCAxSDZ6XCIsXG4gIGxlZnRicmFjZXVuZGVyOiBcIk0wIDZsNi02aDE3YzEyLjY4OCAwIDE5LjMxMy4zIDIwIDEgNCA0IDcuMzEzIDguMyAxMCAxM1xcbiAzNS4zMTMgNTEuMyA4MC44MTMgOTMuOCAxMzYuNSAxMjcuNSA1NS42ODggMzMuNyAxMTcuMTg4IDU1LjggMTg0LjUgNjYuNS42ODhcXG4gMCAyIC4zIDQgMSAxOC42ODggMi43IDc2IDQuMyAxNzIgNWgzOTk0NTB2MTIwSDQyOWwtNi0xYy0xMjQuNjg4LTgtMjM1LTYxLjdcXG4tMzMxLTE2MUM2MC42ODcgMTM4LjcgMzIuMzEyIDk5LjMgNyA1NEwwIDQxVjZ6XCIsXG4gIC8vIG92ZXJncm91cCBpcyBmcm9tIHRoZSBNblN5bWJvbCBwYWNrYWdlIChwdWJsaWMgZG9tYWluKVxuICBsZWZ0Z3JvdXA6IFwiTTQwMDAwMCA4MFxcbkg0MzVDNjQgODAgMTY4LjMgMjI5LjQgMjEgMjYwYy01LjkgMS4yLTE4IDAtMTggMC0yIDAtMy0xLTMtM3YtMzhDNzYgNjEgMjU3IDBcXG4gNDM1IDBoMzk5NTY1elwiLFxuICBsZWZ0Z3JvdXB1bmRlcjogXCJNNDAwMDAwIDI2Mlxcbkg0MzVDNjQgMjYyIDE2OC4zIDExMi42IDIxIDgyYy01LjktMS4yLTE4IDAtMTggMC0yIDAtMyAxLTMgM3YzOGM3NiAxNTggMjU3IDIxOVxcbiA0MzUgMjE5aDM5OTU2NXpcIixcbiAgLy8gSGFycG9vbnMgYXJlIGZyb20gZ2x5cGggVSsyMUJEIGluIGZvbnQgS2FUZVggTWFpblxuICBsZWZ0aGFycG9vbjogXCJNMCAyNjdjLjcgNS4zIDMgMTAgNyAxNGgzOTk5OTN2LTQwSDkzYzMuM1xcbi0zLjMgMTAuMi05LjUgMjAuNS0xOC41czE3LjgtMTUuOCAyMi41LTIwLjVjNTAuNy01MiA4OC0xMTAuMyAxMTItMTc1IDQtMTEuMyA1XFxuLTE4LjMgMy0yMS0xLjMtNC03LjMtNi0xOC02LTggMC0xMyAuNy0xNSAycy00LjcgNi43LTggMTZjLTQyIDk4LjctMTA3LjMgMTc0LjdcXG4tMTk2IDIyOC02LjcgNC43LTEwLjcgOC0xMiAxMC0xLjMgMi0yIDUuNy0yIDExem0xMDAtMjZ2NDBoMzk5OTAwdi00MHpcIixcbiAgbGVmdGhhcnBvb25wbHVzOiBcIk0wIDI2N2MuNyA1LjMgMyAxMCA3IDE0aDM5OTk5M3YtNDBIOTNjMy4zLTMuMyAxMC4yLTkuNVxcbiAyMC41LTE4LjVzMTcuOC0xNS44IDIyLjUtMjAuNWM1MC43LTUyIDg4LTExMC4zIDExMi0xNzUgNC0xMS4zIDUtMTguMyAzLTIxLTEuM1xcbi00LTcuMy02LTE4LTYtOCAwLTEzIC43LTE1IDJzLTQuNyA2LjctOCAxNmMtNDIgOTguNy0xMDcuMyAxNzQuNy0xOTYgMjI4LTYuNyA0LjdcXG4tMTAuNyA4LTEyIDEwLTEuMyAyLTIgNS43LTIgMTF6bTEwMC0yNnY0MGgzOTk5MDB2LTQwek0wIDQzNXY0MGg0MDAwMDB2LTQwelxcbm0wIDB2NDBoNDAwMDAwdi00MHpcIixcbiAgbGVmdGhhcnBvb25kb3duOiBcIk03IDI0MWMtNCA0LTYuMzMzIDguNjY3LTcgMTQgMCA1LjMzMy42NjcgOSAyIDExczUuMzMzXFxuIDUuMzMzIDEyIDEwYzkwLjY2NyA1NCAxNTYgMTMwIDE5NiAyMjggMy4zMzMgMTAuNjY3IDYuMzMzIDE2LjMzMyA5IDE3IDIgLjY2NyA1XFxuIDEgOSAxaDVjMTAuNjY3IDAgMTYuNjY3LTIgMTgtNiAyLTIuNjY3IDEtOS42NjctMy0yMS0zMi04Ny4zMzMtODIuNjY3LTE1Ny42NjdcXG4tMTUyLTIxMWwtMy0zaDM5OTkwN3YtNDB6TTkzIDI4MSBINDAwMDAwIHYtNDBMNyAyNDF6XCIsXG4gIGxlZnRoYXJwb29uZG93bnBsdXM6IFwiTTcgNDM1Yy00IDQtNi4zIDguNy03IDE0IDAgNS4zLjcgOSAyIDExczUuMyA1LjMgMTJcXG4gMTBjOTAuNyA1NCAxNTYgMTMwIDE5NiAyMjggMy4zIDEwLjcgNi4zIDE2LjMgOSAxNyAyIC43IDUgMSA5IDFoNWMxMC43IDAgMTYuN1xcbi0yIDE4LTYgMi0yLjcgMS05LjctMy0yMS0zMi04Ny4zLTgyLjctMTU3LjctMTUyLTIxMWwtMy0zaDM5OTkwN3YtNDBIN3ptOTMgMFxcbnY0MGgzOTk5MDB2LTQwek0wIDI0MXY0MGgzOTk5MDB2LTQwem0wIDB2NDBoMzk5OTAwdi00MHpcIixcbiAgLy8gaG9vayBpcyBmcm9tIGdseXBoIFUrMjFBOSBpbiBmb250IEthVGVYIE1haW5cbiAgbGVmdGhvb2s6IFwiTTQwMDAwMCAyODEgSDEwM3MtMzMtMTEuMi02MS0zMy41UzAgMTk3LjMgMCAxNjRzMTQuMi02MS4yIDQyLjVcXG4tODMuNUM3MC44IDU4LjIgMTA0IDQ3IDE0MiA0NyBjMTYuNyAwIDI1IDYuNyAyNSAyMCAwIDEyLTguNyAxOC43LTI2IDIwLTQwIDMuM1xcbi02OC43IDE1LjctODYgMzctMTAgMTItMTUgMjUuMy0xNSA0MCAwIDIyLjcgOS44IDQwLjcgMjkuNSA1NCAxOS43IDEzLjMgNDMuNSAyMVxcbiA3MS41IDIzaDM5OTg1OXpNMTAzIDI4MXYtNDBoMzk5ODk3djQwelwiLFxuICBsZWZ0bGluZXNlZ21lbnQ6IFwiTTQwIDI4MSBWNDI4IEgwIFY5NCBINDAgVjI0MSBINDAwMDAwIHY0MHpcXG5NNDAgMjgxIFY0MjggSDAgVjk0IEg0MCBWMjQxIEg0MDAwMDAgdjQwelwiLFxuICBsZWZ0bWFwc3RvOiBcIk00MCAyODEgVjQ0OEgwVjc0SDQwVjI0MUg0MDAwMDB2NDB6XFxuTTQwIDI4MSBWNDQ4SDBWNzRINDBWMjQxSDQwMDAwMHY0MHpcIixcbiAgLy8gdG9mcm9tIGlzIGZyb20gZ2x5cGggVSsyMUM0IGluIGZvbnQgS2FUZVggQU1TIFJlZ3VsYXJcbiAgbGVmdFRvRnJvbTogXCJNMCAxNDdoNDAwMDAwdjQwSDB6bTAgMjE0YzY4IDQwIDExNS43IDk1LjcgMTQzIDE2N2gyMmMxNS4zIDAgMjNcXG4tLjMgMjMtMSAwLTEuMy01LjMtMTMuNy0xNi0zNy0xOC0zNS4zLTQxLjMtNjktNzAtMTAxbC03LThoMzk5OTA1di00MEg5NWw3LThcXG5jMjguNy0zMiA1Mi02NS43IDcwLTEwMSAxMC43LTIzLjMgMTYtMzUuNyAxNi0zNyAwLS43LTcuNy0xLTIzLTFoLTIyQzExNS43IDI2NS4zXFxuIDY4IDMyMSAwIDM2MXptMC0xNzR2LTQwaDM5OTkwMHY0MHptMTAwIDE1NHY0MGgzOTk5MDB2LTQwelwiLFxuICBsb25nZXF1YWw6IFwiTTAgNTAgaDQwMDAwMCB2NDBIMHogbTAgMTk0aDQwMDAwdjQwSDB6XFxuTTAgNTAgaDQwMDAwMCB2NDBIMHogbTAgMTk0aDQwMDAwdjQwSDB6XCIsXG4gIG1pZGJyYWNlOiBcIk0yMDA0MjggMzM0XFxuYy0xMDAuNy04LjMtMTk1LjMtNDQtMjgwLTEwOC01NS4zLTQyLTEwMS43LTkzLTEzOS0xNTNsLTktMTRjLTIuNyA0LTUuNyA4LjctOSAxNFxcbi01My4zIDg2LjctMTIzLjcgMTUzLTIxMSAxOTktNjYuNyAzNi0xMzcuMyA1Ni4zLTIxMiA2MkgwVjIxNGgxOTk1NjhjMTc4LjMtMTEuN1xcbiAzMTEuNy03OC4zIDQwMy0yMDEgNi04IDkuNy0xMiAxMS0xMiAuNy0uNyA2LjctMSAxOC0xczE3LjMuMyAxOCAxYzEuMyAwIDUgNCAxMVxcbiAxMiA0NC43IDU5LjMgMTAxLjMgMTA2LjMgMTcwIDE0MXMxNDUuMyA1NC4zIDIyOSA2MGgxOTk1NzJ2MTIwelwiLFxuICBtaWRicmFjZXVuZGVyOiBcIk0xOTk1NzIgMjE0XFxuYzEwMC43IDguMyAxOTUuMyA0NCAyODAgMTA4IDU1LjMgNDIgMTAxLjcgOTMgMTM5IDE1M2w5IDE0YzIuNy00IDUuNy04LjcgOS0xNFxcbiA1My4zLTg2LjcgMTIzLjctMTUzIDIxMS0xOTkgNjYuNy0zNiAxMzcuMy01Ni4zIDIxMi02MmgxOTk1Njh2MTIwSDIwMDQzMmMtMTc4LjNcXG4gMTEuNy0zMTEuNyA3OC4zLTQwMyAyMDEtNiA4LTkuNyAxMi0xMSAxMi0uNy43LTYuNyAxLTE4IDFzLTE3LjMtLjMtMTgtMWMtMS4zIDBcXG4tNS00LTExLTEyLTQ0LjctNTkuMy0xMDEuMy0xMDYuMy0xNzAtMTQxcy0xNDUuMy01NC4zLTIyOS02MEgwVjIxNHpcIixcbiAgb2lpbnRTaXplMTogXCJNNTEyLjYgNzEuNmMyNzIuNiAwIDMyMC4zIDEwNi44IDMyMC4zIDE3OC4yIDAgNzAuOC00Ny43IDE3Ny42XFxuLTMyMC4zIDE3Ny42UzE5My4xIDMyMC42IDE5My4xIDI0OS44YzAtNzEuNCA0Ni45LTE3OC4yIDMxOS41LTE3OC4yelxcbm0zNjguMSAxNzguMmMwLTg2LjQtNjAuOS0yMTUuNC0zNjguMS0yMTUuNC0zMDYuNCAwLTM2Ny4zIDEyOS0zNjcuMyAyMTUuNCAwIDg1LjhcXG42MC45IDIxNC44IDM2Ny4zIDIxNC44IDMwNy4yIDAgMzY4LjEtMTI5IDM2OC4xLTIxNC44elwiLFxuICBvaWludFNpemUyOiBcIk03NTcuOCAxMDAuMWMzODQuNyAwIDQ1MS4xIDEzNy42IDQ1MS4xIDIzMCAwIDkxLjMtNjYuNCAyMjguOFxcbi00NTEuMSAyMjguOC0zODYuMyAwLTQ1Mi43LTEzNy41LTQ1Mi43LTIyOC44IDAtOTIuNCA2Ni40LTIzMCA0NTIuNy0yMzB6XFxubTUwMi40IDIzMGMwLTExMS4yLTgyLjQtMjc3LjItNTAyLjQtMjc3LjJzLTUwNCAxNjYtNTA0IDI3Ny4yXFxuYzAgMTEwIDg0IDI3NiA1MDQgMjc2czUwMi40LTE2NiA1MDIuNC0yNzZ6XCIsXG4gIG9paWludFNpemUxOiBcIk02ODEuNCA3MS42YzQwOC45IDAgNDgwLjUgMTA2LjggNDgwLjUgMTc4LjIgMCA3MC44LTcxLjYgMTc3LjZcXG4tNDgwLjUgMTc3LjZTMjAyLjEgMzIwLjYgMjAyLjEgMjQ5LjhjMC03MS40IDcwLjUtMTc4LjIgNDc5LjMtMTc4LjJ6XFxubTUyNS44IDE3OC4yYzAtODYuNC04Ni44LTIxNS40LTUyNS43LTIxNS40LTQzNy45IDAtNTI0LjcgMTI5LTUyNC43IDIxNS40IDBcXG44NS44IDg2LjggMjE0LjggNTI0LjcgMjE0LjggNDM4LjkgMCA1MjUuNy0xMjkgNTI1LjctMjE0Ljh6XCIsXG4gIG9paWludFNpemUyOiBcIk0xMDIxLjIgNTNjNjAzLjYgMCA3MDcuOCAxNjUuOCA3MDcuOCAyNzcuMiAwIDExMC0xMDQuMiAyNzUuOFxcbi03MDcuOCAyNzUuOC02MDYgMC03MTAuMi0xNjUuOC03MTAuMi0yNzUuOEMzMTEgMjE4LjggNDE1LjIgNTMgMTAyMS4yIDUzelxcbm03NzAuNCAyNzcuMWMwLTEzMS4yLTEyNi40LTMyNy42LTc3MC41LTMyNy42UzI0OC40IDE5OC45IDI0OC40IDMzMC4xXFxuYzAgMTMwIDEyOC44IDMyNi40IDc3Mi43IDMyNi40czc3MC41LTE5Ni40IDc3MC41LTMyNi40elwiLFxuICByaWdodGFycm93OiBcIk0wIDI0MXY0MGgzOTk4OTFjLTQ3LjMgMzUuMy04NCA3OC0xMTAgMTI4XFxuLTE2LjcgMzItMjcuNyA2My43LTMzIDk1IDAgMS4zLS4yIDIuNy0uNSA0LS4zIDEuMy0uNSAyLjMtLjUgMyAwIDcuMyA2LjcgMTEgMjBcXG4gMTEgOCAwIDEzLjItLjggMTUuNS0yLjUgMi4zLTEuNyA0LjItNS41IDUuNS0xMS41IDItMTMuMyA1LjctMjcgMTEtNDEgMTQuNy00NC43XFxuIDM5LTg0LjUgNzMtMTE5LjVzNzMuNy02MC4yIDExOS03NS41YzYtMiA5LTUuNyA5LTExcy0zLTktOS0xMWMtNDUuMy0xNS4zLTg1XFxuLTQwLjUtMTE5LTc1LjVzLTU4LjMtNzQuOC03My0xMTkuNWMtNC43LTE0LTguMy0yNy4zLTExLTQwLTEuMy02LjctMy4yLTEwLjgtNS41XFxuLTEyLjUtMi4zLTEuNy03LjUtMi41LTE1LjUtMi41LTE0IDAtMjEgMy43LTIxIDExIDAgMiAyIDEwLjMgNiAyNSAyMC43IDgzLjMgNjdcXG4gMTUxLjcgMTM5IDIwNXptMCAwdjQwaDM5OTkwMHYtNDB6XCIsXG4gIHJpZ2h0YnJhY2U6IFwiTTQwMDAwMCA1NDJsXFxuLTYgNmgtMTdjLTEyLjcgMC0xOS4zLS4zLTIwLTEtNC00LTcuMy04LjMtMTAtMTMtMzUuMy01MS4zLTgwLjgtOTMuOC0xMzYuNS0xMjcuNVxcbnMtMTE3LjItNTUuOC0xODQuNS02Ni41Yy0uNyAwLTItLjMtNC0xLTE4LjctMi43LTc2LTQuMy0xNzItNUgwVjIxNGgzOTk1NzFsNiAxXFxuYzEyNC43IDggMjM1IDYxLjcgMzMxIDE2MSAzMS4zIDMzLjMgNTkuNyA3Mi43IDg1IDExOGw3IDEzdjM1elwiLFxuICByaWdodGJyYWNldW5kZXI6IFwiTTM5OTk5NCAwbDYgNnYzNWwtNiAxMWMtNTYgMTA0LTEzNS4zIDE4MS4zLTIzOCAyMzItNTcuM1xcbiAyOC43LTExNyA0NS0xNzkgNTBILTMwMFYyMTRoMzk5ODk3YzQzLjMtNyA4MS0xNSAxMTMtMjYgMTAwLjctMzMgMTc5LjctOTEgMjM3XFxuLTE3NCAyLjctNSA2LTkgMTAtMTMgLjctMSA3LjMtMSAyMC0xaDE3elwiLFxuICByaWdodGdyb3VwOiBcIk0wIDgwaDM5OTU2NWMzNzEgMCAyNjYuNyAxNDkuNCA0MTQgMTgwIDUuOSAxLjIgMTggMCAxOCAwIDIgMFxcbiAzLTEgMy0zdi0zOGMtNzYtMTU4LTI1Ny0yMTktNDM1LTIxOUgwelwiLFxuICByaWdodGdyb3VwdW5kZXI6IFwiTTAgMjYyaDM5OTU2NWMzNzEgMCAyNjYuNy0xNDkuNCA0MTQtMTgwIDUuOS0xLjIgMTggMCAxOFxcbiAwIDIgMCAzIDEgMyAzdjM4Yy03NiAxNTgtMjU3IDIxOS00MzUgMjE5SDB6XCIsXG4gIHJpZ2h0aGFycG9vbjogXCJNMCAyNDF2NDBoMzk5OTkzYzQuNy00LjcgNy05LjMgNy0xNCAwLTkuM1xcbi0zLjctMTUuMy0xMS0xOC05Mi43LTU2LjctMTU5LTEzMy43LTE5OS0yMzEtMy4zLTkuMy02LTE0LjctOC0xNi0yLTEuMy03LTItMTUtMlxcbi0xMC43IDAtMTYuNyAyLTE4IDYtMiAyLjctMSA5LjcgMyAyMSAxNS4zIDQyIDM2LjcgODEuOCA2NCAxMTkuNSAyNy4zIDM3LjcgNThcXG4gNjkuMiA5MiA5NC41em0wIDB2NDBoMzk5OTAwdi00MHpcIixcbiAgcmlnaHRoYXJwb29ucGx1czogXCJNMCAyNDF2NDBoMzk5OTkzYzQuNy00LjcgNy05LjMgNy0xNCAwLTkuMy0zLjctMTUuMy0xMVxcbi0xOC05Mi43LTU2LjctMTU5LTEzMy43LTE5OS0yMzEtMy4zLTkuMy02LTE0LjctOC0xNi0yLTEuMy03LTItMTUtMi0xMC43IDAtMTYuN1xcbiAyLTE4IDYtMiAyLjctMSA5LjcgMyAyMSAxNS4zIDQyIDM2LjcgODEuOCA2NCAxMTkuNSAyNy4zIDM3LjcgNTggNjkuMiA5MiA5NC41elxcbm0wIDB2NDBoMzk5OTAwdi00MHogbTEwMCAxOTR2NDBoMzk5OTAwdi00MHptMCAwdjQwaDM5OTkwMHYtNDB6XCIsXG4gIHJpZ2h0aGFycG9vbmRvd246IFwiTTM5OTc0NyA1MTFjMCA3LjMgNi43IDExIDIwIDExIDggMCAxMy0uOCAxNS0yLjVzNC43LTYuOFxcbiA4LTE1LjVjNDAtOTQgOTkuMy0xNjYuMyAxNzgtMjE3IDEzLjMtOCAyMC4zLTEyLjMgMjEtMTMgNS4zLTMuMyA4LjUtNS44IDkuNVxcbi03LjUgMS0xLjcgMS41LTUuMiAxLjUtMTAuNXMtMi4zLTEwLjMtNy0xNUgwdjQwaDM5OTkwOGMtMzQgMjUuMy02NC43IDU3LTkyIDk1XFxuLTI3LjMgMzgtNDguNyA3Ny43LTY0IDExOS0zLjMgOC43LTUgMTQtNSAxNnpNMCAyNDF2NDBoMzk5OTAwdi00MHpcIixcbiAgcmlnaHRoYXJwb29uZG93bnBsdXM6IFwiTTM5OTc0NyA3MDVjMCA3LjMgNi43IDExIDIwIDExIDggMCAxMy0uOFxcbiAxNS0yLjVzNC43LTYuOCA4LTE1LjVjNDAtOTQgOTkuMy0xNjYuMyAxNzgtMjE3IDEzLjMtOCAyMC4zLTEyLjMgMjEtMTMgNS4zLTMuM1xcbiA4LjUtNS44IDkuNS03LjUgMS0xLjcgMS41LTUuMiAxLjUtMTAuNXMtMi4zLTEwLjMtNy0xNUgwdjQwaDM5OTkwOGMtMzQgMjUuM1xcbi02NC43IDU3LTkyIDk1LTI3LjMgMzgtNDguNyA3Ny43LTY0IDExOS0zLjMgOC43LTUgMTQtNSAxNnpNMCA0MzV2NDBoMzk5OTAwdi00MHpcXG5tMC0xOTR2NDBoNDAwMDAwdi00MHptMCAwdjQwaDQwMDAwMHYtNDB6XCIsXG4gIHJpZ2h0aG9vazogXCJNMzk5ODU5IDI0MWMtNzY0IDAgMCAwIDAgMCA0MC0zLjMgNjguNy0xNS43IDg2LTM3IDEwLTEyIDE1LTI1LjNcXG4gMTUtNDAgMC0yMi43LTkuOC00MC43LTI5LjUtNTQtMTkuNy0xMy4zLTQzLjUtMjEtNzEuNS0yMy0xNy4zLTEuMy0yNi04LTI2LTIwIDBcXG4tMTMuMyA4LjctMjAgMjYtMjAgMzggMCA3MSAxMS4yIDk5IDMzLjUgMCAwIDcgNS42IDIxIDE2LjcgMTQgMTEuMiAyMSAzMy41IDIxXFxuIDY2LjhzLTE0IDYxLjItNDIgODMuNWMtMjggMjIuMy02MSAzMy41LTk5IDMzLjVMMCAyNDF6IE0wIDI4MXYtNDBoMzk5ODU5djQwelwiLFxuICByaWdodGxpbmVzZWdtZW50OiBcIk0zOTk5NjAgMjQxIFY5NCBoNDAgVjQyOCBoLTQwIFYyODEgSDAgdi00MHpcXG5NMzk5OTYwIDI0MSBWOTQgaDQwIFY0MjggaC00MCBWMjgxIEgwIHYtNDB6XCIsXG4gIHJpZ2h0VG9Gcm9tOiBcIk00MDAwMDAgMTY3Yy03MC43LTQyLTExOC05Ny43LTE0Mi0xNjdoLTIzYy0xNS4zIDAtMjMgLjMtMjNcXG4gMSAwIDEuMyA1LjMgMTMuNyAxNiAzNyAxOCAzNS4zIDQxLjMgNjkgNzAgMTAxbDcgOEgwdjQwaDM5OTkwNWwtNyA4Yy0yOC43IDMyXFxuLTUyIDY1LjctNzAgMTAxLTEwLjcgMjMuMy0xNiAzNS43LTE2IDM3IDAgLjcgNy43IDEgMjMgMWgyM2MyNC02OS4zIDcxLjMtMTI1IDE0Mlxcbi0xNjd6IE0xMDAgMTQ3djQwaDM5OTkwMHYtNDB6TTAgMzQxdjQwaDM5OTkwMHYtNDB6XCIsXG4gIC8vIHR3b2hlYWRsZWZ0YXJyb3cgaXMgZnJvbSBnbHlwaCBVKzIxOUUgaW4gZm9udCBLYVRlWCBBTVMgUmVndWxhclxuICB0d29oZWFkbGVmdGFycm93OiBcIk0wIDE2N2M2OCA0MFxcbiAxMTUuNyA5NS43IDE0MyAxNjdoMjJjMTUuMyAwIDIzLS4zIDIzLTEgMC0xLjMtNS4zLTEzLjctMTYtMzctMTgtMzUuMy00MS4zLTY5XFxuLTcwLTEwMWwtNy04aDEyNWw5IDdjNTAuNyAzOS4zIDg1IDg2IDEwMyAxNDBoNDZjMC00LjctNi4zLTE4LjctMTktNDItMTgtMzUuM1xcbi00MC02Ny4zLTY2LTk2bC05LTloMzk5NzE2di00MEgyODRsOS05YzI2LTI4LjcgNDgtNjAuNyA2Ni05NiAxMi43LTIzLjMzMyAxOVxcbi0zNy4zMzMgMTktNDJoLTQ2Yy0xOCA1NC01Mi4zIDEwMC43LTEwMyAxNDBsLTkgN0g5NWw3LThjMjguNy0zMiA1Mi02NS43IDcwLTEwMVxcbiAxMC43LTIzLjMzMyAxNi0zNS43IDE2LTM3IDAtLjctNy43LTEtMjMtMWgtMjJDMTE1LjcgNzEuMyA2OCAxMjcgMCAxNjd6XCIsXG4gIHR3b2hlYWRyaWdodGFycm93OiBcIk00MDAwMDAgMTY3XFxuYy02OC00MC0xMTUuNy05NS43LTE0My0xNjdoLTIyYy0xNS4zIDAtMjMgLjMtMjMgMSAwIDEuMyA1LjMgMTMuNyAxNiAzNyAxOCAzNS4zXFxuIDQxLjMgNjkgNzAgMTAxbDcgOGgtMTI1bC05LTdjLTUwLjctMzkuMy04NS04Ni0xMDMtMTQwaC00NmMwIDQuNyA2LjMgMTguNyAxOSA0MlxcbiAxOCAzNS4zIDQwIDY3LjMgNjYgOTZsOSA5SDB2NDBoMzk5NzE2bC05IDljLTI2IDI4LjctNDggNjAuNy02NiA5Ni0xMi43IDIzLjMzM1xcbi0xOSAzNy4zMzMtMTkgNDJoNDZjMTgtNTQgNTIuMy0xMDAuNyAxMDMtMTQwbDktN2gxMjVsLTcgOGMtMjguNyAzMi01MiA2NS43LTcwXFxuIDEwMS0xMC43IDIzLjMzMy0xNiAzNS43LTE2IDM3IDAgLjcgNy43IDEgMjMgMWgyMmMyNy4zLTcxLjMgNzUtMTI3IDE0My0xNjd6XCIsXG4gIC8vIHRpbGRlMSBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgYSBnbHlwaCBmcm9tIHRoZSBNblN5bWJvbCBwYWNrYWdlXG4gIHRpbGRlMTogXCJNMjAwIDU1LjUzOGMtNzcgMC0xNjggNzMuOTUzLTE3NyA3My45NTMtMyAwLTdcXG4tMi4xNzUtOS01LjQzN0wyIDk3Yy0xLTItMi00LTItNiAwLTQgMi03IDUtOWwyMC0xMkMxMTYgMTIgMTcxIDAgMjA3IDBjODYgMFxcbiAxMTQgNjggMTkxIDY4IDc4IDAgMTY4LTY4IDE3Ny02OCA0IDAgNyAyIDkgNWwxMiAxOWMxIDIuMTc1IDIgNC4zNSAyIDYuNTI1IDBcXG4gNC4zNS0yIDcuNjEzLTUgOS43ODhsLTE5IDEzLjA1Yy05MiA2My4wNzctMTE2LjkzNyA3NS4zMDgtMTgzIDc2LjEyOFxcbi02OC4yNjcuODQ3LTExMy03My45NTItMTkxLTczLjk1MnpcIixcbiAgLy8gZGl0dG8gdGlsZGUyLCB0aWxkZTMsICYgdGlsZGU0XG4gIHRpbGRlMjogXCJNMzQ0IDU1LjI2NmMtMTQyIDAtMzAwLjYzOCA4MS4zMTYtMzExLjUgODYuNDE4XFxuLTguMDEgMy43NjItMjIuNSAxMC45MS0yMy41IDUuNTYyTDEgMTIwYy0xLTItMS0zLTEtNCAwLTUgMy05IDgtMTBsMTguNC05QzE2MC45XFxuIDMxLjkgMjgzIDAgMzU4IDBjMTQ4IDAgMTg4IDEyMiAzMzEgMTIyczMxNC05NyAzMjYtOTdjNCAwIDggMiAxMCA3bDcgMjEuMTE0XFxuYzEgMi4xNCAxIDMuMjEgMSA0LjI4IDAgNS4zNDctMyA5LjYyNi03IDEwLjY5NmwtMjIuMyAxMi42MjJDODUyLjYgMTU4LjM3MiA3NTFcXG4gMTgxLjQ3NiA2NzYgMTgxLjQ3NmMtMTQ5IDAtMTg5LTEyNi4yMS0zMzItMTI2LjIxelwiLFxuICB0aWxkZTM6IFwiTTc4NiA1OUM0NTcgNTkgMzIgMTc1LjI0MiAxMyAxNzUuMjQyYy02IDAtMTAtMy40NTdcXG4tMTEtMTAuMzdMLjE1IDEzOGMtMS03IDMtMTIgMTAtMTNsMTkuMi02LjRDMzc4LjQgNDAuNyA2MzQuMyAwIDgwNC4zIDBjMzM3IDBcXG4gNDExLjggMTU3IDc0Ni44IDE1NyAzMjggMCA3NTQtMTEyIDc3My0xMTIgNSAwIDEwIDMgMTEgOWwxIDE0LjA3NWMxIDguMDY2LS42OTdcXG4gMTYuNTk1LTYuNjk3IDE3LjQ5MmwtMjEuMDUyIDcuMzFjLTM2Ny45IDk4LjE0Ni02MDkuMTUgMTIyLjY5Ni03NzguMTUgMTIyLjY5NlxcbiAtMzM4IDAtNDA5LTE1Ni41NzMtNzQ0LTE1Ni41NzN6XCIsXG4gIHRpbGRlNDogXCJNNzg2IDU4QzQ1NyA1OCAzMiAxNzcuNDg3IDEzIDE3Ny40ODdjLTYgMC0xMC0zLjM0NVxcbi0xMS0xMC4wMzVMLjE1IDE0M2MtMS03IDMtMTIgMTAtMTNsMjItNi43QzM4MS4yIDM1IDYzNy4xNSAwIDgwNy4xNSAwYzMzNyAwIDQwOVxcbiAxNzcgNzQ0IDE3NyAzMjggMCA3NTQtMTI3IDc3My0xMjcgNSAwIDEwIDMgMTEgOWwxIDE0Ljc5NGMxIDcuODA1LTMgMTMuMzgtOVxcbiAxNC40OTVsLTIwLjcgNS41NzRjLTM2Ni44NSA5OS43OS02MDcuMyAxMzkuMzcyLTc3Ni4zIDEzOS4zNzItMzM4IDAtNDA5XFxuIC0xNzUuMjM2LTc0NC0xNzUuMjM2elwiLFxuICAvLyB2ZWMgaXMgZnJvbSBnbHlwaCBVKzIwRDcgaW4gZm9udCBLYVRlWCBNYWluXG4gIHZlYzogXCJNMzc3IDIwYzAtNS4zMzMgMS44MzMtMTAgNS41LTE0UzM5MSAwIDM5NyAwYzQuNjY3IDAgOC42NjcgMS42NjcgMTIgNVxcbjMuMzMzIDIuNjY3IDYuNjY3IDkgMTAgMTkgNi42NjcgMjQuNjY3IDIwLjMzMyA0My42NjcgNDEgNTcgNy4zMzMgNC42NjcgMTFcXG4xMC42NjcgMTEgMTggMCA2LTEgMTAtMyAxMnMtNi42NjcgNS0xNCA5Yy0yOC42NjcgMTQuNjY3LTUzLjY2NyAzNS42NjctNzUgNjNcXG4tMS4zMzMgMS4zMzMtMy4xNjcgMy41LTUuNSA2LjVzLTQgNC44MzMtNSA1LjVjLTEgLjY2Ny0yLjUgMS4zMzMtNC41IDJzLTQuMzMzIDFcXG4tNyAxYy00LjY2NyAwLTkuMTY3LTEuODMzLTEzLjUtNS41UzMzNyAxODQgMzM3IDE3OGMwLTEyLjY2NyAxNS42NjctMzIuMzMzIDQ3LTU5XFxuSDIxM2wtMTcxLTFjLTguNjY3LTYtMTMtMTIuMzMzLTEzLTE5IDAtNC42NjcgNC4zMzMtMTEuMzMzIDEzLTIwaDM1OVxcbmMtMTYtMjUuMzMzLTI0LTQ1LTI0LTU5elwiLFxuICAvLyB3aWRlaGF0MSBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgYSBnbHlwaCBmcm9tIHRoZSBNblN5bWJvbCBwYWNrYWdlXG4gIHdpZGVoYXQxOiBcIk01MjkgMGg1bDUxOSAxMTVjNSAxIDkgNSA5IDEwIDAgMS0xIDItMSAzbC00IDIyXFxuYy0xIDUtNSA5LTExIDloLTJMNTMyIDY3IDE5IDE1OWgtMmMtNSAwLTktNC0xMS05bC01LTIyYy0xLTYgMi0xMiA4LTEzelwiLFxuICAvLyBkaXR0byB3aWRlaGF0Miwgd2lkZWhhdDMsICYgd2lkZWhhdDRcbiAgd2lkZWhhdDI6IFwiTTExODEgMGgybDExNzEgMTc2YzYgMCAxMCA1IDEwIDExbC0yIDIzYy0xIDYtNSAxMFxcbi0xMSAxMGgtMUwxMTgyIDY3IDE1IDIyMGgtMWMtNiAwLTEwLTQtMTEtMTBsLTItMjNjLTEtNiA0LTExIDEwLTExelwiLFxuICB3aWRlaGF0MzogXCJNMTE4MSAwaDJsMTE3MSAyMzZjNiAwIDEwIDUgMTAgMTFsLTIgMjNjLTEgNi01IDEwXFxuLTExIDEwaC0xTDExODIgNjcgMTUgMjgwaC0xYy02IDAtMTAtNC0xMS0xMGwtMi0yM2MtMS02IDQtMTEgMTAtMTF6XCIsXG4gIHdpZGVoYXQ0OiBcIk0xMTgxIDBoMmwxMTcxIDI5NmM2IDAgMTAgNSAxMCAxMWwtMiAyM2MtMSA2LTUgMTBcXG4tMTEgMTBoLTFMMTE4MiA2NyAxNSAzNDBoLTFjLTYgMC0xMC00LTExLTEwbC0yLTIzYy0xLTYgNC0xMSAxMC0xMXpcIixcbiAgLy8gd2lkZWNoZWNrIHBhdGhzIGFyZSBhbGwgaW52ZXJ0ZWQgdmVyc2lvbnMgb2Ygd2lkZWhhdFxuICB3aWRlY2hlY2sxOiBcIk01MjksMTU5aDVsNTE5LC0xMTVjNSwtMSw5LC01LDksLTEwYzAsLTEsLTEsLTIsLTEsLTNsLTQsLTIyYy0xLFxcbi01LC01LC05LC0xMSwtOWgtMmwtNTEyLDkybC01MTMsLTkyaC0yYy01LDAsLTksNCwtMTEsOWwtNSwyMmMtMSw2LDIsMTIsOCwxM3pcIixcbiAgd2lkZWNoZWNrMjogXCJNMTE4MSwyMjBoMmwxMTcxLC0xNzZjNiwwLDEwLC01LDEwLC0xMWwtMiwtMjNjLTEsLTYsLTUsLTEwLFxcbi0xMSwtMTBoLTFsLTExNjgsMTUzbC0xMTY3LC0xNTNoLTFjLTYsMCwtMTAsNCwtMTEsMTBsLTIsMjNjLTEsNiw0LDExLDEwLDExelwiLFxuICB3aWRlY2hlY2szOiBcIk0xMTgxLDI4MGgybDExNzEsLTIzNmM2LDAsMTAsLTUsMTAsLTExbC0yLC0yM2MtMSwtNiwtNSwtMTAsXFxuLTExLC0xMGgtMWwtMTE2OCwyMTNsLTExNjcsLTIxM2gtMWMtNiwwLC0xMCw0LC0xMSwxMGwtMiwyM2MtMSw2LDQsMTEsMTAsMTF6XCIsXG4gIHdpZGVjaGVjazQ6IFwiTTExODEsMzQwaDJsMTE3MSwtMjk2YzYsMCwxMCwtNSwxMCwtMTFsLTIsLTIzYy0xLC02LC01LC0xMCxcXG4tMTEsLTEwaC0xbC0xMTY4LDI3M2wtMTE2NywtMjczaC0xYy02LDAsLTEwLDQsLTExLDEwbC0yLDIzYy0xLDYsNCwxMSwxMCwxMXpcIixcbiAgLy8gVGhlIG5leHQgdGVuIHBhdGhzIHN1cHBvcnQgcmVhY3Rpb24gYXJyb3dzIGZyb20gdGhlIG1oY2hlbSBwYWNrYWdlLlxuICAvLyBBcnJvd3MgZm9yIFxcY2V7PC0tPn0gYXJlIG9mZnNldCBmcm9tIHhBeGlzIGJ5IDAuMjJleCwgcGVyIG1oY2hlbSBpbiBMYVRlWFxuICAvLyBiYXJhYm92ZWxlZnRhcnJvdyBpcyBtb3N0bHkgZnJvbSBmcm9tIGdseXBoIFUrMjE5MCBpbiBmb250IEthVGVYIE1haW5cbiAgYmFyYWJvdmVsZWZ0YXJyb3c6IFwiTTQwMDAwMCA2MjBoLTM5OTg5MGwzIC0zYzY4LjcgLTUyLjcgMTEzLjcgLTEyMCAxMzUgLTIwMlxcbmM0IC0xNC43IDYgLTIzIDYgLTI1YzAgLTcuMyAtNyAtMTEgLTIxIC0xMWMtOCAwIC0xMy4yIDAuOCAtMTUuNSAyLjVcXG5jLTIuMyAxLjcgLTQuMiA1LjggLTUuNSAxMi41Yy0xLjMgNC43IC0yLjcgMTAuMyAtNCAxN2MtMTIgNDguNyAtMzQuOCA5MiAtNjguNSAxMzBcXG5zLTc0LjIgNjYuMyAtMTIxLjUgODVjLTEwIDQgLTE2IDcuNyAtMTggMTFjMCA4LjcgNiAxNC4zIDE4IDE3YzQ3LjMgMTguNyA4Ny44IDQ3XFxuMTIxLjUgODVzNTYuNSA4MS4zIDY4LjUgMTMwYzAuNyAyIDEuMyA1IDIgOXMxLjIgNi43IDEuNSA4YzAuMyAxLjMgMSAzLjMgMiA2XFxuczIuMiA0LjUgMy41IDUuNWMxLjMgMSAzLjMgMS44IDYgMi41czYgMSAxMCAxYzE0IDAgMjEgLTMuNyAyMSAtMTFcXG5jMCAtMiAtMiAtMTAuMyAtNiAtMjVjLTIwIC03OS4zIC02NSAtMTQ2LjcgLTEzNSAtMjAybC0zIC0zaDM5OTg5MHpcXG5NMTAwIDYyMHY0MGgzOTk5MDB2LTQweiBNMCAyNDF2NDBoMzk5OTAwdi00MHpNMCAyNDF2NDBoMzk5OTAwdi00MHpcIixcbiAgLy8gcmlnaHRhcnJvd2Fib3ZlYmFyIGlzIG1vc3RseSBmcm9tIGdseXBoIFUrMjE5MiwgS2FUZVggTWFpblxuICByaWdodGFycm93YWJvdmViYXI6IFwiTTAgMjQxdjQwaDM5OTg5MWMtNDcuMyAzNS4zLTg0IDc4LTExMCAxMjgtMTYuNyAzMlxcbi0yNy43IDYzLjctMzMgOTUgMCAxLjMtLjIgMi43LS41IDQtLjMgMS4zLS41IDIuMy0uNSAzIDAgNy4zIDYuNyAxMSAyMCAxMSA4IDBcXG4xMy4yLS44IDE1LjUtMi41IDIuMy0xLjcgNC4yLTUuNSA1LjUtMTEuNSAyLTEzLjMgNS43LTI3IDExLTQxIDE0LjctNDQuNyAzOVxcbi04NC41IDczLTExOS41czczLjctNjAuMiAxMTktNzUuNWM2LTIgOS01LjcgOS0xMXMtMy05LTktMTFjLTQ1LjMtMTUuMy04NS00MC41XFxuLTExOS03NS41cy01OC4zLTc0LjgtNzMtMTE5LjVjLTQuNy0xNC04LjMtMjcuMy0xMS00MC0xLjMtNi43LTMuMi0xMC44LTUuNVxcbi0xMi41LTIuMy0xLjctNy41LTIuNS0xNS41LTIuNS0xNCAwLTIxIDMuNy0yMSAxMSAwIDIgMiAxMC4zIDYgMjUgMjAuNyA4My4zIDY3XFxuMTUxLjcgMTM5IDIwNXptOTYgMzc5aDM5OTg5NHY0MEgwem0wIDBoMzk5OTA0djQwSDB6XCIsXG4gIC8vIFRoZSBzaG9ydCBsZWZ0IGhhcnBvb24gaGFzIDAuNWVtIChpLmUuIDUwMCB1bml0cykga2VybiBvbiB0aGUgbGVmdCBlbmQuXG4gIC8vIFJlZiBmcm9tIG1oY2hlbS5zdHk6IFxccmxhcHtcXHJhaXNlYm94ey0uMjJleH17JFxca2VybjAuNWVtXG4gIGJhcmFib3Zlc2hvcnRsZWZ0aGFycG9vbjogXCJNNTA3LDQzNWMtNCw0LC02LjMsOC43LC03LDE0YzAsNS4zLDAuNyw5LDIsMTFcXG5jMS4zLDIsNS4zLDUuMywxMiwxMGM5MC43LDU0LDE1NiwxMzAsMTk2LDIyOGMzLjMsMTAuNyw2LjMsMTYuMyw5LDE3XFxuYzIsMC43LDUsMSw5LDFjMCwwLDUsMCw1LDBjMTAuNywwLDE2LjcsLTIsMTgsLTZjMiwtMi43LDEsLTkuNywtMywtMjFcXG5jLTMyLC04Ny4zLC04Mi43LC0xNTcuNywtMTUyLC0yMTFjMCwwLC0zLC0zLC0zLC0zbDM5OTM1MSwwbDAsLTQwXFxuYy0zOTg1NzAsMCwtMzk5NDM3LDAsLTM5OTQzNywweiBNNTkzIDQzNSB2NDAgSDM5OTUwMCB2LTQwelxcbk0wIDI4MSB2LTQwIEgzOTk5MDggdjQweiBNMCAyODEgdi00MCBIMzk5OTA4IHY0MHpcIixcbiAgcmlnaHRoYXJwb29uYWJvdmVzaG9ydGJhcjogXCJNMCwyNDEgbDAsNDBjMzk5MTI2LDAsMzk5OTkzLDAsMzk5OTkzLDBcXG5jNC43LC00LjcsNywtOS4zLDcsLTE0YzAsLTkuMywtMy43LC0xNS4zLC0xMSwtMThjLTkyLjcsLTU2LjcsLTE1OSwtMTMzLjcsLTE5OSxcXG4tMjMxYy0zLjMsLTkuMywtNiwtMTQuNywtOCwtMTZjLTIsLTEuMywtNywtMiwtMTUsLTJjLTEwLjcsMCwtMTYuNywyLC0xOCw2XFxuYy0yLDIuNywtMSw5LjcsMywyMWMxNS4zLDQyLDM2LjcsODEuOCw2NCwxMTkuNWMyNy4zLDM3LjcsNTgsNjkuMiw5Miw5NC41elxcbk0wIDI0MSB2NDAgSDM5OTkwOCB2LTQweiBNMCA0NzUgdi00MCBIMzk5NTAwIHY0MHogTTAgNDc1IHYtNDAgSDM5OTUwMCB2NDB6XCIsXG4gIHNob3J0YmFyYWJvdmVsZWZ0aGFycG9vbjogXCJNNyw0MzVjLTQsNCwtNi4zLDguNywtNywxNGMwLDUuMywwLjcsOSwyLDExXFxuYzEuMywyLDUuMyw1LjMsMTIsMTBjOTAuNyw1NCwxNTYsMTMwLDE5NiwyMjhjMy4zLDEwLjcsNi4zLDE2LjMsOSwxN2MyLDAuNyw1LDEsOSxcXG4xYzAsMCw1LDAsNSwwYzEwLjcsMCwxNi43LC0yLDE4LC02YzIsLTIuNywxLC05LjcsLTMsLTIxYy0zMiwtODcuMywtODIuNywtMTU3LjcsXFxuLTE1MiwtMjExYzAsMCwtMywtMywtMywtM2wzOTk5MDcsMGwwLC00MGMtMzk5MTI2LDAsLTM5OTk5MywwLC0zOTk5OTMsMHpcXG5NOTMgNDM1IHY0MCBINDAwMDAwIHYtNDB6IE01MDAgMjQxIHY0MCBINDAwMDAwIHYtNDB6IE01MDAgMjQxIHY0MCBINDAwMDAwIHYtNDB6XCIsXG4gIHNob3J0cmlnaHRoYXJwb29uYWJvdmViYXI6IFwiTTUzLDI0MWwwLDQwYzM5ODU3MCwwLDM5OTQzNywwLDM5OTQzNywwXFxuYzQuNywtNC43LDcsLTkuMyw3LC0xNGMwLC05LjMsLTMuNywtMTUuMywtMTEsLTE4Yy05Mi43LC01Ni43LC0xNTksLTEzMy43LC0xOTksXFxuLTIzMWMtMy4zLC05LjMsLTYsLTE0LjcsLTgsLTE2Yy0yLC0xLjMsLTcsLTIsLTE1LC0yYy0xMC43LDAsLTE2LjcsMiwtMTgsNlxcbmMtMiwyLjcsLTEsOS43LDMsMjFjMTUuMyw0MiwzNi43LDgxLjgsNjQsMTE5LjVjMjcuMywzNy43LDU4LDY5LjIsOTIsOTQuNXpcXG5NNTAwIDI0MSB2NDAgSDM5OTQwOCB2LTQweiBNNTAwIDQzNSB2NDAgSDQwMDAwMCB2LTQwelwiXG59O1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvdHJlZS5qc1xuXG5cbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBkb2N1bWVudCBmcmFnbWVudCwgd2hpY2ggY29udGFpbnMgZWxlbWVudHMsIGJ1dCB3aGVuXG4gKiBwbGFjZWQgaW50byB0aGUgRE9NIGRvZXNuJ3QgaGF2ZSBhbnkgcmVwcmVzZW50YXRpb24gaXRzZWxmLiBJdCBvbmx5IGNvbnRhaW5zXG4gKiBjaGlsZHJlbiBhbmQgZG9lc24ndCBoYXZlIGFueSBET00gbm9kZSBwcm9wZXJ0aWVzLlxuICovXG52YXIgdHJlZV9Eb2N1bWVudEZyYWdtZW50ID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgLy8gSHRtbERvbU5vZGVcbiAgLy8gTmV2ZXIgdXNlZDsgbmVlZGVkIGZvciBzYXRpc2Z5aW5nIGludGVyZmFjZS5cbiAgZnVuY3Rpb24gRG9jdW1lbnRGcmFnbWVudChjaGlsZHJlbikge1xuICAgIHRoaXMuY2hpbGRyZW4gPSB2b2lkIDA7XG4gICAgdGhpcy5jbGFzc2VzID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB0aGlzLmNsYXNzZXMgPSBbXTtcbiAgICB0aGlzLmhlaWdodCA9IDA7XG4gICAgdGhpcy5kZXB0aCA9IDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IDA7XG4gICAgdGhpcy5zdHlsZSA9IHt9O1xuICB9XG5cbiAgdmFyIF9wcm90byA9IERvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlO1xuXG4gIF9wcm90by5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH1cbiAgLyoqIENvbnZlcnQgdGhlIGZyYWdtZW50IGludG8gYSBub2RlLiAqL1xuICA7XG5cbiAgX3Byb3RvLnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICB2YXIgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgZnJhZy5hcHBlbmRDaGlsZCh0aGlzLmNoaWxkcmVuW2ldLnRvTm9kZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhZztcbiAgfVxuICAvKiogQ29udmVydCB0aGUgZnJhZ21lbnQgaW50byBIVE1MIG1hcmt1cC4gKi9cbiAgO1xuXG4gIF9wcm90by50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHZhciBtYXJrdXAgPSBcIlwiOyAvLyBTaW1wbHkgY29uY2F0ZW5hdGUgdGhlIG1hcmt1cCBmb3IgdGhlIGNoaWxkcmVuIHRvZ2V0aGVyLlxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBtYXJrdXAgKz0gdGhpcy5jaGlsZHJlbltpXS50b01hcmt1cCgpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXJrdXA7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYXRoIG5vZGUgaW50byBhIHN0cmluZywgc2ltaWxhciB0byBpbm5lclRleHQuIEFwcGxpZXMgdG9cbiAgICogTWF0aERvbU5vZGUncyBvbmx5LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by50b1RleHQgPSBmdW5jdGlvbiB0b1RleHQoKSB7XG4gICAgLy8gVG8gYXZvaWQgdGhpcywgd2Ugd291bGQgc3ViY2xhc3MgZG9jdW1lbnRGcmFnbWVudCBzZXBhcmF0ZWx5IGZvclxuICAgIC8vIE1hdGhNTCwgYnV0IHBvbHlmaWxscyBmb3Igc3ViY2xhc3NpbmcgaXMgZXhwZW5zaXZlIHBlciBQUiAxNDY5LlxuICAgIC8vICRGbG93Rml4TWU6IE9ubHkgd29ya3MgZm9yIENoaWxkVHlwZSA9IE1hdGhEb21Ob2RlLlxuICAgIHZhciB0b1RleHQgPSBmdW5jdGlvbiB0b1RleHQoY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZC50b1RleHQoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubWFwKHRvVGV4dCkuam9pbihcIlwiKTtcbiAgfTtcblxuICByZXR1cm4gRG9jdW1lbnRGcmFnbWVudDtcbn0oKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RvbVRyZWUuanNcbi8qKlxuICogVGhlc2Ugb2JqZWN0cyBzdG9yZSB0aGUgZGF0YSBhYm91dCB0aGUgRE9NIG5vZGVzIHdlIGNyZWF0ZSwgYXMgd2VsbCBhcyBzb21lXG4gKiBleHRyYSBkYXRhLiBUaGV5IGNhbiB0aGVuIGJlIHRyYW5zZm9ybWVkIGludG8gcmVhbCBET00gbm9kZXMgd2l0aCB0aGVcbiAqIGB0b05vZGVgIGZ1bmN0aW9uIG9yIEhUTUwgbWFya3VwIHVzaW5nIGB0b01hcmt1cGAuIFRoZXkgYXJlIHVzZWZ1bCBmb3IgYm90aFxuICogc3RvcmluZyBleHRyYSBwcm9wZXJ0aWVzIG9uIHRoZSBub2RlcywgYXMgd2VsbCBhcyBwcm92aWRpbmcgYSB3YXkgdG8gZWFzaWx5XG4gKiB3b3JrIHdpdGggdGhlIERPTS5cbiAqXG4gKiBTaW1pbGFyIGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIE1hdGhNTCBub2RlcyBleGlzdCBpbiBtYXRoTUxUcmVlLmpzLlxuICpcbiAqIFRPRE86IHJlZmFjdG9yIGBzcGFuYCBhbmQgYGFuY2hvcmAgaW50byBjb21tb24gc3VwZXJjbGFzcyB3aGVuXG4gKiB0YXJnZXQgZW52aXJvbm1lbnRzIHN1cHBvcnQgY2xhc3MgaW5oZXJpdGFuY2VcbiAqL1xuXG5cblxuXG5cbi8qKlxuICogQ3JlYXRlIGFuIEhUTUwgY2xhc3NOYW1lIGJhc2VkIG9uIGEgbGlzdCBvZiBjbGFzc2VzLiBJbiBhZGRpdGlvbiB0byBqb2luaW5nXG4gKiB3aXRoIHNwYWNlcywgd2UgYWxzbyByZW1vdmUgZW1wdHkgY2xhc3Nlcy5cbiAqL1xudmFyIGNyZWF0ZUNsYXNzID0gZnVuY3Rpb24gY3JlYXRlQ2xhc3MoY2xhc3Nlcykge1xuICByZXR1cm4gY2xhc3Nlcy5maWx0ZXIoZnVuY3Rpb24gKGNscykge1xuICAgIHJldHVybiBjbHM7XG4gIH0pLmpvaW4oXCIgXCIpO1xufTtcblxudmFyIGluaXROb2RlID0gZnVuY3Rpb24gaW5pdE5vZGUoY2xhc3Nlcywgb3B0aW9ucywgc3R5bGUpIHtcbiAgdGhpcy5jbGFzc2VzID0gY2xhc3NlcyB8fCBbXTtcbiAgdGhpcy5hdHRyaWJ1dGVzID0ge307XG4gIHRoaXMuaGVpZ2h0ID0gMDtcbiAgdGhpcy5kZXB0aCA9IDA7XG4gIHRoaXMubWF4Rm9udFNpemUgPSAwO1xuICB0aGlzLnN0eWxlID0gc3R5bGUgfHwge307XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5zdHlsZS5pc1RpZ2h0KCkpIHtcbiAgICAgIHRoaXMuY2xhc3Nlcy5wdXNoKFwibXRpZ2h0XCIpO1xuICAgIH1cblxuICAgIHZhciBjb2xvciA9IG9wdGlvbnMuZ2V0Q29sb3IoKTtcblxuICAgIGlmIChjb2xvcikge1xuICAgICAgdGhpcy5zdHlsZS5jb2xvciA9IGNvbG9yO1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogQ29udmVydCBpbnRvIGFuIEhUTUwgbm9kZVxuICovXG5cblxudmFyIF90b05vZGUgPSBmdW5jdGlvbiB0b05vZGUodGFnTmFtZSkge1xuICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7IC8vIEFwcGx5IHRoZSBjbGFzc1xuXG4gIG5vZGUuY2xhc3NOYW1lID0gY3JlYXRlQ2xhc3ModGhpcy5jbGFzc2VzKTsgLy8gQXBwbHkgaW5saW5lIHN0eWxlc1xuXG4gIGZvciAodmFyIHN0eWxlIGluIHRoaXMuc3R5bGUpIHtcbiAgICBpZiAodGhpcy5zdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZSkpIHtcbiAgICAgIC8vICRGbG93Rml4TWUgRmxvdyBkb2Vzbid0IHNlZW0gdG8gdW5kZXJzdGFuZCBzcGFuLnN0eWxlJ3MgdHlwZS5cbiAgICAgIG5vZGUuc3R5bGVbc3R5bGVdID0gdGhpcy5zdHlsZVtzdHlsZV07XG4gICAgfVxuICB9IC8vIEFwcGx5IGF0dHJpYnV0ZXNcblxuXG4gIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgaWYgKHRoaXMuYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShhdHRyKSkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICB9XG4gIH0gLy8gQXBwZW5kIHRoZSBjaGlsZHJlbiwgYWxzbyBhcyBIVE1MIG5vZGVzXG5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBub2RlLmFwcGVuZENoaWxkKHRoaXMuY2hpbGRyZW5baV0udG9Ob2RlKCkpO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuLyoqXG4gKiBDb252ZXJ0IGludG8gYW4gSFRNTCBtYXJrdXAgc3RyaW5nXG4gKi9cblxuXG52YXIgX3RvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAodGFnTmFtZSkge1xuICB2YXIgbWFya3VwID0gXCI8XCIgKyB0YWdOYW1lOyAvLyBBZGQgdGhlIGNsYXNzXG5cbiAgaWYgKHRoaXMuY2xhc3Nlcy5sZW5ndGgpIHtcbiAgICBtYXJrdXAgKz0gXCIgY2xhc3M9XFxcIlwiICsgdXRpbHMuZXNjYXBlKGNyZWF0ZUNsYXNzKHRoaXMuY2xhc3NlcykpICsgXCJcXFwiXCI7XG4gIH1cblxuICB2YXIgc3R5bGVzID0gXCJcIjsgLy8gQWRkIHRoZSBzdHlsZXMsIGFmdGVyIGh5cGhlbmF0aW9uXG5cbiAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgIGlmICh0aGlzLnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSkge1xuICAgICAgc3R5bGVzICs9IHV0aWxzLmh5cGhlbmF0ZShzdHlsZSkgKyBcIjpcIiArIHRoaXMuc3R5bGVbc3R5bGVdICsgXCI7XCI7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0eWxlcykge1xuICAgIG1hcmt1cCArPSBcIiBzdHlsZT1cXFwiXCIgKyB1dGlscy5lc2NhcGUoc3R5bGVzKSArIFwiXFxcIlwiO1xuICB9IC8vIEFkZCB0aGUgYXR0cmlidXRlc1xuXG5cbiAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGF0dHIpKSB7XG4gICAgICBtYXJrdXAgKz0gXCIgXCIgKyBhdHRyICsgXCI9XFxcIlwiICsgdXRpbHMuZXNjYXBlKHRoaXMuYXR0cmlidXRlc1thdHRyXSkgKyBcIlxcXCJcIjtcbiAgICB9XG4gIH1cblxuICBtYXJrdXAgKz0gXCI+XCI7IC8vIEFkZCB0aGUgbWFya3VwIG9mIHRoZSBjaGlsZHJlbiwgYWxzbyBhcyBtYXJrdXBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBtYXJrdXAgKz0gdGhpcy5jaGlsZHJlbltpXS50b01hcmt1cCgpO1xuICB9XG5cbiAgbWFya3VwICs9IFwiPC9cIiArIHRhZ05hbWUgKyBcIj5cIjtcbiAgcmV0dXJuIG1hcmt1cDtcbn07IC8vIE1ha2luZyB0aGUgdHlwZSBiZWxvdyBleGFjdCB3aXRoIGFsbCBvcHRpb25hbCBmaWVsZHMgZG9lc24ndCB3b3JrIGR1ZSB0b1xuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNDU4MlxuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNTY4OFxuLy8gSG93ZXZlciwgc2luY2UgKmFsbCogZmllbGRzIGFyZSBvcHRpb25hbCwgJFNoYXBlPD4gd29ya3MgYXMgc3VnZ2VzdGVkIGluIDU2ODhcbi8vIGFib3ZlLlxuLy8gVGhpcyB0eXBlIGRvZXMgbm90IGluY2x1ZGUgYWxsIENTUyBwcm9wZXJ0aWVzLiBBZGRpdGlvbmFsIHByb3BlcnRpZXMgc2hvdWxkXG4vLyBiZSBhZGRlZCBhcyBuZWVkZWQuXG5cblxuLyoqXG4gKiBUaGlzIG5vZGUgcmVwcmVzZW50cyBhIHNwYW4gbm9kZSwgd2l0aCBhIGNsYXNzTmFtZSwgYSBsaXN0IG9mIGNoaWxkcmVuLCBhbmRcbiAqIGFuIGlubGluZSBzdHlsZS4gSXQgYWxzbyBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBpdHMgaGVpZ2h0LCBkZXB0aCwgYW5kXG4gKiBtYXhGb250U2l6ZS5cbiAqXG4gKiBSZXByZXNlbnRzIHR3byB0eXBlcyB3aXRoIGRpZmZlcmVudCB1c2VzOiBTdmdTcGFuIHRvIHdyYXAgYW4gU1ZHIGFuZCBEb21TcGFuXG4gKiBvdGhlcndpc2UuIFRoaXMgdHlwZXNhZmV0eSBpcyBpbXBvcnRhbnQgd2hlbiBIVE1MIGJ1aWxkZXJzIGFjY2VzcyBhIHNwYW4nc1xuICogY2hpbGRyZW4uXG4gKi9cbnZhciBkb21UcmVlX1NwYW4gPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTcGFuKGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zLCBzdHlsZSkge1xuICAgIHRoaXMuY2hpbGRyZW4gPSB2b2lkIDA7XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gdm9pZCAwO1xuICAgIHRoaXMuY2xhc3NlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmhlaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLmRlcHRoID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIGluaXROb2RlLmNhbGwodGhpcywgY2xhc3Nlcywgb3B0aW9ucywgc3R5bGUpO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBbXTtcbiAgfVxuICAvKipcbiAgICogU2V0cyBhbiBhcmJpdHJhcnkgYXR0cmlidXRlIG9uIHRoZSBzcGFuLiBXYXJuaW5nOiB1c2UgdGhpcyB3aXNlbHkuIE5vdFxuICAgKiBhbGwgYnJvd3NlcnMgc3VwcG9ydCBhdHRyaWJ1dGVzIHRoZSBzYW1lLCBhbmQgaGF2aW5nIHRvbyBtYW55IGN1c3RvbVxuICAgKiBhdHRyaWJ1dGVzIGlzIHByb2JhYmx5IGJhZC5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gU3Bhbi5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV0gPSB2YWx1ZTtcbiAgfTtcblxuICBfcHJvdG8uaGFzQ2xhc3MgPSBmdW5jdGlvbiBoYXNDbGFzcyhjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdXRpbHMuY29udGFpbnModGhpcy5jbGFzc2VzLCBjbGFzc05hbWUpO1xuICB9O1xuXG4gIF9wcm90by50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgcmV0dXJuIF90b05vZGUuY2FsbCh0aGlzLCBcInNwYW5cIik7XG4gIH07XG5cbiAgX3Byb3RvLnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgcmV0dXJuIF90b01hcmt1cC5jYWxsKHRoaXMsIFwic3BhblwiKTtcbiAgfTtcblxuICByZXR1cm4gU3Bhbjtcbn0oKTtcbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYW4gYW5jaG9yICg8YT4pIGVsZW1lbnQgd2l0aCBhIGh5cGVybGluay4gIFNlZSBgc3BhbmBcbiAqIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4gKi9cblxudmFyIGRvbVRyZWVfQW5jaG9yID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQW5jaG9yKGhyZWYsIGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zKSB7XG4gICAgdGhpcy5jaGlsZHJlbiA9IHZvaWQgMDtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5jbGFzc2VzID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIGluaXROb2RlLmNhbGwodGhpcywgY2xhc3Nlcywgb3B0aW9ucyk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG4gIH1cblxuICB2YXIgX3Byb3RvMiA9IEFuY2hvci5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMi5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBzZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIHRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVdID0gdmFsdWU7XG4gIH07XG5cbiAgX3Byb3RvMi5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH07XG5cbiAgX3Byb3RvMi50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgcmV0dXJuIF90b05vZGUuY2FsbCh0aGlzLCBcImFcIik7XG4gIH07XG5cbiAgX3Byb3RvMi50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHJldHVybiBfdG9NYXJrdXAuY2FsbCh0aGlzLCBcImFcIik7XG4gIH07XG5cbiAgcmV0dXJuIEFuY2hvcjtcbn0oKTtcbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYW4gaW1hZ2UgZW1iZWQgKDxpbWc+KSBlbGVtZW50LlxuICovXG5cbnZhciBkb21UcmVlX0ltZyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEltZyhzcmMsIGFsdCwgc3R5bGUpIHtcbiAgICB0aGlzLnNyYyA9IHZvaWQgMDtcbiAgICB0aGlzLmFsdCA9IHZvaWQgMDtcbiAgICB0aGlzLmNsYXNzZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5oZWlnaHQgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXB0aCA9IHZvaWQgMDtcbiAgICB0aGlzLm1heEZvbnRTaXplID0gdm9pZCAwO1xuICAgIHRoaXMuc3R5bGUgPSB2b2lkIDA7XG4gICAgdGhpcy5hbHQgPSBhbHQ7XG4gICAgdGhpcy5zcmMgPSBzcmM7XG4gICAgdGhpcy5jbGFzc2VzID0gW1wibW9yZFwiXTtcbiAgICB0aGlzLnN0eWxlID0gc3R5bGU7XG4gIH1cblxuICB2YXIgX3Byb3RvMyA9IEltZy5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMy5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH07XG5cbiAgX3Byb3RvMy50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuICAgIG5vZGUuc3JjID0gdGhpcy5zcmM7XG4gICAgbm9kZS5hbHQgPSB0aGlzLmFsdDtcbiAgICBub2RlLmNsYXNzTmFtZSA9IFwibW9yZFwiOyAvLyBBcHBseSBpbmxpbmUgc3R5bGVzXG5cbiAgICBmb3IgKHZhciBzdHlsZSBpbiB0aGlzLnN0eWxlKSB7XG4gICAgICBpZiAodGhpcy5zdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZSkpIHtcbiAgICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgICBub2RlLnN0eWxlW3N0eWxlXSA9IHRoaXMuc3R5bGVbc3R5bGVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9O1xuXG4gIF9wcm90bzMudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICB2YXIgbWFya3VwID0gXCI8aW1nICBzcmM9J1wiICsgdGhpcy5zcmMgKyBcIiAnYWx0PSdcIiArIHRoaXMuYWx0ICsgXCInIFwiOyAvLyBBZGQgdGhlIHN0eWxlcywgYWZ0ZXIgaHlwaGVuYXRpb25cblxuICAgIHZhciBzdHlsZXMgPSBcIlwiO1xuXG4gICAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICAgIHN0eWxlcyArPSB1dGlscy5oeXBoZW5hdGUoc3R5bGUpICsgXCI6XCIgKyB0aGlzLnN0eWxlW3N0eWxlXSArIFwiO1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIG1hcmt1cCArPSBcIiBzdHlsZT1cXFwiXCIgKyB1dGlscy5lc2NhcGUoc3R5bGVzKSArIFwiXFxcIlwiO1xuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIicvPlwiO1xuICAgIHJldHVybiBtYXJrdXA7XG4gIH07XG5cbiAgcmV0dXJuIEltZztcbn0oKTtcbnZhciBpQ29tYmluYXRpb25zID0ge1xuICAnw64nOiBcIlxcdTAxMzFcXHUwMzAyXCIsXG4gICfDryc6IFwiXFx1MDEzMVxcdTAzMDhcIixcbiAgJ8OtJzogXCJcXHUwMTMxXFx1MDMwMVwiLFxuICAvLyAnxKsnOiAnXFx1MDEzMVxcdTAzMDQnLCAvLyBlbmFibGUgd2hlbiB3ZSBhZGQgRXh0ZW5kZWQgTGF0aW5cbiAgJ8OsJzogXCJcXHUwMTMxXFx1MDMwMFwiXG59O1xuLyoqXG4gKiBBIHN5bWJvbCBub2RlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIHN5bWJvbC4gSXQgZWl0aGVyIHJlbmRlcnNcbiAqIHRvIGEgc2luZ2xlIHRleHQgbm9kZSwgb3IgYSBzcGFuIHdpdGggYSBzaW5nbGUgdGV4dCBub2RlIGluIGl0LCBkZXBlbmRpbmcgb25cbiAqIHdoZXRoZXIgaXQgaGFzIENTUyBjbGFzc2VzLCBzdHlsZXMsIG9yIG5lZWRzIGl0YWxpYyBjb3JyZWN0aW9uLlxuICovXG5cbnZhciBkb21UcmVlX1N5bWJvbE5vZGUgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTeW1ib2xOb2RlKHRleHQsIGhlaWdodCwgZGVwdGgsIGl0YWxpYywgc2tldywgd2lkdGgsIGNsYXNzZXMsIHN0eWxlKSB7XG4gICAgdGhpcy50ZXh0ID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGggPSB2b2lkIDA7XG4gICAgdGhpcy5pdGFsaWMgPSB2b2lkIDA7XG4gICAgdGhpcy5za2V3ID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLmNsYXNzZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5zdHlsZSA9IHZvaWQgMDtcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0IHx8IDA7XG4gICAgdGhpcy5kZXB0aCA9IGRlcHRoIHx8IDA7XG4gICAgdGhpcy5pdGFsaWMgPSBpdGFsaWMgfHwgMDtcbiAgICB0aGlzLnNrZXcgPSBza2V3IHx8IDA7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoIHx8IDA7XG4gICAgdGhpcy5jbGFzc2VzID0gY2xhc3NlcyB8fCBbXTtcbiAgICB0aGlzLnN0eWxlID0gc3R5bGUgfHwge307XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IDA7IC8vIE1hcmsgdGV4dCBmcm9tIG5vbi1MYXRpbiBzY3JpcHRzIHdpdGggc3BlY2lmaWMgY2xhc3NlcyBzbyB0aGF0IHdlXG4gICAgLy8gY2FuIHNwZWNpZnkgd2hpY2ggZm9udHMgdG8gdXNlLiAgVGhpcyBhbGxvd3MgdXMgdG8gcmVuZGVyIHRoZXNlXG4gICAgLy8gY2hhcmFjdGVycyB3aXRoIGEgc2VyaWYgZm9udCBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZSBicm93c2VyIHdvdWxkXG4gICAgLy8gZWl0aGVyIGRlZmF1bHQgdG8gYSBzYW5zIHNlcmlmIG9yIHJlbmRlciBhIHBsYWNlaG9sZGVyIGNoYXJhY3Rlci5cbiAgICAvLyBXZSB1c2UgQ1NTIGNsYXNzIG5hbWVzIGxpa2UgY2prX2ZhbGxiYWNrLCBoYW5ndWxfZmFsbGJhY2sgYW5kXG4gICAgLy8gYnJhaG1pY19mYWxsYmFjay4gU2VlIC4vdW5pY29kZVNjcmlwdHMuanMgZm9yIHRoZSBzZXQgb2YgcG9zc2libGVcbiAgICAvLyBzY3JpcHQgbmFtZXNcblxuICAgIHZhciBzY3JpcHQgPSBzY3JpcHRGcm9tQ29kZXBvaW50KHRoaXMudGV4dC5jaGFyQ29kZUF0KDApKTtcblxuICAgIGlmIChzY3JpcHQpIHtcbiAgICAgIHRoaXMuY2xhc3Nlcy5wdXNoKHNjcmlwdCArIFwiX2ZhbGxiYWNrXCIpO1xuICAgIH1cblxuICAgIGlmICgvW8Ouw6/DrcOsXS8udGVzdCh0aGlzLnRleHQpKSB7XG4gICAgICAvLyBhZGQgxKsgd2hlbiB3ZSBhZGQgRXh0ZW5kZWQgTGF0aW5cbiAgICAgIHRoaXMudGV4dCA9IGlDb21iaW5hdGlvbnNbdGhpcy50ZXh0XTtcbiAgICB9XG4gIH1cblxuICB2YXIgX3Byb3RvNCA9IFN5bWJvbE5vZGUucHJvdG90eXBlO1xuXG4gIF9wcm90bzQuaGFzQ2xhc3MgPSBmdW5jdGlvbiBoYXNDbGFzcyhjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdXRpbHMuY29udGFpbnModGhpcy5jbGFzc2VzLCBjbGFzc05hbWUpO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGV4dCBub2RlIG9yIHNwYW4gZnJvbSBhIHN5bWJvbCBub2RlLiBOb3RlIHRoYXQgYSBzcGFuIGlzIG9ubHlcbiAgICogY3JlYXRlZCBpZiBpdCBpcyBuZWVkZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvNC50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLnRleHQpO1xuICAgIHZhciBzcGFuID0gbnVsbDtcblxuICAgIGlmICh0aGlzLml0YWxpYyA+IDApIHtcbiAgICAgIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICAgIHNwYW4uc3R5bGUubWFyZ2luUmlnaHQgPSB0aGlzLml0YWxpYyArIFwiZW1cIjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGFzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHNwYW4gPSBzcGFuIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgICAgc3Bhbi5jbGFzc05hbWUgPSBjcmVhdGVDbGFzcyh0aGlzLmNsYXNzZXMpO1xuICAgIH1cblxuICAgIGZvciAodmFyIHN0eWxlIGluIHRoaXMuc3R5bGUpIHtcbiAgICAgIGlmICh0aGlzLnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSkge1xuICAgICAgICBzcGFuID0gc3BhbiB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTsgLy8gJEZsb3dGaXhNZSBGbG93IGRvZXNuJ3Qgc2VlbSB0byB1bmRlcnN0YW5kIHNwYW4uc3R5bGUncyB0eXBlLlxuXG4gICAgICAgIHNwYW4uc3R5bGVbc3R5bGVdID0gdGhpcy5zdHlsZVtzdHlsZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNwYW4pIHtcbiAgICAgIHNwYW4uYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICByZXR1cm4gc3BhbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBzeW1ib2wgbm9kZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG80LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgLy8gVE9ETyhhbHBlcnQpOiBNb3JlIGR1cGxpY2F0aW9uIHRoYW4gSSdkIGxpa2UgZnJvbVxuICAgIC8vIHNwYW4ucHJvdG90eXBlLnRvTWFya3VwIGFuZCBzeW1ib2xOb2RlLnByb3RvdHlwZS50b05vZGUuLi5cbiAgICB2YXIgbmVlZHNTcGFuID0gZmFsc2U7XG4gICAgdmFyIG1hcmt1cCA9IFwiPHNwYW5cIjtcblxuICAgIGlmICh0aGlzLmNsYXNzZXMubGVuZ3RoKSB7XG4gICAgICBuZWVkc1NwYW4gPSB0cnVlO1xuICAgICAgbWFya3VwICs9IFwiIGNsYXNzPVxcXCJcIjtcbiAgICAgIG1hcmt1cCArPSB1dGlscy5lc2NhcGUoY3JlYXRlQ2xhc3ModGhpcy5jbGFzc2VzKSk7XG4gICAgICBtYXJrdXAgKz0gXCJcXFwiXCI7XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlcyA9IFwiXCI7XG5cbiAgICBpZiAodGhpcy5pdGFsaWMgPiAwKSB7XG4gICAgICBzdHlsZXMgKz0gXCJtYXJnaW4tcmlnaHQ6XCIgKyB0aGlzLml0YWxpYyArIFwiZW07XCI7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICAgIHN0eWxlcyArPSB1dGlscy5oeXBoZW5hdGUoc3R5bGUpICsgXCI6XCIgKyB0aGlzLnN0eWxlW3N0eWxlXSArIFwiO1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIG5lZWRzU3BhbiA9IHRydWU7XG4gICAgICBtYXJrdXAgKz0gXCIgc3R5bGU9XFxcIlwiICsgdXRpbHMuZXNjYXBlKHN0eWxlcykgKyBcIlxcXCJcIjtcbiAgICB9XG5cbiAgICB2YXIgZXNjYXBlZCA9IHV0aWxzLmVzY2FwZSh0aGlzLnRleHQpO1xuXG4gICAgaWYgKG5lZWRzU3Bhbikge1xuICAgICAgbWFya3VwICs9IFwiPlwiO1xuICAgICAgbWFya3VwICs9IGVzY2FwZWQ7XG4gICAgICBtYXJrdXAgKz0gXCI8L3NwYW4+XCI7XG4gICAgICByZXR1cm4gbWFya3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXNjYXBlZDtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFN5bWJvbE5vZGU7XG59KCk7XG4vKipcbiAqIFNWRyBub2RlcyBhcmUgdXNlZCB0byByZW5kZXIgc3RyZXRjaHkgd2lkZSBlbGVtZW50cy5cbiAqL1xuXG52YXIgU3ZnTm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFN2Z05vZGUoY2hpbGRyZW4sIGF0dHJpYnV0ZXMpIHtcbiAgICB0aGlzLmNoaWxkcmVuID0gdm9pZCAwO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcyB8fCB7fTtcbiAgfVxuXG4gIHZhciBfcHJvdG81ID0gU3ZnTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNS50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCBcInN2Z1wiKTsgLy8gQXBwbHkgYXR0cmlidXRlc1xuXG4gICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCBhdHRyKSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmF0dHJpYnV0ZXNbYXR0cl0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZS5hcHBlbmRDaGlsZCh0aGlzLmNoaWxkcmVuW2ldLnRvTm9kZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcblxuICBfcHJvdG81LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgdmFyIG1hcmt1cCA9IFwiPHN2Z1wiOyAvLyBBcHBseSBhdHRyaWJ1dGVzXG5cbiAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgIG1hcmt1cCArPSBcIiBcIiArIGF0dHIgKyBcIj0nXCIgKyB0aGlzLmF0dHJpYnV0ZXNbYXR0cl0gKyBcIidcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtYXJrdXAgKz0gXCI+XCI7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIG1hcmt1cCArPSB0aGlzLmNoaWxkcmVuW2ldLnRvTWFya3VwKCk7XG4gICAgfVxuXG4gICAgbWFya3VwICs9IFwiPC9zdmc+XCI7XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfTtcblxuICByZXR1cm4gU3ZnTm9kZTtcbn0oKTtcbnZhciBkb21UcmVlX1BhdGhOb2RlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUGF0aE5vZGUocGF0aE5hbWUsIGFsdGVybmF0ZSkge1xuICAgIHRoaXMucGF0aE5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5hbHRlcm5hdGUgPSB2b2lkIDA7XG4gICAgdGhpcy5wYXRoTmFtZSA9IHBhdGhOYW1lO1xuICAgIHRoaXMuYWx0ZXJuYXRlID0gYWx0ZXJuYXRlOyAvLyBVc2VkIG9ubHkgZm9yIFxcc3FydFxuICB9XG5cbiAgdmFyIF9wcm90bzYgPSBQYXRoTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNi50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCBcInBhdGhcIik7XG5cbiAgICBpZiAodGhpcy5hbHRlcm5hdGUpIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZFwiLCB0aGlzLmFsdGVybmF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZFwiLCBzdmdHZW9tZXRyeV9wYXRoW3RoaXMucGF0aE5hbWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcblxuICBfcHJvdG82LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgaWYgKHRoaXMuYWx0ZXJuYXRlKSB7XG4gICAgICByZXR1cm4gXCI8cGF0aCBkPSdcIiArIHRoaXMuYWx0ZXJuYXRlICsgXCInLz5cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiPHBhdGggZD0nXCIgKyBzdmdHZW9tZXRyeV9wYXRoW3RoaXMucGF0aE5hbWVdICsgXCInLz5cIjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFBhdGhOb2RlO1xufSgpO1xudmFyIExpbmVOb2RlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGluZU5vZGUoYXR0cmlidXRlcykge1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIHx8IHt9O1xuICB9XG5cbiAgdmFyIF9wcm90bzcgPSBMaW5lTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNy50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCBcImxpbmVcIik7IC8vIEFwcGx5IGF0dHJpYnV0ZXNcblxuICAgIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcblxuICBfcHJvdG83LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgdmFyIG1hcmt1cCA9IFwiPGxpbmVcIjtcblxuICAgIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgbWFya3VwICs9IFwiIFwiICsgYXR0ciArIFwiPSdcIiArIHRoaXMuYXR0cmlidXRlc1thdHRyXSArIFwiJ1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIi8+XCI7XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfTtcblxuICByZXR1cm4gTGluZU5vZGU7XG59KCk7XG5mdW5jdGlvbiBhc3NlcnRTeW1ib2xEb21Ob2RlKGdyb3VwKSB7XG4gIGlmIChncm91cCBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSkge1xuICAgIHJldHVybiBncm91cDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBzeW1ib2xOb2RlIGJ1dCBnb3QgXCIgKyBTdHJpbmcoZ3JvdXApICsgXCIuXCIpO1xuICB9XG59XG5mdW5jdGlvbiBhc3NlcnRTcGFuKGdyb3VwKSB7XG4gIGlmIChncm91cCBpbnN0YW5jZW9mIGRvbVRyZWVfU3Bhbikge1xuICAgIHJldHVybiBncm91cDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBzcGFuPEh0bWxEb21Ob2RlPiBidXQgZ290IFwiICsgU3RyaW5nKGdyb3VwKSArIFwiLlwiKTtcbiAgfVxufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zdWJtb2R1bGVzL2thdGV4LWZvbnRzL2ZvbnRNZXRyaWNzRGF0YS5qc1xuLy8gVGhpcyBmaWxlIGlzIEdFTkVSQVRFRCBieSBidWlsZE1ldHJpY3Muc2guIERPIE5PVCBNT0RJRlkuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBmb250TWV0cmljc0RhdGEgPSAoe1xuICBcIkFNUy1SZWd1bGFyXCI6IHtcbiAgICBcIjY1XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjY2XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY3XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjY4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjY5XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjcwXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjcxXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjczXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjc0XCI6IFswLjE2NjY3LCAwLjY4ODg5LCAwLCAwLCAwLjVdLFxuICAgIFwiNzVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNzZcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNzdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuOTQ0NDVdLFxuICAgIFwiNzhcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiNzlcIjogWzAuMTY2NjcsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODBcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODFcIjogWzAuMTY2NjcsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODJcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODRcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODZcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDEuMF0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4OVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCIxMDdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiMTY1XCI6IFswLCAwLjY3NSwgMC4wMjUsIDAsIDAuNzVdLFxuICAgIFwiMTc0XCI6IFswLjE1NTU5LCAwLjY5MjI0LCAwLCAwLCAwLjk0NjY2XSxcbiAgICBcIjI0MFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIyOTVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTQwMjhdLFxuICAgIFwiNzEwXCI6IFswLCAwLjgyNSwgMCwgMCwgMi4zMzMzNF0sXG4gICAgXCI3MzJcIjogWzAsIDAuOSwgMCwgMCwgMi4zMzMzNF0sXG4gICAgXCI3NzBcIjogWzAsIDAuODI1LCAwLCAwLCAyLjMzMzM0XSxcbiAgICBcIjc3MVwiOiBbMCwgMC45LCAwLCAwLCAyLjMzMzM0XSxcbiAgICBcIjk4OVwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIxMDA4XCI6IFswLCAwLjQzMDU2LCAwLjA0MDI4LCAwLCAwLjY2NjY3XSxcbiAgICBcIjgyNDVcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuMjc1XSxcbiAgICBcIjg0NjNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTQwMjhdLFxuICAgIFwiODQ4N1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NDk4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjg1MDJcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODUwM1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4NTA0XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg1MTNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODU5MlwiOiBbLTAuMDM1OTgsIDAuNDY0MDIsIDAsIDAsIDAuNV0sXG4gICAgXCI4NTk0XCI6IFstMC4wMzU5OCwgMC40NjQwMiwgMCwgMCwgMC41XSxcbiAgICBcIjg2MDJcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODYwM1wiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjA2XCI6IFswLjAxMzU0LCAwLjUyMjM5LCAwLCAwLCAxLjBdLFxuICAgIFwiODYwOFwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MTBcIjogWzAuMDEzNTQsIDAuNTIyMzksIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODYxMVwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCI4NjE5XCI6IFswLCAwLjU0OTg2LCAwLCAwLCAxLjBdLFxuICAgIFwiODYyMFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MjFcIjogWy0wLjEzMzEzLCAwLjM3Nzg4LCAwLCAwLCAxLjM4ODg5XSxcbiAgICBcIjg2MjJcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODYyNFwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC41XSxcbiAgICBcIjg2MjVcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNV0sXG4gICAgXCI4NjMwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAxLjBdLFxuICAgIFwiODYzMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MzRcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODYzNVwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NjM4XCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICBcIjg2MzlcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiODY0MlwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC40MTY2N10sXG4gICAgXCI4NjQzXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICBcIjg2NDRcIjogWzAuMTgwOCwgMC42NzUsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjQ2XCI6IFswLjE4MDgsIDAuNjc1LCAwLCAwLCAxLjBdLFxuICAgIFwiODY0N1wiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NDhcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODY0OVwiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTBcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODY1MVwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTJcIjogWzAuMDEzNTQsIDAuNTIyMzksIDAsIDAsIDEuMF0sXG4gICAgXCI4NjUzXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTRcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1NVwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjY2XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY2N1wiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NjlcIjogWy0wLjEzMzEzLCAwLjM3Nzg4LCAwLCAwLCAxLjBdLFxuICAgIFwiODY3MlwiOiBbLTAuMDY0LCAwLjQzNywgMCwgMCwgMS4zMzRdLFxuICAgIFwiODY3NFwiOiBbLTAuMDY0LCAwLjQzNywgMCwgMCwgMS4zMzRdLFxuICAgIFwiODcwNVwiOiBbMCwgMC44MjUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzA4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjg3MDlcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODcxN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC40MjkxN10sXG4gICAgXCI4NzIyXCI6IFstMC4wMzU5OCwgMC40NjQwMiwgMCwgMCwgMC41XSxcbiAgICBcIjg3MjRcIjogWzAuMDgxOTgsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODcyNlwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzMzXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3MzZcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODczN1wiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NzM4XCI6IFswLjAzNTE3LCAwLjUyMjM5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg3MzlcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuMjIyMjJdLFxuICAgIFwiODc0MFwiOiBbMC4yNTE0MiwgMC43NDExMSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4NzQxXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjg3NDJcIjogWzAuMjUxNDIsIDAuNzQxMTEsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzU2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3NTdcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODc2NFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc2NVwiOiBbLTAuMTMzMTMsIDAuMzc3ODgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc2OVwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc3MFwiOiBbLTAuMDM2MjUsIDAuNDYzNzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc3NFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzc2XCI6IFstMC4wMTY4OCwgMC40ODMxMiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzc4XCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3ODJcIjogWzAuMDYwNjIsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4M1wiOiBbMC4wNjA2MiwgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzg1XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3ODZcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4N1wiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzkwXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3OTFcIjogWzAuMjI5NTgsIDAuNzI5NTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc5NlwiOiBbMC4wODE5OCwgMC45MTY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODA2XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MDdcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgwOFwiOiBbMC4yNTE0MiwgMC43NTcyNiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODA5XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MTJcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNV0sXG4gICAgXCI4ODE0XCI6IFswLjIwNTc2LCAwLjcwNTc2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MTVcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxNlwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODE3XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MThcIjogWzAuMjI5NTgsIDAuNzI5NTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxOVwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODIyXCI6IFswLjE4MDgsIDAuNjc1LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MjNcIjogWzAuMTgwOCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgyOFwiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODI5XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzBcIjogWzAuMjI5NTgsIDAuNzI5NTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzMVwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODMyXCI6IFswLjIwNTc2LCAwLjcwNTc2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzNcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg0MFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQxXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NDJcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg0M1wiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQ3XCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NDhcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg1OFwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU5XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NjFcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2MlwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2M1wiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2NFwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2NVwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg3MlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4ODczXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg4NzRcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiODg3NlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4ODc3XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg4NzhcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODg3OVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4ODgyXCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4ODNcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg4NFwiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODg1XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4ODhcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODg5MFwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI4ODkxXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg4OTJcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODkwMVwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4OTAzXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MDVcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkwNlwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTA3XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MDhcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkwOVwiOiBbLTAuMDM1OTgsIDAuNDY0MDIsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkxMFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC43NjA0Ml0sXG4gICAgXCI4OTExXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjc2MDQyXSxcbiAgICBcIjg5MTJcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkxM1wiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTE0XCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg5MTVcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODkxNlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4OTE4XCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTE5XCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTIwXCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAxLjMzMzM0XSxcbiAgICBcIjg5MjFcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDEuMzMzMzRdLFxuICAgIFwiODkyMlwiOiBbMC4zODU2OSwgMC44ODU2OSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTIzXCI6IFswLjM4NTY5LCAwLjg4NTY5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MjZcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkyN1wiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTI4XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MjlcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkzNFwiOiBbMC4yMzIyMiwgMC43NDExMSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTM1XCI6IFswLjIzMjIyLCAwLjc0MTExLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MzZcIjogWzAuMjMyMjIsIDAuNzQxMTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkzN1wiOiBbMC4yMzIyMiwgMC43NDExMSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTM4XCI6IFswLjIwNTc2LCAwLjcwNTc2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MzlcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODk0MFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTQxXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5OTRcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODk5NVwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5NDE2XCI6IFswLjE1NTU5LCAwLjY5MjI0LCAwLCAwLCAwLjkwMjIyXSxcbiAgICBcIjk0ODRcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNV0sXG4gICAgXCI5NDg4XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjVdLFxuICAgIFwiOTQ5MlwiOiBbMCwgMC4zNzc4OCwgMCwgMCwgMC41XSxcbiAgICBcIjk0OTZcIjogWzAsIDAuMzc3ODgsIDAsIDAsIDAuNV0sXG4gICAgXCI5NTg1XCI6IFswLjE5NDQ0LCAwLjY4ODg5LCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjk1ODZcIjogWzAuMTk0NDQsIDAuNzQxMTEsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTYzMlwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTYzM1wiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTY1MFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5NjUxXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjk2NTRcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTY2MFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5NjYxXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjk2NjRcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTY3NFwiOiBbMC4xMTExMSwgMC42OTIyNCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5NzMzXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjk0NDQ1XSxcbiAgICBcIjEwMDAzXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjEwMDE2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjEwNzMxXCI6IFswLjExMTExLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjEwODQ2XCI6IFswLjE5NDQ0LCAwLjc1NTgzLCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjEwODc3XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODc4XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg1XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg2XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg3XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg4XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg5XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODkwXCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODkxXCI6IFswLjQ4MjU2LCAwLjk4MjU2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODkyXCI6IFswLjQ4MjU2LCAwLjk4MjU2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTAxXCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTAyXCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTMzXCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM0XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM1XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM2XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM3XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM4XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTQ5XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTUwXCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTU1XCI6IFswLjI4NDgxLCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTU2XCI6IFswLjI4NDgxLCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzUwXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjIyMjIyXSxcbiAgICBcIjU3MzUxXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjU3MzUyXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzUzXCI6IFswLCAwLjQzMDU2LCAwLjA0MDI4LCAwLCAwLjY2NjY3XSxcbiAgICBcIjU3MzU2XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzU3XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzU4XCI6IFswLjQxOTUxLCAwLjkxOTUxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzU5XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzYwXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzYxXCI6IFswLjQxOTUxLCAwLjkxOTUxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY2XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY3XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY4XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY5XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzcwXCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzcxXCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XVxuICB9LFxuICBcIkNhbGlncmFwaGljLVJlZ3VsYXJcIjoge1xuICAgIFwiNDhcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI0OVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1MlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTRcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1NVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjU2XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xOTQ0NSwgMC43OTg0N10sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMC4wMzA0MSwgMC4xMzg4OSwgMC42NTY4MV0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4wNTgzNCwgMC4xMzg4OSwgMC41MjY1M10sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wODMzNCwgMC43NzEzOV0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODMzMywgMC4wODk0NCwgMC4xMTExMSwgMC41Mjc3OF0sXG4gICAgXCI3MFwiOiBbMCwgMC42ODMzMywgMC4wOTkzMSwgMC4xMTExMSwgMC43MTg3NV0sXG4gICAgXCI3MVwiOiBbMC4wOTcyMiwgMC42ODMzMywgMC4wNTkzLCAwLjExMTExLCAwLjU5NDg3XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjAwOTY1LCAwLjExMTExLCAwLjg0NDUyXSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjA3MzgyLCAwLCAwLjU0NDUyXSxcbiAgICBcIjc0XCI6IFswLjA5NzIyLCAwLjY4MzMzLCAwLjE4NDcyLCAwLjE2NjY3LCAwLjY3Nzc4XSxcbiAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLjAxNDQ1LCAwLjA1NTU2LCAwLjc2MTk1XSxcbiAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLjEzODg5LCAwLjY4OTcyXSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLCAwLjEzODg5LCAxLjIwMDldLFxuICAgIFwiNzhcIjogWzAsIDAuNjgzMzMsIDAuMTQ3MzYsIDAuMDgzMzQsIDAuODIwNDldLFxuICAgIFwiNzlcIjogWzAsIDAuNjgzMzMsIDAuMDI3NzgsIDAuMTExMTEsIDAuNzk2MTFdLFxuICAgIFwiODBcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAuMDgzMzQsIDAuNjk1NTZdLFxuICAgIFwiODFcIjogWzAuMDk3MjIsIDAuNjgzMzMsIDAsIDAuMTExMTEsIDAuODE2NjddLFxuICAgIFwiODJcIjogWzAsIDAuNjgzMzMsIDAsIDAuMDgzMzQsIDAuODQ3NV0sXG4gICAgXCI4M1wiOiBbMCwgMC42ODMzMywgMC4wNzUsIDAuMTM4ODksIDAuNjA1NTZdLFxuICAgIFwiODRcIjogWzAsIDAuNjgzMzMsIDAuMjU0MTcsIDAsIDAuNTQ0NjRdLFxuICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMDk5MzEsIDAuMDgzMzQsIDAuNjI1ODNdLFxuICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAsIDAuNjEyNzhdLFxuICAgIFwiODdcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAuMDgzMzQsIDAuOTg3NzhdLFxuICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMTQ2NDMsIDAuMTM4ODksIDAuNzEzM10sXG4gICAgXCI4OVwiOiBbMC4wOTcyMiwgMC42ODMzMywgMC4wODIyMiwgMC4wODMzNCwgMC42NjgzNF0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMC4wNzk0NCwgMC4xMzg4OSwgMC43MjQ3M11cbiAgfSxcbiAgXCJGcmFrdHVyLVJlZ3VsYXJcIjoge1xuICAgIFwiMzNcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjk1NzRdLFxuICAgIFwiMzRcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjE0NzFdLFxuICAgIFwiMzhcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNzM3ODZdLFxuICAgIFwiMzlcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjEyMDFdLFxuICAgIFwiNDBcIjogWzAuMjQ5ODIsIDAuNzQ5NDcsIDAsIDAsIDAuMzg4NjVdLFxuICAgIFwiNDFcIjogWzAuMjQ5ODIsIDAuNzQ5NDcsIDAsIDAsIDAuMzg4NjVdLFxuICAgIFwiNDJcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuMjc3NjRdLFxuICAgIFwiNDNcIjogWzAuMDgzMTksIDAuNTgyODMsIDAsIDAsIDAuNzU2MjNdLFxuICAgIFwiNDRcIjogWzAsIDAuMTA4MDMsIDAsIDAsIDAuMjc3NjRdLFxuICAgIFwiNDVcIjogWzAuMDgzMTksIDAuNTgyODMsIDAsIDAsIDAuNzU2MjNdLFxuICAgIFwiNDZcIjogWzAsIDAuMTA4MDMsIDAsIDAsIDAuMjc3NjRdLFxuICAgIFwiNDdcIjogWzAuMjQ5ODIsIDAuNzQ5NDcsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNDhcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNDlcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTBcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTFcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTJcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTNcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTRcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTVcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTdcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNThcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuMjE2MDZdLFxuICAgIFwiNTlcIjogWzAuMTI2MDQsIDAuNDc1MzQsIDAsIDAsIDAuMjE2MDZdLFxuICAgIFwiNjFcIjogWy0wLjEzMDk5LCAwLjM2ODY2LCAwLCAwLCAwLjc1NjIzXSxcbiAgICBcIjYzXCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjM2MjQ1XSxcbiAgICBcIjY1XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjcxNzZdLFxuICAgIFwiNjZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuODgzOTddLFxuICAgIFwiNjdcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNjEyNTRdLFxuICAgIFwiNjhcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuODMxNThdLFxuICAgIFwiNjlcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNjYyNzhdLFxuICAgIFwiNzBcIjogWzAuMTI2MDQsIDAuNjkxNDEsIDAsIDAsIDAuNjExMTldLFxuICAgIFwiNzFcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNzg1MzldLFxuICAgIFwiNzJcIjogWzAuMDYzMDIsIDAuNjkxNDEsIDAsIDAsIDAuNzIwM10sXG4gICAgXCI3M1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC41NTQ0OF0sXG4gICAgXCI3NFwiOiBbMC4xMjYwNCwgMC42OTE0MSwgMCwgMCwgMC41NTIzMV0sXG4gICAgXCI3NVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42Njg0NV0sXG4gICAgXCI3NlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42NjYwMl0sXG4gICAgXCI3N1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMS4wNDk1M10sXG4gICAgXCI3OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MzIxMl0sXG4gICAgXCI3OVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MjY5OV0sXG4gICAgXCI4MFwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC44Mjc1M10sXG4gICAgXCI4MVwiOiBbMC4wMzc4MSwgMC42OTE0MSwgMCwgMCwgMC44MjY5OV0sXG4gICAgXCI4MlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MjgwN10sXG4gICAgXCI4M1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44Mjg2MV0sXG4gICAgXCI4NFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42Njg5OV0sXG4gICAgXCI4NVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42NDU3Nl0sXG4gICAgXCI4NlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MzEzMV0sXG4gICAgXCI4N1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMS4wNDYwMl0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC43MTkyMl0sXG4gICAgXCI4OVwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC44MzI5M10sXG4gICAgXCI5MFwiOiBbMC4xMjYwNCwgMC42OTE0MSwgMCwgMCwgMC42MDIwMV0sXG4gICAgXCI5MVwiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC4yNzc2NF0sXG4gICAgXCI5M1wiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC4yNzc2NF0sXG4gICAgXCI5NFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC40OTk2NV0sXG4gICAgXCI5N1wiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC41MDA0Nl0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC41MTMxNV0sXG4gICAgXCI5OVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC4zODk0Nl0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuNDk4NTddLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjQwMDUzXSxcbiAgICBcIjEwMlwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC4zMjYyNl0sXG4gICAgXCIxMDNcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAzN10sXG4gICAgXCIxMDRcIjogWzAuMTg5MDYsIDAuNjkxNDEsIDAsIDAsIDAuNTIxMjZdLFxuICAgIFwiMTA1XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjI3ODk5XSxcbiAgICBcIjEwNlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4yODA4OF0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMzg5NDZdLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjI3OTUzXSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC43NjY3Nl0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTI2NjZdLFxuICAgIFwiMTExXCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjQ4ODg1XSxcbiAgICBcIjExMlwiOiBbMC4xODkwNiwgMC41MjM5NiwgMCwgMCwgMC41MDA0Nl0sXG4gICAgXCIxMTNcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNDg5MTJdLFxuICAgIFwiMTE0XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjM4OTE5XSxcbiAgICBcIjExNVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC40NDI2Nl0sXG4gICAgXCIxMTZcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuMzMzMDFdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjUxNzJdLFxuICAgIFwiMTE4XCI6IFswLCAwLjUyMzk2LCAwLCAwLCAwLjUxMThdLFxuICAgIFwiMTE5XCI6IFswLCAwLjUyMzk2LCAwLCAwLCAwLjc3MzUxXSxcbiAgICBcIjEyMFwiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC4zODg2NV0sXG4gICAgXCIxMjFcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNDk4ODRdLFxuICAgIFwiMTIyXCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjM5MDU0XSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjE0NzFdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4yMTQ3MV0sXG4gICAgXCI1ODExMlwiOiBbMCwgMC42MjExOSwgMCwgMCwgMC40OTc0OV0sXG4gICAgXCI1ODExM1wiOiBbMCwgMC42MjExOSwgMCwgMCwgMC40OTgzXSxcbiAgICBcIjU4MTE0XCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjMzMzI4XSxcbiAgICBcIjU4MTE1XCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjMyOTIzXSxcbiAgICBcIjU4MTE2XCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjUwMzQzXSxcbiAgICBcIjU4MTE3XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjMzMzAxXSxcbiAgICBcIjU4MTE4XCI6IFswLCAwLjYyMTE5LCAwLCAwLCAwLjMzNDA5XSxcbiAgICBcIjU4MTE5XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjUwMDczXVxuICB9LFxuICBcIk1haW4tQm9sZFwiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zNV0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MDI3OF0sXG4gICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC45NTgzM10sXG4gICAgXCIzNlwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuOTU4MzNdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjQzXCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjQ0XCI6IFswLjE5NDQ0LCAwLjE1NTU2LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjM4MzMzXSxcbiAgICBcIjQ2XCI6IFswLCAwLjE1NTU2LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjUwXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjUzXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjU2XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNThcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNjBcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiNjFcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjYyXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU0MzA1XSxcbiAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjY1XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg2OTQ0XSxcbiAgICBcIjY2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgxODA1XSxcbiAgICBcIjY3XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjY4XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg4MTk0XSxcbiAgICBcIjY5XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjc1NTU1XSxcbiAgICBcIjcwXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjcyMzYxXSxcbiAgICBcIjcxXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjkwNDE2XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjldLFxuICAgIFwiNzNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNDM2MTFdLFxuICAgIFwiNzRcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNTk0NDRdLFxuICAgIFwiNzVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOTAxMzhdLFxuICAgIFwiNzZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjkxNjZdLFxuICAgIFwiNzdcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDEuMDkxNjZdLFxuICAgIFwiNzhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOV0sXG4gICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44NjM4OF0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC43ODYxMV0sXG4gICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODYxMSwgMCwgMCwgMC44NjM4OF0sXG4gICAgXCI4MlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44NjI1XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjg0XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjhdLFxuICAgIFwiODVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODg0NzJdLFxuICAgIFwiODZcIjogWzAsIDAuNjg2MTEsIDAuMDE1OTcsIDAsIDAuODY5NDRdLFxuICAgIFwiODdcIjogWzAsIDAuNjg2MTEsIDAuMDE1OTcsIDAsIDEuMTg4ODhdLFxuICAgIFwiODhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiODlcIjogWzAsIDAuNjg2MTEsIDAuMDI4NzUsIDAsIDAuODY5NDRdLFxuICAgIFwiOTBcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiOTJcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5NVwiOiBbMC4zMSwgMC4xMzQ0NCwgMC4wMzE5NCwgMCwgMC41NzVdLFxuICAgIFwiOTdcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTU5MDJdLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiOTlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MjcwOF0sXG4gICAgXCIxMDJcIjogWzAsIDAuNjk0NDQsIDAuMTA5MDMsIDAsIDAuMzUxMzldLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAxNTk3LCAwLCAwLjU3NV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiMTA1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjEwNlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4zNTEzOV0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjA2OTRdLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC45NTgzM10sXG4gICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiMTExXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjYwNjk0XSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40NzM2MV0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDUzNjFdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYzNDkyLCAwLCAwLCAwLjQ0NzIyXSxcbiAgICBcIjExN1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCIxMThcIjogWzAsIDAuNDQ0NDQsIDAuMDE1OTcsIDAsIDAuNjA2OTRdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQ0NDQ0LCAwLjAxNTk3LCAwLCAwLjgzMDU1XSxcbiAgICBcIjEyMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42MDY5NF0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDE1OTcsIDAsIDAuNjA2OTRdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjEyM1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiMTI0XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjEyNVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiMTI2XCI6IFswLjM1LCAwLjM0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCIxNjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjE3MlwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiMTc3XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjE4NFwiOiBbMC4xNzAxNCwgMCwgMCwgMCwgMC41MTExMV0sXG4gICAgXCIxOThcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDEuMDQxNjZdLFxuICAgIFwiMjE1XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzQ3MiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCIyMjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTk3MjJdLFxuICAgIFwiMjMwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjI0N1wiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTQxNjcsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjMwNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCIzMzhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDEuMTY5NDRdLFxuICAgIFwiMzM5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC4zNTEzOV0sXG4gICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjcxMVwiOiBbMCwgMC42MzE5NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU5NjExLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjcxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI3MjlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNzMwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg2OTQ0XSxcbiAgICBcIjczMlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjkxNjZdLFxuICAgIFwiOTE2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjk1ODMzXSxcbiAgICBcIjkyMFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODA1NTVdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44MzA1NV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODMwNTVdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMC41NzVdLFxuICAgIFwiODIxMlwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4MjE2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiODIyMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MDI3OF0sXG4gICAgXCI4MjIxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYwMjc4XSxcbiAgICBcIjgyMjRcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiODIyNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4MjQyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjM0NDQ0XSxcbiAgICBcIjg0MDdcIjogWzAsIDAuNzI0NDQsIDAuMTU0ODYsIDAsIDAuNTc1XSxcbiAgICBcIjg0NjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY3NTldLFxuICAgIFwiODQ2NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzA1NV0sXG4gICAgXCI4NDY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MzYxXSxcbiAgICBcIjg0NzJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNzQwMjddLFxuICAgIFwiODQ3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzA1NV0sXG4gICAgXCI4NTAxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICBcIjg1OTJcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg1OTNcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg1OTRcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg1OTVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg1OTZcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg1OTdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg1OThcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODU5OVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjAwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg2MDFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODYzNlwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODYzN1wiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY0MFwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY0MVwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY1NlwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY1N1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3N10sXG4gICAgXCI4NjU4XCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjU5XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICBcIjg2NjBcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg2NjFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiODcwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4NzA2XCI6IFswLCAwLjY5NDQ0LCAwLjA2Mzg5LCAwLCAwLjYyODQ3XSxcbiAgICBcIjg3MDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODcwOVwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiODcxMVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45NTgzM10sXG4gICAgXCI4NzEyXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg3MTVcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiODcyMlwiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4NzIzXCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg3MjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3MjZcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3MjdcIjogWy0wLjAyNzc4LCAwLjQ3MjIyLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4NzI4XCI6IFstMC4wMjYzOSwgMC40NzM2MSwgMCwgMCwgMC41NzVdLFxuICAgIFwiODcyOVwiOiBbLTAuMDI2MzksIDAuNDczNjEsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3MzBcIjogWzAuMTgsIDAuODIsIDAsIDAsIDAuOTU4MzNdLFxuICAgIFwiODczM1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4NzM0XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg3MzZcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODczOVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI4NzQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4NzQzXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg3NDRcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiODc0NVwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4NzQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg3NDdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTI3NzgsIDAsIDAuNTY4NzVdLFxuICAgIFwiODc2NFwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODc2OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI4NzcxXCI6IFswLjAwMjIyLCAwLjUwMjIyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg3NzZcIjogWzAuMDI0NDQsIDAuNTI0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODc4MVwiOiBbMC4wMDIyMiwgMC41MDIyMiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODAxXCI6IFswLjAwMjIyLCAwLjUwMjIyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MDRcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODgwNVwiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODEwXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg4MTFcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODgyNlwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODI3XCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MzRcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODgzNVwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODM4XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MzlcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg0NlwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4ODQ5XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4NTBcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1MVwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4ODUyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg4NTNcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1NFwiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODU1XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4NTZcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1N1wiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODY2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICBcIjg4NjdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiODg2OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODY5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg5MDBcIjogWy0wLjAyNjM5LCAwLjQ3MzYxLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4OTAxXCI6IFstMC4wMjYzOSwgMC40NzM2MSwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI4OTAyXCI6IFstMC4wMjc3OCwgMC40NzIyMiwgMCwgMCwgMC41NzVdLFxuICAgIFwiODk2OFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4OTY5XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjg5NzBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiODk3MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4OTk0XCI6IFstMC4xMzg4OSwgMC4zNjExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4OTk1XCI6IFstMC4xMzg4OSwgMC4zNjExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI5NjUxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjAyMjIyXSxcbiAgICBcIjk2NTdcIjogWy0wLjAyNzc4LCAwLjQ3MjIyLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5NjYxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjAyMjIyXSxcbiAgICBcIjk2NjdcIjogWy0wLjAyNzc4LCAwLjQ3MjIyLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5NzExXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjk4MjRcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiOTgyNVwiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5ODI2XCI6IFswLjEyOTYzLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjk4MjdcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiOTgzN1wiOiBbMCwgMC43NSwgMCwgMCwgMC40NDcyMl0sXG4gICAgXCI5ODM4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjQ0NzIyXSxcbiAgICBcIjk4MzlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiMTAyMTZcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiMTAyMTdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiMTA4MTVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOV0sXG4gICAgXCIxMDkyN1wiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCIxMDkyOFwiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI1NzM3NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMF1cbiAgfSxcbiAgXCJNYWluLUJvbGRJdGFsaWNcIjoge1xuICAgIFwiMzNcIjogWzAsIDAuNjk0NDQsIDAuMTE0MTcsIDAsIDAuMzg2MTFdLFxuICAgIFwiMzRcIjogWzAsIDAuNjk0NDQsIDAuMDc5MzksIDAsIDAuNjIwNTVdLFxuICAgIFwiMzVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDY4MzMsIDAsIDAuOTQ0NDRdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAuMTI4NjEsIDAsIDAuOTQ0NDRdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAuMDg1MjgsIDAsIDAuODg1NTVdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAuMTI5NDUsIDAsIDAuMzU1NTVdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAuMTU4MDYsIDAsIDAuNDczMzNdLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAuMDMzMDYsIDAsIDAuNDczMzNdLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAuMTQzMzMsIDAsIDAuNTkxMTFdLFxuICAgIFwiNDNcIjogWzAuMTAzMzMsIDAuNjAzMzMsIDAuMDMzMDYsIDAsIDAuODg1NTVdLFxuICAgIFwiNDRcIjogWzAuMTk0NDQsIDAuMTQ3MjIsIDAsIDAsIDAuMzU1NTVdLFxuICAgIFwiNDVcIjogWzAsIDAuNDQ0NDQsIDAuMDI2MTEsIDAsIDAuNDE0NDRdLFxuICAgIFwiNDZcIjogWzAsIDAuMTQ3MjIsIDAsIDAsIDAuMzU1NTVdLFxuICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAuMTU4MDYsIDAsIDAuNTkxMTFdLFxuICAgIFwiNDhcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNDlcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTBcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTFcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTJcIjogWzAuMTk0NDQsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTNcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTRcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTVcIjogWzAuMTk0NDQsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTZcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTdcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNThcIjogWzAsIDAuNDQ0NDQsIDAuMDY2OTUsIDAsIDAuMzU1NTVdLFxuICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDY2OTUsIDAsIDAuMzU1NTVdLFxuICAgIFwiNjFcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLjA2ODMzLCAwLCAwLjg4NTU1XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLjExNDcyLCAwLCAwLjU5MTExXSxcbiAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLjA5MjA4LCAwLCAwLjg4NTU1XSxcbiAgICBcIjY1XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg2NTU1XSxcbiAgICBcIjY2XCI6IFswLCAwLjY4NjExLCAwLjA5OTIsIDAsIDAuODE2NjZdLFxuICAgIFwiNjdcIjogWzAsIDAuNjg2MTEsIDAuMTQyMDgsIDAsIDAuODI2NjZdLFxuICAgIFwiNjhcIjogWzAsIDAuNjg2MTEsIDAuMDkwNjIsIDAsIDAuODc1NTVdLFxuICAgIFwiNjlcIjogWzAsIDAuNjg2MTEsIDAuMTE0MzEsIDAsIDAuNzU2NjZdLFxuICAgIFwiNzBcIjogWzAsIDAuNjg2MTEsIDAuMTI5MDMsIDAsIDAuNzI3MjJdLFxuICAgIFwiNzFcIjogWzAsIDAuNjg2MTEsIDAuMDczNDcsIDAsIDAuODk1MjddLFxuICAgIFwiNzJcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDAuODk2MV0sXG4gICAgXCI3M1wiOiBbMCwgMC42ODYxMSwgMC4xNTY4MSwgMCwgMC40NzE2Nl0sXG4gICAgXCI3NFwiOiBbMCwgMC42ODYxMSwgMC4xNDUsIDAsIDAuNjEwNTVdLFxuICAgIFwiNzVcIjogWzAsIDAuNjg2MTEsIDAuMTQyMDgsIDAsIDAuODk0OTldLFxuICAgIFwiNzZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjk3NzddLFxuICAgIFwiNzdcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDEuMDcyNzddLFxuICAgIFwiNzhcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDAuODk2MV0sXG4gICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMC4wOTA2MiwgMCwgMC44NTQ5OV0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODYxMSwgMC4wOTkyLCAwLCAwLjc4NzIxXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4NjExLCAwLjA5MDYyLCAwLCAwLjg1NDk5XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4NjExLCAwLjAyNTU5LCAwLCAwLjg1OTQ0XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4NjExLCAwLjExMjY0LCAwLCAwLjY0OTk5XSxcbiAgICBcIjg0XCI6IFswLCAwLjY4NjExLCAwLjEyOTAzLCAwLCAwLjc5NjFdLFxuICAgIFwiODVcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDAuODgwODNdLFxuICAgIFwiODZcIjogWzAsIDAuNjg2MTEsIDAuMTg2MjUsIDAsIDAuODY1NTVdLFxuICAgIFwiODdcIjogWzAsIDAuNjg2MTEsIDAuMTg2MjUsIDAsIDEuMTU5OTldLFxuICAgIFwiODhcIjogWzAsIDAuNjg2MTEsIDAuMTU2ODEsIDAsIDAuODY1NTVdLFxuICAgIFwiODlcIjogWzAsIDAuNjg2MTEsIDAuMTk4MDMsIDAsIDAuODY1NTVdLFxuICAgIFwiOTBcIjogWzAsIDAuNjg2MTEsIDAuMTQyMDgsIDAsIDAuNzA4ODhdLFxuICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAuMTg3NSwgMCwgMC4zNTYxMV0sXG4gICAgXCI5M1wiOiBbMC4yNSwgMC43NSwgMC4wOTk3MiwgMCwgMC4zNTYxMV0sXG4gICAgXCI5NFwiOiBbMCwgMC42OTQ0NCwgMC4wNjcwOSwgMCwgMC41OTExMV0sXG4gICAgXCI5NVwiOiBbMC4zMSwgMC4xMzQ0NCwgMC4wOTgxMSwgMCwgMC41OTExMV0sXG4gICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMC4wOTQyNiwgMCwgMC41OTExMV0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMC4wNzg2MSwgMCwgMC41MzIyMl0sXG4gICAgXCI5OVwiOiBbMCwgMC40NDQ0NCwgMC4wNTIyMiwgMCwgMC41MzIyMl0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAuMTA4NjEsIDAsIDAuNTkxMTFdLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLjA4NSwgMCwgMC41MzIyMl0sXG4gICAgXCIxMDJcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMjE3NzgsIDAsIDAuNF0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMTA1LCAwLCAwLjUzMjIyXSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMC4wOTQyNiwgMCwgMC41OTExMV0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjkzMjYsIDAuMTEzODcsIDAsIDAuMzU1NTVdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY5MzI2LCAwLjE2NzIsIDAsIDAuMzU1NTVdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLjExMTExLCAwLCAwLjUzMjIyXSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4xMDg2MSwgMCwgMC4yOTY2Nl0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDQ0NDQsIDAuMDk0MjYsIDAsIDAuOTQ0NDRdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQ0NDQ0LCAwLjA5NDI2LCAwLCAwLjY0OTk5XSxcbiAgICBcIjExMVwiOiBbMCwgMC40NDQ0NCwgMC4wNzg2MSwgMCwgMC41OTExMV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDc4NjEsIDAsIDAuNTkxMTFdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjEwNSwgMCwgMC41MzIyMl0sXG4gICAgXCIxMTRcIjogWzAsIDAuNDQ0NDQsIDAuMTExMTEsIDAsIDAuNTAxNjddLFxuICAgIFwiMTE1XCI6IFswLCAwLjQ0NDQ0LCAwLjA4MTY3LCAwLCAwLjQ4Njk0XSxcbiAgICBcIjExNlwiOiBbMCwgMC42MzQ5MiwgMC4wOTYzOSwgMCwgMC4zODVdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLjA5NDI2LCAwLCAwLjYyMDU1XSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4xMTExMSwgMCwgMC41MzIyMl0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMTExMTEsIDAsIDAuNzY3NzddLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLjEyNTgzLCAwLCAwLjU2MDU1XSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDUsIDAsIDAuNTYxNjZdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLjEzODg5LCAwLCAwLjQ5MDU1XSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zNDQ0NCwgMC4xMTQ3MiwgMCwgMC41OTExMV0sXG4gICAgXCIxNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODY4NTNdLFxuICAgIFwiMTY4XCI6IFswLCAwLjY5NDQ0LCAwLjExNDczLCAwLCAwLjU5MTExXSxcbiAgICBcIjE3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC45NDg4OF0sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNTMyMjJdLFxuICAgIFwiMTk4XCI6IFswLCAwLjY4NjExLCAwLjExNDMxLCAwLCAxLjAyMjc3XSxcbiAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzQ3MiwgMC4wOTA2MiwgMCwgMC44ODU1NV0sXG4gICAgXCIyMjNcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDk3MzYsIDAsIDAuNjY1XSxcbiAgICBcIjIzMFwiOiBbMCwgMC40NDQ0NCwgMC4wODUsIDAsIDAuODI2NjZdLFxuICAgIFwiMjQ4XCI6IFswLjA5NzIyLCAwLjU0MTY3LCAwLjA5NDU4LCAwLCAwLjU5MTExXSxcbiAgICBcIjMwNVwiOiBbMCwgMC40NDQ0NCwgMC4wOTQyNiwgMCwgMC4zNTU1NV0sXG4gICAgXCIzMzhcIjogWzAsIDAuNjg2MTEsIDAuMTE0MzEsIDAsIDEuMTQwNTRdLFxuICAgIFwiMzM5XCI6IFswLCAwLjQ0NDQ0LCAwLjA4NSwgMCwgMC44MjY2Nl0sXG4gICAgXCI1NjdcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDQ2MTEsIDAsIDAuMzg1XSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMC4wNjcwOSwgMCwgMC41OTExMV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjMxOTQsIDAuMDgyNzEsIDAsIDAuNTkxMTFdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU5NDQ0LCAwLjEwNDQ0LCAwLCAwLjU5MTExXSxcbiAgICBcIjcxNFwiOiBbMCwgMC42OTQ0NCwgMC4wODUyOCwgMCwgMC41OTExMV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTkxMTFdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLjEwMzMzLCAwLCAwLjU5MTExXSxcbiAgICBcIjcyOVwiOiBbMCwgMC42OTQ0NCwgMC4xMjk0NSwgMCwgMC4zNTU1NV0sXG4gICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuOTQ4ODhdLFxuICAgIFwiNzMyXCI6IFswLCAwLjY5NDQ0LCAwLjExNDcyLCAwLCAwLjU5MTExXSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMC4xMTQ3MiwgMCwgMC41OTExMV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjg2MTEsIDAuMTI5MDMsIDAsIDAuNjk3NzddLFxuICAgIFwiOTE2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjk0NDQ0XSxcbiAgICBcIjkyMFwiOiBbMCwgMC42ODYxMSwgMC4wOTA2MiwgMCwgMC44ODU1NV0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODA2NjZdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY4NjExLCAwLjE1MDkyLCAwLCAwLjc2Nzc3XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42ODYxMSwgMC4xNzIwOCwgMCwgMC44OTYxXSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODYxMSwgMC4xMTQzMSwgMCwgMC44MjY2Nl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjg2MTEsIDAuMTA3NzgsIDAsIDAuODg1NTVdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4NjExLCAwLjA1NjMyLCAwLCAwLjgyNjY2XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODYxMSwgMC4xMDc3OCwgMCwgMC44ODU1NV0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjg2MTEsIDAuMDk5MiwgMCwgMC44MjY2Nl0sXG4gICAgXCI4MjExXCI6IFswLCAwLjQ0NDQ0LCAwLjA5ODExLCAwLCAwLjU5MTExXSxcbiAgICBcIjgyMTJcIjogWzAsIDAuNDQ0NDQsIDAuMDk4MTEsIDAsIDEuMTgyMjFdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42OTQ0NCwgMC4xMjk0NSwgMCwgMC4zNTU1NV0sXG4gICAgXCI4MjE3XCI6IFswLCAwLjY5NDQ0LCAwLjEyOTQ1LCAwLCAwLjM1NTU1XSxcbiAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAuMTY3NzIsIDAsIDAuNjIwNTVdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMC4wNzkzOSwgMCwgMC42MjA1NV1cbiAgfSxcbiAgXCJNYWluLUl0YWxpY1wiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMC4wNjk2MSwgMCwgMC41MTQ0NF0sXG4gICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNjYxNiwgMCwgMC44MTc3N10sXG4gICAgXCIzN1wiOiBbMC4wNTU1NiwgMC43NSwgMC4xMzYzOSwgMCwgMC44MTc3N10sXG4gICAgXCIzOFwiOiBbMCwgMC42OTQ0NCwgMC4wOTY5NCwgMCwgMC43NjY2Nl0sXG4gICAgXCIzOVwiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgXCI0MFwiOiBbMC4yNSwgMC43NSwgMC4xNjE5NCwgMCwgMC40MDg4OV0sXG4gICAgXCI0MVwiOiBbMC4yNSwgMC43NSwgMC4wMzY5NCwgMCwgMC40MDg4OV0sXG4gICAgXCI0MlwiOiBbMCwgMC43NSwgMC4xNDkxNywgMCwgMC41MTExMV0sXG4gICAgXCI0M1wiOiBbMC4wNTY2NywgMC41NjE2NywgMC4wMzY5NCwgMCwgMC43NjY2Nl0sXG4gICAgXCI0NFwiOiBbMC4xOTQ0NCwgMC4xMDU1NiwgMCwgMCwgMC4zMDY2N10sXG4gICAgXCI0NVwiOiBbMCwgMC40MzA1NiwgMC4wMjgyNiwgMCwgMC4zNTc3OF0sXG4gICAgXCI0NlwiOiBbMCwgMC4xMDU1NiwgMCwgMCwgMC4zMDY2N10sXG4gICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMC4xNjE5NCwgMCwgMC41MTExMV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI0OVwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1MFwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1MlwiOiBbMC4xOTQ0NCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1M1wiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1NVwiOiBbMC4xOTQ0NCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1OFwiOiBbMCwgMC40MzA1NiwgMC4wNTgyLCAwLCAwLjMwNjY3XSxcbiAgICBcIjU5XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA1ODIsIDAsIDAuMzA2NjddLFxuICAgIFwiNjFcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLjA2NjE2LCAwLCAwLjc2NjY2XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLjEyMjUsIDAsIDAuNTExMTFdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAuMDk1OTcsIDAsIDAuNzY2NjZdLFxuICAgIFwiNjVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzQzMzNdLFxuICAgIFwiNjZcIjogWzAsIDAuNjgzMzMsIDAuMTAyNTcsIDAsIDAuNzAzODldLFxuICAgIFwiNjdcIjogWzAsIDAuNjgzMzMsIDAuMTQ1MjgsIDAsIDAuNzE1NTVdLFxuICAgIFwiNjhcIjogWzAsIDAuNjgzMzMsIDAuMDk0MDMsIDAsIDAuNzU1XSxcbiAgICBcIjY5XCI6IFswLCAwLjY4MzMzLCAwLjEyMDI4LCAwLCAwLjY3ODMzXSxcbiAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjEzMzA1LCAwLCAwLjY1Mjc3XSxcbiAgICBcIjcxXCI6IFswLCAwLjY4MzMzLCAwLjA4NzIyLCAwLCAwLjc3MzYxXSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjc0MzMzXSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjE1ODA2LCAwLCAwLjM4NTU1XSxcbiAgICBcIjc0XCI6IFswLCAwLjY4MzMzLCAwLjE0MDI4LCAwLCAwLjUyNV0sXG4gICAgXCI3NVwiOiBbMCwgMC42ODMzMywgMC4xNDUyOCwgMCwgMC43Njg4OF0sXG4gICAgXCI3NlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42MjcyMl0sXG4gICAgXCI3N1wiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC44OTY2Nl0sXG4gICAgXCI3OFwiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC43NDMzM10sXG4gICAgXCI3OVwiOiBbMCwgMC42ODMzMywgMC4wOTQwMywgMCwgMC43NjY2Nl0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODMzMywgMC4xMDI1NywgMCwgMC42NzgzM10sXG4gICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODMzMywgMC4wOTQwMywgMCwgMC43NjY2Nl0sXG4gICAgXCI4MlwiOiBbMCwgMC42ODMzMywgMC4wMzg2OCwgMCwgMC43Mjk0NF0sXG4gICAgXCI4M1wiOiBbMCwgMC42ODMzMywgMC4xMTk3MiwgMCwgMC41NjIyMl0sXG4gICAgXCI4NFwiOiBbMCwgMC42ODMzMywgMC4xMzMwNSwgMCwgMC43MTU1NV0sXG4gICAgXCI4NVwiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC43NDMzM10sXG4gICAgXCI4NlwiOiBbMCwgMC42ODMzMywgMC4xODM2MSwgMCwgMC43NDMzM10sXG4gICAgXCI4N1wiOiBbMCwgMC42ODMzMywgMC4xODM2MSwgMCwgMC45OTg4OF0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODMzMywgMC4xNTgwNiwgMCwgMC43NDMzM10sXG4gICAgXCI4OVwiOiBbMCwgMC42ODMzMywgMC4xOTM4MywgMCwgMC43NDMzM10sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMC4xNDUyOCwgMCwgMC42MTMzM10sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMC4xODc1LCAwLCAwLjMwNjY3XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLjEwNTI4LCAwLCAwLjMwNjY3XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLjA2NjQ2LCAwLCAwLjUxMTExXSxcbiAgICBcIjk1XCI6IFswLjMxLCAwLjEyMDU2LCAwLjA5MjA4LCAwLCAwLjUxMTExXSxcbiAgICBcIjk3XCI6IFswLCAwLjQzMDU2LCAwLjA3NjcxLCAwLCAwLjUxMTExXSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLjA2MzEyLCAwLCAwLjQ2XSxcbiAgICBcIjk5XCI6IFswLCAwLjQzMDU2LCAwLjA1NjUzLCAwLCAwLjQ2XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMC4xMDMzMywgMCwgMC41MTExMV0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAuMDc1MTQsIDAsIDAuNDZdLFxuICAgIFwiMTAyXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjIxMTk0LCAwLCAwLjMwNjY3XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wODg0NywgMCwgMC40Nl0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAuMDc2NzEsIDAsIDAuNTExMTFdLFxuICAgIFwiMTA1XCI6IFswLCAwLjY1NTM2LCAwLjEwMTksIDAsIDAuMzA2NjddLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY1NTM2LCAwLjE0NDY3LCAwLCAwLjMwNjY3XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4xMDc2NCwgMCwgMC40Nl0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAuMTAzMzMsIDAsIDAuMjU1NTVdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQzMDU2LCAwLjA3NjcxLCAwLCAwLjgxNzc3XSxcbiAgICBcIjExMFwiOiBbMCwgMC40MzA1NiwgMC4wNzY3MSwgMCwgMC41NjIyMl0sXG4gICAgXCIxMTFcIjogWzAsIDAuNDMwNTYsIDAuMDYzMTIsIDAsIDAuNTExMTFdLFxuICAgIFwiMTEyXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA2MzEyLCAwLCAwLjUxMTExXSxcbiAgICBcIjExM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wODg0NywgMCwgMC40Nl0sXG4gICAgXCIxMTRcIjogWzAsIDAuNDMwNTYsIDAuMTA3NjQsIDAsIDAuNDIxNjZdLFxuICAgIFwiMTE1XCI6IFswLCAwLjQzMDU2LCAwLjA4MjA4LCAwLCAwLjQwODg5XSxcbiAgICBcIjExNlwiOiBbMCwgMC42MTUwOCwgMC4wOTQ4NiwgMCwgMC4zMzIyMl0sXG4gICAgXCIxMTdcIjogWzAsIDAuNDMwNTYsIDAuMDc2NzEsIDAsIDAuNTM2NjZdLFxuICAgIFwiMTE4XCI6IFswLCAwLjQzMDU2LCAwLjEwNzY0LCAwLCAwLjQ2XSxcbiAgICBcIjExOVwiOiBbMCwgMC40MzA1NiwgMC4xMDc2NCwgMCwgMC42NjQ0NF0sXG4gICAgXCIxMjBcIjogWzAsIDAuNDMwNTYsIDAuMTIwNDIsIDAsIDAuNDYzODldLFxuICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA4ODQ3LCAwLCAwLjQ4NTU1XSxcbiAgICBcIjEyMlwiOiBbMCwgMC40MzA1NiwgMC4xMjI5MiwgMCwgMC40MDg4OV0sXG4gICAgXCIxMjZcIjogWzAuMzUsIDAuMzE3ODYsIDAuMTE1ODUsIDAsIDAuNTExMTFdLFxuICAgIFwiMTYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc2OTA5XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42Njc4NiwgMC4xMDQ3NCwgMCwgMC41MTExMV0sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMxMjldLFxuICAgIFwiMTg0XCI6IFswLjE3MDE0LCAwLCAwLCAwLCAwLjQ2XSxcbiAgICBcIjE5OFwiOiBbMCwgMC42ODMzMywgMC4xMjAyOCwgMCwgMC44ODI3N10sXG4gICAgXCIyMTZcIjogWzAuMDQ4NjEsIDAuNzMxOTQsIDAuMDk0MDMsIDAsIDAuNzY2NjZdLFxuICAgIFwiMjIzXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjEwNTE0LCAwLCAwLjUzNjY2XSxcbiAgICBcIjIzMFwiOiBbMCwgMC40MzA1NiwgMC4wNzUxNCwgMCwgMC43MTU1NV0sXG4gICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTI3NzgsIDAuMDkxOTQsIDAsIDAuNTExMTFdLFxuICAgIFwiMzA1XCI6IFswLCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjMyMjQ2XSxcbiAgICBcIjMzOFwiOiBbMCwgMC42ODMzMywgMC4xMjAyOCwgMCwgMC45ODQ5OV0sXG4gICAgXCIzMzlcIjogWzAsIDAuNDMwNTYsIDAuMDc1MTQsIDAsIDAuNzE1NTVdLFxuICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjM4NDAzXSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMC4wNjY0NiwgMCwgMC41MTExMV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjI4NDcsIDAuMDgyOTUsIDAsIDAuNTExMTFdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU2MTY3LCAwLjEwMzMzLCAwLCAwLjUxMTExXSxcbiAgICBcIjcxNFwiOiBbMCwgMC42OTQ0NCwgMC4wOTY5NCwgMCwgMC41MTExMV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLjEwODA2LCAwLCAwLjUxMTExXSxcbiAgICBcIjcyOVwiOiBbMCwgMC42Njc4NiwgMC4xMTc1MiwgMCwgMC4zMDY2N10sXG4gICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMxMjldLFxuICAgIFwiNzMyXCI6IFswLCAwLjY2Nzg2LCAwLjExNTg1LCAwLCAwLjUxMTExXSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMC4xMjI1LCAwLCAwLjUxMTExXSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMC4xMzMwNSwgMCwgMC42MjcyMl0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuODE3NzddLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLjA5NDAzLCAwLCAwLjc2NjY2XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42OTIyMl0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMTUyOTQsIDAsIDAuNjY0NDRdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjc0MzMzXSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODMzMywgMC4xMjAyOCwgMCwgMC43MTU1NV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTExMTEsIDAsIDAuNzY2NjZdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLjA1OTg2LCAwLCAwLjcxNTU1XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODMzMywgMC4xMTExMSwgMCwgMC43NjY2Nl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMTAyNTcsIDAsIDAuNzE1NTVdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40MzA1NiwgMC4wOTIwOCwgMCwgMC41MTExMV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQzMDU2LCAwLjA5MjA4LCAwLCAxLjAyMjIyXSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAuMTI0MTcsIDAsIDAuMzA2NjddLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLjE2ODUsIDAsIDAuNTE0NDRdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMC4wNjk2MSwgMCwgMC41MTQ0NF0sXG4gICAgXCI4NDYzXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU0MDI4XVxuICB9LFxuICBcIk1haW4tUmVndWxhclwiOiB7XG4gICAgXCIzMlwiOiBbMCwgMCwgMCwgMCwgMC4yNV0sXG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI0M1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI0NFwiOiBbMC4xOTQ0NCwgMC4xMDU1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI0NVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4zMzMzM10sXG4gICAgXCI0NlwiOiBbMCwgMC4xMDU1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjQ4XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1MFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjUxXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1M1wiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjU0XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjU3XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNThcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNjBcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjYxXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI2MlwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiNjZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzA4MzRdLFxuICAgIFwiNjdcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiNjhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzYzODldLFxuICAgIFwiNjlcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjgwNTZdLFxuICAgIFwiNzBcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjUyNzhdLFxuICAgIFwiNzFcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzg0NzJdLFxuICAgIFwiNzJcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiNzNcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuMzYxMTFdLFxuICAgIFwiNzRcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNTEzODldLFxuICAgIFwiNzVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNzZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjI1XSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjkxNjY3XSxcbiAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY4MDU2XSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjczNjExXSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjg0XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg1XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICBcIjg2XCI6IFswLCAwLjY4MzMzLCAwLjAxMzg5LCAwLCAwLjc1XSxcbiAgICBcIjg3XCI6IFswLCAwLjY4MzMzLCAwLjAxMzg5LCAwLCAxLjAyNzc4XSxcbiAgICBcIjg4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICBcIjg5XCI6IFswLCAwLjY4MzMzLCAwLjAyNSwgMCwgMC43NV0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42MTExMV0sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI5MlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiOTVcIjogWzAuMzEsIDAuMTIwNTYsIDAuMDI3NzgsIDAsIDAuNV0sXG4gICAgXCI5N1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjk5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTAyXCI6IFswLCAwLjY5NDQ0LCAwLjA3Nzc4LCAwLCAwLjMwNTU2XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wMTM4OSwgMCwgMC41XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjY3ODYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY2Nzg2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjExMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMTFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4zOTE2N10sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuMzk0NDVdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMDEzODksIDAsIDAuNTI3NzhdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjAxMzg5LCAwLCAwLjcyMjIyXSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDEzODksIDAsIDAuNTI3NzhdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEyM1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjEyNFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCIxMjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCIxMjZcIjogWzAuMzUsIDAuMzE3ODYsIDAsIDAsIDAuNV0sXG4gICAgXCIxNjBcIjogWzAsIDAsIDAsIDAsIDAuMjVdLFxuICAgIFwiMTY3XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42Njc4NiwgMCwgMCwgMC41XSxcbiAgICBcIjE3MlwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzVdLFxuICAgIFwiMTc3XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjE4MlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTk4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjkwMjc4XSxcbiAgICBcIjIxNVwiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIyMTZcIjogWzAuMDQ4NjEsIDAuNzMxOTQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMjIzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiMjMwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjI0N1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTI3NzgsIDAsIDAsIDAuNV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiMzM4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAxLjAxMzg5XSxcbiAgICBcIjMzOVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI1NjdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiNzEwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzExXCI6IFswLCAwLjYyODQ3LCAwLCAwLCAwLjVdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU2Nzc4LCAwLCAwLCAwLjVdLFxuICAgIFwiNzE0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY2Nzg2LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NV0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjY3ODYsIDAsIDAsIDAuNV0sXG4gICAgXCI3MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjI1XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI5MjBcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY5NDQ1XSxcbiAgICBcIjkyNlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MjhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MzRcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4MjExXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAwLjVdLFxuICAgIFwiODIxMlwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMCwgMS4wXSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjgyMjRcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiODIyNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4MjMwXCI6IFswLCAwLjEyLCAwLCAwLCAxLjE3Ml0sXG4gICAgXCI4MjQyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjI3NV0sXG4gICAgXCI4NDA3XCI6IFswLCAwLjcxNDQ0LCAwLjE1MzgyLCAwLCAwLjVdLFxuICAgIFwiODQ2M1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NDAyOF0sXG4gICAgXCI4NDY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg0NjdcIjogWzAsIDAuNjk0NDQsIDAsIDAuMTExMTEsIDAuNDE2NjddLFxuICAgIFwiODQ3MlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4xMTExMSwgMC42MzY0Nl0sXG4gICAgXCI4NDc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg1MDFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODU5MlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NTkzXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODU5NFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NTk1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODU5NlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NTk3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiODU5OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4wXSxcbiAgICBcIjg1OTlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjAwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgIFwiODYwMVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MTRcIjogWzAuMDExLCAwLjUxMSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MTdcIjogWzAuMDExLCAwLjUxMSwgMCwgMCwgMS4xMjZdLFxuICAgIFwiODYxOFwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjEyNl0sXG4gICAgXCI4NjM2XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2MzdcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY0MFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjQxXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTJcIjogWzAuMDExLCAwLjY3MSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTZcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1N1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4NjU4XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODY2MFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjYxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg3MDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODcwNlwiOiBbMCwgMC42OTQ0NCwgMC4wNTU1NiwgMC4wODMzNCwgMC41MzA5XSxcbiAgICBcIjg3MDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODcwOVwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjg3MTFcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODcxMlwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODcxNVwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODcyMlwiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzIzXCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3MjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzI2XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiODcyN1wiOiBbLTAuMDM0NzIsIDAuNDY1MjgsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzI4XCI6IFstMC4wNTU1NSwgMC40NDQ0NSwgMCwgMCwgMC41XSxcbiAgICBcIjg3MjlcIjogWy0wLjA1NTU1LCAwLjQ0NDQ1LCAwLCAwLCAwLjVdLFxuICAgIFwiODczMFwiOiBbMC4yLCAwLjgsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODczM1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzM0XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAxLjBdLFxuICAgIFwiODczNlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NzM5XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjg3NDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzQzXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3NDRcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODc0NVwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NzQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3NDdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTExMTEsIDAsIDAuNDE2NjddLFxuICAgIFwiODc2NFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc2OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4NzcxXCI6IFstMC4wMzYyNSwgMC40NjM3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzczXCI6IFstMC4wMjIsIDAuNTg5LCAwLCAwLCAxLjBdLFxuICAgIFwiODc3NlwiOiBbLTAuMDE2ODgsIDAuNDgzMTIsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4MVwiOiBbLTAuMDM2MjUsIDAuNDYzNzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4NFwiOiBbLTAuMTMzLCAwLjY3LCAwLCAwLCAwLjc3OF0sXG4gICAgXCI4ODAxXCI6IFstMC4wMzYyNSwgMC40NjM3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODA0XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MDVcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxMFwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDEuMF0sXG4gICAgXCI4ODExXCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMS4wXSxcbiAgICBcIjg4MjZcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MjdcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzRcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzVcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzhcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzOVwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg4NDlcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg1MFwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODUxXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg4NTJcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODg1M1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU0XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NTVcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg1NlwiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU3XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODg2N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4ODY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NjlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg3MlwiOiBbMC4yNDksIDAuNzUsIDAsIDAsIDAuODY3XSxcbiAgICBcIjg5MDBcIjogWy0wLjA1NTU1LCAwLjQ0NDQ1LCAwLCAwLCAwLjVdLFxuICAgIFwiODkwMVwiOiBbLTAuMDU1NTUsIDAuNDQ0NDUsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODkwMlwiOiBbLTAuMDM0NzIsIDAuNDY1MjgsIDAsIDAsIDAuNV0sXG4gICAgXCI4OTA0XCI6IFswLjAwNSwgMC41MDUsIDAsIDAsIDAuOV0sXG4gICAgXCI4OTQyXCI6IFswLjAzLCAwLjksIDAsIDAsIDAuMjc4XSxcbiAgICBcIjg5NDNcIjogWy0wLjE5LCAwLjMxLCAwLCAwLCAxLjE3Ml0sXG4gICAgXCI4OTQ1XCI6IFstMC4xLCAwLjgyLCAwLCAwLCAxLjI4Ml0sXG4gICAgXCI4OTY4XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjg5NjlcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiODk3MFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4OTcxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjg5OTRcIjogWy0wLjE0MjM2LCAwLjM1NzY0LCAwLCAwLCAxLjBdLFxuICAgIFwiODk5NVwiOiBbLTAuMTQyMzYsIDAuMzU3NjQsIDAsIDAsIDEuMF0sXG4gICAgXCI5MTM2XCI6IFswLjI0NCwgMC43NDQsIDAsIDAsIDAuNDEyXSxcbiAgICBcIjkxMzdcIjogWzAuMjQ0LCAwLjc0NCwgMCwgMCwgMC40MTJdLFxuICAgIFwiOTY1MVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5NjU3XCI6IFstMC4wMzQ3MiwgMC40NjUyOCwgMCwgMCwgMC41XSxcbiAgICBcIjk2NjFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTY2N1wiOiBbLTAuMDM0NzIsIDAuNDY1MjgsIDAsIDAsIDAuNV0sXG4gICAgXCI5NzExXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgIFwiOTgyNFwiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5ODI1XCI6IFswLjEyOTYzLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjk4MjZcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTgyN1wiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5ODM3XCI6IFswLCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjk4MzhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiOTgzOVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCIxMDIxNlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCIxMDIxN1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCIxMDIyMlwiOiBbMC4yNDQsIDAuNzQ0LCAwLCAwLCAwLjQxMl0sXG4gICAgXCIxMDIyM1wiOiBbMC4yNDQsIDAuNzQ0LCAwLCAwLCAwLjQxMl0sXG4gICAgXCIxMDIyOVwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjYwOV0sXG4gICAgXCIxMDIzMFwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjYzOF0sXG4gICAgXCIxMDIzMVwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjg1OV0sXG4gICAgXCIxMDIzMlwiOiBbMC4wMjQsIDAuNTI1LCAwLCAwLCAxLjYwOV0sXG4gICAgXCIxMDIzM1wiOiBbMC4wMjQsIDAuNTI1LCAwLCAwLCAxLjYzOF0sXG4gICAgXCIxMDIzNFwiOiBbMC4wMjQsIDAuNTI1LCAwLCAwLCAxLjg1OF0sXG4gICAgXCIxMDIzNlwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjYzOF0sXG4gICAgXCIxMDgxNVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43NV0sXG4gICAgXCIxMDkyN1wiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIxMDkyOFwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI1NzM3NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMF1cbiAgfSxcbiAgXCJNYXRoLUJvbGRJdGFsaWNcIjoge1xuICAgIFwiNjVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiNjZcIjogWzAsIDAuNjg2MTEsIDAuMDQ4MzUsIDAsIDAuODY2NF0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODYxMSwgMC4wNjk3OSwgMCwgMC44MTY5NF0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODYxMSwgMC4wMzE5NCwgMCwgMC45MzgxMl0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODYxMSwgMC4wNTQ1MSwgMCwgMC44MTAwN10sXG4gICAgXCI3MFwiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42ODg4OV0sXG4gICAgXCI3MVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44ODY3M10sXG4gICAgXCI3MlwiOiBbMCwgMC42ODYxMSwgMC4wODIyOSwgMCwgMC45ODIyOV0sXG4gICAgXCI3M1wiOiBbMCwgMC42ODYxMSwgMC4wNzc3OCwgMCwgMC41MTExMV0sXG4gICAgXCI3NFwiOiBbMCwgMC42ODYxMSwgMC4xMDA2OSwgMCwgMC42MzEyNV0sXG4gICAgXCI3NVwiOiBbMCwgMC42ODYxMSwgMC4wNjk3OSwgMCwgMC45NzExOF0sXG4gICAgXCI3NlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC43NTU1NV0sXG4gICAgXCI3N1wiOiBbMCwgMC42ODYxMSwgMC4xMTQyNCwgMCwgMS4xNDIwMV0sXG4gICAgXCI3OFwiOiBbMCwgMC42ODYxMSwgMC4xMTQyNCwgMCwgMC45NTAzNF0sXG4gICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMC4wMzE5NCwgMCwgMC44MzY2Nl0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC43MjMwOV0sXG4gICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODYxMSwgMCwgMCwgMC44Njg2MV0sXG4gICAgXCI4MlwiOiBbMCwgMC42ODYxMSwgMC4wMDQyMSwgMCwgMC44NzIzNV0sXG4gICAgXCI4M1wiOiBbMCwgMC42ODYxMSwgMC4wNTM4MiwgMCwgMC42OTI3MV0sXG4gICAgXCI4NFwiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42MzY2M10sXG4gICAgXCI4NVwiOiBbMCwgMC42ODYxMSwgMC4xMTQyNCwgMCwgMC44MDAyN10sXG4gICAgXCI4NlwiOiBbMCwgMC42ODYxMSwgMC4yNTU1NSwgMCwgMC42Nzc3OF0sXG4gICAgXCI4N1wiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMS4wOTMwNV0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODYxMSwgMC4wNzc3OCwgMCwgMC45NDcyMl0sXG4gICAgXCI4OVwiOiBbMCwgMC42ODYxMSwgMC4yNTU1NSwgMCwgMC42NzQ1OF0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODYxMSwgMC4wNjk3OSwgMCwgMC43NzI1N10sXG4gICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42MzI4N10sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MjA4M10sXG4gICAgXCI5OVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MTM0Ml0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjA5NzJdLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjU1MzYxXSxcbiAgICBcIjEwMlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4xMTA0MiwgMCwgMC41NjgwNl0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNTQ0OV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY3NTldLFxuICAgIFwiMTA1XCI6IFswLCAwLjY5MzI2LCAwLCAwLCAwLjQwNDhdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY5MzI2LCAwLjA2MjIsIDAsIDAuNDcwODNdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLjAxODUyLCAwLCAwLjYwMzddLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjAwODgsIDAsIDAuMzQ4MTVdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAxLjAzMjRdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjcxMjk2XSxcbiAgICBcIjExMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41ODQ3Ml0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjAwOTJdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjU0MjEzXSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMC41Mjg3XSxcbiAgICBcIjExNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MzEyNV0sXG4gICAgXCIxMTZcIjogWzAsIDAuNjM0OTIsIDAsIDAsIDAuNDE1MjhdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjY4MTAyXSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC41NjY2Nl0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMDI3NzgsIDAsIDAuODMxNDhdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjY1OTAzXSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC41OTAyOF0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDQ0NDQsIDAuMDQyMTMsIDAsIDAuNTU1MDldLFxuICAgIFwiOTE1XCI6IFswLCAwLjY4NjExLCAwLjE1OTcyLCAwLCAwLjY1Njk0XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45NTgzM10sXG4gICAgXCI5MjBcIjogWzAsIDAuNjg2MTEsIDAuMDMxOTQsIDAsIDAuODY3MjJdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgwNTU1XSxcbiAgICBcIjkyNlwiOiBbMCwgMC42ODYxMSwgMC4wNzQ1OCwgMCwgMC44NDEyNV0sXG4gICAgXCI5MjhcIjogWzAsIDAuNjg2MTEsIDAuMDgyMjksIDAsIDAuOTgyMjldLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4NjExLCAwLjA1NDUxLCAwLCAwLjg4NTA3XSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42NzA4M10sXG4gICAgXCI5MzRcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4NjExLCAwLjExNjUzLCAwLCAwLjcxNDAyXSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODYxMSwgMC4wNDgzNSwgMCwgMC44Nzg5XSxcbiAgICBcIjk0NVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC43NjA2NF0sXG4gICAgXCI5NDZcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM0MDMsIDAsIDAuNjU5NzJdLFxuICAgIFwiOTQ3XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA2Mzg5LCAwLCAwLjU5MDAzXSxcbiAgICBcIjk0OFwiOiBbMCwgMC42OTQ0NCwgMC4wMzgxOSwgMCwgMC41MjIyMl0sXG4gICAgXCI5NDlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTI4ODJdLFxuICAgIFwiOTUwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA2MjE1LCAwLCAwLjUwODMzXSxcbiAgICBcIjk1MVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC42XSxcbiAgICBcIjk1MlwiOiBbMCwgMC42OTQ0NCwgMC4wMzE5NCwgMCwgMC41NjE4XSxcbiAgICBcIjk1M1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40MTIwNF0sXG4gICAgXCI5NTRcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjY3NTldLFxuICAgIFwiOTU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY3MDgzXSxcbiAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC43MDc4N10sXG4gICAgXCI5NTdcIjogWzAsIDAuNDQ0NDQsIDAuMDY4OTgsIDAsIDAuNTc2ODVdLFxuICAgIFwiOTU4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjAzMDIxLCAwLCAwLjUwODMzXSxcbiAgICBcIjk1OVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41ODQ3Ml0sXG4gICAgXCI5NjBcIjogWzAsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNjgyNDFdLFxuICAgIFwiOTYxXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjYxMThdLFxuICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQ0NDQ0LCAwLjA3OTE3LCAwLCAwLjQyMzYxXSxcbiAgICBcIjk2M1wiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC42ODU4OF0sXG4gICAgXCI5NjRcIjogWzAsIDAuNDQ0NDQsIDAuMTM0NzIsIDAsIDAuNTIwODNdLFxuICAgIFwiOTY1XCI6IFswLCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjYzMDU1XSxcbiAgICBcIjk2NlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC43NDcyMl0sXG4gICAgXCI5NjdcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNzE4MDVdLFxuICAgIFwiOTY4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjAzNzA0LCAwLCAwLjc1ODMzXSxcbiAgICBcIjk2OVwiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC43MTc4Ml0sXG4gICAgXCI5NzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjkxNTVdLFxuICAgIFwiOTgxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjcxMjVdLFxuICAgIFwiOTgyXCI6IFswLCAwLjQ0NDQ0LCAwLjAzMTk0LCAwLCAwLjk3NV0sXG4gICAgXCIxMDA5XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjYxMThdLFxuICAgIFwiMTAxM1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40ODMzM11cbiAgfSxcbiAgXCJNYXRoLUl0YWxpY1wiOiB7XG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xMzg4OSwgMC43NV0sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMC4wNTAxNywgMC4wODMzNCwgMC43NTg1MV0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wODMzNCwgMC43MTQ3Ml0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wNTU1NiwgMC44Mjc5Ml0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43MzgyXSxcbiAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MzA2XSxcbiAgICBcIjcxXCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc4NjI1XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjA3ODQ3LCAwLjExMTExLCAwLjQzOTU4XSxcbiAgICBcIjc0XCI6IFswLCAwLjY4MzMzLCAwLjA5NjE4LCAwLjE2NjY3LCAwLjU1NDUxXSxcbiAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLjA3MTUzLCAwLjA1NTU2LCAwLjg0OTMxXSxcbiAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLjAyNzc4LCAwLjY4MDU2XSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjk3MDE0XSxcbiAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjgwMzQ3XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MjAxXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc5MDU2XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLjAwNzczLCAwLjA4MzM0LCAwLjc1OTI5XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjYxMzJdLFxuICAgIFwiODRcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNTg0MzhdLFxuICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDI3NzgsIDAuNjgyNzhdLFxuICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgzMzNdLFxuICAgIFwiODdcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAsIDAuOTQ0NDVdLFxuICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMDc4NDcsIDAuMDgzMzQsIDAuODI4NDddLFxuICAgIFwiODlcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgwNTZdLFxuICAgIFwiOTBcIjogWzAsIDAuNjgzMzMsIDAuMDcxNTMsIDAuMDgzMzQsIDAuNjgyNjRdLFxuICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI4NTldLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDI5MTddLFxuICAgIFwiOTlcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDMyNzZdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLjE2NjY3LCAwLjUyMDQ5XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40NjU2M10sXG4gICAgXCIxMDJcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTA3NjQsIDAuMTY2NjcsIDAuNDg5NTldLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjAyNzc4LCAwLjQ3Njk3XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzYxNl0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjU5NTIsIDAsIDAsIDAuMzQ0NTFdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY1OTUyLCAwLjA1NzI0LCAwLCAwLjQxMTgxXSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4wMzE0OCwgMCwgMC41MjA2XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4wMTk2OCwgMC4wODMzNCwgMC4yOTgzOF0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuODc4MDFdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjYwMDIzXSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40ODQ3Ml0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTAzMTNdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjA4MzM0LCAwLjQ0NjQxXSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMC4wNTU1NiwgMC40NTExNl0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDY4NzVdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLCAwLjA4MzM0LCAwLjM2MTExXSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzI0Nl0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNDg0NzJdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjAyNjkxLCAwLjA4MzM0LCAwLjcxNTkyXSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzE1M10sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDkwMjhdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLjA0Mzk4LCAwLjA1NTU2LCAwLjQ2NTA1XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wODMzNCwgMC42MTUyOF0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTY2NjcsIDAuODMzMzRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODMzMywgMCwgMC4xNjY2NywgMC42OTQ0NV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMDc1NjksIDAuMDgzMzQsIDAuNzQyMzZdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43Nzk4Nl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDU1NTYsIDAuNTgzMzNdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjY2NjY3XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODMzMywgMC4xMSwgMC4wNTU1NiwgMC42MTIyMl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMDUwMTcsIDAuMDgzMzQsIDAuNzcyNF0sXG4gICAgXCI5NDVcIjogWzAsIDAuNDMwNTYsIDAuMDAzNywgMC4wMjc3OCwgMC42Mzk3XSxcbiAgICBcIjk0NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNTI3OCwgMC4wODMzNCwgMC41NjU2M10sXG4gICAgXCI5NDdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDU1NTYsIDAsIDAuNTE3NzNdLFxuICAgIFwiOTQ4XCI6IFswLCAwLjY5NDQ0LCAwLjAzNzg1LCAwLjA1NTU2LCAwLjQ0NDQ0XSxcbiAgICBcIjk0OVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC40NjYzMl0sXG4gICAgXCI5NTBcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDczNzgsIDAuMDgzMzQsIDAuNDM3NV0sXG4gICAgXCI5NTFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDk2NTNdLFxuICAgIFwiOTUyXCI6IFswLCAwLjY5NDQ0LCAwLjAyNzc4LCAwLjA4MzM0LCAwLjQ2OTQ0XSxcbiAgICBcIjk1M1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC4zNTM5NF0sXG4gICAgXCI5NTRcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTc2MTZdLFxuICAgIFwiOTU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC42MDI1NV0sXG4gICAgXCI5NTdcIjogWzAsIDAuNDMwNTYsIDAuMDYzNjYsIDAuMDI3NzgsIDAuNDkzOThdLFxuICAgIFwiOTU4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA0NjAxLCAwLjExMTExLCAwLjQzNzVdLFxuICAgIFwiOTU5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ4NDcyXSxcbiAgICBcIjk2MFwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzAwM10sXG4gICAgXCI5NjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQzMDU2LCAwLjA3OTg2LCAwLjA4MzM0LCAwLjM2Mjg1XSxcbiAgICBcIjk2M1wiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzE0MV0sXG4gICAgXCI5NjRcIjogWzAsIDAuNDMwNTYsIDAuMTEzMiwgMC4wMjc3OCwgMC40MzcxNV0sXG4gICAgXCI5NjVcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNTQwMjhdLFxuICAgIFwiOTY2XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjY1NDE3XSxcbiAgICBcIjk2N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC42MjU2OV0sXG4gICAgXCI5NjhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM1ODgsIDAuMTExMTEsIDAuNjUxMzldLFxuICAgIFwiOTY5XCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjYyMjQ1XSxcbiAgICBcIjk3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMC4wODMzNCwgMC41OTE0NF0sXG4gICAgXCI5ODFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAuMDgzMzQsIDAuNTk1ODNdLFxuICAgIFwiOTgyXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAwLjgyODEzXSxcbiAgICBcIjEwMDlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiMTAxM1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40MDU5XVxuICB9LFxuICBcIk1hdGgtUmVndWxhclwiOiB7XG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xMzg4OSwgMC43NV0sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMC4wNTAxNywgMC4wODMzNCwgMC43NTg1MV0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wODMzNCwgMC43MTQ3Ml0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wNTU1NiwgMC44Mjc5Ml0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43MzgyXSxcbiAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MzA2XSxcbiAgICBcIjcxXCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc4NjI1XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjA3ODQ3LCAwLjExMTExLCAwLjQzOTU4XSxcbiAgICBcIjc0XCI6IFswLCAwLjY4MzMzLCAwLjA5NjE4LCAwLjE2NjY3LCAwLjU1NDUxXSxcbiAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLjA3MTUzLCAwLjA1NTU2LCAwLjg0OTMxXSxcbiAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLjAyNzc4LCAwLjY4MDU2XSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjk3MDE0XSxcbiAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjgwMzQ3XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MjAxXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc5MDU2XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLjAwNzczLCAwLjA4MzM0LCAwLjc1OTI5XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjYxMzJdLFxuICAgIFwiODRcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNTg0MzhdLFxuICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDI3NzgsIDAuNjgyNzhdLFxuICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgzMzNdLFxuICAgIFwiODdcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAsIDAuOTQ0NDVdLFxuICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMDc4NDcsIDAuMDgzMzQsIDAuODI4NDddLFxuICAgIFwiODlcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgwNTZdLFxuICAgIFwiOTBcIjogWzAsIDAuNjgzMzMsIDAuMDcxNTMsIDAuMDgzMzQsIDAuNjgyNjRdLFxuICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI4NTldLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDI5MTddLFxuICAgIFwiOTlcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDMyNzZdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLjE2NjY3LCAwLjUyMDQ5XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40NjU2M10sXG4gICAgXCIxMDJcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTA3NjQsIDAuMTY2NjcsIDAuNDg5NTldLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjAyNzc4LCAwLjQ3Njk3XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzYxNl0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjU5NTIsIDAsIDAsIDAuMzQ0NTFdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY1OTUyLCAwLjA1NzI0LCAwLCAwLjQxMTgxXSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4wMzE0OCwgMCwgMC41MjA2XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4wMTk2OCwgMC4wODMzNCwgMC4yOTgzOF0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuODc4MDFdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjYwMDIzXSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40ODQ3Ml0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTAzMTNdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjA4MzM0LCAwLjQ0NjQxXSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMC4wNTU1NiwgMC40NTExNl0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDY4NzVdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLCAwLjA4MzM0LCAwLjM2MTExXSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzI0Nl0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNDg0NzJdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjAyNjkxLCAwLjA4MzM0LCAwLjcxNTkyXSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzE1M10sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDkwMjhdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLjA0Mzk4LCAwLjA1NTU2LCAwLjQ2NTA1XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wODMzNCwgMC42MTUyOF0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTY2NjcsIDAuODMzMzRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODMzMywgMCwgMC4xNjY2NywgMC42OTQ0NV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMDc1NjksIDAuMDgzMzQsIDAuNzQyMzZdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43Nzk4Nl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDU1NTYsIDAuNTgzMzNdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjY2NjY3XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODMzMywgMC4xMSwgMC4wNTU1NiwgMC42MTIyMl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMDUwMTcsIDAuMDgzMzQsIDAuNzcyNF0sXG4gICAgXCI5NDVcIjogWzAsIDAuNDMwNTYsIDAuMDAzNywgMC4wMjc3OCwgMC42Mzk3XSxcbiAgICBcIjk0NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNTI3OCwgMC4wODMzNCwgMC41NjU2M10sXG4gICAgXCI5NDdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDU1NTYsIDAsIDAuNTE3NzNdLFxuICAgIFwiOTQ4XCI6IFswLCAwLjY5NDQ0LCAwLjAzNzg1LCAwLjA1NTU2LCAwLjQ0NDQ0XSxcbiAgICBcIjk0OVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC40NjYzMl0sXG4gICAgXCI5NTBcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDczNzgsIDAuMDgzMzQsIDAuNDM3NV0sXG4gICAgXCI5NTFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDk2NTNdLFxuICAgIFwiOTUyXCI6IFswLCAwLjY5NDQ0LCAwLjAyNzc4LCAwLjA4MzM0LCAwLjQ2OTQ0XSxcbiAgICBcIjk1M1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC4zNTM5NF0sXG4gICAgXCI5NTRcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTc2MTZdLFxuICAgIFwiOTU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC42MDI1NV0sXG4gICAgXCI5NTdcIjogWzAsIDAuNDMwNTYsIDAuMDYzNjYsIDAuMDI3NzgsIDAuNDkzOThdLFxuICAgIFwiOTU4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA0NjAxLCAwLjExMTExLCAwLjQzNzVdLFxuICAgIFwiOTU5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ4NDcyXSxcbiAgICBcIjk2MFwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzAwM10sXG4gICAgXCI5NjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQzMDU2LCAwLjA3OTg2LCAwLjA4MzM0LCAwLjM2Mjg1XSxcbiAgICBcIjk2M1wiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzE0MV0sXG4gICAgXCI5NjRcIjogWzAsIDAuNDMwNTYsIDAuMTEzMiwgMC4wMjc3OCwgMC40MzcxNV0sXG4gICAgXCI5NjVcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNTQwMjhdLFxuICAgIFwiOTY2XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjY1NDE3XSxcbiAgICBcIjk2N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC42MjU2OV0sXG4gICAgXCI5NjhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM1ODgsIDAuMTExMTEsIDAuNjUxMzldLFxuICAgIFwiOTY5XCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjYyMjQ1XSxcbiAgICBcIjk3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMC4wODMzNCwgMC41OTE0NF0sXG4gICAgXCI5ODFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAuMDgzMzQsIDAuNTk1ODNdLFxuICAgIFwiOTgyXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAwLjgyODEzXSxcbiAgICBcIjEwMDlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiMTAxM1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40MDU5XVxuICB9LFxuICBcIlNhbnNTZXJpZi1Cb2xkXCI6IHtcbiAgICBcIjMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjM2NjY3XSxcbiAgICBcIjM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1ODM0XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjkxNjY3XSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjU1XSxcbiAgICBcIjM3XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAxLjAyOTEyXSxcbiAgICBcIjM4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMDU2XSxcbiAgICBcIjM5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjQwXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQyNzc4XSxcbiAgICBcIjQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQyNzc4XSxcbiAgICBcIjQyXCI6IFswLCAwLjc1LCAwLCAwLCAwLjU1XSxcbiAgICBcIjQzXCI6IFswLjExNjY3LCAwLjYxNjY3LCAwLCAwLCAwLjg1NTU2XSxcbiAgICBcIjQ0XCI6IFswLjEwNTU2LCAwLjEzMDU2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjM2NjY3XSxcbiAgICBcIjQ2XCI6IFswLCAwLjEzMDU2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU1XSxcbiAgICBcIjQ4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjQ5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUyXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU4XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjU5XCI6IFswLjEwNTU2LCAwLjQ1ODMzLCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjYxXCI6IFstMC4wOTM3NSwgMC40MDYyNSwgMCwgMCwgMC44NTU1Nl0sXG4gICAgXCI2M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTk0NV0sXG4gICAgXCI2NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI2NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI2NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI2N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3OF0sXG4gICAgXCI2OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI2OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NDE2N10sXG4gICAgXCI3MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI3MVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI3MlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI3M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMzA1Nl0sXG4gICAgXCI3NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTk0NV0sXG4gICAgXCI3NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NjM4OV0sXG4gICAgXCI3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41ODA1Nl0sXG4gICAgXCI3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC45Nzc3OF0sXG4gICAgXCI3OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI3OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI4MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3OF0sXG4gICAgXCI4MVwiOiBbMC4xMDU1NiwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI4MlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3OF0sXG4gICAgXCI4M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI4NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NjM4OV0sXG4gICAgXCI4NlwiOiBbMCwgMC42OTQ0NCwgMC4wMTUyOCwgMCwgMC43MzMzNF0sXG4gICAgXCI4N1wiOiBbMCwgMC42OTQ0NCwgMC4wMTUyOCwgMCwgMS4wMzg4OV0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI4OVwiOiBbMCwgMC42OTQ0NCwgMC4wMjc1LCAwLCAwLjczMzM0XSxcbiAgICBcIjkwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY3MjIzXSxcbiAgICBcIjkxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM0MzA2XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM0MzA2XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjk1XCI6IFswLjM1LCAwLjEwODMzLCAwLjAzMDU2LCAwLCAwLjU1XSxcbiAgICBcIjk3XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NjExMV0sXG4gICAgXCI5OVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC40ODg4OV0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTYxMTFdLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjEwMlwiOiBbMCwgMC42OTQ0NCwgMC4wNzYzOSwgMCwgMC4zMzYxMV0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNTVdLFxuICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjEwNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNTU1Nl0sXG4gICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuMjg2MTFdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUzMDU2XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNTU1Nl0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuODY2NjddLFxuICAgIFwiMTEwXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjExMVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC41NV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDU4MzMsIDAsIDAsIDAuNTYxMTFdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ1ODMzLCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjExNFwiOiBbMCwgMC40NTgzMywgMC4wMTUyOCwgMCwgMC4zNzIyMl0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNDIxNjddLFxuICAgIFwiMTE2XCI6IFswLCAwLjU4OTI5LCAwLCAwLCAwLjQwNDE3XSxcbiAgICBcIjExN1wiOiBbMCwgMC40NTgzMywgMCwgMCwgMC41NjExMV0sXG4gICAgXCIxMThcIjogWzAsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNV0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNzQ0NDVdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjVdLFxuICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQ1ODMzLCAwLjAxNTI4LCAwLCAwLjVdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjQ3NjM5XSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zNDQ0NCwgMCwgMCwgMC41NV0sXG4gICAgXCIxNjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICBcIjE4MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNDg4ODldLFxuICAgIFwiMzA1XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjI1NTU2XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NTgzMywgMCwgMCwgMC4yODYxMV0sXG4gICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNzExXCI6IFswLCAwLjYzNTQyLCAwLCAwLCAwLjU1XSxcbiAgICBcIjcxM1wiOiBbMCwgMC42Mzc3OCwgMCwgMCwgMC41NV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNzMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41ODA1Nl0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuOTE2NjddLFxuICAgIFwiOTIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg1NTU2XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NzIyM10sXG4gICAgXCI5MjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzMzMzRdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODU1NTZdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44NTU1Nl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzk0NDVdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40NTgzMywgMC4wMzA1NiwgMCwgMC41NV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQ1ODMzLCAwLjAzMDU2LCAwLCAxLjEwMDAxXSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMDU1Nl0sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1ODM0XSxcbiAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU4MzRdXG4gIH0sXG4gIFwiU2Fuc1NlcmlmLUl0YWxpY1wiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMC4wNTczMywgMCwgMC4zMTk0NV0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMC4wMDMxNiwgMCwgMC41XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA1MDg3LCAwLCAwLjgzMzM0XSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAuMDMxMjYsIDAsIDAuODMzMzRdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAuMDMwNTgsIDAsIDAuNzU4MzRdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAuMDc4MTYsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAuMTMxNjQsIDAsIDAuMzg4ODldLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAuMDI1MzYsIDAsIDAuMzg4ODldLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAuMTE3NzUsIDAsIDAuNV0sXG4gICAgXCI0M1wiOiBbMC4wODMzMywgMC41ODMzMywgMC4wMjUzNiwgMCwgMC43Nzc3OF0sXG4gICAgXCI0NFwiOiBbMC4xMjUsIDAuMDgzMzMsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDVcIjogWzAsIDAuNDQ0NDQsIDAuMDE5NDYsIDAsIDAuMzMzMzNdLFxuICAgIFwiNDZcIjogWzAsIDAuMDgzMzMsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAuMTMxNjQsIDAsIDAuNV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjQ5XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTBcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjUyXCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTNcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjU1XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTZcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjU4XCI6IFswLCAwLjQ0NDQ0LCAwLjAyNTAyLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjU5XCI6IFswLjEyNSwgMC40NDQ0NCwgMC4wMjUwMiwgMCwgMC4yNzc3OF0sXG4gICAgXCI2MVwiOiBbLTAuMTMsIDAuMzcsIDAuMDUwODcsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAuMTE4MDksIDAsIDAuNDcyMjJdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAuMDc1NTUsIDAsIDAuNjY2NjddLFxuICAgIFwiNjVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNjZcIjogWzAsIDAuNjk0NDQsIDAuMDgyOTMsIDAsIDAuNjY2NjddLFxuICAgIFwiNjdcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNjM4ODldLFxuICAgIFwiNjhcIjogWzAsIDAuNjk0NDQsIDAuMDc1NTUsIDAsIDAuNzIyMjNdLFxuICAgIFwiNjlcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNTk3MjJdLFxuICAgIFwiNzBcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuNTY5NDVdLFxuICAgIFwiNzFcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNjY2NjddLFxuICAgIFwiNzJcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuNzA4MzRdLFxuICAgIFwiNzNcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuMjc3NzhdLFxuICAgIFwiNzRcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuNDcyMjJdLFxuICAgIFwiNzVcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNjk0NDVdLFxuICAgIFwiNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTQxNjddLFxuICAgIFwiNzdcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuODc1XSxcbiAgICBcIjc4XCI6IFswLCAwLjY5NDQ0LCAwLjA4MDk0LCAwLCAwLjcwODM0XSxcbiAgICBcIjc5XCI6IFswLCAwLjY5NDQ0LCAwLjA3NTU1LCAwLCAwLjczNjExXSxcbiAgICBcIjgwXCI6IFswLCAwLjY5NDQ0LCAwLjA4MjkzLCAwLCAwLjYzODg5XSxcbiAgICBcIjgxXCI6IFswLjEyNSwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC43MzYxMV0sXG4gICAgXCI4MlwiOiBbMCwgMC42OTQ0NCwgMC4wODI5MywgMCwgMC42NDU4NF0sXG4gICAgXCI4M1wiOiBbMCwgMC42OTQ0NCwgMC4wOTIwNSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NFwiOiBbMCwgMC42OTQ0NCwgMC4xMzM3MiwgMCwgMC42ODA1Nl0sXG4gICAgXCI4NVwiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC42ODc1XSxcbiAgICBcIjg2XCI6IFswLCAwLjY5NDQ0LCAwLjE2MTUsIDAsIDAuNjY2NjddLFxuICAgIFwiODdcIjogWzAsIDAuNjk0NDQsIDAuMTYxNSwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTQ0NCwgMC4xMzM3MiwgMCwgMC42NjY2N10sXG4gICAgXCI4OVwiOiBbMCwgMC42OTQ0NCwgMC4xNzI2MSwgMCwgMC42NjY2N10sXG4gICAgXCI5MFwiOiBbMCwgMC42OTQ0NCwgMC4xMTk4MywgMCwgMC42MTExMV0sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMC4xNTk0MiwgMCwgMC4yODg4OV0sXG4gICAgXCI5M1wiOiBbMC4yNSwgMC43NSwgMC4wODcxOSwgMCwgMC4yODg4OV0sXG4gICAgXCI5NFwiOiBbMCwgMC42OTQ0NCwgMC4wNzk5LCAwLCAwLjVdLFxuICAgIFwiOTVcIjogWzAuMzUsIDAuMDk0NDQsIDAuMDg2MTYsIDAsIDAuNV0sXG4gICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMC4wMDk4MSwgMCwgMC40ODA1Nl0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMC4wMzA1NywgMCwgMC41MTY2N10sXG4gICAgXCI5OVwiOiBbMCwgMC40NDQ0NCwgMC4wODMzNiwgMCwgMC40NDQ0NV0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAuMDk0ODMsIDAsIDAuNTE2NjddLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLjA2Nzc4LCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEwMlwiOiBbMCwgMC42OTQ0NCwgMC4yMTcwNSwgMCwgMC4zMDU1Nl0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMTA4MzYsIDAsIDAuNV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAuMDE3NzgsIDAsIDAuNTE2NjddLFxuICAgIFwiMTA1XCI6IFswLCAwLjY3OTM3LCAwLjA5NzE4LCAwLCAwLjIzODg5XSxcbiAgICBcIjEwNlwiOiBbMC4xOTQ0NCwgMC42NzkzNywgMC4wOTE2MiwgMCwgMC4yNjY2N10sXG4gICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAuMDgzMzYsIDAsIDAuNDg4ODldLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjA5NDgzLCAwLCAwLjIzODg5XSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NDQ0NCwgMC4wMTc3OCwgMCwgMC43OTQ0NV0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAuMDE3NzgsIDAsIDAuNTE2NjddLFxuICAgIFwiMTExXCI6IFswLCAwLjQ0NDQ0LCAwLjA2NjEzLCAwLCAwLjVdLFxuICAgIFwiMTEyXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAzODksIDAsIDAuNTE2NjddLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA0MTY5LCAwLCAwLjUxNjY3XSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC4zNDE2N10sXG4gICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAuMDc3OCwgMCwgMC4zODMzM10sXG4gICAgXCIxMTZcIjogWzAsIDAuNTcxNDMsIDAuMDcyMjUsIDAsIDAuMzYxMTFdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLjA0MTY5LCAwLCAwLjUxNjY3XSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC40NjExMV0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMTA4MzYsIDAsIDAuNjgzMzRdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLjA5MTY5LCAwLCAwLjQ2MTExXSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC40NjExMV0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDQ0NDQsIDAuMDg3NTIsIDAsIDAuNDM0NzJdLFxuICAgIFwiMTI2XCI6IFswLjM1LCAwLjMyNjU5LCAwLjA4ODI2LCAwLCAwLjVdLFxuICAgIFwiMTY4XCI6IFswLCAwLjY3OTM3LCAwLjA2Mzg1LCAwLCAwLjVdLFxuICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczNzUyXSxcbiAgICBcIjE4NFwiOiBbMC4xNzAxNCwgMCwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDQ0NDQsIDAuMDQxNjksIDAsIDAuMjM4ODldLFxuICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA0MTY5LCAwLCAwLjI2NjY3XSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMC4wNzk5LCAwLCAwLjVdLFxuICAgIFwiNzExXCI6IFswLCAwLjYzMTk0LCAwLjA4NDMyLCAwLCAwLjVdLFxuICAgIFwiNzEzXCI6IFswLCAwLjYwODg5LCAwLjA4Nzc2LCAwLCAwLjVdLFxuICAgIFwiNzE0XCI6IFswLCAwLjY5NDQ0LCAwLjA5MjA1LCAwLCAwLjVdLFxuICAgIFwiNzE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLjA5NDgzLCAwLCAwLjVdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY3OTM3LCAwLjA3Nzc0LCAwLCAwLjI3Nzc4XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Mzc1Ml0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjc2NTksIDAuMDg4MjYsIDAsIDAuNV0sXG4gICAgXCI3MzNcIjogWzAsIDAuNjk0NDQsIDAuMDkyMDUsIDAsIDAuNV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuNTQxNjddLFxuICAgIFwiOTE2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjkyMFwiOiBbMCwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY5NDQ0LCAwLjEyODE2LCAwLCAwLjY2NjY3XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC43MDgzNF0sXG4gICAgXCI5MzFcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNzIyMjJdLFxuICAgIFwiOTMzXCI6IFswLCAwLjY5NDQ0LCAwLjA5MDMxLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkzNFwiOiBbMCwgMC42OTQ0NCwgMC4wNDYwMywgMCwgMC43MjIyMl0sXG4gICAgXCI5MzZcIjogWzAsIDAuNjk0NDQsIDAuMDkwMzEsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTM3XCI6IFswLCAwLjY5NDQ0LCAwLjA4MjkzLCAwLCAwLjcyMjIyXSxcbiAgICBcIjgyMTFcIjogWzAsIDAuNDQ0NDQsIDAuMDg2MTYsIDAsIDAuNV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQ0NDQ0LCAwLjA4NjE2LCAwLCAxLjBdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42OTQ0NCwgMC4wNzgxNiwgMCwgMC4yNzc3OF0sXG4gICAgXCI4MjE3XCI6IFswLCAwLjY5NDQ0LCAwLjA3ODE2LCAwLCAwLjI3Nzc4XSxcbiAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAuMTQyMDUsIDAsIDAuNV0sXG4gICAgXCI4MjIxXCI6IFswLCAwLjY5NDQ0LCAwLjAwMzE2LCAwLCAwLjVdXG4gIH0sXG4gIFwiU2Fuc1NlcmlmLVJlZ3VsYXJcIjoge1xuICAgIFwiMzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDVdLFxuICAgIFwiMzRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCIzNlwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjM3XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjM4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc1ODM0XSxcbiAgICBcIjM5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQwXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjQyXCI6IFswLCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiNDNcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNDRcIjogWzAuMTI1LCAwLjA4MzMzLCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjMzMzMzXSxcbiAgICBcIjQ2XCI6IFswLCAwLjA4MzMzLCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiNDhcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI0OVwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUwXCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTFcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1MlwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUzXCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTRcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1NVwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjU2XCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTdcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1OFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI1OVwiOiBbMC4xMjUsIDAuNDQ0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNjFcIjogWy0wLjEzLCAwLjM3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIzXSxcbiAgICBcIjY5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU5NzIyXSxcbiAgICBcIjcwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU2OTQ1XSxcbiAgICBcIjcxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjcyXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwODM0XSxcbiAgICBcIjczXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjc0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjc1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY5NDQ1XSxcbiAgICBcIjc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU0MTY3XSxcbiAgICBcIjc3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg3NV0sXG4gICAgXCI3OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDgzNF0sXG4gICAgXCI3OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzYxMV0sXG4gICAgXCI4MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4MVwiOiBbMC4xMjUsIDAuNjk0NDQsIDAsIDAsIDAuNzM2MTFdLFxuICAgIFwiODJcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjQ1ODRdLFxuICAgIFwiODNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjgwNTZdLFxuICAgIFwiODVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjg3NV0sXG4gICAgXCI4NlwiOiBbMCwgMC42OTQ0NCwgMC4wMTM4OSwgMCwgMC42NjY2N10sXG4gICAgXCI4N1wiOiBbMCwgMC42OTQ0NCwgMC4wMTM4OSwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4OVwiOiBbMCwgMC42OTQ0NCwgMC4wMjUsIDAsIDAuNjY2NjddLFxuICAgIFwiOTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMjg4ODldLFxuICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMjg4ODldLFxuICAgIFwiOTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI5NVwiOiBbMC4zNSwgMC4wOTQ0NCwgMC4wMjc3OCwgMCwgMC41XSxcbiAgICBcIjk3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ4MDU2XSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICBcIjk5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMDFcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTAyXCI6IFswLCAwLjY5NDQ0LCAwLjA2OTQ0LCAwLCAwLjMwNTU2XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMTM4OSwgMCwgMC41XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMDVcIjogWzAsIDAuNjc5MzcsIDAsIDAsIDAuMjM4ODldLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY3OTM3LCAwLCAwLCAwLjI2NjY3XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC40ODg4OV0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjM4ODldLFxuICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjExMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMTFcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNTE2NjddLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4wMTM4OSwgMCwgMC4zNDE2N10sXG4gICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzgzMzNdLFxuICAgIFwiMTE2XCI6IFswLCAwLjU3MTQzLCAwLCAwLCAwLjM2MTExXSxcbiAgICBcIjExN1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMThcIjogWzAsIDAuNDQ0NDQsIDAuMDEzODksIDAsIDAuNDYxMTFdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQ0NDQ0LCAwLjAxMzg5LCAwLCAwLjY4MzM0XSxcbiAgICBcIjEyMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40NjExMV0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDEzODksIDAsIDAuNDYxMTFdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQzNDcyXSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zMjY1OSwgMCwgMCwgMC41XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42NzkzNywgMCwgMCwgMC41XSxcbiAgICBcIjE3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMzA1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjIzODg5XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC4yNjY2N10sXG4gICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjMxOTQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNjA4ODksIDAsIDAsIDAuNV0sXG4gICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MjlcIjogWzAsIDAuNjc5MzcsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNzMwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjczMlwiOiBbMCwgMC42NzY1OSwgMCwgMCwgMC41XSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NDE2N10sXG4gICAgXCI5MTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiOTI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwODM0XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjkzNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40NDQ0NCwgMC4wMjc3OCwgMCwgMC41XSxcbiAgICBcIjgyMTJcIjogWzAsIDAuNDQ0NDQsIDAuMDI3NzgsIDAsIDEuMF0sXG4gICAgXCI4MjE2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODIyMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV1cbiAgfSxcbiAgXCJTY3JpcHQtUmVndWxhclwiOiB7XG4gICAgXCI2NVwiOiBbMCwgMC43LCAwLjIyOTI1LCAwLCAwLjgwMjUzXSxcbiAgICBcIjY2XCI6IFswLCAwLjcsIDAuMDQwODcsIDAsIDAuOTA3NTddLFxuICAgIFwiNjdcIjogWzAsIDAuNywgMC4xNjg5LCAwLCAwLjY2NjE5XSxcbiAgICBcIjY4XCI6IFswLCAwLjcsIDAuMDkzNzEsIDAsIDAuNzc0NDNdLFxuICAgIFwiNjlcIjogWzAsIDAuNywgMC4xODU4MywgMCwgMC41NjE2Ml0sXG4gICAgXCI3MFwiOiBbMCwgMC43LCAwLjEzNjM0LCAwLCAwLjg5NTQ0XSxcbiAgICBcIjcxXCI6IFswLCAwLjcsIDAuMTczMjIsIDAsIDAuNjA5NjFdLFxuICAgIFwiNzJcIjogWzAsIDAuNywgMC4yOTY5NCwgMCwgMC45NjkxOV0sXG4gICAgXCI3M1wiOiBbMCwgMC43LCAwLjE5MTg5LCAwLCAwLjgwOTA3XSxcbiAgICBcIjc0XCI6IFswLjI3Nzc4LCAwLjcsIDAuMTkxODksIDAsIDEuMDUxNTldLFxuICAgIFwiNzVcIjogWzAsIDAuNywgMC4zMTI1OSwgMCwgMC45MTM2NF0sXG4gICAgXCI3NlwiOiBbMCwgMC43LCAwLjE5MTg5LCAwLCAwLjg3MzczXSxcbiAgICBcIjc3XCI6IFswLCAwLjcsIDAuMTU5ODEsIDAsIDEuMDgwMzFdLFxuICAgIFwiNzhcIjogWzAsIDAuNywgMC4zNTI1LCAwLCAwLjkwMTVdLFxuICAgIFwiNzlcIjogWzAsIDAuNywgMC4wODA3OCwgMCwgMC43Mzc4N10sXG4gICAgXCI4MFwiOiBbMCwgMC43LCAwLjA4MDc4LCAwLCAxLjAxMjYyXSxcbiAgICBcIjgxXCI6IFswLCAwLjcsIDAuMDMzMDUsIDAsIDAuODgyODJdLFxuICAgIFwiODJcIjogWzAsIDAuNywgMC4wNjI1OSwgMCwgMC44NV0sXG4gICAgXCI4M1wiOiBbMCwgMC43LCAwLjE5MTg5LCAwLCAwLjg2NzY3XSxcbiAgICBcIjg0XCI6IFswLCAwLjcsIDAuMjkwODcsIDAsIDAuNzQ2OTddLFxuICAgIFwiODVcIjogWzAsIDAuNywgMC4yNTgxNSwgMCwgMC43OTk5Nl0sXG4gICAgXCI4NlwiOiBbMCwgMC43LCAwLjI3NTIzLCAwLCAwLjYyMjA0XSxcbiAgICBcIjg3XCI6IFswLCAwLjcsIDAuMjc1MjMsIDAsIDAuODA1MzJdLFxuICAgIFwiODhcIjogWzAsIDAuNywgMC4yNjAwNiwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OVwiOiBbMCwgMC43LCAwLjI5MzksIDAsIDAuNzA5NjFdLFxuICAgIFwiOTBcIjogWzAsIDAuNywgMC4yNDAzNywgMCwgMC44MjEyXVxuICB9LFxuICBcIlNpemUxLVJlZ3VsYXJcIjoge1xuICAgIFwiNDBcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDU4MzRdLFxuICAgIFwiNDFcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDU4MzRdLFxuICAgIFwiNDdcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNTc3NzhdLFxuICAgIFwiOTFcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiOTJcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNTc3NzhdLFxuICAgIFwiOTNcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiMTIzXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjEyNVwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC41ODMzNF0sXG4gICAgXCI3MTBcIjogWzAsIDAuNzIyMjIsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiNzMyXCI6IFswLCAwLjcyMjIyLCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjc3MFwiOiBbMCwgMC43MjIyMiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI3NzFcIjogWzAsIDAuNzIyMjIsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODIxNFwiOiBbLTAuMDAwOTksIDAuNjAxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg1OTNcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODU5NVwiOiBbMWUtMDUsIDAuNiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NjU3XCI6IFsxZS0wNSwgMC42LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg2NTlcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODcxOVwiOiBbMC4yNTAwMSwgMC43NSwgMCwgMCwgMC45NDQ0NV0sXG4gICAgXCI4NzIwXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjk0NDQ1XSxcbiAgICBcIjg3MjFcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDEuMDU1NTZdLFxuICAgIFwiODczMFwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg3MzlcIjogWy0wLjAwNTk5LCAwLjYwNiwgMCwgMCwgMC4zMzMzM10sXG4gICAgXCI4NzQxXCI6IFstMC4wMDU5OSwgMC42MDYsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODc0N1wiOiBbMC4zMDYxMiwgMC44MDUsIDAuMTk0NDUsIDAsIDAuNDcyMjJdLFxuICAgIFwiODc0OFwiOiBbMC4zMDYsIDAuODA1LCAwLjE5NDQ1LCAwLCAwLjQ3MjIyXSxcbiAgICBcIjg3NDlcIjogWzAuMzA2LCAwLjgwNSwgMC4xOTQ0NSwgMCwgMC40NzIyMl0sXG4gICAgXCI4NzUwXCI6IFswLjMwNjEyLCAwLjgwNSwgMC4xOTQ0NSwgMCwgMC40NzIyMl0sXG4gICAgXCI4ODk2XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjg4OTdcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODg5OFwiOiBbMC4yNTAwMSwgMC43NSwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI4ODk5XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjg5NjhcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiODk2OVwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40NzIyMl0sXG4gICAgXCI4OTcwXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjg5NzFcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiOTE2OFwiOiBbLTAuMDAwOTksIDAuNjAxLCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjEwMjE2XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjEwMjE3XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjEwNzUyXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjEwNzUzXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjEwNzU0XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjEwNzU2XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjEwNzU4XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XVxuICB9LFxuICBcIlNpemUyLVJlZ3VsYXJcIjoge1xuICAgIFwiNDBcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTk3MjJdLFxuICAgIFwiNDFcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTk3MjJdLFxuICAgIFwiNDdcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuODExMTFdLFxuICAgIFwiOTFcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiOTJcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuODExMTFdLFxuICAgIFwiOTNcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiMTIzXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjEyNVwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI3MTBcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI3MzJcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI3NzBcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI3NzFcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI4NzE5XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjI3Nzc4XSxcbiAgICBcIjg3MjBcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMjc3NzhdLFxuICAgIFwiODcyMVwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS40NDQ0NV0sXG4gICAgXCI4NzMwXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAxLjBdLFxuICAgIFwiODc0N1wiOiBbMC44NjIyNSwgMS4zNiwgMC40NDQ0NSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzQ4XCI6IFswLjg2MiwgMS4zNiwgMC40NDQ0NSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzQ5XCI6IFswLjg2MiwgMS4zNiwgMC40NDQ0NSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzUwXCI6IFswLjg2MjI1LCAxLjM2LCAwLjQ0NDQ1LCAwLCAwLjU1NTU2XSxcbiAgICBcIjg4OTZcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODg5N1wiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCI4ODk4XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjg4OTlcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODk2OFwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCI4OTY5XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjg5NzBcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTI3NzhdLFxuICAgIFwiODk3MVwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMDIxNlwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42MTExMV0sXG4gICAgXCIxMDIxN1wiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42MTExMV0sXG4gICAgXCIxMDc1MlwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS41MTExMl0sXG4gICAgXCIxMDc1M1wiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS41MTExMl0sXG4gICAgXCIxMDc1NFwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS41MTExMl0sXG4gICAgXCIxMDc1NlwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCIxMDc1OFwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV1cbiAgfSxcbiAgXCJTaXplMy1SZWd1bGFyXCI6IHtcbiAgICBcIjQwXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjczNjExXSxcbiAgICBcIjQxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjczNjExXSxcbiAgICBcIjQ3XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAxLjA0NDQ1XSxcbiAgICBcIjkxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjkyXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAxLjA0NDQ1XSxcbiAgICBcIjkzXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjEyM1wiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMC43NV0sXG4gICAgXCIxMjVcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNzVdLFxuICAgIFwiNzEwXCI6IFswLCAwLjc1LCAwLCAwLCAxLjQ0NDQ1XSxcbiAgICBcIjczMlwiOiBbMCwgMC43NSwgMCwgMCwgMS40NDQ0NV0sXG4gICAgXCI3NzBcIjogWzAsIDAuNzUsIDAsIDAsIDEuNDQ0NDVdLFxuICAgIFwiNzcxXCI6IFswLCAwLjc1LCAwLCAwLCAxLjQ0NDQ1XSxcbiAgICBcIjg3MzBcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDEuMF0sXG4gICAgXCI4OTY4XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjg5NjlcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiODk3MFwiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMC41ODMzNF0sXG4gICAgXCI4OTcxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjEwMjE2XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjc1XSxcbiAgICBcIjEwMjE3XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjc1XVxuICB9LFxuICBcIlNpemU0LVJlZ3VsYXJcIjoge1xuICAgIFwiNDBcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNzkxNjddLFxuICAgIFwiNDFcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNzkxNjddLFxuICAgIFwiNDdcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDEuMjc3NzhdLFxuICAgIFwiOTFcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiOTJcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDEuMjc3NzhdLFxuICAgIFwiOTNcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiMTIzXCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICBcIjEyNVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC44MDU1Nl0sXG4gICAgXCI3MTBcIjogWzAsIDAuODI1LCAwLCAwLCAxLjg4ODldLFxuICAgIFwiNzMyXCI6IFswLCAwLjgyNSwgMCwgMCwgMS44ODg5XSxcbiAgICBcIjc3MFwiOiBbMCwgMC44MjUsIDAsIDAsIDEuODg4OV0sXG4gICAgXCI3NzFcIjogWzAsIDAuODI1LCAwLCAwLCAxLjg4ODldLFxuICAgIFwiODczMFwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg5NjhcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODk2OVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4OTcwXCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjg5NzFcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiOTExNVwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuODc1XSxcbiAgICBcIjkxMTZcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuODc1XSxcbiAgICBcIjkxMTdcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjg3NV0sXG4gICAgXCI5MTE4XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC44NzVdLFxuICAgIFwiOTExOVwiOiBbMWUtMDUsIDAuNiwgMCwgMCwgMC44NzVdLFxuICAgIFwiOTEyMFwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuODc1XSxcbiAgICBcIjkxMjFcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjkxMjJcIjogWy0wLjAwMDk5LCAwLjYwMSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTIzXCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTI0XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTI1XCI6IFstMC4wMDA5OSwgMC42MDEsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiOTEyNlwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiOTEyN1wiOiBbMWUtMDUsIDAuOSwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5MTI4XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxMjlcIjogWzAuOTAwMDEsIDAsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTEzMFwiOiBbMCwgMC4zLCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxMzFcIjogWzFlLTA1LCAwLjksIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTEzMlwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5MTMzXCI6IFswLjkwMDAxLCAwLCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxNDNcIjogWzAuODg1MDIsIDAuOTE1LCAwLCAwLCAxLjA1NTU2XSxcbiAgICBcIjEwMjE2XCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICBcIjEwMjE3XCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICBcIjU3MzQ0XCI6IFstMC4wMDQ5OSwgMC42MDUsIDAsIDAsIDEuMDU1NTZdLFxuICAgIFwiNTczNDVcIjogWy0wLjAwNDk5LCAwLjYwNSwgMCwgMCwgMS4wNTU1Nl0sXG4gICAgXCI1NzY4MFwiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV0sXG4gICAgXCI1NzY4MVwiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV0sXG4gICAgXCI1NzY4MlwiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV0sXG4gICAgXCI1NzY4M1wiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV1cbiAgfSxcbiAgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIjoge1xuICAgIFwiMzJcIjogWzAsIDAsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjMzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzNFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMzVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjM2XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzN1wiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiMzhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjM5XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0MFwiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDFcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQyXCI6IFswLCAwLjUyMDgzLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0M1wiOiBbLTAuMDgwNTYsIDAuNTMwNTUsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQ0XCI6IFswLjEzODg5LCAwLjEyNSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDVcIjogWy0wLjA4MDU2LCAwLjUzMDU1LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0NlwiOiBbMCwgMC4xMjUsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQ3XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0OFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjUwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1MVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjUzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1NFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1N1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNThcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU5XCI6IFswLjEzODg5LCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2MFwiOiBbLTAuMDU1NTYsIDAuNTU1NTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjYxXCI6IFstMC4xOTU0OSwgMC40MTU2MiwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjJcIjogWy0wLjA1NTU2LCAwLjU1NTU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2M1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjY1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjY4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2OVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjcxXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc0XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3NVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc3XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3OFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzlcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4MVwiOiBbMC4xMzg4OSwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4NFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjg2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4N1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjg5XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTFcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyXCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5M1wiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjk1XCI6IFswLjA5NTE0LCAwLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjk4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5OVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTAwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwMlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTAzXCI6IFswLjIyMjIyLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwNVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTA2XCI6IFswLjIyMjIyLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTEyXCI6IFswLjIyMjIyLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTNcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTE1XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTZcIjogWzAsIDAuNTUzNTgsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTE4XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTIxXCI6IFswLjIyMjIyLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyM1wiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTI0XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMjVcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyNlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTI3XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxNjBcIjogWzAsIDAsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjE3NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTg0XCI6IFswLjE5NDQ1LCAwLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU2N1wiOiBbMC4yMjIyMiwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzExXCI6IFswLCAwLjU2NTk3LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNTY1NTUsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjcxNFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzE1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjczMFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzcwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3NzFcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc3NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTE1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyMFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTIzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTMxXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkzNFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTM2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgyNDJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyNTFcIjogWzAuMTExMTEsIDAuMjE5NDQsIDAsIDAsIDAuNTI1XVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2ZvbnRNZXRyaWNzLmpzXG5cblxuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgbWV0cmljcyByZWdhcmRpbmcgZm9udHMgYW5kIGluZGl2aWR1YWwgc3ltYm9scy4gVGhlIHNpZ21hXG4gKiBhbmQgeGkgdmFyaWFibGVzLCBhcyB3ZWxsIGFzIHRoZSBtZXRyaWNNYXAgbWFwIGNvbnRhaW4gZGF0YSBleHRyYWN0ZWQgZnJvbVxuICogVGVYLCBUZVggZm9udCBtZXRyaWNzLCBhbmQgdGhlIFRURiBmaWxlcy4gVGhlc2UgZGF0YSBhcmUgdGhlbiBleHBvc2VkIHZpYSB0aGVcbiAqIGBtZXRyaWNzYCB2YXJpYWJsZSBhbmQgdGhlIGdldENoYXJhY3Rlck1ldHJpY3MgZnVuY3Rpb24uXG4gKi9cbi8vIEluIFRlWCwgdGhlcmUgYXJlIGFjdHVhbGx5IHRocmVlIHNldHMgb2YgZGltZW5zaW9ucywgb25lIGZvciBlYWNoIG9mXG4vLyB0ZXh0c3R5bGUgKHNpemUgaW5kZXggNSBhbmQgaGlnaGVyOiA+PTlwdCksIHNjcmlwdHN0eWxlIChzaXplIGluZGV4IDMgYW5kIDQ6XG4vLyA3LThwdCksIGFuZCBzY3JpcHRzY3JpcHRzdHlsZSAoc2l6ZSBpbmRleCAxIGFuZCAyOiA1LTZwdCkuICBUaGVzZSBhcmVcbi8vIHByb3ZpZGVkIGluIHRoZSB0aGUgYXJyYXlzIGJlbG93LCBpbiB0aGF0IG9yZGVyLlxuLy9cbi8vIFRoZSBmb250IG1ldHJpY3MgYXJlIHN0b3JlZCBpbiBmb250cyBjbXN5MTAsIGNtc3k3LCBhbmQgY21zeTUgcmVzcHNlY3RpdmVseS5cbi8vIFRoaXMgd2FzIGRldGVybWluZWQgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIHNjcmlwdDpcbi8vXG4vLyAgICAgbGF0ZXggLWludGVyYWN0aW9uPW5vbnN0b3Btb2RlIFxcXG4vLyAgICAgJ1xcZG9jdW1lbnRjbGFzc3thcnRpY2xlfVxcdXNlcGFja2FnZXthbXNtYXRofVxcYmVnaW57ZG9jdW1lbnR9JyBcXFxuLy8gICAgICckYSQgXFxleHBhbmRhZnRlclxcc2hvd1xcdGhlXFx0ZXh0Zm9udDInIFxcXG4vLyAgICAgJ1xcZXhwYW5kYWZ0ZXJcXHNob3dcXHRoZVxcc2NyaXB0Zm9udDInIFxcXG4vLyAgICAgJ1xcZXhwYW5kYWZ0ZXJcXHNob3dcXHRoZVxcc2NyaXB0c2NyaXB0Zm9udDInIFxcXG4vLyAgICAgJ1xcc3RvcCdcbi8vXG4vLyBUaGUgbWV0cmljcyB0aGVtc2VsdmVzIHdlcmUgcmV0cmVpdmVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6XG4vL1xuLy8gICAgIHRmdG9wbCBjbXN5MTBcbi8vICAgICB0ZnRvcGwgY21zeTdcbi8vICAgICB0ZnRvcGwgY21zeTVcbi8vXG4vLyBUaGUgb3V0cHV0IG9mIGVhY2ggb2YgdGhlc2UgY29tbWFuZHMgaXMgcXVpdGUgbGVuZ3RoeS4gIFRoZSBvbmx5IHBhcnQgd2Vcbi8vIGNhcmUgYWJvdXQgaXMgdGhlIEZPTlRESU1FTiBzZWN0aW9uLiBFYWNoIHZhbHVlIGlzIG1lYXN1cmVkIGluIEVNcy5cbnZhciBzaWdtYXNBbmRYaXMgPSB7XG4gIHNsYW50OiBbMC4yNTAsIDAuMjUwLCAwLjI1MF0sXG4gIC8vIHNpZ21hMVxuICBzcGFjZTogWzAuMDAwLCAwLjAwMCwgMC4wMDBdLFxuICAvLyBzaWdtYTJcbiAgc3RyZXRjaDogWzAuMDAwLCAwLjAwMCwgMC4wMDBdLFxuICAvLyBzaWdtYTNcbiAgc2hyaW5rOiBbMC4wMDAsIDAuMDAwLCAwLjAwMF0sXG4gIC8vIHNpZ21hNFxuICB4SGVpZ2h0OiBbMC40MzEsIDAuNDMxLCAwLjQzMV0sXG4gIC8vIHNpZ21hNVxuICBxdWFkOiBbMS4wMDAsIDEuMTcxLCAxLjQ3Ml0sXG4gIC8vIHNpZ21hNlxuICBleHRyYVNwYWNlOiBbMC4wMDAsIDAuMDAwLCAwLjAwMF0sXG4gIC8vIHNpZ21hN1xuICBudW0xOiBbMC42NzcsIDAuNzMyLCAwLjkyNV0sXG4gIC8vIHNpZ21hOFxuICBudW0yOiBbMC4zOTQsIDAuMzg0LCAwLjM4N10sXG4gIC8vIHNpZ21hOVxuICBudW0zOiBbMC40NDQsIDAuNDcxLCAwLjUwNF0sXG4gIC8vIHNpZ21hMTBcbiAgZGVub20xOiBbMC42ODYsIDAuNzUyLCAxLjAyNV0sXG4gIC8vIHNpZ21hMTFcbiAgZGVub20yOiBbMC4zNDUsIDAuMzQ0LCAwLjUzMl0sXG4gIC8vIHNpZ21hMTJcbiAgc3VwMTogWzAuNDEzLCAwLjUwMywgMC41MDRdLFxuICAvLyBzaWdtYTEzXG4gIHN1cDI6IFswLjM2MywgMC40MzEsIDAuNDA0XSxcbiAgLy8gc2lnbWExNFxuICBzdXAzOiBbMC4yODksIDAuMjg2LCAwLjI5NF0sXG4gIC8vIHNpZ21hMTVcbiAgc3ViMTogWzAuMTUwLCAwLjE0MywgMC4yMDBdLFxuICAvLyBzaWdtYTE2XG4gIHN1YjI6IFswLjI0NywgMC4yODYsIDAuNDAwXSxcbiAgLy8gc2lnbWExN1xuICBzdXBEcm9wOiBbMC4zODYsIDAuMzUzLCAwLjQ5NF0sXG4gIC8vIHNpZ21hMThcbiAgc3ViRHJvcDogWzAuMDUwLCAwLjA3MSwgMC4xMDBdLFxuICAvLyBzaWdtYTE5XG4gIGRlbGltMTogWzIuMzkwLCAxLjcwMCwgMS45ODBdLFxuICAvLyBzaWdtYTIwXG4gIGRlbGltMjogWzEuMDEwLCAxLjE1NywgMS40MjBdLFxuICAvLyBzaWdtYTIxXG4gIGF4aXNIZWlnaHQ6IFswLjI1MCwgMC4yNTAsIDAuMjUwXSxcbiAgLy8gc2lnbWEyMlxuICAvLyBUaGVzZSBmb250IG1ldHJpY3MgYXJlIGV4dHJhY3RlZCBmcm9tIFRlWCBieSB1c2luZyB0ZnRvcGwgb24gY21leDEwLnRmbTtcbiAgLy8gdGhleSBjb3JyZXNwb25kIHRvIHRoZSBmb250IHBhcmFtZXRlcnMgb2YgdGhlIGV4dGVuc2lvbiBmb250cyAoZmFtaWx5IDMpLlxuICAvLyBTZWUgdGhlIFRlWGJvb2ssIHBhZ2UgNDQxLiBJbiBBTVNUZVgsIHRoZSBleHRlbnNpb24gZm9udHMgc2NhbGU7IHRvXG4gIC8vIG1hdGNoIGNtZXg3LCB3ZSdkIHVzZSBjbWV4Ny50Zm0gdmFsdWVzIGZvciBzY3JpcHQgYW5kIHNjcmlwdHNjcmlwdFxuICAvLyB2YWx1ZXMuXG4gIGRlZmF1bHRSdWxlVGhpY2tuZXNzOiBbMC4wNCwgMC4wNDksIDAuMDQ5XSxcbiAgLy8geGk4OyBjbWV4NzogMC4wNDlcbiAgYmlnT3BTcGFjaW5nMTogWzAuMTExLCAwLjExMSwgMC4xMTFdLFxuICAvLyB4aTlcbiAgYmlnT3BTcGFjaW5nMjogWzAuMTY2LCAwLjE2NiwgMC4xNjZdLFxuICAvLyB4aTEwXG4gIGJpZ09wU3BhY2luZzM6IFswLjIsIDAuMiwgMC4yXSxcbiAgLy8geGkxMVxuICBiaWdPcFNwYWNpbmc0OiBbMC42LCAwLjYxMSwgMC42MTFdLFxuICAvLyB4aTEyOyBjbWV4NzogMC42MTFcbiAgYmlnT3BTcGFjaW5nNTogWzAuMSwgMC4xNDMsIDAuMTQzXSxcbiAgLy8geGkxMzsgY21leDc6IDAuMTQzXG4gIC8vIFRoZSBcXHNxcnQgcnVsZSB3aWR0aCBpcyB0YWtlbiBmcm9tIHRoZSBoZWlnaHQgb2YgdGhlIHN1cmQgY2hhcmFjdGVyLlxuICAvLyBTaW5jZSB3ZSB1c2UgdGhlIHNhbWUgZm9udCBhdCBhbGwgc2l6ZXMsIHRoaXMgdGhpY2tuZXNzIGRvZXNuJ3Qgc2NhbGUuXG4gIHNxcnRSdWxlVGhpY2tuZXNzOiBbMC4wNCwgMC4wNCwgMC4wNF0sXG4gIC8vIFRoaXMgdmFsdWUgZGV0ZXJtaW5lcyBob3cgbGFyZ2UgYSBwdCBpcywgZm9yIG1ldHJpY3Mgd2hpY2ggYXJlIGRlZmluZWRcbiAgLy8gaW4gdGVybXMgb2YgcHRzLlxuICAvLyBUaGlzIHZhbHVlIGlzIGFsc28gdXNlZCBpbiBrYXRleC5sZXNzOyBpZiB5b3UgY2hhbmdlIGl0IG1ha2Ugc3VyZSB0aGVcbiAgLy8gdmFsdWVzIG1hdGNoLlxuICBwdFBlckVtOiBbMTAuMCwgMTAuMCwgMTAuMF0sXG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIGFkamFjZW50IGB8YCBjb2x1bW5zIGluIGFuIGFycmF5IGRlZmluaXRpb24uIEZyb21cbiAgLy8gYFxcc2hvd3RoZVxcZG91YmxlcnVsZXNlcGAgaW4gTGFUZVguIEVxdWFscyAyLjAgLyBwdFBlckVtLlxuICBkb3VibGVSdWxlU2VwOiBbMC4yLCAwLjIsIDAuMl0sXG4gIC8vIFRoZSB3aWR0aCBvZiBzZXBhcmF0b3IgbGluZXMgaW4ge2FycmF5fSBlbnZpcm9ubWVudHMuIEZyb21cbiAgLy8gYFxcc2hvd3RoZVxcYXJyYXlydWxld2lkdGhgIGluIExhVGVYLiBFcXVhbHMgMC40IC8gcHRQZXJFbS5cbiAgYXJyYXlSdWxlV2lkdGg6IFswLjA0LCAwLjA0LCAwLjA0XSxcbiAgLy8gVHdvIHZhbHVlcyBmcm9tIExhVGVYIHNvdXJjZTJlOlxuICBmYm94c2VwOiBbMC4zLCAwLjMsIDAuM10sXG4gIC8vICAgICAgICAzIHB0IC8gcHRQZXJFbVxuICBmYm94cnVsZTogWzAuMDQsIDAuMDQsIDAuMDRdIC8vIDAuNCBwdCAvIHB0UGVyRW1cblxufTsgLy8gVGhpcyBtYXAgY29udGFpbnMgYSBtYXBwaW5nIGZyb20gZm9udCBuYW1lIGFuZCBjaGFyYWN0ZXIgY29kZSB0byBjaGFyYWN0ZXJcbi8vIG1ldHJpY3MsIGluY2x1ZGluZyBoZWlnaHQsIGRlcHRoLCBpdGFsaWMgY29ycmVjdGlvbiwgYW5kIHNrZXcgKGtlcm4gZnJvbSB0aGVcbi8vIGNoYXJhY3RlciB0byB0aGUgY29ycmVzcG9uZGluZyBcXHNrZXdjaGFyKVxuLy8gVGhpcyBtYXAgaXMgZ2VuZXJhdGVkIHZpYSBgbWFrZSBtZXRyaWNzYC4gSXQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIG1hbnVhbGx5LlxuXG4gLy8gVGhlc2UgYXJlIHZlcnkgcm91Z2ggYXBwcm94aW1hdGlvbnMuICBXZSBkZWZhdWx0IHRvIFRpbWVzIE5ldyBSb21hbiB3aGljaFxuLy8gc2hvdWxkIGhhdmUgTGF0aW4tMSBhbmQgQ3lyaWxsaWMgY2hhcmFjdGVycywgYnV0IG1heSBub3QgZGVwZW5kaW5nIG9uIHRoZVxuLy8gb3BlcmF0aW5nIHN5c3RlbS4gIFRoZSBtZXRyaWNzIGRvIG5vdCBhY2NvdW50IGZvciBleHRyYSBoZWlnaHQgZnJvbSB0aGVcbi8vIGFjY2VudHMuICBJbiB0aGUgY2FzZSBvZiBDeXJpbGxpYyBjaGFyYWN0ZXJzIHdoaWNoIGhhdmUgYm90aCBhc2NlbmRlcnMgYW5kXG4vLyBkZXNjZW5kZXJzIHdlIHByZWZlciBhcHByb3hpbWF0aW9ucyB3aXRoIGFzY2VuZGVycywgcHJpbWFyaWx5IHRvIHByZXZlbnRcbi8vIHRoZSBmcmFjdGlvbiBiYXIgb3Igcm9vdCBsaW5lIGZyb20gaW50ZXJzZWN0aW5nIHRoZSBnbHlwaC5cbi8vIFRPRE8oa2V2aW5iKSBhbGxvdyB1bmlvbiBvZiBtdWx0aXBsZSBnbHlwaCBtZXRyaWNzIGZvciBiZXR0ZXIgYWNjdXJhY3kuXG5cbnZhciBleHRyYUNoYXJhY3Rlck1hcCA9IHtcbiAgLy8gTGF0aW4tMVxuICAnw4UnOiAnQScsXG4gICfDhyc6ICdDJyxcbiAgJ8OQJzogJ0QnLFxuICAnw54nOiAnbycsXG4gICfDpSc6ICdhJyxcbiAgJ8OnJzogJ2MnLFxuICAnw7AnOiAnZCcsXG4gICfDvic6ICdvJyxcbiAgLy8gQ3lyaWxsaWNcbiAgJ9CQJzogJ0EnLFxuICAn0JEnOiAnQicsXG4gICfQkic6ICdCJyxcbiAgJ9CTJzogJ0YnLFxuICAn0JQnOiAnQScsXG4gICfQlSc6ICdFJyxcbiAgJ9CWJzogJ0snLFxuICAn0JcnOiAnMycsXG4gICfQmCc6ICdOJyxcbiAgJ9CZJzogJ04nLFxuICAn0JonOiAnSycsXG4gICfQmyc6ICdOJyxcbiAgJ9CcJzogJ00nLFxuICAn0J0nOiAnSCcsXG4gICfQnic6ICdPJyxcbiAgJ9CfJzogJ04nLFxuICAn0KAnOiAnUCcsXG4gICfQoSc6ICdDJyxcbiAgJ9CiJzogJ1QnLFxuICAn0KMnOiAneScsXG4gICfQpCc6ICdPJyxcbiAgJ9ClJzogJ1gnLFxuICAn0KYnOiAnVScsXG4gICfQpyc6ICdoJyxcbiAgJ9CoJzogJ1cnLFxuICAn0KknOiAnVycsXG4gICfQqic6ICdCJyxcbiAgJ9CrJzogJ1gnLFxuICAn0KwnOiAnQicsXG4gICfQrSc6ICczJyxcbiAgJ9CuJzogJ1gnLFxuICAn0K8nOiAnUicsXG4gICfQsCc6ICdhJyxcbiAgJ9CxJzogJ2InLFxuICAn0LInOiAnYScsXG4gICfQsyc6ICdyJyxcbiAgJ9C0JzogJ3knLFxuICAn0LUnOiAnZScsXG4gICfQtic6ICdtJyxcbiAgJ9C3JzogJ2UnLFxuICAn0LgnOiAnbicsXG4gICfQuSc6ICduJyxcbiAgJ9C6JzogJ24nLFxuICAn0LsnOiAnbicsXG4gICfQvCc6ICdtJyxcbiAgJ9C9JzogJ24nLFxuICAn0L4nOiAnbycsXG4gICfQvyc6ICduJyxcbiAgJ9GAJzogJ3AnLFxuICAn0YEnOiAnYycsXG4gICfRgic6ICdvJyxcbiAgJ9GDJzogJ3knLFxuICAn0YQnOiAnYicsXG4gICfRhSc6ICd4JyxcbiAgJ9GGJzogJ24nLFxuICAn0YcnOiAnbicsXG4gICfRiCc6ICd3JyxcbiAgJ9GJJzogJ3cnLFxuICAn0YonOiAnYScsXG4gICfRiyc6ICdtJyxcbiAgJ9GMJzogJ2EnLFxuICAn0Y0nOiAnZScsXG4gICfRjic6ICdtJyxcbiAgJ9GPJzogJ3InXG59O1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWRkcyBuZXcgZm9udCBtZXRyaWNzIHRvIGRlZmF1bHQgbWV0cmljTWFwXG4gKiBJdCBjYW4gYWxzbyBvdmVycmlkZSBleGlzdGluZyBtZXRyaWNzXG4gKi9cbmZ1bmN0aW9uIHNldEZvbnRNZXRyaWNzKGZvbnROYW1lLCBtZXRyaWNzKSB7XG4gIGZvbnRNZXRyaWNzRGF0YVtmb250TmFtZV0gPSBtZXRyaWNzO1xufVxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGxvb2tpbmcgdXAgaW5mb3JtYXRpb24gaW4gdGhlXG4gKiBtZXRyaWNNYXAgdGFibGUuIEl0IHRha2VzIGEgY2hhcmFjdGVyIGFzIGEgc3RyaW5nLCBhbmQgYSBmb250LlxuICpcbiAqIE5vdGU6IHRoZSBgd2lkdGhgIHByb3BlcnR5IG1heSBiZSB1bmRlZmluZWQgaWYgZm9udE1ldHJpY3NEYXRhLmpzIHdhc24ndFxuICogYnVpbHQgdXNpbmcgYE1ha2UgZXh0ZW5kZWRfbWV0cmljc2AuXG4gKi9cblxuZnVuY3Rpb24gZ2V0Q2hhcmFjdGVyTWV0cmljcyhjaGFyYWN0ZXIsIGZvbnQsIG1vZGUpIHtcbiAgaWYgKCFmb250TWV0cmljc0RhdGFbZm9udF0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJGb250IG1ldHJpY3Mgbm90IGZvdW5kIGZvciBmb250OiBcIiArIGZvbnQgKyBcIi5cIik7XG4gIH1cblxuICB2YXIgY2ggPSBjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKTtcbiAgdmFyIG1ldHJpY3MgPSBmb250TWV0cmljc0RhdGFbZm9udF1bY2hdO1xuXG4gIGlmICghbWV0cmljcyAmJiBjaGFyYWN0ZXJbMF0gaW4gZXh0cmFDaGFyYWN0ZXJNYXApIHtcbiAgICBjaCA9IGV4dHJhQ2hhcmFjdGVyTWFwW2NoYXJhY3RlclswXV0uY2hhckNvZGVBdCgwKTtcbiAgICBtZXRyaWNzID0gZm9udE1ldHJpY3NEYXRhW2ZvbnRdW2NoXTtcbiAgfVxuXG4gIGlmICghbWV0cmljcyAmJiBtb2RlID09PSAndGV4dCcpIHtcbiAgICAvLyBXZSBkb24ndCB0eXBpY2FsbHkgaGF2ZSBmb250IG1ldHJpY3MgZm9yIEFzaWFuIHNjcmlwdHMuXG4gICAgLy8gQnV0IHNpbmNlIHdlIHN1cHBvcnQgdGhlbSBpbiB0ZXh0IG1vZGUsIHdlIG5lZWQgdG8gcmV0dXJuXG4gICAgLy8gc29tZSBzb3J0IG9mIG1ldHJpY3MuXG4gICAgLy8gU28gaWYgdGhlIGNoYXJhY3RlciBpcyBpbiBhIHNjcmlwdCB3ZSBzdXBwb3J0IGJ1dCB3ZVxuICAgIC8vIGRvbid0IGhhdmUgbWV0cmljcyBmb3IgaXQsIGp1c3QgdXNlIHRoZSBtZXRyaWNzIGZvclxuICAgIC8vIHRoZSBMYXRpbiBjYXBpdGFsIGxldHRlciBNLiBUaGlzIGlzIGNsb3NlIGVub3VnaCBiZWNhdXNlXG4gICAgLy8gd2UgKGN1cnJlbnRseSkgb25seSBjYXJlIGFib3V0IHRoZSBoZWlnaHQgb2YgdGhlIGdscHloXG4gICAgLy8gbm90IGl0cyB3aWR0aC5cbiAgICBpZiAoc3VwcG9ydGVkQ29kZXBvaW50KGNoKSkge1xuICAgICAgbWV0cmljcyA9IGZvbnRNZXRyaWNzRGF0YVtmb250XVs3N107IC8vIDc3IGlzIHRoZSBjaGFyY29kZSBmb3IgJ00nXG4gICAgfVxuICB9XG5cbiAgaWYgKG1ldHJpY3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVwdGg6IG1ldHJpY3NbMF0sXG4gICAgICBoZWlnaHQ6IG1ldHJpY3NbMV0sXG4gICAgICBpdGFsaWM6IG1ldHJpY3NbMl0sXG4gICAgICBza2V3OiBtZXRyaWNzWzNdLFxuICAgICAgd2lkdGg6IG1ldHJpY3NbNF1cbiAgICB9O1xuICB9XG59XG52YXIgZm9udE1ldHJpY3NCeVNpemVJbmRleCA9IHt9O1xuLyoqXG4gKiBHZXQgdGhlIGZvbnQgbWV0cmljcyBmb3IgYSBnaXZlbiBzaXplLlxuICovXG5cbmZ1bmN0aW9uIGdldEdsb2JhbE1ldHJpY3Moc2l6ZSkge1xuICB2YXIgc2l6ZUluZGV4O1xuXG4gIGlmIChzaXplID49IDUpIHtcbiAgICBzaXplSW5kZXggPSAwO1xuICB9IGVsc2UgaWYgKHNpemUgPj0gMykge1xuICAgIHNpemVJbmRleCA9IDE7XG4gIH0gZWxzZSB7XG4gICAgc2l6ZUluZGV4ID0gMjtcbiAgfVxuXG4gIGlmICghZm9udE1ldHJpY3NCeVNpemVJbmRleFtzaXplSW5kZXhdKSB7XG4gICAgdmFyIG1ldHJpY3MgPSBmb250TWV0cmljc0J5U2l6ZUluZGV4W3NpemVJbmRleF0gPSB7XG4gICAgICBjc3NFbVBlck11OiBzaWdtYXNBbmRYaXMucXVhZFtzaXplSW5kZXhdIC8gMThcbiAgICB9O1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNpZ21hc0FuZFhpcykge1xuICAgICAgaWYgKHNpZ21hc0FuZFhpcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIG1ldHJpY3Nba2V5XSA9IHNpZ21hc0FuZFhpc1trZXldW3NpemVJbmRleF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZvbnRNZXRyaWNzQnlTaXplSW5kZXhbc2l6ZUluZGV4XTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3N5bWJvbHMuanNcbi8qKlxuICogVGhpcyBmaWxlIGhvbGRzIGEgbGlzdCBvZiBhbGwgbm8tYXJndW1lbnQgZnVuY3Rpb25zIGFuZCBzaW5nbGUtY2hhcmFjdGVyXG4gKiBzeW1ib2xzIChsaWtlICdhJyBvciAnOycpLlxuICpcbiAqIEZvciBlYWNoIG9mIHRoZSBzeW1ib2xzLCB0aGVyZSBhcmUgdGhyZWUgcHJvcGVydGllcyB0aGV5IGNhbiBoYXZlOlxuICogLSBmb250IChyZXF1aXJlZCk6IHRoZSBmb250IHRvIGJlIHVzZWQgZm9yIHRoaXMgc3ltYm9sLiBFaXRoZXIgXCJtYWluXCIgKHRoZVxuICAgICBub3JtYWwgZm9udCksIG9yIFwiYW1zXCIgKHRoZSBhbXMgZm9udHMpLlxuICogLSBncm91cCAocmVxdWlyZWQpOiB0aGUgUGFyc2VOb2RlIGdyb3VwIHR5cGUgdGhlIHN5bWJvbCBzaG91bGQgaGF2ZSAoaS5lLlxuICAgICBcInRleHRvcmRcIiwgXCJtYXRob3JkXCIsIGV0YykuXG4gICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vS2FUZVgvS2FUZVgvd2lraS9FeGFtaW5pbmctVGVYI2dyb3VwLXR5cGVzXG4gKiAtIHJlcGxhY2U6IHRoZSBjaGFyYWN0ZXIgdGhhdCB0aGlzIHN5bWJvbCBvciBmdW5jdGlvbiBzaG91bGQgYmVcbiAqICAgcmVwbGFjZWQgd2l0aCAoaS5lLiBcIlxccGhpXCIgaGFzIGEgcmVwbGFjZSB2YWx1ZSBvZiBcIlxcdTAzZDVcIiwgdGhlIHBoaVxuICogICBjaGFyYWN0ZXIgaW4gdGhlIG1haW4gZm9udCkuXG4gKlxuICogVGhlIG91dGVybW9zdCBtYXAgaW4gdGhlIHRhYmxlIGluZGljYXRlcyB3aGF0IG1vZGUgdGhlIHN5bWJvbHMgc2hvdWxkIGJlXG4gKiBhY2NlcHRlZCBpbiAoZS5nLiBcIm1hdGhcIiBvciBcInRleHRcIikuXG4gKi9cbi8vIFNvbWUgb2YgdGhlc2UgaGF2ZSBhIFwiLXRva2VuXCIgc3VmZml4IHNpbmNlIHRoZXNlIGFyZSBhbHNvIHVzZWQgYXMgYFBhcnNlTm9kZWBcbi8vIHR5cGVzIGZvciByYXcgdGV4dCB0b2tlbnMsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIGhpZ2hlci1sZXZlbFxuLy8gYFBhcnNlTm9kZWAgdHlwZXMuIFRoZXNlIGBQYXJzZU5vZGVgcyBhcmUgY29uc3RydWN0ZWQgd2l0aGluIGBQYXJzZXJgIGJ5XG4vLyBsb29raW5nIHVwIHRoZSBgc3ltYm9sc2AgbWFwLlxudmFyIEFUT01TID0ge1xuICBcImJpblwiOiAxLFxuICBcImNsb3NlXCI6IDEsXG4gIFwiaW5uZXJcIjogMSxcbiAgXCJvcGVuXCI6IDEsXG4gIFwicHVuY3RcIjogMSxcbiAgXCJyZWxcIjogMVxufTtcbnZhciBOT05fQVRPTVMgPSB7XG4gIFwiYWNjZW50LXRva2VuXCI6IDEsXG4gIFwibWF0aG9yZFwiOiAxLFxuICBcIm9wLXRva2VuXCI6IDEsXG4gIFwic3BhY2luZ1wiOiAxLFxuICBcInRleHRvcmRcIjogMVxufTtcbnZhciBzeW1ib2xzID0ge1xuICBcIm1hdGhcIjoge30sXG4gIFwidGV4dFwiOiB7fVxufTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19zeW1ib2xzID0gKHN5bWJvbHMpO1xuLyoqIGBhY2NlcHRVbmljb2RlQ2hhciA9IHRydWVgIGlzIG9ubHkgYXBwbGljYWJsZSBpZiBgcmVwbGFjZWAgaXMgc2V0LiAqL1xuXG5mdW5jdGlvbiBkZWZpbmVTeW1ib2wobW9kZSwgZm9udCwgZ3JvdXAsIHJlcGxhY2UsIG5hbWUsIGFjY2VwdFVuaWNvZGVDaGFyKSB7XG4gIHN5bWJvbHNbbW9kZV1bbmFtZV0gPSB7XG4gICAgZm9udDogZm9udCxcbiAgICBncm91cDogZ3JvdXAsXG4gICAgcmVwbGFjZTogcmVwbGFjZVxuICB9O1xuXG4gIGlmIChhY2NlcHRVbmljb2RlQ2hhciAmJiByZXBsYWNlKSB7XG4gICAgc3ltYm9sc1ttb2RlXVtyZXBsYWNlXSA9IHN5bWJvbHNbbW9kZV1bbmFtZV07XG4gIH1cbn0gLy8gU29tZSBhYmJyZXZpYXRpb25zIGZvciBjb21tb25seSB1c2VkIHN0cmluZ3MuXG4vLyBUaGlzIGhlbHBzIG1pbmlmeSB0aGUgY29kZSwgYW5kIGFsc28gc3BvdHRpbmcgdHlwb3MgdXNpbmcganNoaW50LlxuLy8gbW9kZXM6XG5cbnZhciBzeW1ib2xzX21hdGggPSBcIm1hdGhcIjtcbnZhciBzeW1ib2xzX3RleHQgPSBcInRleHRcIjsgLy8gZm9udHM6XG5cbnZhciBtYWluID0gXCJtYWluXCI7XG52YXIgYW1zID0gXCJhbXNcIjsgLy8gZ3JvdXBzOlxuXG52YXIgc3ltYm9sc19hY2NlbnQgPSBcImFjY2VudC10b2tlblwiO1xudmFyIGJpbiA9IFwiYmluXCI7XG52YXIgc3ltYm9sc19jbG9zZSA9IFwiY2xvc2VcIjtcbnZhciBzeW1ib2xzX2lubmVyID0gXCJpbm5lclwiO1xudmFyIG1hdGhvcmQgPSBcIm1hdGhvcmRcIjtcbnZhciBvcCA9IFwib3AtdG9rZW5cIjtcbnZhciBzeW1ib2xzX29wZW4gPSBcIm9wZW5cIjtcbnZhciBwdW5jdCA9IFwicHVuY3RcIjtcbnZhciByZWwgPSBcInJlbFwiO1xudmFyIHN5bWJvbHNfc3BhY2luZyA9IFwic3BhY2luZ1wiO1xudmFyIHN5bWJvbHNfdGV4dG9yZCA9IFwidGV4dG9yZFwiOyAvLyBOb3cgY29tZXMgdGhlIHN5bWJvbCB0YWJsZVxuLy8gUmVsYXRpb24gU3ltYm9sc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2MVwiLCBcIlxcXFxlcXVpdlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjdBXCIsIFwiXFxcXHByZWNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI3QlwiLCBcIlxcXFxzdWNjXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyM0NcIiwgXCJcXFxcc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQTVcIiwgXCJcXFxccGVycFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyQUFGXCIsIFwiXFxcXHByZWNlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyQUIwXCIsIFwiXFxcXHN1Y2NlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjQzXCIsIFwiXFxcXHNpbWVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMjNcIiwgXCJcXFxcbWlkXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNkFcIiwgXCJcXFxcbGxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2QlwiLCBcIlxcXFxnZ1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjREXCIsIFwiXFxcXGFzeW1wXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMjVcIiwgXCJcXFxccGFyYWxsZWxcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjJDOFwiLCBcIlxcXFxib3d0aWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjMyM1wiLCBcIlxcXFxzbWlsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjkxXCIsIFwiXFxcXHNxc3Vic2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI5MlwiLCBcIlxcXFxzcXN1cHNldGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNTBcIiwgXCJcXFxcZG90ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjMyMlwiLCBcIlxcXFxmcm93blwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjBCXCIsIFwiXFxcXG5pXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMURcIiwgXCJcXFxccHJvcHRvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQTJcIiwgXCJcXFxcdmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjJBM1wiLCBcIlxcXFxkYXNodlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjBCXCIsIFwiXFxcXG93bnNcIik7IC8vIFB1bmN0dWF0aW9uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHB1bmN0LCBcIi5cIiwgXCJcXFxcbGRvdHBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBwdW5jdCwgXCJcXHUyMkM1XCIsIFwiXFxcXGNkb3RwXCIpOyAvLyBNaXNjIFN5bWJvbHNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiNcIiwgXCJcXFxcI1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIjXCIsIFwiXFxcXCNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJlwiLCBcIlxcXFwmXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiZcIiwgXCJcXFxcJlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTM1XCIsIFwiXFxcXGFsZXBoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDBcIiwgXCJcXFxcZm9yYWxsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMEZcIiwgXCJcXFxcaGJhclwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjAzXCIsIFwiXFxcXGV4aXN0c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjA3XCIsIFwiXFxcXG5hYmxhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2NkRcIiwgXCJcXFxcZmxhdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTEzXCIsIFwiXFxcXGVsbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNjZFXCIsIFwiXFxcXG5hdHVyYWxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2M1wiLCBcIlxcXFxjbHVic3VpdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTE4XCIsIFwiXFxcXHdwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2NkZcIiwgXCJcXFxcc2hhcnBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2MlwiLCBcIlxcXFxkaWFtb25kc3VpdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTFDXCIsIFwiXFxcXFJlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2NjFcIiwgXCJcXFxcaGVhcnRzdWl0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMTFcIiwgXCJcXFxcSW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2MFwiLCBcIlxcXFxzcGFkZXN1aXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QTdcIiwgXCJcXFxcU1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhCNlwiLCBcIlxcXFxQXCIsIHRydWUpOyAvLyBNYXRoIGFuZCBUZXh0XG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXGRhZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXGRhZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXHRleHRkYWdnZXJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAyMVwiLCBcIlxcXFxkZGFnXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMjFcIiwgXCJcXFxcZGRhZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIxXCIsIFwiXFxcXHRleHRkYWdnZXJkYmxcIik7IC8vIExhcmdlIERlbGltaXRlcnNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyM0IxXCIsIFwiXFxcXHJtb3VzdGFjaGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiXFx1MjNCMFwiLCBcIlxcXFxsbW91c3RhY2hlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyN0VGXCIsIFwiXFxcXHJncm91cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyN0VFXCIsIFwiXFxcXGxncm91cFwiLCB0cnVlKTsgLy8gQmluYXJ5IE9wZXJhdG9yc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxM1wiLCBcIlxcXFxtcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk2XCIsIFwiXFxcXG9taW51c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjhFXCIsIFwiXFxcXHVwbHVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTNcIiwgXCJcXFxcc3FjYXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxN1wiLCBcIlxcXFxhc3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjI5NFwiLCBcIlxcXFxzcWN1cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUVGXCIsIFwiXFxcXGJpZ2NpcmNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxOVwiLCBcIlxcXFxidWxsZXRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjAyMVwiLCBcIlxcXFxkZGFnZ2VyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyNDBcIiwgXCJcXFxcd3JcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MkEzRlwiLCBcIlxcXFxhbWFsZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCImXCIsIFwiXFxcXEFuZFwiKTsgLy8gZnJvbSBhbXNtYXRoXG4vLyBBcnJvdyBTeW1ib2xzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyN0Y1XCIsIFwiXFxcXGxvbmdsZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMFwiLCBcIlxcXFxMZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjdGOFwiLCBcIlxcXFxMb25nbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RjZcIiwgXCJcXFxcbG9uZ3JpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMlwiLCBcIlxcXFxSaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RjlcIiwgXCJcXFxcTG9uZ3JpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5NFwiLCBcIlxcXFxsZWZ0cmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyN0Y3XCIsIFwiXFxcXGxvbmdsZWZ0cmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUQ0XCIsIFwiXFxcXExlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RkFcIiwgXCJcXFxcTG9uZ2xlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQTZcIiwgXCJcXFxcbWFwc3RvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RkNcIiwgXCJcXFxcbG9uZ21hcHN0b1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTk3XCIsIFwiXFxcXG5lYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFBOVwiLCBcIlxcXFxob29rbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQUFcIiwgXCJcXFxcaG9va3JpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5OFwiLCBcIlxcXFxzZWFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQkNcIiwgXCJcXFxcbGVmdGhhcnBvb251cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUMwXCIsIFwiXFxcXHJpZ2h0aGFycG9vbnVwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTlcIiwgXCJcXFxcc3dhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUJEXCIsIFwiXFxcXGxlZnRoYXJwb29uZG93blwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUMxXCIsIFwiXFxcXHJpZ2h0aGFycG9vbmRvd25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5NlwiLCBcIlxcXFxud2Fycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQ0NcIiwgXCJcXFxccmlnaHRsZWZ0aGFycG9vbnNcIiwgdHJ1ZSk7IC8vIEFNUyBOZWdhdGVkIEJpbmFyeSBSZWxhdGlvbnNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2RVwiLCBcIlxcXFxubGVzc1wiLCB0cnVlKTsgLy8gU3ltYm9sIG5hbWVzIHByZWNlZWRlZCBieSBcIkBcIiBlYWNoIGhhdmUgYSBjb3JyZXNwb25kaW5nIG1hY3JvLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDEwXCIsIFwiXFxcXEBubGVxc2xhbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDExXCIsIFwiXFxcXEBubGVxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBODdcIiwgXCJcXFxcbG5lcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNjhcIiwgXCJcXFxcbG5lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDBDXCIsIFwiXFxcXEBsdmVydG5lcXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkU2XCIsIFwiXFxcXGxuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4OVwiLCBcIlxcXFxsbmFwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyODBcIiwgXCJcXFxcbnByZWNcIiwgdHJ1ZSk7IC8vIHVuaWNvZGUtbWF0aCBtYXBzIFxcdTIyZTAgdG8gXFxucHJlY2N1cmx5ZXEuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRTBcIiwgXCJcXFxcbnByZWNlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRThcIiwgXCJcXFxccHJlY25zaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI5XCIsIFwiXFxcXHByZWNuYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0MVwiLCBcIlxcXFxuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwNlwiLCBcIlxcXFxAbnNob3J0bWlkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjIyNFwiLCBcIlxcXFxubWlkXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBQ1wiLCBcIlxcXFxudmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFEXCIsIFwiXFxcXG52RGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRUFcIiwgXCJcXFxcbnRyaWFuZ2xlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRUNcIiwgXCJcXFxcbnRyaWFuZ2xlbGVmdGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4QVwiLCBcIlxcXFxzdWJzZXRuZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDFBXCIsIFwiXFxcXEB2YXJzdWJzZXRuZXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUNCXCIsIFwiXFxcXHN1YnNldG5lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDE3XCIsIFwiXFxcXEB2YXJzdWJzZXRuZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2RlwiLCBcIlxcXFxuZ3RyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRlwiLCBcIlxcXFxAbmdlcXNsYW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRVwiLCBcIlxcXFxAbmdlcXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTg4XCIsIFwiXFxcXGduZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjY5XCIsIFwiXFxcXGduZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRFwiLCBcIlxcXFxAZ3ZlcnRuZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFN1wiLCBcIlxcXFxnbnNpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBOEFcIiwgXCJcXFxcZ25hcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjgxXCIsIFwiXFxcXG5zdWNjXCIsIHRydWUpOyAvLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMmUxIHRvIFxcbnN1Y2NjdXJseWVxLiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkUxXCIsIFwiXFxcXG5zdWNjZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkU5XCIsIFwiXFxcXHN1Y2Nuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFCQVwiLCBcIlxcXFxzdWNjbmFwcHJveFwiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjI0NiB0byBcXHNpbW5lcXEuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNDZcIiwgXCJcXFxcbmNvbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDA3XCIsIFwiXFxcXEBuc2hvcnRwYXJhbGxlbFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyMjZcIiwgXCJcXFxcbnBhcmFsbGVsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBRlwiLCBcIlxcXFxuVkRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkVCXCIsIFwiXFxcXG50cmlhbmdsZXJpZ2h0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFRFwiLCBcIlxcXFxudHJpYW5nbGVyaWdodGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxOFwiLCBcIlxcXFxAbnN1cHNldGVxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyOEJcIiwgXCJcXFxcc3Vwc2V0bmVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxQlwiLCBcIlxcXFxAdmFyc3Vwc2V0bmVxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFDQ1wiLCBcIlxcXFxzdXBzZXRuZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxOVwiLCBcIlxcXFxAdmFyc3Vwc2V0bmVxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQUVcIiwgXCJcXFxcblZkYXNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFCNVwiLCBcIlxcXFxwcmVjbmVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQjZcIiwgXCJcXFxcc3VjY25lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDE2XCIsIFwiXFxcXEBuc3Vic2V0ZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCNFwiLCBcIlxcXFx1bmxoZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQjVcIiwgXCJcXFxcdW5yaGRcIik7IC8vIEFNUyBOZWdhdGVkIEFycm93c1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMTlBXCIsIFwiXFxcXG5sZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMTlCXCIsIFwiXFxcXG5yaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRFwiLCBcIlxcXFxuTGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRlwiLCBcIlxcXFxuUmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQUVcIiwgXCJcXFxcbmxlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRVwiLCBcIlxcXFxuTGVmdHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7IC8vIEFNUyBNaXNjXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTI1QjNcIiwgXCJcXFxcdmFydHJpYW5nbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTBGXCIsIFwiXFxcXGhzbGFzaFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1QkRcIiwgXCJcXFxcdHJpYW5nbGVkb3duXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVDQVwiLCBcIlxcXFxsb3plbmdlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjRDOFwiLCBcIlxcXFxjaXJjbGVkU1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxceEFFXCIsIFwiXFxcXGNpcmNsZWRSXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QUVcIiwgXCJcXFxcY2lyY2xlZFJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIxXCIsIFwiXFxcXG1lYXN1cmVkYW5nbGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjA0XCIsIFwiXFxcXG5leGlzdHNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTI3XCIsIFwiXFxcXG1ob1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMzJcIiwgXCJcXFxcRmludlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxNDFcIiwgXCJcXFxcR2FtZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMzVcIiwgXCJcXFxcYmFja3ByaW1lXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVCMlwiLCBcIlxcXFxibGFja3RyaWFuZ2xlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVCQ1wiLCBcIlxcXFxibGFja3RyaWFuZ2xlZG93blwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1QTBcIiwgXCJcXFxcYmxhY2tzcXVhcmVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyOUVCXCIsIFwiXFxcXGJsYWNrbG96ZW5nZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2MDVcIiwgXCJcXFxcYmlnc3RhclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjJcIiwgXCJcXFxcc3BoZXJpY2FsYW5nbGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjAxXCIsIFwiXFxcXGNvbXBsZW1lbnRcIiwgdHJ1ZSk7IC8vIHVuaWNvZGUtbWF0aCBtYXBzIFUrRjAgKMOwKSB0byBcXG1hdGhldGguIFdlIG1hcCB0byBBTVMgZnVuY3Rpb24gXFxldGhcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RjBcIiwgXCJcXFxcZXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjU3MVwiLCBcIlxcXFxkaWFndXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNTcyXCIsIFwiXFxcXGRpYWdkb3duXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVBMVwiLCBcIlxcXFxzcXVhcmVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNUExXCIsIFwiXFxcXEJveFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1Q0FcIiwgXCJcXFxcRGlhbW9uZFwiKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgVStBNSB0byBcXG1hdGh5ZW4uIFdlIG1hcCB0byBBTVMgZnVuY3Rpb24gXFx5ZW5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QTVcIiwgXCJcXFxceWVuXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QTVcIiwgXCJcXFxceWVuXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjcxM1wiLCBcIlxcXFxjaGVja21hcmtcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNzEzXCIsIFwiXFxcXGNoZWNrbWFya1wiKTsgLy8gQU1TIEhlYnJld1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTM2XCIsIFwiXFxcXGJldGhcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTM4XCIsIFwiXFxcXGRhbGV0aFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMzdcIiwgXCJcXFxcZ2ltZWxcIiwgdHJ1ZSk7IC8vIEFNUyBHcmVla1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0REXCIsIFwiXFxcXGRpZ2FtbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0YwXCIsIFwiXFxcXHZhcmthcHBhXCIpOyAvLyBBTVMgRGVsaW1pdGVyc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfb3BlbiwgXCJcXHUyNTBDXCIsIFwiXFxcXHVsY29ybmVyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX2Nsb3NlLCBcIlxcdTI1MTBcIiwgXCJcXFxcdXJjb3JuZXJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfb3BlbiwgXCJcXHUyNTE0XCIsIFwiXFxcXGxsY29ybmVyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX2Nsb3NlLCBcIlxcdTI1MThcIiwgXCJcXFxcbHJjb3JuZXJcIiwgdHJ1ZSk7IC8vIEFNUyBCaW5hcnkgUmVsYXRpb25zXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNjZcIiwgXCJcXFxcbGVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBN0RcIiwgXCJcXFxcbGVxc2xhbnRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTk1XCIsIFwiXFxcXGVxc2xhbnRsZXNzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3MlwiLCBcIlxcXFxsZXNzc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4NVwiLCBcIlxcXFxsZXNzYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0QVwiLCBcIlxcXFxhcHByb3hlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDZcIiwgXCJcXFxcbGVzc2RvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRDhcIiwgXCJcXFxcbGxsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3NlwiLCBcIlxcXFxsZXNzZ3RyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEQVwiLCBcIlxcXFxsZXNzZXFndHJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQThCXCIsIFwiXFxcXGxlc3NlcXFndHJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjUxXCIsIFwiXFxcXGRvdGVxZG90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI1M1wiLCBcIlxcXFxyaXNpbmdkb3RzZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjUyXCIsIFwiXFxcXGZhbGxpbmdkb3RzZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjNEXCIsIFwiXFxcXGJhY2tzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkNEXCIsIFwiXFxcXGJhY2tzaW1lcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQzVcIiwgXCJcXFxcc3Vic2V0ZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEMFwiLCBcIlxcXFxTdWJzZXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjhGXCIsIFwiXFxcXHNxc3Vic2V0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3Q1wiLCBcIlxcXFxwcmVjY3VybHllcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyREVcIiwgXCJcXFxcY3VybHllcXByZWNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjdFXCIsIFwiXFxcXHByZWNzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI3XCIsIFwiXFxcXHByZWNhcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkIyXCIsIFwiXFxcXHZhcnRyaWFuZ2xlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjRcIiwgXCJcXFxcdHJpYW5nbGVsZWZ0ZXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkE4XCIsIFwiXFxcXHZEYXNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBQVwiLCBcIlxcXFxWdmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMzIzXCIsIFwiXFxcXHNtYWxsc21pbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMzIyXCIsIFwiXFxcXHNtYWxsZnJvd25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjRGXCIsIFwiXFxcXGJ1bXBlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNEVcIiwgXCJcXFxcQnVtcGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2N1wiLCBcIlxcXFxnZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE3RVwiLCBcIlxcXFxnZXFzbGFudFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBOTZcIiwgXCJcXFxcZXFzbGFudGd0clwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNzNcIiwgXCJcXFxcZ3Ryc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4NlwiLCBcIlxcXFxndHJhcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQ3XCIsIFwiXFxcXGd0cmRvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRDlcIiwgXCJcXFxcZ2dnXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3N1wiLCBcIlxcXFxndHJsZXNzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEQlwiLCBcIlxcXFxndHJlcWxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQThDXCIsIFwiXFxcXGd0cmVxcWxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjU2XCIsIFwiXFxcXGVxY2lyY1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNTdcIiwgXCJcXFxcY2lyY2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI1Q1wiLCBcIlxcXFx0cmlhbmdsZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjNDXCIsIFwiXFxcXHRoaWNrc2ltXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0OFwiLCBcIlxcXFx0aGlja2FwcHJveFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQzZcIiwgXCJcXFxcc3Vwc2V0ZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEMVwiLCBcIlxcXFxTdXBzZXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjkwXCIsIFwiXFxcXHNxc3Vwc2V0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3RFwiLCBcIlxcXFxzdWNjY3VybHllcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyREZcIiwgXCJcXFxcY3VybHllcXN1Y2NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjdGXCIsIFwiXFxcXHN1Y2NzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI4XCIsIFwiXFxcXHN1Y2NhcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkIzXCIsIFwiXFxcXHZhcnRyaWFuZ2xlcmlnaHRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkI1XCIsIFwiXFxcXHRyaWFuZ2xlcmlnaHRlcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQTlcIiwgXCJcXFxcVmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjIzXCIsIFwiXFxcXHNob3J0bWlkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjIyNVwiLCBcIlxcXFxzaG9ydHBhcmFsbGVsXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2Q1wiLCBcIlxcXFxiZXR3ZWVuXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJENFwiLCBcIlxcXFxwaXRjaGZvcmtcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjFEXCIsIFwiXFxcXHZhcnByb3B0b1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTI1QzBcIiwgXCJcXFxcYmxhY2t0cmlhbmdsZWxlZnRcIik7IC8vIHVuaWNvZGUtbWF0aCBzYXlzIHRoYXQgXFx0aGVyZWZvcmUgaXMgYSBtYXRob3JkIGF0b20uXG4vLyBXZSBrZXB0IHRoZSBhbXNzeW1iIGF0b20gdHlwZSwgd2hpY2ggaXMgcmVsLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjM0XCIsIFwiXFxcXHRoZXJlZm9yZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyMERcIiwgXCJcXFxcYmFja2Vwc2lsb25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyNUI2XCIsIFwiXFxcXGJsYWNrdHJpYW5nbGVyaWdodFwiKTsgLy8gdW5pY29kZS1tYXRoIHNheXMgdGhhdCBcXGJlY2F1c2UgaXMgYSBtYXRob3JkIGF0b20uXG4vLyBXZSBrZXB0IHRoZSBhbXNzeW1iIGF0b20gdHlwZSwgd2hpY2ggaXMgcmVsLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjM1XCIsIFwiXFxcXGJlY2F1c2VcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQ4XCIsIFwiXFxcXGxsbGVzc1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRDlcIiwgXCJcXFxcZ2dndHJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkIyXCIsIFwiXFxcXGxoZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQjNcIiwgXCJcXFxccmhkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0MlwiLCBcIlxcXFxlcXNpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMkM4XCIsIFwiXFxcXEpvaW5cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjUxXCIsIFwiXFxcXERvdGVxXCIsIHRydWUpOyAvLyBBTVMgQmluYXJ5IE9wZXJhdG9yc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjE0XCIsIFwiXFxcXGRvdHBsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjE2XCIsIFwiXFxcXHNtYWxsc2V0bWludXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQyXCIsIFwiXFxcXENhcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDNcIiwgXCJcXFxcQ3VwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MkE1RVwiLCBcIlxcXFxkb3VibGViYXJ3ZWRnZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOUZcIiwgXCJcXFxcYm94bWludXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjlFXCIsIFwiXFxcXGJveHBsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkM3XCIsIFwiXFxcXGRpdmlkZW9udGltZXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkM5XCIsIFwiXFxcXGx0aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQ0FcIiwgXCJcXFxccnRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDQlwiLCBcIlxcXFxsZWZ0dGhyZWV0aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQ0NcIiwgXCJcXFxccmlnaHR0aHJlZXRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDRlwiLCBcIlxcXFxjdXJseXdlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDRVwiLCBcIlxcXFxjdXJseXZlZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOURcIiwgXCJcXFxcY2lyY2xlZGRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjlCXCIsIFwiXFxcXGNpcmNsZWRhc3RcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkM1XCIsIFwiXFxcXGNlbnRlcmRvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQkFcIiwgXCJcXFxcaW50ZXJjYWxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQyXCIsIFwiXFxcXGRvdWJsZWNhcFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDNcIiwgXCJcXFxcZG91YmxlY3VwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJBMFwiLCBcIlxcXFxib3h0aW1lc1wiLCB0cnVlKTsgLy8gQU1TIEFycm93c1xuLy8gTm90ZTogdW5pY29kZS1tYXRoIG1hcHMgXFx1MjFlMiB0byB0aGVpciBvd24gZnVuY3Rpb24gXFxyaWdodGRhc2hhcnJvdy5cbi8vIFdlJ2xsIG1hcCBpdCB0byBBTVMgZnVuY3Rpb24gXFxkYXNocmlnaHRhcnJvdy4gSXQgcHJvZHVjZXMgdGhlIHNhbWUgYXRvbS5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFFMlwiLCBcIlxcXFxkYXNocmlnaHRhcnJvd1wiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjFlMCB0byBcXGxlZnRkYXNoYXJyb3cuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxRTBcIiwgXCJcXFxcZGFzaGxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQzdcIiwgXCJcXFxcbGVmdGxlZnRhcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUM2XCIsIFwiXFxcXGxlZnRyaWdodGFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxREFcIiwgXCJcXFxcTGxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxOUVcIiwgXCJcXFxcdHdvaGVhZGxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQTJcIiwgXCJcXFxcbGVmdGFycm93dGFpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQUJcIiwgXCJcXFxcbG9vcGFycm93bGVmdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQ0JcIiwgXCJcXFxcbGVmdHJpZ2h0aGFycG9vbnNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUI2XCIsIFwiXFxcXGN1cnZlYXJyb3dsZWZ0XCIsIHRydWUpOyAvLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMWJhIHRvIFxcYWN3b3BlbmNpcmNsZWFycm93LiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJBXCIsIFwiXFxcXGNpcmNsZWFycm93bGVmdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQjBcIiwgXCJcXFxcTHNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDOFwiLCBcIlxcXFx1cHVwYXJyb3dzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFCRlwiLCBcIlxcXFx1cGhhcnBvb25sZWZ0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDM1wiLCBcIlxcXFxkb3duaGFycG9vbmxlZnRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkI4XCIsIFwiXFxcXG11bHRpbWFwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBRFwiLCBcIlxcXFxsZWZ0cmlnaHRzcXVpZ2Fycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDOVwiLCBcIlxcXFxyaWdodHJpZ2h0YXJyb3dzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDNFwiLCBcIlxcXFxyaWdodGxlZnRhcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUEwXCIsIFwiXFxcXHR3b2hlYWRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBM1wiLCBcIlxcXFxyaWdodGFycm93dGFpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQUNcIiwgXCJcXFxcbG9vcGFycm93cmlnaHRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUI3XCIsIFwiXFxcXGN1cnZlYXJyb3dyaWdodFwiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjFiYiB0byBcXGN3b3BlbmNpcmNsZWFycm93LiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJCXCIsIFwiXFxcXGNpcmNsZWFycm93cmlnaHRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUIxXCIsIFwiXFxcXFJzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQ0FcIiwgXCJcXFxcZG93bmRvd25hcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJFXCIsIFwiXFxcXHVwaGFycG9vbnJpZ2h0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDMlwiLCBcIlxcXFxkb3duaGFycG9vbnJpZ2h0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFERFwiLCBcIlxcXFxyaWdodHNxdWlnYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUREXCIsIFwiXFxcXGxlYWRzdG9cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMURCXCIsIFwiXFxcXFJyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFCRVwiLCBcIlxcXFxyZXN0cmljdGlvblwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE4XCIsIFwiYFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIkXCIsIFwiXFxcXCRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJFwiLCBcIlxcXFwkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiRcIiwgXCJcXFxcdGV4dGRvbGxhclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIlXCIsIFwiXFxcXCVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJVwiLCBcIlxcXFwlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIl9cIiwgXCJcXFxcX1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJfXCIsIFwiXFxcXF9cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiX1wiLCBcIlxcXFx0ZXh0dW5kZXJzY29yZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIwXCIsIFwiXFxcXGFuZ2xlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMUVcIiwgXCJcXFxcaW5mdHlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAzMlwiLCBcIlxcXFxwcmltZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNUIzXCIsIFwiXFxcXHRyaWFuZ2xlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzOTNcIiwgXCJcXFxcR2FtbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDM5NFwiLCBcIlxcXFxEZWx0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwMzk4XCIsIFwiXFxcXFRoZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzOUJcIiwgXCJcXFxcTGFtYmRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzOUVcIiwgXCJcXFxcWGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDNBMFwiLCBcIlxcXFxQaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0EzXCIsIFwiXFxcXFNpZ21hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzQTVcIiwgXCJcXFxcVXBzaWxvblwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0E2XCIsIFwiXFxcXFBoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0E4XCIsIFwiXFxcXFBzaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0E5XCIsIFwiXFxcXE9tZWdhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkFcIiwgXCJcXHUwMzkxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkJcIiwgXCJcXHUwMzkyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkVcIiwgXCJcXHUwMzk1XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlpcIiwgXCJcXHUwMzk2XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkhcIiwgXCJcXHUwMzk3XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIklcIiwgXCJcXHUwMzk5XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIktcIiwgXCJcXHUwMzlBXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIk1cIiwgXCJcXHUwMzlDXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIk5cIiwgXCJcXHUwMzlEXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIk9cIiwgXCJcXHUwMzlGXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlBcIiwgXCJcXHUwM0ExXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlRcIiwgXCJcXHUwM0E0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlhcIiwgXCJcXHUwM0E3XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEFDXCIsIFwiXFxcXG5lZ1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhBQ1wiLCBcIlxcXFxsbm90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyQTRcIiwgXCJcXFxcdG9wXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyQTVcIiwgXCJcXFxcYm90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDVcIiwgXCJcXFxcZW1wdHlzZXRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjA1XCIsIFwiXFxcXHZhcm5vdGhpbmdcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjFcIiwgXCJcXFxcYWxwaGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjJcIiwgXCJcXFxcYmV0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCM1wiLCBcIlxcXFxnYW1tYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCNFwiLCBcIlxcXFxkZWx0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNGNVwiLCBcIlxcXFxlcHNpbG9uXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I2XCIsIFwiXFxcXHpldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjdcIiwgXCJcXFxcZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I4XCIsIFwiXFxcXHRoZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I5XCIsIFwiXFxcXGlvdGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkFcIiwgXCJcXFxca2FwcGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkJcIiwgXCJcXFxcbGFtYmRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JDXCIsIFwiXFxcXG11XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JEXCIsIFwiXFxcXG51XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JFXCIsIFwiXFxcXHhpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JGXCIsIFwiXFxcXG9taWNyb25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzBcIiwgXCJcXFxccGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzFcIiwgXCJcXFxccmhvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0MzXCIsIFwiXFxcXHNpZ21hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M0XCIsIFwiXFxcXHRhdVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDNVwiLCBcIlxcXFx1cHNpbG9uXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0Q1XCIsIFwiXFxcXHBoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDN1wiLCBcIlxcXFxjaGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzhcIiwgXCJcXFxccHNpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M5XCIsIFwiXFxcXG9tZWdhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I1XCIsIFwiXFxcXHZhcmVwc2lsb25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRDFcIiwgXCJcXFxcdmFydGhldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRDZcIiwgXCJcXFxcdmFycGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRjFcIiwgXCJcXFxcdmFycmhvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0MyXCIsIFwiXFxcXHZhcnNpZ21hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M2XCIsIFwiXFxcXHZhcnBoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjE3XCIsIFwiKlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCIrXCIsIFwiK1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjEyXCIsIFwiLVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMkM1XCIsIFwiXFxcXGNkb3RcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxOFwiLCBcIlxcXFxjaXJjXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxceEY3XCIsIFwiXFxcXGRpdlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHhCMVwiLCBcIlxcXFxwbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHhEN1wiLCBcIlxcXFx0aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI5XCIsIFwiXFxcXGNhcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjJBXCIsIFwiXFxcXGN1cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjE2XCIsIFwiXFxcXHNldG1pbnVzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMjdcIiwgXCJcXFxcbGFuZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI4XCIsIFwiXFxcXGxvclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI3XCIsIFwiXFxcXHdlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMjhcIiwgXCJcXFxcdmVlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMUFcIiwgXCJcXFxcc3VyZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCIoXCIsIFwiKFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJbXCIsIFwiW1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyN0U4XCIsIFwiXFxcXGxhbmdsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyMjIzXCIsIFwiXFxcXGx2ZXJ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIlxcdTIyMjVcIiwgXCJcXFxcbFZlcnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIilcIiwgXCIpXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJdXCIsIFwiXVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiP1wiLCBcIj9cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIiFcIiwgXCIhXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyN0U5XCIsIFwiXFxcXHJhbmdsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjIyM1wiLCBcIlxcXFxydmVydFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjIyNVwiLCBcIlxcXFxyVmVydFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI9XCIsIFwiPVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI8XCIsIFwiPFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI+XCIsIFwiPlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI6XCIsIFwiOlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjQ4XCIsIFwiXFxcXGFwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjQ1XCIsIFwiXFxcXGNvbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2NVwiLCBcIlxcXFxnZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjY1XCIsIFwiXFxcXGdlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkwXCIsIFwiXFxcXGdldHNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiPlwiLCBcIlxcXFxndFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjA4XCIsIFwiXFxcXGluXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdUUwMjBcIiwgXCJcXFxcQG5vdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjgyXCIsIFwiXFxcXHN1YnNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjgzXCIsIFwiXFxcXHN1cHNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjg2XCIsIFwiXFxcXHN1YnNldGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyODdcIiwgXCJcXFxcc3Vwc2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjg4XCIsIFwiXFxcXG5zdWJzZXRlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyODlcIiwgXCJcXFxcbnN1cHNldGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQThcIiwgXCJcXFxcbW9kZWxzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTBcIiwgXCJcXFxcbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNjRcIiwgXCJcXFxcbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2NFwiLCBcIlxcXFxsZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiPFwiLCBcIlxcXFxsdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkyXCIsIFwiXFxcXHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5MlwiLCBcIlxcXFx0b1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNzFcIiwgXCJcXFxcbmdlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNzBcIiwgXCJcXFxcbmxlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFwgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxzcGFjZVwiKTsgLy8gUmVmOiBMYVRlWCBTb3VyY2UgMmU6IFxcRGVjbGFyZVJvYnVzdENvbW1hbmR7XFxub2JyZWFrc3BhY2V9eyVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXG5vYnJlYWtzcGFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFwgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxzcGFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxub2JyZWFrc3BhY2VcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIG51bGwsIFwiXFxcXG5vYnJlYWtcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIG51bGwsIFwiXFxcXGFsbG93YnJlYWtcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBwdW5jdCwgXCIsXCIsIFwiLFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHB1bmN0LCBcIjtcIiwgXCI7XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCQ1wiLCBcIlxcXFxiYXJ3ZWRnZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQkJcIiwgXCJcXFxcdmVlYmFyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTlcIiwgXCJcXFxcb2RvdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk1XCIsIFwiXFxcXG9wbHVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTdcIiwgXCJcXFxcb3RpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDJcIiwgXCJcXFxccGFydGlhbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk4XCIsIFwiXFxcXG9zbGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOUFcIiwgXCJcXFxcY2lyY2xlZGNpcmNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkExXCIsIFwiXFxcXGJveGRvdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUIzXCIsIFwiXFxcXGJpZ3RyaWFuZ2xldXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjVCRFwiLCBcIlxcXFxiaWd0cmlhbmdsZWRvd25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjAyMFwiLCBcIlxcXFxkYWdnZXJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjJDNFwiLCBcIlxcXFxkaWFtb25kXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyQzZcIiwgXCJcXFxcc3RhclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUMzXCIsIFwiXFxcXHRyaWFuZ2xlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUI5XCIsIFwiXFxcXHRyaWFuZ2xlcmlnaHRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwie1wiLCBcIlxcXFx7XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIntcIiwgXCJcXFxce1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ7XCIsIFwiXFxcXHRleHRicmFjZWxlZnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIn1cIiwgXCJcXFxcfVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ9XCIsIFwiXFxcXH1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwifVwiLCBcIlxcXFx0ZXh0YnJhY2VyaWdodFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJ7XCIsIFwiXFxcXGxicmFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwifVwiLCBcIlxcXFxyYnJhY2VcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiW1wiLCBcIlxcXFxsYnJhY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiW1wiLCBcIlxcXFxsYnJhY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIihcIiwgXCJcXFxcbHBhcmVuXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCIpXCIsIFwiXFxcXHJwYXJlblwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCI8XCIsIFwiXFxcXHRleHRsZXNzXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCI+XCIsIFwiXFxcXHRleHRncmVhdGVyXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyMzBBXCIsIFwiXFxcXGxmbG9vclwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjMwQlwiLCBcIlxcXFxyZmxvb3JcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiXFx1MjMwOFwiLCBcIlxcXFxsY2VpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjMwOVwiLCBcIlxcXFxyY2VpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXFxcXCIsIFwiXFxcXGJhY2tzbGFzaFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIzXCIsIFwifFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIzXCIsIFwiXFxcXHZlcnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwifFwiLCBcIlxcXFx0ZXh0YmFyXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjI1XCIsIFwiXFxcXHxcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjIyNVwiLCBcIlxcXFxWZXJ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjVcIiwgXCJcXFxcdGV4dGJhcmRibFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ+XCIsIFwiXFxcXHRleHRhc2NpaXRpbGRlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcXFxcIiwgXCJcXFxcdGV4dGJhY2tzbGFzaFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJeXCIsIFwiXFxcXHRleHRhc2NpaWNpcmN1bVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkxXCIsIFwiXFxcXHVwYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMVwiLCBcIlxcXFxVcGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTNcIiwgXCJcXFxcZG93bmFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxRDNcIiwgXCJcXFxcRG93bmFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTVcIiwgXCJcXFxcdXBkb3duYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFENVwiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMTBcIiwgXCJcXFxcY29wcm9kXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjJDMVwiLCBcIlxcXFxiaWd2ZWVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMkMwXCIsIFwiXFxcXGJpZ3dlZGdlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MkEwNFwiLCBcIlxcXFxiaWd1cGx1c1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyQzJcIiwgXCJcXFxcYmlnY2FwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjJDM1wiLCBcIlxcXFxiaWdjdXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJCXCIsIFwiXFxcXGludFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMkJcIiwgXCJcXFxcaW50b3BcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJDXCIsIFwiXFxcXGlpbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJEXCIsIFwiXFxcXGlpaW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIwRlwiLCBcIlxcXFxwcm9kXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIxMVwiLCBcIlxcXFxzdW1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyQTAyXCIsIFwiXFxcXGJpZ290aW1lc1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTJBMDFcIiwgXCJcXFxcYmlnb3BsdXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyQTAwXCIsIFwiXFxcXGJpZ29kb3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJFXCIsIFwiXFxcXG9pbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJGXCIsIFwiXFxcXG9paW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIzMFwiLCBcIlxcXFxvaWlpbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyQTA2XCIsIFwiXFxcXGJpZ3NxY3VwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIyQlwiLCBcIlxcXFxzbWFsbGludFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfaW5uZXIsIFwiXFx1MjAyNlwiLCBcIlxcXFx0ZXh0ZWxsaXBzaXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2lubmVyLCBcIlxcdTIwMjZcIiwgXCJcXFxcbWF0aGVsbGlwc2lzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMDI2XCIsIFwiXFxcXGxkb3RzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMDI2XCIsIFwiXFxcXGxkb3RzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMkVGXCIsIFwiXFxcXEBjZG90c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfaW5uZXIsIFwiXFx1MjJGMVwiLCBcIlxcXFxkZG90c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMkVFXCIsIFwiXFxcXHZhcnZkb3RzXCIpOyAvLyBcXHZkb3RzIGlzIGEgbWFjcm9cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJDQVwiLCBcIlxcXFxhY3V0ZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQ0JcIiwgXCJcXFxcZ3JhdmVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHhBOFwiLCBcIlxcXFxkZG90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiflwiLCBcIlxcXFx0aWxkZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQzlcIiwgXCJcXFxcYmFyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEOFwiLCBcIlxcXFxicmV2ZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQzdcIiwgXCJcXFxcY2hlY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJeXCIsIFwiXFxcXGhhdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTIwRDdcIiwgXCJcXFxcdmVjXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEOVwiLCBcIlxcXFxkb3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkRBXCIsIFwiXFxcXG1hdGhyaW5nXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwMTMxXCIsIFwiXFxcXGltYXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwMjM3XCIsIFwiXFxcXGptYXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAxMzFcIiwgXCJcXFxcaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwMjM3XCIsIFwiXFxcXGpcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4REZcIiwgXCJcXFxcc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RTZcIiwgXCJcXFxcYWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RTZcIiwgXCJcXFxcYWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDE1M1wiLCBcIlxcXFxvZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhGOFwiLCBcIlxcXFxvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEM2XCIsIFwiXFxcXEFFXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAxNTJcIiwgXCJcXFxcT0VcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RDhcIiwgXCJcXFxcT1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQ0FcIiwgXCJcXFxcJ1wiKTsgLy8gYWN1dGVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJDQlwiLCBcIlxcXFxgXCIpOyAvLyBncmF2ZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkM2XCIsIFwiXFxcXF5cIik7IC8vIGNpcmN1bWZsZXhcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEQ1wiLCBcIlxcXFx+XCIpOyAvLyB0aWxkZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkM5XCIsIFwiXFxcXD1cIik7IC8vIG1hY3JvblxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkQ4XCIsIFwiXFxcXHVcIik7IC8vIGJyZXZlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyRDlcIiwgXCJcXFxcLlwiKTsgLy8gZG90IGFib3ZlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyREFcIiwgXCJcXFxcclwiKTsgLy8gcmluZyBhYm92ZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkM3XCIsIFwiXFxcXHZcIik7IC8vIGNhcm9uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxceEE4XCIsICdcXFxcXCInKTsgLy8gZGlhcmVzaXNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJERFwiLCBcIlxcXFxIXCIpOyAvLyBkb3VibGUgYWN1dGVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MjVFRlwiLCBcIlxcXFx0ZXh0Y2lyY2xlZFwiKTsgLy8gXFxiaWdjaXJjIGdseXBoXG4vLyBUaGVzZSBsaWdhdHVyZXMgYXJlIGRldGVjdGVkIGFuZCBjcmVhdGVkIGluIFBhcnNlci5qcydzIGBmb3JtTGlnYXR1cmVzYC5cblxudmFyIGxpZ2F0dXJlcyA9IHtcbiAgXCItLVwiOiB0cnVlLFxuICBcIi0tLVwiOiB0cnVlLFxuICBcImBgXCI6IHRydWUsXG4gIFwiJydcIjogdHJ1ZVxufTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDEzXCIsIFwiLS1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxM1wiLCBcIlxcXFx0ZXh0ZW5kYXNoXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTRcIiwgXCItLS1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxNFwiLCBcIlxcXFx0ZXh0ZW1kYXNoXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMThcIiwgXCJgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMThcIiwgXCJcXFxcdGV4dHF1b3RlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwiJ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwiXFxcXHRleHRxdW90ZXJpZ2h0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMUNcIiwgXCJgYFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDFDXCIsIFwiXFxcXHRleHRxdW90ZWRibGxlZnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxRFwiLCBcIicnXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMURcIiwgXCJcXFxcdGV4dHF1b3RlZGJscmlnaHRcIik7IC8vICBcXGRlZ3JlZSBmcm9tIGdlbnN5bWIgcGFja2FnZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QjBcIiwgXCJcXFxcZGVncmVlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEIwXCIsIFwiXFxcXGRlZ3JlZVwiKTsgLy8gXFx0ZXh0ZGVncmVlIGZyb20gaW5wdXRlbmMgcGFja2FnZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QjBcIiwgXCJcXFxcdGV4dGRlZ3JlZVwiLCB0cnVlKTsgLy8gVE9ETzogSW4gTGFUZVgsIFxccG91bmRzIGNhbiBnZW5lcmF0ZSBhIGRpZmZlcmVudCBjaGFyYWN0ZXIgaW4gdGV4dCBhbmQgbWF0aFxuLy8gbW9kZSwgYnV0IGFtb25nIG91ciBmb250cywgb25seSBNYWluLUl0YWxpYyBkZWZpbmVzIHRoaXMgY2hhcmFjdGVyIFwiMTYzXCIuXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxccG91bmRzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHhBM1wiLCBcIlxcXFxtYXRoc3RlcmxpbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBtYXRob3JkLCBcIlxceEEzXCIsIFwiXFxcXHBvdW5kc1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxcdGV4dHN0ZXJsaW5nXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjcyMFwiLCBcIlxcXFxtYWx0ZXNlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjcyMFwiLCBcIlxcXFxtYWx0ZXNlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXCBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIFwiXFx4QTBcIiwgXCIgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTsgLy8gVGhlcmUgYXJlIGxvdHMgb2Ygc3ltYm9scyB3aGljaCBhcmUgdGhlIHNhbWUsIHNvIHdlIGFkZCB0aGVtIGluIGFmdGVyd2FyZHMuXG4vLyBBbGwgb2YgdGhlc2UgYXJlIHRleHRvcmRzIGluIG1hdGggbW9kZVxuXG52YXIgbWF0aFRleHRTeW1ib2xzID0gXCIwMTIzNDU2Nzg5L0AuXFxcIlwiO1xuXG5mb3IgKHZhciBzeW1ib2xzX2kgPSAwOyBzeW1ib2xzX2kgPCBtYXRoVGV4dFN5bWJvbHMubGVuZ3RoOyBzeW1ib2xzX2krKykge1xuICB2YXIgc3ltYm9sc19jaCA9IG1hdGhUZXh0U3ltYm9scy5jaGFyQXQoc3ltYm9sc19pKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBzeW1ib2xzX2NoLCBzeW1ib2xzX2NoKTtcbn0gLy8gQWxsIG9mIHRoZXNlIGFyZSB0ZXh0b3JkcyBpbiB0ZXh0IG1vZGVcblxuXG52YXIgdGV4dFN5bWJvbHMgPSBcIjAxMjM0NTY3ODkhQCooKS09K1tdPD58XFxcIjs6Py8uLFwiO1xuXG5mb3IgKHZhciBzcmNfc3ltYm9sc19pID0gMDsgc3JjX3N5bWJvbHNfaSA8IHRleHRTeW1ib2xzLmxlbmd0aDsgc3JjX3N5bWJvbHNfaSsrKSB7XG4gIHZhciBfY2ggPSB0ZXh0U3ltYm9scy5jaGFyQXQoc3JjX3N5bWJvbHNfaSk7XG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gsIF9jaCk7XG59IC8vIEFsbCBvZiB0aGVzZSBhcmUgdGV4dG9yZHMgaW4gdGV4dCBtb2RlLCBhbmQgbWF0aG9yZHMgaW4gbWF0aCBtb2RlXG5cblxudmFyIGxldHRlcnMgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuZm9yICh2YXIgc3ltYm9sc19pMiA9IDA7IHN5bWJvbHNfaTIgPCBsZXR0ZXJzLmxlbmd0aDsgc3ltYm9sc19pMisrKSB7XG4gIHZhciBfY2gyID0gbGV0dGVycy5jaGFyQXQoc3ltYm9sc19pMik7XG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMiwgX2NoMik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMiwgX2NoMik7XG59IC8vIEJsYWNrYm9hcmQgYm9sZCBhbmQgc2NyaXB0IGxldHRlcnMgaW4gVW5pY29kZSByYW5nZVxuXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIkNcIiwgXCJcXHUyMTAyXCIpOyAvLyBibGFja2JvYXJkIGJvbGRcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiQ1wiLCBcIlxcdTIxMDJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJIXCIsIFwiXFx1MjEwRFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIkhcIiwgXCJcXHUyMTBEXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiTlwiLCBcIlxcdTIxMTVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJOXCIsIFwiXFx1MjExNVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlBcIiwgXCJcXHUyMTE5XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiUFwiLCBcIlxcdTIxMTlcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJRXCIsIFwiXFx1MjExQVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlFcIiwgXCJcXHUyMTFBXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiUlwiLCBcIlxcdTIxMURcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJSXCIsIFwiXFx1MjExRFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlpcIiwgXCJcXHUyMTI0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiWlwiLCBcIlxcdTIxMjRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcImhcIiwgXCJcXHUyMTBFXCIpOyAvLyBpdGFsaWMgaCwgUGxhbmNrIGNvbnN0YW50XG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIG1hdGhvcmQsIFwiaFwiLCBcIlxcdTIxMEVcIik7IC8vIFRoZSBuZXh0IGxvb3AgbG9hZHMgd2lkZSAoc3Vycm9nYXRlIHBhaXIpIGNoYXJhY3RlcnMuXG4vLyBXZSBzdXBwb3J0IHNvbWUgbGV0dGVycyBpbiB0aGUgVW5pY29kZSByYW5nZSBVKzFENDAwIHRvIFUrMUQ3RkYsXG4vLyBNYXRoZW1hdGljYWwgQWxwaGFudW1lcmljIFN5bWJvbHMuXG4vLyBTb21lIGVkaXRvcnMgZG8gbm90IGRlYWwgd2VsbCB3aXRoIHdpZGUgY2hhcmFjdGVycy4gU28gZG9uJ3Qgd3JpdGUgdGhlXG4vLyBzdHJpbmcgaW50byB0aGlzIGZpbGUuIEluc3RlYWQsIGNyZWF0ZSB0aGUgc3RyaW5nIGZyb20gdGhlIHN1cnJvZ2F0ZSBwYWlyLlxuXG52YXIgc3ltYm9sc193aWRlQ2hhciA9IFwiXCI7XG5cbmZvciAodmFyIHN5bWJvbHNfaTMgPSAwOyBzeW1ib2xzX2kzIDwgbGV0dGVycy5sZW5ndGg7IHN5bWJvbHNfaTMrKykge1xuICB2YXIgX2NoMyA9IGxldHRlcnMuY2hhckF0KHN5bWJvbHNfaTMpOyAvLyBUaGUgaGV4IG51bWJlcnMgaW4gdGhlIG5leHQgbGluZSBhcmUgYSBzdXJyb2dhdGUgcGFpci5cbiAgLy8gMHhEODM1IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBmb3IgYWxsIGxldHRlcnMgaW4gdGhlIHJhbmdlIHdlIHN1cHBvcnQuXG4gIC8vIDB4REMwMCBpcyB0aGUgbG93IHN1cnJvZ2F0ZSBmb3IgYm9sZCBBLlxuXG5cbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERDMDAgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGEteiBib2xkXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhEQzM0ICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogaXRhbGljXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhEQzY4ICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogYm9sZCBpdGFsaWNcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweEREMDQgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGEteiBGcmFjdHVyXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhEREEwICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogc2Fucy1zZXJpZlxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4RERENCArIHN5bWJvbHNfaTMpOyAvLyBBLVogYS16IHNhbnMgYm9sZFxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REUwOCArIHN5bWJvbHNfaTMpOyAvLyBBLVogYS16IHNhbnMgaXRhbGljXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERTcwICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogbW9ub3NwYWNlXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG5cbiAgaWYgKHN5bWJvbHNfaTMgPCAyNikge1xuICAgIC8vIEthVGVYIGZvbnRzIGhhdmUgb25seSBjYXBpdGFsIGxldHRlcnMgZm9yIGJsYWNrYm9hcmQgYm9sZCBhbmQgc2NyaXB0LlxuICAgIC8vIFNlZSBleGNlcHRpb24gZm9yIGsgYmVsb3cuXG4gICAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweEREMzggKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGRvdWJsZSBzdHJ1Y2tcblxuICAgIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICAgIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gICAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERDOUMgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIHNjcmlwdFxuXG4gICAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gICAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgfSAvLyBUT0RPOiBBZGQgYm9sZCBzY3JpcHQgd2hlbiBpdCBpcyBzdXBwb3J0ZWQgYnkgYSBLYVRlWCBmb250LlxuXG59IC8vIFwia1wiIGlzIHRoZSBvbmx5IGRvdWJsZSBzdHJ1Y2sgbG93ZXIgY2FzZSBsZXR0ZXIgaW4gdGhlIEthVGVYIGZvbnRzLlxuXG5cbnN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERDVDKTsgLy8gayBkb3VibGUgc3RydWNrXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwia1wiLCBzeW1ib2xzX3dpZGVDaGFyKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJrXCIsIHN5bWJvbHNfd2lkZUNoYXIpOyAvLyBOZXh0LCBzb21lIHdpZGUgY2hhcmFjdGVyIG51bWVyYWxzXG5cbmZvciAodmFyIHN5bWJvbHNfaTQgPSAwOyBzeW1ib2xzX2k0IDwgMTA7IHN5bWJvbHNfaTQrKykge1xuICB2YXIgX2NoNCA9IHN5bWJvbHNfaTQudG9TdHJpbmcoKTtcblxuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REZDRSArIHN5bWJvbHNfaTQpOyAvLyAwLTkgYm9sZFxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REZFMiArIHN5bWJvbHNfaTQpOyAvLyAwLTkgc2FucyBzZXJpZlxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REZFQyArIHN5bWJvbHNfaTQpOyAvLyAwLTkgYm9sZCBzYW5zXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoNCwgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoNCwgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERkY2ICsgc3ltYm9sc19pNCk7IC8vIDAtOSBtb25vc3BhY2VcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2g0LCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2g0LCBzeW1ib2xzX3dpZGVDaGFyKTtcbn0gLy8gV2UgYWRkIHRoZXNlIExhdGluLTEgbGV0dGVycyBhcyBzeW1ib2xzIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSxcbi8vIGJ1dCB0aGV5IGFyZSBub3QgYWN0dWFsbHkgaW4gdGhlIGZvbnQsIG5vciBhcmUgdGhleSBzdXBwb3J0ZWQgYnkgdGhlXG4vLyBVbmljb2RlIGFjY2VudCBtZWNoYW5pc20sIHNvIHRoZXkgZmFsbCBiYWNrIHRvIFRpbWVzIGZvbnQgYW5kIGxvb2sgdWdseS5cbi8vIFRPRE8oZWRlbWFpbmUpOiBGaXggdGhpcy5cblxuXG52YXIgZXh0cmFMYXRpbiA9IFwiw4fDkMOew6fDvlwiO1xuXG5mb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBleHRyYUxhdGluLmxlbmd0aDsgX2k1KyspIHtcbiAgdmFyIF9jaDUgPSBleHRyYUxhdGluLmNoYXJBdChfaTUpO1xuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDUsIF9jaDUpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDUsIF9jaDUpO1xufVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiw7BcIiwgXCLDsFwiKTsgLy8gVW5pY29kZSB2ZXJzaW9ucyBvZiBleGlzdGluZyBjaGFyYWN0ZXJzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDEzXCIsIFwi4oCTXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTRcIiwgXCLigJRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxOFwiLCBcIuKAmFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwi4oCZXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMUNcIiwgXCLigJxcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxRFwiLCBcIuKAnVwiKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3dpZGUtY2hhcmFjdGVyLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBVbmljb2RlIHJhbmdlIFUrMUQ0MDAgdG8gVSsxRDdGRixcbiAqIE1hdGhlbWF0aWNhbCBBbHBoYW51bWVyaWMgU3ltYm9scy5cbiAqXG4gKiBGdW5jdGlvbiB3aWRlQ2hhcmFjdGVyRm9udCB0YWtlcyBhIHdpZGUgY2hhcmFjdGVyIGFzIGlucHV0IGFuZCByZXR1cm5zXG4gKiB0aGUgZm9udCBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8gcmVuZGVyIGl0IHByb3Blcmx5LlxuICovXG5cbi8qKlxuICogRGF0YSBiZWxvdyBpcyBmcm9tIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL2NoYXJ0cy9QREYvVTFENDAwLnBkZlxuICogVGhhdCBkb2N1bWVudCBzb3J0cyBjaGFyYWN0ZXJzIGludG8gZ3JvdXBzIGJ5IGZvbnQgdHlwZSwgc2F5IGJvbGQgb3IgaXRhbGljLlxuICpcbiAqIEluIHRoZSBhcnJheXMgYmVsb3csIGVhY2ggc3ViYXJyYXkgY29uc2lzdHMgdGhyZWUgZWxlbWVudHM6XG4gKiAgICAgICogVGhlIENTUyBjbGFzcyBvZiB0aGF0IGdyb3VwIHdoZW4gaW4gbWF0aCBtb2RlLlxuICogICAgICAqIFRoZSBDU1MgY2xhc3Mgb2YgdGhhdCBncm91cCB3aGVuIGluIHRleHQgbW9kZS5cbiAqICAgICAgKiBUaGUgZm9udCBuYW1lLCBzbyB0aGF0IEthVGVYIGNhbiBnZXQgZm9udCBtZXRyaWNzLlxuICovXG5cbnZhciB3aWRlTGF0aW5MZXR0ZXJEYXRhID0gW1tcIm1hdGhiZlwiLCBcInRleHRiZlwiLCBcIk1haW4tQm9sZFwiXSwgLy8gQS1aIGJvbGQgdXByaWdodFxuW1wibWF0aGJmXCIsIFwidGV4dGJmXCIsIFwiTWFpbi1Cb2xkXCJdLCAvLyBhLXogYm9sZCB1cHJpZ2h0XG5bXCJtYXRoZGVmYXVsdFwiLCBcInRleHRpdFwiLCBcIk1hdGgtSXRhbGljXCJdLCAvLyBBLVogaXRhbGljXG5bXCJtYXRoZGVmYXVsdFwiLCBcInRleHRpdFwiLCBcIk1hdGgtSXRhbGljXCJdLCAvLyBhLXogaXRhbGljXG5bXCJib2xkc3ltYm9sXCIsIFwiYm9sZHN5bWJvbFwiLCBcIk1haW4tQm9sZEl0YWxpY1wiXSwgLy8gQS1aIGJvbGQgaXRhbGljXG5bXCJib2xkc3ltYm9sXCIsIFwiYm9sZHN5bWJvbFwiLCBcIk1haW4tQm9sZEl0YWxpY1wiXSwgLy8gYS16IGJvbGQgaXRhbGljXG4vLyBNYXAgZmFuY3kgQS1aIGxldHRlcnMgdG8gc2NyaXB0LCBub3QgY2FsbGlncmFwaGljLlxuLy8gVGhpcyBhbGlnbnMgd2l0aCB1bmljb2RlLW1hdGggYW5kIG1hdGggZm9udHMgKGV4Y2VwdCBDYW1icmlhIE1hdGgpLlxuW1wibWF0aHNjclwiLCBcInRleHRzY3JcIiwgXCJTY3JpcHQtUmVndWxhclwiXSwgLy8gQS1aIHNjcmlwdFxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBhLXogc2NyaXB0LiAgTm8gZm9udFxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBBLVogYm9sZCBzY3JpcHQuIE5vIGZvbnRcbltcIlwiLCBcIlwiLCBcIlwiXSwgLy8gYS16IGJvbGQgc2NyaXB0LiBObyBmb250XG5bXCJtYXRoZnJha1wiLCBcInRleHRmcmFrXCIsIFwiRnJha3R1ci1SZWd1bGFyXCJdLCAvLyBBLVogRnJha3R1clxuW1wibWF0aGZyYWtcIiwgXCJ0ZXh0ZnJha1wiLCBcIkZyYWt0dXItUmVndWxhclwiXSwgLy8gYS16IEZyYWt0dXJcbltcIm1hdGhiYlwiLCBcInRleHRiYlwiLCBcIkFNUy1SZWd1bGFyXCJdLCAvLyBBLVogZG91YmxlLXN0cnVja1xuW1wibWF0aGJiXCIsIFwidGV4dGJiXCIsIFwiQU1TLVJlZ3VsYXJcIl0sIC8vIGsgZG91YmxlLXN0cnVja1xuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBBLVogYm9sZCBGcmFrdHVyIE5vIGZvbnQgbWV0cmljc1xuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBhLXogYm9sZCBGcmFrdHVyLiAgIE5vIGZvbnQuXG5bXCJtYXRoc2ZcIiwgXCJ0ZXh0c2ZcIiwgXCJTYW5zU2VyaWYtUmVndWxhclwiXSwgLy8gQS1aIHNhbnMtc2VyaWZcbltcIm1hdGhzZlwiLCBcInRleHRzZlwiLCBcIlNhbnNTZXJpZi1SZWd1bGFyXCJdLCAvLyBhLXogc2Fucy1zZXJpZlxuW1wibWF0aGJvbGRzZlwiLCBcInRleHRib2xkc2ZcIiwgXCJTYW5zU2VyaWYtQm9sZFwiXSwgLy8gQS1aIGJvbGQgc2Fucy1zZXJpZlxuW1wibWF0aGJvbGRzZlwiLCBcInRleHRib2xkc2ZcIiwgXCJTYW5zU2VyaWYtQm9sZFwiXSwgLy8gYS16IGJvbGQgc2Fucy1zZXJpZlxuW1wibWF0aGl0c2ZcIiwgXCJ0ZXh0aXRzZlwiLCBcIlNhbnNTZXJpZi1JdGFsaWNcIl0sIC8vIEEtWiBpdGFsaWMgc2Fucy1zZXJpZlxuW1wibWF0aGl0c2ZcIiwgXCJ0ZXh0aXRzZlwiLCBcIlNhbnNTZXJpZi1JdGFsaWNcIl0sIC8vIGEteiBpdGFsaWMgc2Fucy1zZXJpZlxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBBLVogYm9sZCBpdGFsaWMgc2Fucy4gTm8gZm9udFxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBhLXogYm9sZCBpdGFsaWMgc2Fucy4gTm8gZm9udFxuW1wibWF0aHR0XCIsIFwidGV4dHR0XCIsIFwiVHlwZXdyaXRlci1SZWd1bGFyXCJdLCAvLyBBLVogbW9ub3NwYWNlXG5bXCJtYXRodHRcIiwgXCJ0ZXh0dHRcIiwgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIl1dO1xudmFyIHdpZGVOdW1lcmFsRGF0YSA9IFtbXCJtYXRoYmZcIiwgXCJ0ZXh0YmZcIiwgXCJNYWluLUJvbGRcIl0sIC8vIDAtOSBib2xkXG5bXCJcIiwgXCJcIiwgXCJcIl0sIC8vIDAtOSBkb3VibGUtc3RydWNrLiBObyBLYVRlWCBmb250LlxuW1wibWF0aHNmXCIsIFwidGV4dHNmXCIsIFwiU2Fuc1NlcmlmLVJlZ3VsYXJcIl0sIC8vIDAtOSBzYW5zLXNlcmlmXG5bXCJtYXRoYm9sZHNmXCIsIFwidGV4dGJvbGRzZlwiLCBcIlNhbnNTZXJpZi1Cb2xkXCJdLCAvLyAwLTkgYm9sZCBzYW5zLXNlcmlmXG5bXCJtYXRodHRcIiwgXCJ0ZXh0dHRcIiwgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIl1dO1xudmFyIHdpZGVfY2hhcmFjdGVyX3dpZGVDaGFyYWN0ZXJGb250ID0gZnVuY3Rpb24gd2lkZUNoYXJhY3RlckZvbnQod2lkZUNoYXIsIG1vZGUpIHtcbiAgLy8gSUUgZG9lc24ndCBzdXBwb3J0IGNvZGVQb2ludEF0KCkuIFNvIHdvcmsgd2l0aCB0aGUgc3Vycm9nYXRlIHBhaXIuXG4gIHZhciBIID0gd2lkZUNoYXIuY2hhckNvZGVBdCgwKTsgLy8gaGlnaCBzdXJyb2dhdGVcblxuICB2YXIgTCA9IHdpZGVDaGFyLmNoYXJDb2RlQXQoMSk7IC8vIGxvdyBzdXJyb2dhdGVcblxuICB2YXIgY29kZVBvaW50ID0gKEggLSAweEQ4MDApICogMHg0MDAgKyAoTCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB2YXIgaiA9IG1vZGUgPT09IFwibWF0aFwiID8gMCA6IDE7IC8vIGNvbHVtbiBpbmRleCBmb3IgQ1NTIGNsYXNzLlxuXG4gIGlmICgweDFENDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPCAweDFENkE0KSB7XG4gICAgLy8gd2lkZUxhdGluTGV0dGVyRGF0YSBjb250YWlucyBleGFjdGx5IDI2IGNoYXJzIG9uIGVhY2ggcm93LlxuICAgIC8vIFNvIHdlIGNhbiBjYWxjdWxhdGUgdGhlIHJlbGV2YW50IHJvdy4gTm8gdHJhdmVyc2UgbmVjZXNzYXJ5LlxuICAgIHZhciBpID0gTWF0aC5mbG9vcigoY29kZVBvaW50IC0gMHgxRDQwMCkgLyAyNik7XG4gICAgcmV0dXJuIFt3aWRlTGF0aW5MZXR0ZXJEYXRhW2ldWzJdLCB3aWRlTGF0aW5MZXR0ZXJEYXRhW2ldW2pdXTtcbiAgfSBlbHNlIGlmICgweDFEN0NFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxRDdGRikge1xuICAgIC8vIE51bWVyYWxzLCB0ZW4gcGVyIHJvdy5cbiAgICB2YXIgX2kgPSBNYXRoLmZsb29yKChjb2RlUG9pbnQgLSAweDFEN0NFKSAvIDEwKTtcblxuICAgIHJldHVybiBbd2lkZU51bWVyYWxEYXRhW19pXVsyXSwgd2lkZU51bWVyYWxEYXRhW19pXVtqXV07XG4gIH0gZWxzZSBpZiAoY29kZVBvaW50ID09PSAweDFENkE1IHx8IGNvZGVQb2ludCA9PT0gMHgxRDZBNikge1xuICAgIC8vIGRvdGxlc3MgaSBvciBqXG4gICAgcmV0dXJuIFt3aWRlTGF0aW5MZXR0ZXJEYXRhWzBdWzJdLCB3aWRlTGF0aW5MZXR0ZXJEYXRhWzBdW2pdXTtcbiAgfSBlbHNlIGlmICgweDFENkE2IDwgY29kZVBvaW50ICYmIGNvZGVQb2ludCA8IDB4MUQ3Q0UpIHtcbiAgICAvLyBHcmVlayBsZXR0ZXJzLiBOb3Qgc3VwcG9ydGVkLCB5ZXQuXG4gICAgcmV0dXJuIFtcIlwiLCBcIlwiXTtcbiAgfSBlbHNlIHtcbiAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGFueSB3aWRlIGNoYXJhY3RlcnMgb3V0c2lkZSAxRDQwMOKAkzFEN0ZGLlxuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVuc3VwcG9ydGVkIGNoYXJhY3RlcjogXCIgKyB3aWRlQ2hhcik7XG4gIH1cbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9PcHRpb25zLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3B0aW9ucyB0aGF0IHRoZSBQYXJzZXIgY2Fycmllc1xuICogYXJvdW5kIHdpdGggaXQgd2hpbGUgcGFyc2luZy4gRGF0YSBpcyBoZWxkIGluIGFuIGBPcHRpb25zYCBvYmplY3QsIGFuZCB3aGVuXG4gKiByZWN1cnNpbmcsIGEgbmV3IGBPcHRpb25zYCBvYmplY3QgY2FuIGJlIGNyZWF0ZWQgd2l0aCB0aGUgYC53aXRoKmAgYW5kXG4gKiBgLnJlc2V0YCBmdW5jdGlvbnMuXG4gKi9cblxudmFyIHNpemVTdHlsZU1hcCA9IFsvLyBFYWNoIGVsZW1lbnQgY29udGFpbnMgW3RleHRzaXplLCBzY3JpcHRzaXplLCBzY3JpcHRzY3JpcHRzaXplXS5cbi8vIFRoZSBzaXplIG1hcHBpbmdzIGFyZSB0YWtlbiBmcm9tIFRlWCB3aXRoIFxcbm9ybWFsc2l6ZT0xMHB0LlxuWzEsIDEsIDFdLCAvLyBzaXplMTogWzUsIDUsIDVdICAgICAgICAgICAgICBcXHRpbnlcblsyLCAxLCAxXSwgLy8gc2l6ZTI6IFs2LCA1LCA1XVxuWzMsIDEsIDFdLCAvLyBzaXplMzogWzcsIDUsIDVdICAgICAgICAgICAgICBcXHNjcmlwdHNpemVcbls0LCAyLCAxXSwgLy8gc2l6ZTQ6IFs4LCA2LCA1XSAgICAgICAgICAgICAgXFxmb290bm90ZXNpemVcbls1LCAyLCAxXSwgLy8gc2l6ZTU6IFs5LCA2LCA1XSAgICAgICAgICAgICAgXFxzbWFsbFxuWzYsIDMsIDFdLCAvLyBzaXplNjogWzEwLCA3LCA1XSAgICAgICAgICAgICBcXG5vcm1hbHNpemVcbls3LCA0LCAyXSwgLy8gc2l6ZTc6IFsxMiwgOCwgNl0gICAgICAgICAgICAgXFxsYXJnZVxuWzgsIDYsIDNdLCAvLyBzaXplODogWzE0LjQsIDEwLCA3XSAgICAgICAgICBcXExhcmdlXG5bOSwgNywgNl0sIC8vIHNpemU5OiBbMTcuMjgsIDEyLCAxMF0gICAgICAgIFxcTEFSR0VcblsxMCwgOCwgN10sIC8vIHNpemUxMDogWzIwLjc0LCAxNC40LCAxMl0gICAgIFxcaHVnZVxuWzExLCAxMCwgOV1dO1xudmFyIHNpemVNdWx0aXBsaWVycyA9IFsvLyBmb250TWV0cmljcy5qczpnZXRHbG9iYWxNZXRyaWNzIGFsc28gdXNlcyBzaXplIGluZGV4ZXMsIHNvIGlmXG4vLyB5b3UgY2hhbmdlIHNpemUgaW5kZXhlcywgY2hhbmdlIHRoYXQgZnVuY3Rpb24uXG4wLjUsIDAuNiwgMC43LCAwLjgsIDAuOSwgMS4wLCAxLjIsIDEuNDQsIDEuNzI4LCAyLjA3NCwgMi40ODhdO1xuXG52YXIgc2l6ZUF0U3R5bGUgPSBmdW5jdGlvbiBzaXplQXRTdHlsZShzaXplLCBzdHlsZSkge1xuICByZXR1cm4gc3R5bGUuc2l6ZSA8IDIgPyBzaXplIDogc2l6ZVN0eWxlTWFwW3NpemUgLSAxXVtzdHlsZS5zaXplIC0gMV07XG59OyAvLyBJbiB0aGVzZSB0eXBlcywgXCJcIiAoZW1wdHkgc3RyaW5nKSBtZWFucyBcIm5vIGNoYW5nZVwiLlxuXG5cbi8qKlxuICogVGhpcyBpcyB0aGUgbWFpbiBvcHRpb25zIGNsYXNzLiBJdCBjb250YWlucyB0aGUgY3VycmVudCBzdHlsZSwgc2l6ZSwgY29sb3IsXG4gKiBhbmQgZm9udC5cbiAqXG4gKiBPcHRpb25zIG9iamVjdHMgc2hvdWxkIG5vdCBiZSBtb2RpZmllZC4gVG8gY3JlYXRlIGEgbmV3IE9wdGlvbnMgd2l0aFxuICogZGlmZmVyZW50IHByb3BlcnRpZXMsIGNhbGwgYSBgLmhhdmluZypgIG1ldGhvZC5cbiAqL1xudmFyIE9wdGlvbnNfT3B0aW9ucyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIC8vIEEgZm9udCBmYW1pbHkgYXBwbGllcyB0byBhIGdyb3VwIG9mIGZvbnRzIChpLmUuIFNhbnNTZXJpZiksIHdoaWxlIGEgZm9udFxuICAvLyByZXByZXNlbnRzIGEgc3BlY2lmaWMgZm9udCAoaS5lLiBTYW5zU2VyaWYgQm9sZCkuXG4gIC8vIFNlZTogaHR0cHM6Ly90ZXguc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzIyMzUwL2RpZmZlcmVuY2UtYmV0d2Vlbi10ZXh0cm0tYW5kLW1hdGhybVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBzaXplIGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gT3B0aW9ucyhkYXRhKSB7XG4gICAgdGhpcy5zdHlsZSA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbG9yID0gdm9pZCAwO1xuICAgIHRoaXMuc2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnRleHRTaXplID0gdm9pZCAwO1xuICAgIHRoaXMucGhhbnRvbSA9IHZvaWQgMDtcbiAgICB0aGlzLmZvbnQgPSB2b2lkIDA7XG4gICAgdGhpcy5mb250RmFtaWx5ID0gdm9pZCAwO1xuICAgIHRoaXMuZm9udFdlaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLmZvbnRTaGFwZSA9IHZvaWQgMDtcbiAgICB0aGlzLnNpemVNdWx0aXBsaWVyID0gdm9pZCAwO1xuICAgIHRoaXMubWF4U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLm1pblJ1bGVUaGlja25lc3MgPSB2b2lkIDA7XG4gICAgdGhpcy5fZm9udE1ldHJpY3MgPSB2b2lkIDA7XG4gICAgdGhpcy5zdHlsZSA9IGRhdGEuc3R5bGU7XG4gICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgdGhpcy5zaXplID0gZGF0YS5zaXplIHx8IE9wdGlvbnMuQkFTRVNJWkU7XG4gICAgdGhpcy50ZXh0U2l6ZSA9IGRhdGEudGV4dFNpemUgfHwgdGhpcy5zaXplO1xuICAgIHRoaXMucGhhbnRvbSA9ICEhZGF0YS5waGFudG9tO1xuICAgIHRoaXMuZm9udCA9IGRhdGEuZm9udCB8fCBcIlwiO1xuICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseSB8fCBcIlwiO1xuICAgIHRoaXMuZm9udFdlaWdodCA9IGRhdGEuZm9udFdlaWdodCB8fCAnJztcbiAgICB0aGlzLmZvbnRTaGFwZSA9IGRhdGEuZm9udFNoYXBlIHx8ICcnO1xuICAgIHRoaXMuc2l6ZU11bHRpcGxpZXIgPSBzaXplTXVsdGlwbGllcnNbdGhpcy5zaXplIC0gMV07XG4gICAgdGhpcy5tYXhTaXplID0gZGF0YS5tYXhTaXplO1xuICAgIHRoaXMubWluUnVsZVRoaWNrbmVzcyA9IGRhdGEubWluUnVsZVRoaWNrbmVzcztcbiAgICB0aGlzLl9mb250TWV0cmljcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBvcHRpb25zIG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgXCJ0aGlzXCIuICBQcm9wZXJ0aWVzXG4gICAqIGZyb20gXCJleHRlbnNpb25cIiB3aWxsIGJlIGNvcGllZCB0byB0aGUgbmV3IG9wdGlvbnMgb2JqZWN0LlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBPcHRpb25zLnByb3RvdHlwZTtcblxuICBfcHJvdG8uZXh0ZW5kID0gZnVuY3Rpb24gZXh0ZW5kKGV4dGVuc2lvbikge1xuICAgIHZhciBkYXRhID0ge1xuICAgICAgc3R5bGU6IHRoaXMuc3R5bGUsXG4gICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICB0ZXh0U2l6ZTogdGhpcy50ZXh0U2l6ZSxcbiAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgcGhhbnRvbTogdGhpcy5waGFudG9tLFxuICAgICAgZm9udDogdGhpcy5mb250LFxuICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5LFxuICAgICAgZm9udFdlaWdodDogdGhpcy5mb250V2VpZ2h0LFxuICAgICAgZm9udFNoYXBlOiB0aGlzLmZvbnRTaGFwZSxcbiAgICAgIG1heFNpemU6IHRoaXMubWF4U2l6ZSxcbiAgICAgIG1pblJ1bGVUaGlja25lc3M6IHRoaXMubWluUnVsZVRoaWNrbmVzc1xuICAgIH07XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZXh0ZW5zaW9uKSB7XG4gICAgICBpZiAoZXh0ZW5zaW9uLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgZGF0YVtrZXldID0gZXh0ZW5zaW9uW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPcHRpb25zKGRhdGEpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gc3R5bGUuIElmIGB0aGlzLnN0eWxlID09PSBzdHlsZWAsXG4gICAqIHJldHVybnMgYHRoaXNgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5oYXZpbmdTdHlsZSA9IGZ1bmN0aW9uIGhhdmluZ1N0eWxlKHN0eWxlKSB7XG4gICAgaWYgKHRoaXMuc3R5bGUgPT09IHN0eWxlKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICBzaXplOiBzaXplQXRTdHlsZSh0aGlzLnRleHRTaXplLCBzdHlsZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogUmV0dXJuIGFuIG9wdGlvbnMgb2JqZWN0IHdpdGggYSBjcmFtcGVkIHZlcnNpb24gb2YgdGhlIGN1cnJlbnQgc3R5bGUuIElmXG4gICAqIHRoZSBjdXJyZW50IHN0eWxlIGlzIGNyYW1wZWQsIHJldHVybnMgYHRoaXNgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5oYXZpbmdDcmFtcGVkU3R5bGUgPSBmdW5jdGlvbiBoYXZpbmdDcmFtcGVkU3R5bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGF2aW5nU3R5bGUodGhpcy5zdHlsZS5jcmFtcCgpKTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJuIGFuIG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHNpemUgYW5kIGluIGF0IGxlYXN0IGBcXHRleHRzdHlsZWAuXG4gICAqIFJldHVybnMgYHRoaXNgIGlmIGFwcHJvcHJpYXRlLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5oYXZpbmdTaXplID0gZnVuY3Rpb24gaGF2aW5nU2l6ZShzaXplKSB7XG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gc2l6ZSAmJiB0aGlzLnRleHRTaXplID09PSBzaXplKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgc3R5bGU6IHRoaXMuc3R5bGUudGV4dCgpLFxuICAgICAgICBzaXplOiBzaXplLFxuICAgICAgICB0ZXh0U2l6ZTogc2l6ZSxcbiAgICAgICAgc2l6ZU11bHRpcGxpZXI6IHNpemVNdWx0aXBsaWVyc1tzaXplIC0gMV1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogTGlrZSBgdGhpcy5oYXZpbmdTaXplKEJBU0VTSVpFKS5oYXZpbmdTdHlsZShzdHlsZSlgLiBJZiBgc3R5bGVgIGlzIG9taXR0ZWQsXG4gICAqIGNoYW5nZXMgdG8gYXQgbGVhc3QgYFxcdGV4dHN0eWxlYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uaGF2aW5nQmFzZVN0eWxlID0gZnVuY3Rpb24gaGF2aW5nQmFzZVN0eWxlKHN0eWxlKSB7XG4gICAgc3R5bGUgPSBzdHlsZSB8fCB0aGlzLnN0eWxlLnRleHQoKTtcbiAgICB2YXIgd2FudFNpemUgPSBzaXplQXRTdHlsZShPcHRpb25zLkJBU0VTSVpFLCBzdHlsZSk7XG5cbiAgICBpZiAodGhpcy5zaXplID09PSB3YW50U2l6ZSAmJiB0aGlzLnRleHRTaXplID09PSBPcHRpb25zLkJBU0VTSVpFICYmIHRoaXMuc3R5bGUgPT09IHN0eWxlKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICBzaXplOiB3YW50U2l6ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGVmZmVjdCBvZiBzaXppbmcgY2hhbmdlcyBzdWNoIGFzIFxcSHVnZS5cbiAgICogS2VlcCB0aGUgZWZmZWN0IG9mIHRoZSBjdXJyZW50IHN0eWxlLCBzdWNoIGFzIFxcc2NyaXB0c3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhdmluZ0Jhc2VTaXppbmcgPSBmdW5jdGlvbiBoYXZpbmdCYXNlU2l6aW5nKCkge1xuICAgIHZhciBzaXplO1xuXG4gICAgc3dpdGNoICh0aGlzLnN0eWxlLmlkKSB7XG4gICAgICBjYXNlIDQ6XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHNpemUgPSAzOyAvLyBub3JtYWxzaXplIGluIHNjcmlwdHN0eWxlXG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgNjpcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgc2l6ZSA9IDE7IC8vIG5vcm1hbHNpemUgaW4gc2NyaXB0c2NyaXB0c3R5bGVcblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc2l6ZSA9IDY7XG4gICAgICAvLyBub3JtYWxzaXplIGluIHRleHRzdHlsZSBvciBkaXNwbGF5c3R5bGVcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgc3R5bGU6IHRoaXMuc3R5bGUudGV4dCgpLFxuICAgICAgc2l6ZTogc2l6ZVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gY29sb3IuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLndpdGhDb2xvciA9IGZ1bmN0aW9uIHdpdGhDb2xvcihjb2xvcikge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBjb2xvcjogY29sb3JcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IG9wdGlvbnMgb2JqZWN0IHdpdGggXCJwaGFudG9tXCIgc2V0IHRvIHRydWUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLndpdGhQaGFudG9tID0gZnVuY3Rpb24gd2l0aFBoYW50b20oKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIHBoYW50b206IHRydWVcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBvcHRpb25zIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBtYXRoIGZvbnQgb3Igb2xkIHRleHQgZm9udC5cbiAgICogQHR5cGUge1t0eXBlXX1cbiAgICovXG4gIDtcblxuICBfcHJvdG8ud2l0aEZvbnQgPSBmdW5jdGlvbiB3aXRoRm9udChmb250KSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIGZvbnQ6IGZvbnRcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IG9wdGlvbnMgb2JqZWN0cyB3aXRoIHRoZSBnaXZlbiBmb250RmFtaWx5LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by53aXRoVGV4dEZvbnRGYW1pbHkgPSBmdW5jdGlvbiB3aXRoVGV4dEZvbnRGYW1pbHkoZm9udEZhbWlseSkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBmb250RmFtaWx5OiBmb250RmFtaWx5LFxuICAgICAgZm9udDogXCJcIlxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIGZvbnQgd2VpZ2h0XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLndpdGhUZXh0Rm9udFdlaWdodCA9IGZ1bmN0aW9uIHdpdGhUZXh0Rm9udFdlaWdodChmb250V2VpZ2h0KSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIGZvbnRXZWlnaHQ6IGZvbnRXZWlnaHQsXG4gICAgICBmb250OiBcIlwiXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gZm9udCB3ZWlnaHRcbiAgICovXG4gIDtcblxuICBfcHJvdG8ud2l0aFRleHRGb250U2hhcGUgPSBmdW5jdGlvbiB3aXRoVGV4dEZvbnRTaGFwZShmb250U2hhcGUpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgZm9udFNoYXBlOiBmb250U2hhcGUsXG4gICAgICBmb250OiBcIlwiXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgQ1NTIHNpemluZyBjbGFzc2VzIHJlcXVpcmVkIHRvIHN3aXRjaCBmcm9tIGVuY2xvc2luZyBvcHRpb25zXG4gICAqIGBvbGRPcHRpb25zYCB0byBgdGhpc2AuIFJldHVybnMgYW4gYXJyYXkgb2YgY2xhc3Nlcy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uc2l6aW5nQ2xhc3NlcyA9IGZ1bmN0aW9uIHNpemluZ0NsYXNzZXMob2xkT3B0aW9ucykge1xuICAgIGlmIChvbGRPcHRpb25zLnNpemUgIT09IHRoaXMuc2l6ZSkge1xuICAgICAgcmV0dXJuIFtcInNpemluZ1wiLCBcInJlc2V0LXNpemVcIiArIG9sZE9wdGlvbnMuc2l6ZSwgXCJzaXplXCIgKyB0aGlzLnNpemVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIENTUyBzaXppbmcgY2xhc3NlcyByZXF1aXJlZCB0byBzd2l0Y2ggdG8gdGhlIGJhc2Ugc2l6ZS4gTGlrZVxuICAgKiBgdGhpcy5oYXZpbmdTaXplKEJBU0VTSVpFKS5zaXppbmdDbGFzc2VzKHRoaXMpYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uYmFzZVNpemluZ0NsYXNzZXMgPSBmdW5jdGlvbiBiYXNlU2l6aW5nQ2xhc3NlcygpIHtcbiAgICBpZiAodGhpcy5zaXplICE9PSBPcHRpb25zLkJBU0VTSVpFKSB7XG4gICAgICByZXR1cm4gW1wic2l6aW5nXCIsIFwicmVzZXQtc2l6ZVwiICsgdGhpcy5zaXplLCBcInNpemVcIiArIE9wdGlvbnMuQkFTRVNJWkVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGZvbnQgbWV0cmljcyBmb3IgdGhpcyBzaXplLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mb250TWV0cmljcyA9IGZ1bmN0aW9uIGZvbnRNZXRyaWNzKCkge1xuICAgIGlmICghdGhpcy5fZm9udE1ldHJpY3MpIHtcbiAgICAgIHRoaXMuX2ZvbnRNZXRyaWNzID0gZ2V0R2xvYmFsTWV0cmljcyh0aGlzLnNpemUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9mb250TWV0cmljcztcbiAgfVxuICAvKipcbiAgICogR2V0cyB0aGUgQ1NTIGNvbG9yIG9mIHRoZSBjdXJyZW50IG9wdGlvbnMgb2JqZWN0XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmdldENvbG9yID0gZnVuY3Rpb24gZ2V0Q29sb3IoKSB7XG4gICAgaWYgKHRoaXMucGhhbnRvbSkge1xuICAgICAgcmV0dXJuIFwidHJhbnNwYXJlbnRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBPcHRpb25zO1xufSgpO1xuXG5PcHRpb25zX09wdGlvbnMuQkFTRVNJWkUgPSA2O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX09wdGlvbnMgPSAoT3B0aW9uc19PcHRpb25zKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3VuaXRzLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBkb2VzIGNvbnZlcnNpb24gYmV0d2VlbiB1bml0cy4gIEluIHBhcnRpY3VsYXIsIGl0IHByb3ZpZGVzXG4gKiBjYWxjdWxhdGVTaXplIHRvIGNvbnZlcnQgb3RoZXIgdW5pdHMgaW50byBlbXMuXG4gKi9cblxuIC8vIFRoaXMgdGFibGUgZ2l2ZXMgdGhlIG51bWJlciBvZiBUZVggcHRzIGluIG9uZSBvZiBlYWNoICphYnNvbHV0ZSogVGVYIHVuaXQuXG4vLyBUaHVzLCBtdWx0aXBseWluZyBhIGxlbmd0aCBieSB0aGlzIG51bWJlciBjb252ZXJ0cyB0aGUgbGVuZ3RoIGZyb20gdW5pdHNcbi8vIGludG8gcHRzLiAgRGl2aWRpbmcgdGhlIHJlc3VsdCBieSBwdFBlckVtIGdpdmVzIHRoZSBudW1iZXIgb2YgZW1zXG4vLyAqYXNzdW1pbmcqIGEgZm9udCBzaXplIG9mIHB0UGVyRW0gKG5vcm1hbCBzaXplLCBub3JtYWwgc3R5bGUpLlxuXG52YXIgcHRQZXJVbml0ID0ge1xuICAvLyBodHRwczovL2VuLndpa2lib29rcy5vcmcvd2lraS9MYVRlWC9MZW5ndGhzIGFuZFxuICAvLyBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9hLzgyNjNcbiAgXCJwdFwiOiAxLFxuICAvLyBUZVggcG9pbnRcbiAgXCJtbVwiOiA3MjI3IC8gMjU0MCxcbiAgLy8gbWlsbGltZXRlclxuICBcImNtXCI6IDcyMjcgLyAyNTQsXG4gIC8vIGNlbnRpbWV0ZXJcbiAgXCJpblwiOiA3Mi4yNyxcbiAgLy8gaW5jaFxuICBcImJwXCI6IDgwMyAvIDgwMCxcbiAgLy8gYmlnIChQb3N0U2NyaXB0KSBwb2ludHNcbiAgXCJwY1wiOiAxMixcbiAgLy8gcGljYVxuICBcImRkXCI6IDEyMzggLyAxMTU3LFxuICAvLyBkaWRvdFxuICBcImNjXCI6IDE0ODU2IC8gMTE1NyxcbiAgLy8gY2ljZXJvICgxMiBkaWRvdClcbiAgXCJuZFwiOiA2ODUgLyA2NDIsXG4gIC8vIG5ldyBkaWRvdFxuICBcIm5jXCI6IDEzNzAgLyAxMDcsXG4gIC8vIG5ldyBjaWNlcm8gKDEyIG5ldyBkaWRvdClcbiAgXCJzcFwiOiAxIC8gNjU1MzYsXG4gIC8vIHNjYWxlZCBwb2ludCAoVGVYJ3MgaW50ZXJuYWwgc21hbGxlc3QgdW5pdClcbiAgLy8gaHR0cHM6Ly90ZXguc3RhY2tleGNoYW5nZS5jb20vYS80MTM3MVxuICBcInB4XCI6IDgwMyAvIDgwMCAvLyBcXHBkZnB4ZGltZW4gZGVmYXVsdHMgdG8gMSBicCBpbiBwZGZUZVggYW5kIEx1YVRlWFxuXG59OyAvLyBEaWN0aW9uYXJ5IG9mIHJlbGF0aXZlIHVuaXRzLCBmb3IgZmFzdCB2YWxpZGl0eSB0ZXN0aW5nLlxuXG52YXIgcmVsYXRpdmVVbml0ID0ge1xuICBcImV4XCI6IHRydWUsXG4gIFwiZW1cIjogdHJ1ZSxcbiAgXCJtdVwiOiB0cnVlXG59O1xuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgdW5pdCAoZWl0aGVyIGEgc3RyaW5nIGRlZmluaW5nIHRoZSB1bml0XG4gKiBvciBhIFwic2l6ZVwiIHBhcnNlIG5vZGUgY29udGFpbmluZyBhIHVuaXQgZmllbGQpIGlzIHZhbGlkLlxuICovXG52YXIgdmFsaWRVbml0ID0gZnVuY3Rpb24gdmFsaWRVbml0KHVuaXQpIHtcbiAgaWYgKHR5cGVvZiB1bml0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdW5pdCA9IHVuaXQudW5pdDtcbiAgfVxuXG4gIHJldHVybiB1bml0IGluIHB0UGVyVW5pdCB8fCB1bml0IGluIHJlbGF0aXZlVW5pdCB8fCB1bml0ID09PSBcImV4XCI7XG59O1xuLypcbiAqIENvbnZlcnQgYSBcInNpemVcIiBwYXJzZSBub2RlICh3aXRoIG51bWVyaWMgXCJudW1iZXJcIiBhbmQgc3RyaW5nIFwidW5pdFwiIGZpZWxkcyxcbiAqIGFzIHBhcnNlZCBieSBmdW5jdGlvbnMuanMgYXJnVHlwZSBcInNpemVcIikgaW50byBhIENTUyBlbSB2YWx1ZSBmb3IgdGhlXG4gKiBjdXJyZW50IHN0eWxlL3NjYWxlLiAgYG9wdGlvbnNgIGdpdmVzIHRoZSBjdXJyZW50IG9wdGlvbnMuXG4gKi9cblxudmFyIHVuaXRzX2NhbGN1bGF0ZVNpemUgPSBmdW5jdGlvbiBjYWxjdWxhdGVTaXplKHNpemVWYWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2NhbGU7XG5cbiAgaWYgKHNpemVWYWx1ZS51bml0IGluIHB0UGVyVW5pdCkge1xuICAgIC8vIEFic29sdXRlIHVuaXRzXG4gICAgc2NhbGUgPSBwdFBlclVuaXRbc2l6ZVZhbHVlLnVuaXRdIC8vIENvbnZlcnQgdW5pdCB0byBwdFxuICAgIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW0gLy8gQ29udmVydCBwdCB0byBDU1MgZW1cbiAgICAvIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7IC8vIFVuc2NhbGUgdG8gbWFrZSBhYnNvbHV0ZSB1bml0c1xuICB9IGVsc2UgaWYgKHNpemVWYWx1ZS51bml0ID09PSBcIm11XCIpIHtcbiAgICAvLyBgbXVgIHVuaXRzIHNjYWxlIHdpdGggc2NyaXB0c3R5bGUvc2NyaXB0c2NyaXB0c3R5bGUuXG4gICAgc2NhbGUgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuY3NzRW1QZXJNdTtcbiAgfSBlbHNlIHtcbiAgICAvLyBPdGhlciByZWxhdGl2ZSB1bml0cyBhbHdheXMgcmVmZXIgdG8gdGhlICp0ZXh0c3R5bGUqIGZvbnRcbiAgICAvLyBpbiB0aGUgY3VycmVudCBzaXplLlxuICAgIHZhciB1bml0T3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zLnN0eWxlLmlzVGlnaHQoKSkge1xuICAgICAgLy8gaXNUaWdodCgpIG1lYW5zIGN1cnJlbnQgc3R5bGUgaXMgc2NyaXB0L3NjcmlwdHNjcmlwdC5cbiAgICAgIHVuaXRPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShvcHRpb25zLnN0eWxlLnRleHQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuaXRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IC8vIFRPRE86IEluIFRlWCB0aGVzZSB1bml0cyBhcmUgcmVsYXRpdmUgdG8gdGhlIHF1YWQgb2YgdGhlIGN1cnJlbnRcbiAgICAvLyAqdGV4dCogZm9udCwgZS5nLiBjbXIxMC4gS2FUZVggaW5zdGVhZCB1c2VzIHZhbHVlcyBmcm9tIHRoZVxuICAgIC8vIGNvbXBhcmFibHktc2l6ZWQgKkNvbXB1dGVyIE1vZGVybiBzeW1ib2wqIGZvbnQuIEF0IDEwcHQsIHRoZXNlXG4gICAgLy8gbWF0Y2guIEF0IDdwdCBhbmQgNXB0LCB0aGV5IGRpZmZlcjogY21yNz0xLjEzODg5NCwgY21zeTc9MS4xNzA2NDE7XG4gICAgLy8gY21yNT0xLjM2MTEzMywgY21zeTU9MS40NzIyNDEuIENvbnNpZGVyICRcXHNjcmlwdHNpemUgYVxca2VybjFlbWIkLlxuICAgIC8vIFRlWCBcXHNob3dsaXN0cyBzaG93cyBhIGtlcm4gb2YgMS4xMzg4OSAqIGZvbnRzaXplO1xuICAgIC8vIEthVGVYIHNob3dzIGEga2VybiBvZiAxLjE3MSAqIGZvbnRzaXplLlxuXG5cbiAgICBpZiAoc2l6ZVZhbHVlLnVuaXQgPT09IFwiZXhcIikge1xuICAgICAgc2NhbGUgPSB1bml0T3B0aW9ucy5mb250TWV0cmljcygpLnhIZWlnaHQ7XG4gICAgfSBlbHNlIGlmIChzaXplVmFsdWUudW5pdCA9PT0gXCJlbVwiKSB7XG4gICAgICBzY2FsZSA9IHVuaXRPcHRpb25zLmZvbnRNZXRyaWNzKCkucXVhZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCB1bml0OiAnXCIgKyBzaXplVmFsdWUudW5pdCArIFwiJ1wiKTtcbiAgICB9XG5cbiAgICBpZiAodW5pdE9wdGlvbnMgIT09IG9wdGlvbnMpIHtcbiAgICAgIHNjYWxlICo9IHVuaXRPcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTWF0aC5taW4oc2l6ZVZhbHVlLm51bWJlciAqIHNjYWxlLCBvcHRpb25zLm1heFNpemUpO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2J1aWxkQ29tbW9uLmpzXG4vKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cbi8qKlxuICogVGhpcyBtb2R1bGUgY29udGFpbnMgZ2VuZXJhbCBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgYnVpbGRpbmdcbiAqIGRpZmZlcmVudCBraW5kcyBvZiBkb21UcmVlIG5vZGVzIGluIGEgY29uc2lzdGVudCBtYW5uZXIuXG4gKi9cblxuXG5cblxuXG5cblxuLy8gVGhlIGZvbGxvd2luZyBoYXZlIHRvIGJlIGxvYWRlZCBmcm9tIE1haW4tSXRhbGljIGZvbnQsIHVzaW5nIGNsYXNzIG1hdGhpdFxudmFyIG1hdGhpdExldHRlcnMgPSBbXCJcXFxcaW1hdGhcIiwgXCLEsVwiLCAvLyBkb3RsZXNzIGlcblwiXFxcXGptYXRoXCIsIFwiyLdcIiwgLy8gZG90bGVzcyBqXG5cIlxcXFxwb3VuZHNcIiwgXCJcXFxcbWF0aHN0ZXJsaW5nXCIsIFwiXFxcXHRleHRzdGVybGluZ1wiLCBcIsKjXCJdO1xuLyoqXG4gKiBMb29rcyB1cCB0aGUgZ2l2ZW4gc3ltYm9sIGluIGZvbnRNZXRyaWNzLCBhZnRlciBhcHBseWluZyBhbnkgc3ltYm9sXG4gKiByZXBsYWNlbWVudHMgZGVmaW5lZCBpbiBzeW1ib2wuanNcbiAqL1xuXG52YXIgYnVpbGRDb21tb25fbG9va3VwU3ltYm9sID0gZnVuY3Rpb24gbG9va3VwU3ltYm9sKHZhbHVlLCAvLyBUT0RPKCM5NjMpOiBVc2UgYSB1bmlvbiB0eXBlIGZvciB0aGlzLlxuZm9udE5hbWUsIG1vZGUpIHtcbiAgLy8gUmVwbGFjZSB0aGUgdmFsdWUgd2l0aCBpdHMgcmVwbGFjZWQgdmFsdWUgZnJvbSBzeW1ib2wuanNcbiAgaWYgKHNyY19zeW1ib2xzW21vZGVdW3ZhbHVlXSAmJiBzcmNfc3ltYm9sc1ttb2RlXVt2YWx1ZV0ucmVwbGFjZSkge1xuICAgIHZhbHVlID0gc3JjX3N5bWJvbHNbbW9kZV1bdmFsdWVdLnJlcGxhY2U7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBtZXRyaWNzOiBnZXRDaGFyYWN0ZXJNZXRyaWNzKHZhbHVlLCBmb250TmFtZSwgbW9kZSlcbiAgfTtcbn07XG4vKipcbiAqIE1ha2VzIGEgc3ltYm9sTm9kZSBhZnRlciB0cmFuc2xhdGlvbiB2aWEgdGhlIGxpc3Qgb2Ygc3ltYm9scyBpbiBzeW1ib2xzLmpzLlxuICogQ29ycmVjdGx5IHB1bGxzIG91dCBtZXRyaWNzIGZvciB0aGUgY2hhcmFjdGVyLCBhbmQgb3B0aW9uYWxseSB0YWtlcyBhIGxpc3Qgb2ZcbiAqIGNsYXNzZXMgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIG5vZGUuXG4gKlxuICogVE9ETzogbWFrZSBhcmd1bWVudCBvcmRlciBjbG9zZXIgdG8gbWFrZVNwYW5cbiAqIFRPRE86IGFkZCBhIHNlcGFyYXRlIGFyZ3VtZW50IGZvciBtYXRoIGNsYXNzIChlLmcuIGBtb3BgLCBgbWJpbmApLCB3aGljaFxuICogc2hvdWxkIGlmIHByZXNlbnQgY29tZSBmaXJzdCBpbiBgY2xhc3Nlc2AuXG4gKiBUT0RPKCM5NTMpOiBNYWtlIGBvcHRpb25zYCBtYW5kYXRvcnkgYW5kIGFsd2F5cyBwYXNzIGl0IGluLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wgPSBmdW5jdGlvbiBtYWtlU3ltYm9sKHZhbHVlLCBmb250TmFtZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcykge1xuICB2YXIgbG9va3VwID0gYnVpbGRDb21tb25fbG9va3VwU3ltYm9sKHZhbHVlLCBmb250TmFtZSwgbW9kZSk7XG4gIHZhciBtZXRyaWNzID0gbG9va3VwLm1ldHJpY3M7XG4gIHZhbHVlID0gbG9va3VwLnZhbHVlO1xuICB2YXIgc3ltYm9sTm9kZTtcblxuICBpZiAobWV0cmljcykge1xuICAgIHZhciBpdGFsaWMgPSBtZXRyaWNzLml0YWxpYztcblxuICAgIGlmIChtb2RlID09PSBcInRleHRcIiB8fCBvcHRpb25zICYmIG9wdGlvbnMuZm9udCA9PT0gXCJtYXRoaXRcIikge1xuICAgICAgaXRhbGljID0gMDtcbiAgICB9XG5cbiAgICBzeW1ib2xOb2RlID0gbmV3IGRvbVRyZWVfU3ltYm9sTm9kZSh2YWx1ZSwgbWV0cmljcy5oZWlnaHQsIG1ldHJpY3MuZGVwdGgsIGl0YWxpYywgbWV0cmljcy5za2V3LCBtZXRyaWNzLndpZHRoLCBjbGFzc2VzKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPKGVtaWx5KTogRmlndXJlIG91dCBhIGdvb2Qgd2F5IHRvIG9ubHkgcHJpbnQgdGhpcyBpbiBkZXZlbG9wbWVudFxuICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIk5vIGNoYXJhY3RlciBtZXRyaWNzIFwiICsgKFwiZm9yICdcIiArIHZhbHVlICsgXCInIGluIHN0eWxlICdcIiArIGZvbnROYW1lICsgXCInIGFuZCBtb2RlICdcIiArIG1vZGUgKyBcIidcIikpO1xuICAgIHN5bWJvbE5vZGUgPSBuZXcgZG9tVHJlZV9TeW1ib2xOb2RlKHZhbHVlLCAwLCAwLCAwLCAwLCAwLCBjbGFzc2VzKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgc3ltYm9sTm9kZS5tYXhGb250U2l6ZSA9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG5cbiAgICBpZiAob3B0aW9ucy5zdHlsZS5pc1RpZ2h0KCkpIHtcbiAgICAgIHN5bWJvbE5vZGUuY2xhc3Nlcy5wdXNoKFwibXRpZ2h0XCIpO1xuICAgIH1cblxuICAgIHZhciBjb2xvciA9IG9wdGlvbnMuZ2V0Q29sb3IoKTtcblxuICAgIGlmIChjb2xvcikge1xuICAgICAgc3ltYm9sTm9kZS5zdHlsZS5jb2xvciA9IGNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzeW1ib2xOb2RlO1xufTtcbi8qKlxuICogTWFrZXMgYSBzeW1ib2wgaW4gTWFpbi1SZWd1bGFyIG9yIEFNUy1SZWd1bGFyLlxuICogVXNlZCBmb3IgcmVsLCBiaW4sIG9wZW4sIGNsb3NlLCBpbm5lciwgYW5kIHB1bmN0LlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21hdGhzeW0gPSBmdW5jdGlvbiBtYXRoc3ltKHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIGlmIChjbGFzc2VzID09PSB2b2lkIDApIHtcbiAgICBjbGFzc2VzID0gW107XG4gIH1cblxuICAvLyBEZWNpZGUgd2hhdCBmb250IHRvIHJlbmRlciB0aGUgc3ltYm9sIGluIGJ5IGl0cyBlbnRyeSBpbiB0aGUgc3ltYm9sc1xuICAvLyB0YWJsZS5cbiAgLy8gSGF2ZSBhIHNwZWNpYWwgY2FzZSBmb3Igd2hlbiB0aGUgdmFsdWUgPSBcXCBiZWNhdXNlIHRoZSBcXCBpcyB1c2VkIGFzIGFcbiAgLy8gdGV4dG9yZCBpbiB1bnN1cHBvcnRlZCBjb21tYW5kIGVycm9ycyBidXQgY2Fubm90IGJlIHBhcnNlZCBhcyBhIHJlZ3VsYXJcbiAgLy8gdGV4dCBvcmRpbmFsIGFuZCBpcyB0aGVyZWZvcmUgbm90IHByZXNlbnQgYXMgYSBzeW1ib2wgaW4gdGhlIHN5bWJvbHNcbiAgLy8gdGFibGUgZm9yIHRleHQsIGFzIHdlbGwgYXMgYSBzcGVjaWFsIGNhc2UgZm9yIGJvbGRzeW1ib2wgYmVjYXVzZSBpdFxuICAvLyBjYW4gYmUgdXNlZCBmb3IgYm9sZCArIGFuZCAtXG4gIGlmIChvcHRpb25zLmZvbnQgPT09IFwiYm9sZHN5bWJvbFwiICYmIGJ1aWxkQ29tbW9uX2xvb2t1cFN5bWJvbCh2YWx1ZSwgXCJNYWluLUJvbGRcIiwgbW9kZSkubWV0cmljcykge1xuICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHZhbHVlLCBcIk1haW4tQm9sZFwiLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChbXCJtYXRoYmZcIl0pKTtcbiAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gXCJcXFxcXCIgfHwgc3JjX3N5bWJvbHNbbW9kZV1bdmFsdWVdLmZvbnQgPT09IFwibWFpblwiKSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodmFsdWUsIFwiTWFpbi1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHZhbHVlLCBcIkFNUy1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KFtcImFtc3JtXCJdKSk7XG4gIH1cbn07XG4vKipcbiAqIERldGVybWluZXMgd2hpY2ggb2YgdGhlIHR3byBmb250IG5hbWVzIChNYWluLUl0YWxpYyBhbmQgTWF0aC1JdGFsaWMpIGFuZFxuICogY29ycmVzcG9uZGluZyBzdHlsZSB0YWdzIChtYWluZGVmYXVsdCBvciBtYXRoaXQpIHRvIHVzZSBmb3IgZGVmYXVsdCBtYXRoIGZvbnQsXG4gKiBkZXBlbmRpbmcgb24gdGhlIHN5bWJvbC5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl9tYXRoZGVmYXVsdCA9IGZ1bmN0aW9uIG1hdGhkZWZhdWx0KHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIGlmICgvWzAtOV0vLnRlc3QodmFsdWUuY2hhckF0KDApKSB8fCAvLyBnbHlwaHMgZm9yIFxcaW1hdGggYW5kIFxcam1hdGggZG8gbm90IGV4aXN0IGluIE1hdGgtSXRhbGljIHNvIHdlXG4gIC8vIG5lZWQgdG8gdXNlIE1haW4tSXRhbGljIGluc3RlYWRcbiAgdXRpbHMuY29udGFpbnMobWF0aGl0TGV0dGVycywgdmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1haW4tSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwibWF0aGl0XCJcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBmb250TmFtZTogXCJNYXRoLUl0YWxpY1wiLFxuICAgICAgZm9udENsYXNzOiBcIm1hdGhkZWZhdWx0XCJcbiAgICB9O1xuICB9XG59O1xuLyoqXG4gKiBEZXRlcm1pbmVzIHdoaWNoIG9mIHRoZSBmb250IG5hbWVzIChNYWluLUl0YWxpYywgTWF0aC1JdGFsaWMsIGFuZCBDYWxpZ3JhcGhpYylcbiAqIGFuZCBjb3JyZXNwb25kaW5nIHN0eWxlIHRhZ3MgKG1hdGhpdCwgbWF0aGRlZmF1bHQsIG9yIG1hdGhjYWwpIHRvIHVzZSBmb3IgZm9udFxuICogXCJtYXRobm9ybWFsXCIsIGRlcGVuZGluZyBvbiB0aGUgc3ltYm9sLiAgVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBmb250TWFwIGZvclxuICogZm9udCBcIm1hdGhub3JtYWxcIi5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl9tYXRobm9ybWFsID0gZnVuY3Rpb24gbWF0aG5vcm1hbCh2YWx1ZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcykge1xuICBpZiAodXRpbHMuY29udGFpbnMobWF0aGl0TGV0dGVycywgdmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1haW4tSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwibWF0aGl0XCJcbiAgICB9O1xuICB9IGVsc2UgaWYgKC9bMC05XS8udGVzdCh2YWx1ZS5jaGFyQXQoMCkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIkNhbGlncmFwaGljLVJlZ3VsYXJcIixcbiAgICAgIGZvbnRDbGFzczogXCJtYXRoY2FsXCJcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBmb250TmFtZTogXCJNYXRoLUl0YWxpY1wiLFxuICAgICAgZm9udENsYXNzOiBcIm1hdGhkZWZhdWx0XCJcbiAgICB9O1xuICB9XG59O1xuLyoqXG4gKiBEZXRlcm1pbmVzIHdoaWNoIG9mIHRoZSB0d28gZm9udCBuYW1lcyAoTWFpbi1Cb2xkIGFuZCBNYXRoLUJvbGRJdGFsaWMpIGFuZFxuICogY29ycmVzcG9uZGluZyBzdHlsZSB0YWdzIChtYXRoYmYgb3IgYm9sZHN5bWJvbCkgdG8gdXNlIGZvciBmb250IFwiYm9sZHN5bWJvbFwiLFxuICogZGVwZW5kaW5nIG9uIHRoZSBzeW1ib2wuICBVc2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZvbnRNYXAgZm9yIGZvbnRcbiAqIFwiYm9sZHN5bWJvbFwiLlxuICovXG5cblxudmFyIGJvbGRzeW1ib2wgPSBmdW5jdGlvbiBib2xkc3ltYm9sKHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIGlmIChidWlsZENvbW1vbl9sb29rdXBTeW1ib2wodmFsdWUsIFwiTWF0aC1Cb2xkSXRhbGljXCIsIG1vZGUpLm1ldHJpY3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9udE5hbWU6IFwiTWF0aC1Cb2xkSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwiYm9sZHN5bWJvbFwiXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBTb21lIGdseXBocyBkbyBub3QgZXhpc3QgaW4gTWF0aC1Cb2xkSXRhbGljIHNvIHdlIG5lZWQgdG8gdXNlXG4gICAgLy8gTWFpbi1Cb2xkIGluc3RlYWQuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1haW4tQm9sZFwiLFxuICAgICAgZm9udENsYXNzOiBcIm1hdGhiZlwiXG4gICAgfTtcbiAgfVxufTtcbi8qKlxuICogTWFrZXMgZWl0aGVyIGEgbWF0aG9yZCBvciB0ZXh0b3JkIGluIHRoZSBjb3JyZWN0IGZvbnQgYW5kIGNvbG9yLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21ha2VPcmQgPSBmdW5jdGlvbiBtYWtlT3JkKGdyb3VwLCBvcHRpb25zLCB0eXBlKSB7XG4gIHZhciBtb2RlID0gZ3JvdXAubW9kZTtcbiAgdmFyIHRleHQgPSBncm91cC50ZXh0O1xuICB2YXIgY2xhc3NlcyA9IFtcIm1vcmRcIl07IC8vIE1hdGggbW9kZSBvciBPbGQgZm9udCAoaS5lLiBcXHJtKVxuXG4gIHZhciBpc0ZvbnQgPSBtb2RlID09PSBcIm1hdGhcIiB8fCBtb2RlID09PSBcInRleHRcIiAmJiBvcHRpb25zLmZvbnQ7XG4gIHZhciBmb250T3JGYW1pbHkgPSBpc0ZvbnQgPyBvcHRpb25zLmZvbnQgOiBvcHRpb25zLmZvbnRGYW1pbHk7XG5cbiAgaWYgKHRleHQuY2hhckNvZGVBdCgwKSA9PT0gMHhEODM1KSB7XG4gICAgLy8gc3Vycm9nYXRlIHBhaXJzIGdldCBzcGVjaWFsIHRyZWF0bWVudFxuICAgIHZhciBfd2lkZUNoYXJhY3RlckZvbnQgPSB3aWRlX2NoYXJhY3Rlcl93aWRlQ2hhcmFjdGVyRm9udCh0ZXh0LCBtb2RlKSxcbiAgICAgICAgd2lkZUZvbnROYW1lID0gX3dpZGVDaGFyYWN0ZXJGb250WzBdLFxuICAgICAgICB3aWRlRm9udENsYXNzID0gX3dpZGVDaGFyYWN0ZXJGb250WzFdO1xuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dCwgd2lkZUZvbnROYW1lLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdCh3aWRlRm9udENsYXNzKSk7XG4gIH0gZWxzZSBpZiAoZm9udE9yRmFtaWx5KSB7XG4gICAgdmFyIGZvbnROYW1lO1xuICAgIHZhciBmb250Q2xhc3NlcztcblxuICAgIGlmIChmb250T3JGYW1pbHkgPT09IFwiYm9sZHN5bWJvbFwiIHx8IGZvbnRPckZhbWlseSA9PT0gXCJtYXRobm9ybWFsXCIpIHtcbiAgICAgIHZhciBmb250RGF0YSA9IGZvbnRPckZhbWlseSA9PT0gXCJib2xkc3ltYm9sXCIgPyBib2xkc3ltYm9sKHRleHQsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpIDogYnVpbGRDb21tb25fbWF0aG5vcm1hbCh0ZXh0LCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKTtcbiAgICAgIGZvbnROYW1lID0gZm9udERhdGEuZm9udE5hbWU7XG4gICAgICBmb250Q2xhc3NlcyA9IFtmb250RGF0YS5mb250Q2xhc3NdO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuY29udGFpbnMobWF0aGl0TGV0dGVycywgdGV4dCkpIHtcbiAgICAgIGZvbnROYW1lID0gXCJNYWluLUl0YWxpY1wiO1xuICAgICAgZm9udENsYXNzZXMgPSBbXCJtYXRoaXRcIl07XG4gICAgfSBlbHNlIGlmIChpc0ZvbnQpIHtcbiAgICAgIGZvbnROYW1lID0gZm9udE1hcFtmb250T3JGYW1pbHldLmZvbnROYW1lO1xuICAgICAgZm9udENsYXNzZXMgPSBbZm9udE9yRmFtaWx5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9udE5hbWUgPSByZXRyaWV2ZVRleHRGb250TmFtZShmb250T3JGYW1pbHksIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGUpO1xuICAgICAgZm9udENsYXNzZXMgPSBbZm9udE9yRmFtaWx5LCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlXTtcbiAgICB9XG5cbiAgICBpZiAoYnVpbGRDb21tb25fbG9va3VwU3ltYm9sKHRleHQsIGZvbnROYW1lLCBtb2RlKS5tZXRyaWNzKSB7XG4gICAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVN5bWJvbCh0ZXh0LCBmb250TmFtZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoZm9udENsYXNzZXMpKTtcbiAgICB9IGVsc2UgaWYgKGxpZ2F0dXJlcy5oYXNPd25Qcm9wZXJ0eSh0ZXh0KSAmJiBmb250TmFtZS5zdWJzdHIoMCwgMTApID09PSBcIlR5cGV3cml0ZXJcIikge1xuICAgICAgLy8gRGVjb25zdHJ1Y3QgbGlnYXR1cmVzIGluIG1vbm9zcGFjZSBmb250cyAoXFx0ZXh0dHQsIFxcdHQpLlxuICAgICAgdmFyIHBhcnRzID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJ0cy5wdXNoKGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dFtpXSwgZm9udE5hbWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KGZvbnRDbGFzc2VzKSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZUZyYWdtZW50KHBhcnRzKTtcbiAgICB9XG4gIH0gLy8gTWFrZXMgYSBzeW1ib2wgaW4gdGhlIGRlZmF1bHQgZm9udCBmb3IgbWF0aG9yZHMgYW5kIHRleHRvcmRzLlxuXG5cbiAgaWYgKHR5cGUgPT09IFwibWF0aG9yZFwiKSB7XG4gICAgdmFyIGZvbnRMb29rdXAgPSBidWlsZENvbW1vbl9tYXRoZGVmYXVsdCh0ZXh0LCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVN5bWJvbCh0ZXh0LCBmb250TG9va3VwLmZvbnROYW1lLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChbZm9udExvb2t1cC5mb250Q2xhc3NdKSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ0ZXh0b3JkXCIpIHtcbiAgICB2YXIgZm9udCA9IHNyY19zeW1ib2xzW21vZGVdW3RleHRdICYmIHNyY19zeW1ib2xzW21vZGVdW3RleHRdLmZvbnQ7XG5cbiAgICBpZiAoZm9udCA9PT0gXCJhbXNcIikge1xuICAgICAgdmFyIF9mb250TmFtZSA9IHJldHJpZXZlVGV4dEZvbnROYW1lKFwiYW1zcm1cIiwgb3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSk7XG5cbiAgICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHRleHQsIF9mb250TmFtZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoXCJhbXNybVwiLCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKSk7XG4gICAgfSBlbHNlIGlmIChmb250ID09PSBcIm1haW5cIiB8fCAhZm9udCkge1xuICAgICAgdmFyIF9mb250TmFtZTIgPSByZXRyaWV2ZVRleHRGb250TmFtZShcInRleHRybVwiLCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKTtcblxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dCwgX2ZvbnROYW1lMiwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQob3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBmb250cyBhZGRlZCBieSBwbHVnaW5zXG4gICAgICB2YXIgX2ZvbnROYW1lMyA9IHJldHJpZXZlVGV4dEZvbnROYW1lKGZvbnQsIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGUpOyAvLyBXZSBhZGQgZm9udCBuYW1lIGFzIGEgY3NzIGNsYXNzXG5cblxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dCwgX2ZvbnROYW1lMywgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoX2ZvbnROYW1lMywgb3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmV4cGVjdGVkIHR5cGU6IFwiICsgdHlwZSArIFwiIGluIG1ha2VPcmRcIik7XG4gIH1cbn07XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBzdWJzZXF1ZW50IHN5bWJvbE5vZGVzIGhhdmUgdGhlIHNhbWUgY2xhc3Nlcywgc2tldywgbWF4Rm9udCxcbiAqIGFuZCBzdHlsZXMuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fY2FuQ29tYmluZSA9IGZ1bmN0aW9uIGNhbkNvbWJpbmUocHJldiwgbmV4dCkge1xuICBpZiAoY3JlYXRlQ2xhc3MocHJldi5jbGFzc2VzKSAhPT0gY3JlYXRlQ2xhc3MobmV4dC5jbGFzc2VzKSB8fCBwcmV2LnNrZXcgIT09IG5leHQuc2tldyB8fCBwcmV2Lm1heEZvbnRTaXplICE9PSBuZXh0Lm1heEZvbnRTaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgc3R5bGUgaW4gcHJldi5zdHlsZSkge1xuICAgIGlmIChwcmV2LnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSAmJiBwcmV2LnN0eWxlW3N0eWxlXSAhPT0gbmV4dC5zdHlsZVtzdHlsZV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBfc3R5bGUgaW4gbmV4dC5zdHlsZSkge1xuICAgIGlmIChuZXh0LnN0eWxlLmhhc093blByb3BlcnR5KF9zdHlsZSkgJiYgcHJldi5zdHlsZVtfc3R5bGVdICE9PSBuZXh0LnN0eWxlW19zdHlsZV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIENvbWJpbmUgY29uc2VxdWV0aXZlIGRvbVRyZWUuc3ltYm9sTm9kZXMgaW50byBhIHNpbmdsZSBzeW1ib2xOb2RlLlxuICogTm90ZTogdGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBhcmd1bWVudC5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl90cnlDb21iaW5lQ2hhcnMgPSBmdW5jdGlvbiB0cnlDb21iaW5lQ2hhcnMoY2hhcnMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICB2YXIgcHJldiA9IGNoYXJzW2ldO1xuICAgIHZhciBuZXh0ID0gY2hhcnNbaSArIDFdO1xuXG4gICAgaWYgKHByZXYgaW5zdGFuY2VvZiBkb21UcmVlX1N5bWJvbE5vZGUgJiYgbmV4dCBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSAmJiBidWlsZENvbW1vbl9jYW5Db21iaW5lKHByZXYsIG5leHQpKSB7XG4gICAgICBwcmV2LnRleHQgKz0gbmV4dC50ZXh0O1xuICAgICAgcHJldi5oZWlnaHQgPSBNYXRoLm1heChwcmV2LmhlaWdodCwgbmV4dC5oZWlnaHQpO1xuICAgICAgcHJldi5kZXB0aCA9IE1hdGgubWF4KHByZXYuZGVwdGgsIG5leHQuZGVwdGgpOyAvLyBVc2UgdGhlIGxhc3QgY2hhcmFjdGVyJ3MgaXRhbGljIGNvcnJlY3Rpb24gc2luY2Ugd2UgdXNlXG4gICAgICAvLyBpdCB0byBhZGQgcGFkZGluZyB0byB0aGUgcmlnaHQgb2YgdGhlIHNwYW4gY3JlYXRlZCBmcm9tXG4gICAgICAvLyB0aGUgY29tYmluZWQgY2hhcmFjdGVycy5cblxuICAgICAgcHJldi5pdGFsaWMgPSBuZXh0Lml0YWxpYztcbiAgICAgIGNoYXJzLnNwbGljZShpICsgMSwgMSk7XG4gICAgICBpLS07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNoYXJzO1xufTtcbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBoZWlnaHQsIGRlcHRoLCBhbmQgbWF4Rm9udFNpemUgb2YgYW4gZWxlbWVudCBiYXNlZCBvbiBpdHNcbiAqIGNoaWxkcmVuLlxuICovXG5cblxudmFyIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuID0gZnVuY3Rpb24gc2l6ZUVsZW1lbnRGcm9tQ2hpbGRyZW4oZWxlbSkge1xuICB2YXIgaGVpZ2h0ID0gMDtcbiAgdmFyIGRlcHRoID0gMDtcbiAgdmFyIG1heEZvbnRTaXplID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0uY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSBlbGVtLmNoaWxkcmVuW2ldO1xuXG4gICAgaWYgKGNoaWxkLmhlaWdodCA+IGhlaWdodCkge1xuICAgICAgaGVpZ2h0ID0gY2hpbGQuaGVpZ2h0O1xuICAgIH1cblxuICAgIGlmIChjaGlsZC5kZXB0aCA+IGRlcHRoKSB7XG4gICAgICBkZXB0aCA9IGNoaWxkLmRlcHRoO1xuICAgIH1cblxuICAgIGlmIChjaGlsZC5tYXhGb250U2l6ZSA+IG1heEZvbnRTaXplKSB7XG4gICAgICBtYXhGb250U2l6ZSA9IGNoaWxkLm1heEZvbnRTaXplO1xuICAgIH1cbiAgfVxuXG4gIGVsZW0uaGVpZ2h0ID0gaGVpZ2h0O1xuICBlbGVtLmRlcHRoID0gZGVwdGg7XG4gIGVsZW0ubWF4Rm9udFNpemUgPSBtYXhGb250U2l6ZTtcbn07XG4vKipcbiAqIE1ha2VzIGEgc3BhbiB3aXRoIHRoZSBnaXZlbiBsaXN0IG9mIGNsYXNzZXMsIGxpc3Qgb2YgY2hpbGRyZW4sIGFuZCBvcHRpb25zLlxuICpcbiAqIFRPRE8oIzk1Myk6IEVuc3VyZSB0aGF0IGBvcHRpb25zYCBpcyBhbHdheXMgcHJvdmlkZWQgKGN1cnJlbnRseSBzb21lIGNhbGxcbiAqIHNpdGVzIGRvbid0IHBhc3MgaXQpIGFuZCBtYWtlIHRoZSB0eXBlIGJlbG93IG1hbmRhdG9yeS5cbiAqIFRPRE86IGFkZCBhIHNlcGFyYXRlIGFyZ3VtZW50IGZvciBtYXRoIGNsYXNzIChlLmcuIGBtb3BgLCBgbWJpbmApLCB3aGljaFxuICogc2hvdWxkIGlmIHByZXNlbnQgY29tZSBmaXJzdCBpbiBgY2xhc3Nlc2AuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZVNwYW4gPSBmdW5jdGlvbiBtYWtlU3BhbihjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucywgc3R5bGUpIHtcbiAgdmFyIHNwYW4gPSBuZXcgZG9tVHJlZV9TcGFuKGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zLCBzdHlsZSk7XG4gIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuKHNwYW4pO1xuICByZXR1cm4gc3Bhbjtcbn07IC8vIFNWRyBvbmUgaXMgc2ltcGxlciAtLSBkb2Vzbid0IHJlcXVpcmUgaGVpZ2h0LCBkZXB0aCwgbWF4LWZvbnQgc2V0dGluZy5cbi8vIFRoaXMgaXMgYWxzbyBhIHNlcGFyYXRlIG1ldGhvZCBmb3IgdHlwZXNhZmV0eS5cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZVN2Z1NwYW4gPSBmdW5jdGlvbiBtYWtlU3ZnU3BhbihjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucywgc3R5bGUpIHtcbiAgcmV0dXJuIG5ldyBkb21UcmVlX1NwYW4oY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMsIHN0eWxlKTtcbn07XG5cbnZhciBtYWtlTGluZVNwYW4gPSBmdW5jdGlvbiBtYWtlTGluZVNwYW4oY2xhc3NOYW1lLCBvcHRpb25zLCB0aGlja25lc3MpIHtcbiAgdmFyIGxpbmUgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbY2xhc3NOYW1lXSwgW10sIG9wdGlvbnMpO1xuICBsaW5lLmhlaWdodCA9IE1hdGgubWF4KHRoaWNrbmVzcyB8fCBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVmYXVsdFJ1bGVUaGlja25lc3MsIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyk7XG4gIGxpbmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGggPSBsaW5lLmhlaWdodCArIFwiZW1cIjtcbiAgbGluZS5tYXhGb250U2l6ZSA9IDEuMDtcbiAgcmV0dXJuIGxpbmU7XG59O1xuLyoqXG4gKiBNYWtlcyBhbiBhbmNob3Igd2l0aCB0aGUgZ2l2ZW4gaHJlZiwgbGlzdCBvZiBjbGFzc2VzLCBsaXN0IG9mIGNoaWxkcmVuLFxuICogYW5kIG9wdGlvbnMuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZUFuY2hvciA9IGZ1bmN0aW9uIG1ha2VBbmNob3IoaHJlZiwgY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMpIHtcbiAgdmFyIGFuY2hvciA9IG5ldyBkb21UcmVlX0FuY2hvcihocmVmLCBjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucyk7XG4gIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuKGFuY2hvcik7XG4gIHJldHVybiBhbmNob3I7XG59O1xuLyoqXG4gKiBNYWtlcyBhIGRvY3VtZW50IGZyYWdtZW50IHdpdGggdGhlIGdpdmVuIGxpc3Qgb2YgY2hpbGRyZW4uXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZUZyYWdtZW50ID0gZnVuY3Rpb24gbWFrZUZyYWdtZW50KGNoaWxkcmVuKSB7XG4gIHZhciBmcmFnbWVudCA9IG5ldyB0cmVlX0RvY3VtZW50RnJhZ21lbnQoY2hpbGRyZW4pO1xuICBzaXplRWxlbWVudEZyb21DaGlsZHJlbihmcmFnbWVudCk7XG4gIHJldHVybiBmcmFnbWVudDtcbn07XG4vKipcbiAqIFdyYXBzIGdyb3VwIGluIGEgc3BhbiBpZiBpdCdzIGEgZG9jdW1lbnQgZnJhZ21lbnQsIGFsbG93aW5nIHRvIGFwcGx5IGNsYXNzZXNcbiAqIGFuZCBzdHlsZXNcbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl93cmFwRnJhZ21lbnQgPSBmdW5jdGlvbiB3cmFwRnJhZ21lbnQoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgaWYgKGdyb3VwIGluc3RhbmNlb2YgdHJlZV9Eb2N1bWVudEZyYWdtZW50KSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtdLCBbZ3JvdXBdLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldHVybiBncm91cDtcbn07IC8vIFRoZXNlIGFyZSBleGFjdCBvYmplY3QgdHlwZXMgdG8gY2F0Y2ggdHlwb3MgaW4gdGhlIG5hbWVzIG9mIHRoZSBvcHRpb25hbCBmaWVsZHMuXG5cblxuLy8gQ29tcHV0ZXMgdGhlIHVwZGF0ZWQgYGNoaWxkcmVuYCBsaXN0IGFuZCB0aGUgb3ZlcmFsbCBkZXB0aC5cbi8vXG4vLyBUaGlzIGhlbHBlciBmdW5jdGlvbiBmb3IgbWFrZVZMaXN0IG1ha2VzIGl0IGVhc2llciB0byBlbmZvcmNlIHR5cGUgc2FmZXR5IGJ5XG4vLyBhbGxvd2luZyBlYXJseSBleGl0cyAocmV0dXJucykgaW4gdGhlIGxvZ2ljLlxudmFyIGdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aCA9IGZ1bmN0aW9uIGdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aChwYXJhbXMpIHtcbiAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiaW5kaXZpZHVhbFNoaWZ0XCIpIHtcbiAgICB2YXIgb2xkQ2hpbGRyZW4gPSBwYXJhbXMuY2hpbGRyZW47XG4gICAgdmFyIGNoaWxkcmVuID0gW29sZENoaWxkcmVuWzBdXTsgLy8gQWRkIGluIGtlcm5zIHRvIHRoZSBsaXN0IG9mIHBhcmFtcy5jaGlsZHJlbiB0byBnZXQgZWFjaCBlbGVtZW50IHRvIGJlXG4gICAgLy8gc2hpZnRlZCB0byB0aGUgY29ycmVjdCBzcGVjaWZpZWQgc2hpZnRcblxuICAgIHZhciBfZGVwdGggPSAtb2xkQ2hpbGRyZW5bMF0uc2hpZnQgLSBvbGRDaGlsZHJlblswXS5lbGVtLmRlcHRoO1xuXG4gICAgdmFyIGN1cnJQb3MgPSBfZGVwdGg7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IG9sZENoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGlmZiA9IC1vbGRDaGlsZHJlbltpXS5zaGlmdCAtIGN1cnJQb3MgLSBvbGRDaGlsZHJlbltpXS5lbGVtLmRlcHRoO1xuICAgICAgdmFyIHNpemUgPSBkaWZmIC0gKG9sZENoaWxkcmVuW2kgLSAxXS5lbGVtLmhlaWdodCArIG9sZENoaWxkcmVuW2kgLSAxXS5lbGVtLmRlcHRoKTtcbiAgICAgIGN1cnJQb3MgPSBjdXJyUG9zICsgZGlmZjtcbiAgICAgIGNoaWxkcmVuLnB1c2goe1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogc2l6ZVxuICAgICAgfSk7XG4gICAgICBjaGlsZHJlbi5wdXNoKG9sZENoaWxkcmVuW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgZGVwdGg6IF9kZXB0aFxuICAgIH07XG4gIH1cblxuICB2YXIgZGVwdGg7XG5cbiAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwidG9wXCIpIHtcbiAgICAvLyBXZSBhbHdheXMgc3RhcnQgYXQgdGhlIGJvdHRvbSwgc28gY2FsY3VsYXRlIHRoZSBib3R0b20gYnkgYWRkaW5nIHVwXG4gICAgLy8gYWxsIHRoZSBzaXplc1xuICAgIHZhciBib3R0b20gPSBwYXJhbXMucG9zaXRpb25EYXRhO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHBhcmFtcy5jaGlsZHJlbi5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IHBhcmFtcy5jaGlsZHJlbltfaV07XG4gICAgICBib3R0b20gLT0gY2hpbGQudHlwZSA9PT0gXCJrZXJuXCIgPyBjaGlsZC5zaXplIDogY2hpbGQuZWxlbS5oZWlnaHQgKyBjaGlsZC5lbGVtLmRlcHRoO1xuICAgIH1cblxuICAgIGRlcHRoID0gYm90dG9tO1xuICB9IGVsc2UgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiYm90dG9tXCIpIHtcbiAgICBkZXB0aCA9IC1wYXJhbXMucG9zaXRpb25EYXRhO1xuICB9IGVsc2Uge1xuICAgIHZhciBmaXJzdENoaWxkID0gcGFyYW1zLmNoaWxkcmVuWzBdO1xuXG4gICAgaWYgKGZpcnN0Q2hpbGQudHlwZSAhPT0gXCJlbGVtXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmlyc3QgY2hpbGQgbXVzdCBoYXZlIHR5cGUgXCJlbGVtXCIuJyk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwic2hpZnRcIikge1xuICAgICAgZGVwdGggPSAtZmlyc3RDaGlsZC5lbGVtLmRlcHRoIC0gcGFyYW1zLnBvc2l0aW9uRGF0YTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiZmlyc3RCYXNlbGluZVwiKSB7XG4gICAgICBkZXB0aCA9IC1maXJzdENoaWxkLmVsZW0uZGVwdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcG9zaXRpb25UeXBlIFwiICsgcGFyYW1zLnBvc2l0aW9uVHlwZSArIFwiLlwiKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoaWxkcmVuOiBwYXJhbXMuY2hpbGRyZW4sXG4gICAgZGVwdGg6IGRlcHRoXG4gIH07XG59O1xuLyoqXG4gKiBNYWtlcyBhIHZlcnRpY2FsIGxpc3QgYnkgc3RhY2tpbmcgZWxlbWVudHMgYW5kIGtlcm5zIG9uIHRvcCBvZiBlYWNoIG90aGVyLlxuICogQWxsb3dzIGZvciBtYW55IGRpZmZlcmVudCB3YXlzIG9mIHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uaW5nIG1ldGhvZC5cbiAqXG4gKiBTZWUgVkxpc3RQYXJhbSBkb2N1bWVudGF0aW9uIGFib3ZlLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21ha2VWTGlzdCA9IGZ1bmN0aW9uIG1ha2VWTGlzdChwYXJhbXMsIG9wdGlvbnMpIHtcbiAgdmFyIF9nZXRWTGlzdENoaWxkcmVuQW5kRCA9IGdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aChwYXJhbXMpLFxuICAgICAgY2hpbGRyZW4gPSBfZ2V0Vkxpc3RDaGlsZHJlbkFuZEQuY2hpbGRyZW4sXG4gICAgICBkZXB0aCA9IF9nZXRWTGlzdENoaWxkcmVuQW5kRC5kZXB0aDsgLy8gQ3JlYXRlIGEgc3RydXQgdGhhdCBpcyB0YWxsZXIgdGhhbiBhbnkgbGlzdCBpdGVtLiBUaGUgc3RydXQgaXMgYWRkZWQgdG9cbiAgLy8gZWFjaCBpdGVtLCB3aGVyZSBpdCB3aWxsIGRldGVybWluZSB0aGUgaXRlbSdzIGJhc2VsaW5lLiBTaW5jZSBpdCBoYXNcbiAgLy8gYG92ZXJmbG93OmhpZGRlbmAsIHRoZSBzdHJ1dCdzIHRvcCBlZGdlIHdpbGwgc2l0IG9uIHRoZSBpdGVtJ3MgbGluZSBib3gnc1xuICAvLyB0b3AgZWRnZSBhbmQgdGhlIHN0cnV0J3MgYm90dG9tIGVkZ2Ugd2lsbCBzaXQgb24gdGhlIGl0ZW0ncyBiYXNlbGluZSxcbiAgLy8gd2l0aCBubyBhZGRpdGlvbmFsIGxpbmUtaGVpZ2h0IHNwYWNpbmcuIFRoaXMgYWxsb3dzIHRoZSBpdGVtIGJhc2VsaW5lIHRvXG4gIC8vIGJlIHBvc2l0aW9uZWQgcHJlY2lzZWx5IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZm9udCBhc2NlbnQgYW5kXG4gIC8vIGxpbmUtaGVpZ2h0LlxuXG5cbiAgdmFyIHBzdHJ1dFNpemUgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcblxuICAgIGlmIChjaGlsZC50eXBlID09PSBcImVsZW1cIikge1xuICAgICAgdmFyIGVsZW0gPSBjaGlsZC5lbGVtO1xuICAgICAgcHN0cnV0U2l6ZSA9IE1hdGgubWF4KHBzdHJ1dFNpemUsIGVsZW0ubWF4Rm9udFNpemUsIGVsZW0uaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwc3RydXRTaXplICs9IDI7XG4gIHZhciBwc3RydXQgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbXCJwc3RydXRcIl0sIFtdKTtcbiAgcHN0cnV0LnN0eWxlLmhlaWdodCA9IHBzdHJ1dFNpemUgKyBcImVtXCI7IC8vIENyZWF0ZSBhIG5ldyBsaXN0IG9mIGFjdHVhbCBjaGlsZHJlbiBhdCB0aGUgY29ycmVjdCBvZmZzZXRzXG5cbiAgdmFyIHJlYWxDaGlsZHJlbiA9IFtdO1xuICB2YXIgbWluUG9zID0gZGVwdGg7XG4gIHZhciBtYXhQb3MgPSBkZXB0aDtcbiAgdmFyIGN1cnJQb3MgPSBkZXB0aDtcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBjaGlsZHJlbi5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9jaGlsZCA9IGNoaWxkcmVuW19pMl07XG5cbiAgICBpZiAoX2NoaWxkLnR5cGUgPT09IFwia2VyblwiKSB7XG4gICAgICBjdXJyUG9zICs9IF9jaGlsZC5zaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX2VsZW0gPSBfY2hpbGQuZWxlbTtcbiAgICAgIHZhciBjbGFzc2VzID0gX2NoaWxkLndyYXBwZXJDbGFzc2VzIHx8IFtdO1xuICAgICAgdmFyIHN0eWxlID0gX2NoaWxkLndyYXBwZXJTdHlsZSB8fCB7fTtcbiAgICAgIHZhciBjaGlsZFdyYXAgPSBidWlsZENvbW1vbl9tYWtlU3BhbihjbGFzc2VzLCBbcHN0cnV0LCBfZWxlbV0sIHVuZGVmaW5lZCwgc3R5bGUpO1xuICAgICAgY2hpbGRXcmFwLnN0eWxlLnRvcCA9IC1wc3RydXRTaXplIC0gY3VyclBvcyAtIF9lbGVtLmRlcHRoICsgXCJlbVwiO1xuXG4gICAgICBpZiAoX2NoaWxkLm1hcmdpbkxlZnQpIHtcbiAgICAgICAgY2hpbGRXcmFwLnN0eWxlLm1hcmdpbkxlZnQgPSBfY2hpbGQubWFyZ2luTGVmdDtcbiAgICAgIH1cblxuICAgICAgaWYgKF9jaGlsZC5tYXJnaW5SaWdodCkge1xuICAgICAgICBjaGlsZFdyYXAuc3R5bGUubWFyZ2luUmlnaHQgPSBfY2hpbGQubWFyZ2luUmlnaHQ7XG4gICAgICB9XG5cbiAgICAgIHJlYWxDaGlsZHJlbi5wdXNoKGNoaWxkV3JhcCk7XG4gICAgICBjdXJyUG9zICs9IF9lbGVtLmhlaWdodCArIF9lbGVtLmRlcHRoO1xuICAgIH1cblxuICAgIG1pblBvcyA9IE1hdGgubWluKG1pblBvcywgY3VyclBvcyk7XG4gICAgbWF4UG9zID0gTWF0aC5tYXgobWF4UG9zLCBjdXJyUG9zKTtcbiAgfSAvLyBUaGUgdmxpc3QgY29udGVudHMgZ28gaW4gYSB0YWJsZS1jZWxsIHdpdGggYHZlcnRpY2FsLWFsaWduOmJvdHRvbWAuXG4gIC8vIFRoaXMgY2VsbCdzIGJvdHRvbSBlZGdlIHdpbGwgZGV0ZXJtaW5lIHRoZSBjb250YWluaW5nIHRhYmxlJ3MgYmFzZWxpbmVcbiAgLy8gd2l0aG91dCBvdmVybHkgZXhwYW5kaW5nIHRoZSBjb250YWluaW5nIGxpbmUtYm94LlxuXG5cbiAgdmFyIHZsaXN0ID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3RcIl0sIHJlYWxDaGlsZHJlbik7XG4gIHZsaXN0LnN0eWxlLmhlaWdodCA9IG1heFBvcyArIFwiZW1cIjsgLy8gQSBzZWNvbmQgcm93IGlzIHVzZWQgaWYgbmVjZXNzYXJ5IHRvIHJlcHJlc2VudCB0aGUgdmxpc3QncyBkZXB0aC5cblxuICB2YXIgcm93cztcblxuICBpZiAobWluUG9zIDwgMCkge1xuICAgIC8vIFdlIHdpbGwgZGVmaW5lIGRlcHRoIGluIGFuIGVtcHR5IHNwYW4gd2l0aCBkaXNwbGF5OiB0YWJsZS1jZWxsLlxuICAgIC8vIEl0IHNob3VsZCByZW5kZXIgd2l0aCB0aGUgaGVpZ2h0IHRoYXQgd2UgZGVmaW5lLiBCdXQgQ2hyb21lLCBpblxuICAgIC8vIGNvbnRlbnRlZGl0YWJsZSBtb2RlIG9ubHksIHRyZWF0cyB0aGF0IHNwYW4gYXMgaWYgaXQgY29udGFpbnMgc29tZVxuICAgIC8vIHRleHQgY29udGVudC4gQW5kIHRoYXQgbWluLWhlaWdodCBvdmVyLXJpZGVzIG91ciBkZXNpcmVkIGhlaWdodC5cbiAgICAvLyBTbyB3ZSBwdXQgYW5vdGhlciBlbXB0eSBzcGFuIGluc2lkZSB0aGUgZGVwdGggc3RydXQgc3Bhbi5cbiAgICB2YXIgZW1wdHlTcGFuID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW10sIFtdKTtcbiAgICB2YXIgZGVwdGhTdHJ1dCA9IGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtcInZsaXN0XCJdLCBbZW1wdHlTcGFuXSk7XG4gICAgZGVwdGhTdHJ1dC5zdHlsZS5oZWlnaHQgPSAtbWluUG9zICsgXCJlbVwiOyAvLyBTYWZhcmkgd2FudHMgdGhlIGZpcnN0IHJvdyB0byBoYXZlIGlubGluZSBjb250ZW50OyBvdGhlcndpc2UgaXRcbiAgICAvLyBwdXRzIHRoZSBib3R0b20gb2YgdGhlICpzZWNvbmQqIHJvdyBvbiB0aGUgYmFzZWxpbmUuXG5cbiAgICB2YXIgdG9wU3RydXQgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbXCJ2bGlzdC1zXCJdLCBbbmV3IGRvbVRyZWVfU3ltYm9sTm9kZShcIlxcdTIwMEJcIildKTtcbiAgICByb3dzID0gW2J1aWxkQ29tbW9uX21ha2VTcGFuKFtcInZsaXN0LXJcIl0sIFt2bGlzdCwgdG9wU3RydXRdKSwgYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3QtclwiXSwgW2RlcHRoU3RydXRdKV07XG4gIH0gZWxzZSB7XG4gICAgcm93cyA9IFtidWlsZENvbW1vbl9tYWtlU3BhbihbXCJ2bGlzdC1yXCJdLCBbdmxpc3RdKV07XG4gIH1cblxuICB2YXIgdnRhYmxlID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3QtdFwiXSwgcm93cyk7XG5cbiAgaWYgKHJvd3MubGVuZ3RoID09PSAyKSB7XG4gICAgdnRhYmxlLmNsYXNzZXMucHVzaChcInZsaXN0LXQyXCIpO1xuICB9XG5cbiAgdnRhYmxlLmhlaWdodCA9IG1heFBvcztcbiAgdnRhYmxlLmRlcHRoID0gLW1pblBvcztcbiAgcmV0dXJuIHZ0YWJsZTtcbn07IC8vIEdsdWUgaXMgYSBjb25jZXB0IGZyb20gVGVYIHdoaWNoIGlzIGEgZmxleGlibGUgc3BhY2UgYmV0d2VlbiBlbGVtZW50cyBpblxuLy8gZWl0aGVyIGEgdmVydGljYWwgb3IgaG9yaXpvbnRhbCBsaXN0LiBJbiBLYVRlWCwgYXQgbGVhc3QgZm9yIG5vdywgaXQnc1xuLy8gc3RhdGljIHNwYWNlIGJldHdlZW4gZWxlbWVudHMgaW4gYSBob3Jpem9udGFsIGxheW91dC5cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZUdsdWUgPSBmdW5jdGlvbiBtYWtlR2x1ZShtZWFzdXJlbWVudCwgb3B0aW9ucykge1xuICAvLyBNYWtlIGFuIGVtcHR5IHNwYW4gZm9yIHRoZSBzcGFjZVxuICB2YXIgcnVsZSA9IGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtcIm1zcGFjZVwiXSwgW10sIG9wdGlvbnMpO1xuICB2YXIgc2l6ZSA9IHVuaXRzX2NhbGN1bGF0ZVNpemUobWVhc3VyZW1lbnQsIG9wdGlvbnMpO1xuICBydWxlLnN0eWxlLm1hcmdpblJpZ2h0ID0gc2l6ZSArIFwiZW1cIjtcbiAgcmV0dXJuIHJ1bGU7XG59OyAvLyBUYWtlcyBmb250IG9wdGlvbnMsIGFuZCByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBmb250TG9va3VwIG5hbWVcblxuXG52YXIgcmV0cmlldmVUZXh0Rm9udE5hbWUgPSBmdW5jdGlvbiByZXRyaWV2ZVRleHRGb250TmFtZShmb250RmFtaWx5LCBmb250V2VpZ2h0LCBmb250U2hhcGUpIHtcbiAgdmFyIGJhc2VGb250TmFtZSA9IFwiXCI7XG5cbiAgc3dpdGNoIChmb250RmFtaWx5KSB7XG4gICAgY2FzZSBcImFtc3JtXCI6XG4gICAgICBiYXNlRm9udE5hbWUgPSBcIkFNU1wiO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwidGV4dHJtXCI6XG4gICAgICBiYXNlRm9udE5hbWUgPSBcIk1haW5cIjtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInRleHRzZlwiOlxuICAgICAgYmFzZUZvbnROYW1lID0gXCJTYW5zU2VyaWZcIjtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInRleHR0dFwiOlxuICAgICAgYmFzZUZvbnROYW1lID0gXCJUeXBld3JpdGVyXCI7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBiYXNlRm9udE5hbWUgPSBmb250RmFtaWx5O1xuICAgIC8vIHVzZSBmb250cyBhZGRlZCBieSBhIHBsdWdpblxuICB9XG5cbiAgdmFyIGZvbnRTdHlsZXNOYW1lO1xuXG4gIGlmIChmb250V2VpZ2h0ID09PSBcInRleHRiZlwiICYmIGZvbnRTaGFwZSA9PT0gXCJ0ZXh0aXRcIikge1xuICAgIGZvbnRTdHlsZXNOYW1lID0gXCJCb2xkSXRhbGljXCI7XG4gIH0gZWxzZSBpZiAoZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgIGZvbnRTdHlsZXNOYW1lID0gXCJCb2xkXCI7XG4gIH0gZWxzZSBpZiAoZm9udFdlaWdodCA9PT0gXCJ0ZXh0aXRcIikge1xuICAgIGZvbnRTdHlsZXNOYW1lID0gXCJJdGFsaWNcIjtcbiAgfSBlbHNlIHtcbiAgICBmb250U3R5bGVzTmFtZSA9IFwiUmVndWxhclwiO1xuICB9XG5cbiAgcmV0dXJuIGJhc2VGb250TmFtZSArIFwiLVwiICsgZm9udFN0eWxlc05hbWU7XG59O1xuLyoqXG4gKiBNYXBzIFRlWCBmb250IGNvbW1hbmRzIHRvIG9iamVjdHMgY29udGFpbmluZzpcbiAqIC0gdmFyaWFudDogc3RyaW5nIHVzZWQgZm9yIFwibWF0aHZhcmlhbnRcIiBhdHRyaWJ1dGUgaW4gYnVpbGRNYXRoTUwuanNcbiAqIC0gZm9udE5hbWU6IHRoZSBcInN0eWxlXCIgcGFyYW1ldGVyIHRvIGZvbnRNZXRyaWNzLmdldENoYXJhY3Rlck1ldHJpY3NcbiAqL1xuLy8gQSBtYXAgYmV0d2VlbiB0ZXggZm9udCBjb21tYW5kcyBhbiBNYXRoTUwgbWF0aHZhcmlhbnQgYXR0cmlidXRlIHZhbHVlc1xuXG5cbnZhciBmb250TWFwID0ge1xuICAvLyBzdHlsZXNcbiAgXCJtYXRoYmZcIjoge1xuICAgIHZhcmlhbnQ6IFwiYm9sZFwiLFxuICAgIGZvbnROYW1lOiBcIk1haW4tQm9sZFwiXG4gIH0sXG4gIFwibWF0aHJtXCI6IHtcbiAgICB2YXJpYW50OiBcIm5vcm1hbFwiLFxuICAgIGZvbnROYW1lOiBcIk1haW4tUmVndWxhclwiXG4gIH0sXG4gIFwidGV4dGl0XCI6IHtcbiAgICB2YXJpYW50OiBcIml0YWxpY1wiLFxuICAgIGZvbnROYW1lOiBcIk1haW4tSXRhbGljXCJcbiAgfSxcbiAgXCJtYXRoaXRcIjoge1xuICAgIHZhcmlhbnQ6IFwiaXRhbGljXCIsXG4gICAgZm9udE5hbWU6IFwiTWFpbi1JdGFsaWNcIlxuICB9LFxuICAvLyBEZWZhdWx0IG1hdGggZm9udCwgXCJtYXRobm9ybWFsXCIgYW5kIFwiYm9sZHN5bWJvbFwiIGFyZSBtaXNzaW5nIGJlY2F1c2UgdGhleVxuICAvLyByZXF1aXJlIHRoZSB1c2Ugb2Ygc2V2ZXJhbCBmb250czogTWFpbi1JdGFsaWMgYW5kIE1hdGgtSXRhbGljIGZvciBkZWZhdWx0XG4gIC8vIG1hdGggZm9udCwgTWFpbi1JdGFsaWMsIE1hdGgtSXRhbGljLCBDYWxpZ3JhcGhpYyBmb3IgXCJtYXRobm9ybWFsXCIsIGFuZFxuICAvLyBNYXRoLUJvbGRJdGFsaWMgYW5kIE1haW4tQm9sZCBmb3IgXCJib2xkc3ltYm9sXCIuICBUaGlzIGlzIGhhbmRsZWQgYnkgYVxuICAvLyBzcGVjaWFsIGNhc2UgaW4gbWFrZU9yZCB3aGljaCBlbmRzIHVwIGNhbGxpbmcgbWF0aGRlZmF1bHQsIG1hdGhub3JtYWwsXG4gIC8vIGFuZCBib2xkc3ltYm9sLlxuICAvLyBmYW1pbGllc1xuICBcIm1hdGhiYlwiOiB7XG4gICAgdmFyaWFudDogXCJkb3VibGUtc3RydWNrXCIsXG4gICAgZm9udE5hbWU6IFwiQU1TLVJlZ3VsYXJcIlxuICB9LFxuICBcIm1hdGhjYWxcIjoge1xuICAgIHZhcmlhbnQ6IFwic2NyaXB0XCIsXG4gICAgZm9udE5hbWU6IFwiQ2FsaWdyYXBoaWMtUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aGZyYWtcIjoge1xuICAgIHZhcmlhbnQ6IFwiZnJha3R1clwiLFxuICAgIGZvbnROYW1lOiBcIkZyYWt0dXItUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aHNjclwiOiB7XG4gICAgdmFyaWFudDogXCJzY3JpcHRcIixcbiAgICBmb250TmFtZTogXCJTY3JpcHQtUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aHNmXCI6IHtcbiAgICB2YXJpYW50OiBcInNhbnMtc2VyaWZcIixcbiAgICBmb250TmFtZTogXCJTYW5zU2VyaWYtUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aHR0XCI6IHtcbiAgICB2YXJpYW50OiBcIm1vbm9zcGFjZVwiLFxuICAgIGZvbnROYW1lOiBcIlR5cGV3cml0ZXItUmVndWxhclwiXG4gIH1cbn07XG52YXIgc3ZnRGF0YSA9IHtcbiAgLy8gICBwYXRoLCB3aWR0aCwgaGVpZ2h0XG4gIHZlYzogW1widmVjXCIsIDAuNDcxLCAwLjcxNF0sXG4gIC8vIHZhbHVlcyBmcm9tIHRoZSBmb250IGdseXBoXG4gIG9paW50U2l6ZTE6IFtcIm9paW50U2l6ZTFcIiwgMC45NTcsIDAuNDk5XSxcbiAgLy8gb3ZhbCB0byBvdmVybGF5IHRoZSBpbnRlZ3JhbmRcbiAgb2lpbnRTaXplMjogW1wib2lpbnRTaXplMlwiLCAxLjQ3MiwgMC42NTldLFxuICBvaWlpbnRTaXplMTogW1wib2lpaW50U2l6ZTFcIiwgMS4zMDQsIDAuNDk5XSxcbiAgb2lpaW50U2l6ZTI6IFtcIm9paWludFNpemUyXCIsIDEuOTgsIDAuNjU5XVxufTtcblxudmFyIGJ1aWxkQ29tbW9uX3N0YXRpY1N2ZyA9IGZ1bmN0aW9uIHN0YXRpY1N2Zyh2YWx1ZSwgb3B0aW9ucykge1xuICAvLyBDcmVhdGUgYSBzcGFuIHdpdGggaW5saW5lIFNWRyBmb3IgdGhlIGVsZW1lbnQuXG4gIHZhciBfc3ZnRGF0YSR2YWx1ZSA9IHN2Z0RhdGFbdmFsdWVdLFxuICAgICAgcGF0aE5hbWUgPSBfc3ZnRGF0YSR2YWx1ZVswXSxcbiAgICAgIHdpZHRoID0gX3N2Z0RhdGEkdmFsdWVbMV0sXG4gICAgICBoZWlnaHQgPSBfc3ZnRGF0YSR2YWx1ZVsyXTtcbiAgdmFyIHBhdGggPSBuZXcgZG9tVHJlZV9QYXRoTm9kZShwYXRoTmFtZSk7XG4gIHZhciBzdmdOb2RlID0gbmV3IFN2Z05vZGUoW3BhdGhdLCB7XG4gICAgXCJ3aWR0aFwiOiB3aWR0aCArIFwiZW1cIixcbiAgICBcImhlaWdodFwiOiBoZWlnaHQgKyBcImVtXCIsXG4gICAgLy8gT3ZlcnJpZGUgQ1NTIHJ1bGUgYC5rYXRleCBzdmcgeyB3aWR0aDogMTAwJSB9YFxuICAgIFwic3R5bGVcIjogXCJ3aWR0aDpcIiArIHdpZHRoICsgXCJlbVwiLFxuICAgIFwidmlld0JveFwiOiBcIjAgMCBcIiArIDEwMDAgKiB3aWR0aCArIFwiIFwiICsgMTAwMCAqIGhlaWdodCxcbiAgICBcInByZXNlcnZlQXNwZWN0UmF0aW9cIjogXCJ4TWluWU1pblwiXG4gIH0pO1xuICB2YXIgc3BhbiA9IGJ1aWxkQ29tbW9uX21ha2VTdmdTcGFuKFtcIm92ZXJsYXlcIl0sIFtzdmdOb2RlXSwgb3B0aW9ucyk7XG4gIHNwYW4uaGVpZ2h0ID0gaGVpZ2h0O1xuICBzcGFuLnN0eWxlLmhlaWdodCA9IGhlaWdodCArIFwiZW1cIjtcbiAgc3Bhbi5zdHlsZS53aWR0aCA9IHdpZHRoICsgXCJlbVwiO1xuICByZXR1cm4gc3Bhbjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJ1aWxkQ29tbW9uID0gKHtcbiAgZm9udE1hcDogZm9udE1hcCxcbiAgbWFrZVN5bWJvbDogYnVpbGRDb21tb25fbWFrZVN5bWJvbCxcbiAgbWF0aHN5bTogYnVpbGRDb21tb25fbWF0aHN5bSxcbiAgbWFrZVNwYW46IGJ1aWxkQ29tbW9uX21ha2VTcGFuLFxuICBtYWtlU3ZnU3BhbjogYnVpbGRDb21tb25fbWFrZVN2Z1NwYW4sXG4gIG1ha2VMaW5lU3BhbjogbWFrZUxpbmVTcGFuLFxuICBtYWtlQW5jaG9yOiBidWlsZENvbW1vbl9tYWtlQW5jaG9yLFxuICBtYWtlRnJhZ21lbnQ6IGJ1aWxkQ29tbW9uX21ha2VGcmFnbWVudCxcbiAgd3JhcEZyYWdtZW50OiBidWlsZENvbW1vbl93cmFwRnJhZ21lbnQsXG4gIG1ha2VWTGlzdDogYnVpbGRDb21tb25fbWFrZVZMaXN0LFxuICBtYWtlT3JkOiBidWlsZENvbW1vbl9tYWtlT3JkLFxuICBtYWtlR2x1ZTogYnVpbGRDb21tb25fbWFrZUdsdWUsXG4gIHN0YXRpY1N2ZzogYnVpbGRDb21tb25fc3RhdGljU3ZnLFxuICBzdmdEYXRhOiBzdmdEYXRhLFxuICB0cnlDb21iaW5lQ2hhcnM6IGJ1aWxkQ29tbW9uX3RyeUNvbWJpbmVDaGFyc1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9wYXJzZU5vZGUuanNcblxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0aGUgbm9kZSBpcyBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgcmV0dXJucyBpdCB3aXRoIHN0cmljdGVyXG4gKiB0eXBpbmcuIFRocm93cyBpZiB0aGUgbm9kZSdzIHR5cGUgZG9lcyBub3QgbWF0Y2guXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vZGVUeXBlKG5vZGUsIHR5cGUpIHtcbiAgdmFyIHR5cGVkTm9kZSA9IGNoZWNrTm9kZVR5cGUobm9kZSwgdHlwZSk7XG5cbiAgaWYgKCF0eXBlZE5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub2RlIG9mIHR5cGUgXCIgKyB0eXBlICsgXCIsIGJ1dCBnb3QgXCIgKyAobm9kZSA/IFwibm9kZSBvZiB0eXBlIFwiICsgbm9kZS50eXBlIDogU3RyaW5nKG5vZGUpKSk7XG4gIH0gLy8gJEZsb3dGaXhNZTogVW5zdXJlIHdoeS5cblxuXG4gIHJldHVybiB0eXBlZE5vZGU7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG5vZGUgbW9yZSBzdHJpY3RseSB0eXBlZCBpZmYgaXQgaXMgb2YgdGhlIGdpdmVuIHR5cGUuIE90aGVyd2lzZSxcbiAqIHJldHVybnMgbnVsbC5cbiAqL1xuXG5mdW5jdGlvbiBjaGVja05vZGVUeXBlKG5vZGUsIHR5cGUpIHtcbiAgaWYgKG5vZGUgJiYgbm9kZS50eXBlID09PSB0eXBlKSB7XG4gICAgLy8gVGhlIGRlZmluaXRpb24gb2YgUGFyc2VOb2RlPFRZUEU+IGRvZXNuJ3QgY29tbXVuaWNhdGUgdG8gZmxvdyB0aGF0XG4gICAgLy8gYHR5cGU6IFRZUEVgIChhcyB0aGF0J3Mgbm90IGV4cGxpY2l0bHkgbWVudGlvbmVkIGFueXdoZXJlKSwgdGhvdWdoIHRoYXRcbiAgICAvLyBoYXBwZW5zIHRvIGJlIHRydWUgZm9yIGFsbCBvdXIgdmFsdWUgdHlwZXMuXG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIEFzc2VydHMgdGhhdCB0aGUgbm9kZSBpcyBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgcmV0dXJucyBpdCB3aXRoIHN0cmljdGVyXG4gKiB0eXBpbmcuIFRocm93cyBpZiB0aGUgbm9kZSdzIHR5cGUgZG9lcyBub3QgbWF0Y2guXG4gKi9cblxuZnVuY3Rpb24gYXNzZXJ0QXRvbUZhbWlseShub2RlLCBmYW1pbHkpIHtcbiAgdmFyIHR5cGVkTm9kZSA9IGNoZWNrQXRvbUZhbWlseShub2RlLCBmYW1pbHkpO1xuXG4gIGlmICghdHlwZWROb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbm9kZSBvZiB0eXBlIFxcXCJhdG9tXFxcIiBhbmQgZmFtaWx5IFxcXCJcIiArIGZhbWlseSArIFwiXFxcIiwgYnV0IGdvdCBcIiArIChub2RlID8gbm9kZS50eXBlID09PSBcImF0b21cIiA/IFwiYXRvbSBvZiBmYW1pbHkgXCIgKyBub2RlLmZhbWlseSA6IFwibm9kZSBvZiB0eXBlIFwiICsgbm9kZS50eXBlIDogU3RyaW5nKG5vZGUpKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZWROb2RlO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBub2RlIG1vcmUgc3RyaWN0bHkgdHlwZWQgaWZmIGl0IGlzIG9mIHRoZSBnaXZlbiB0eXBlLiBPdGhlcndpc2UsXG4gKiByZXR1cm5zIG51bGwuXG4gKi9cblxuZnVuY3Rpb24gY2hlY2tBdG9tRmFtaWx5KG5vZGUsIGZhbWlseSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLnR5cGUgPT09IFwiYXRvbVwiICYmIG5vZGUuZmFtaWx5ID09PSBmYW1pbHkgPyBub2RlIDogbnVsbDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbm9kZSBtb3JlIHN0cmljdGx5IHR5cGVkIGlmZiBpdCBpcyBvZiB0aGUgZ2l2ZW4gdHlwZS4gT3RoZXJ3aXNlLFxuICogcmV0dXJucyBudWxsLlxuICovXG5cbmZ1bmN0aW9uIGFzc2VydFN5bWJvbE5vZGVUeXBlKG5vZGUpIHtcbiAgdmFyIHR5cGVkTm9kZSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUobm9kZSk7XG5cbiAgaWYgKCF0eXBlZE5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub2RlIG9mIHN5bWJvbCBncm91cCB0eXBlLCBidXQgZ290IFwiICsgKG5vZGUgPyBcIm5vZGUgb2YgdHlwZSBcIiArIG5vZGUudHlwZSA6IFN0cmluZyhub2RlKSkpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVkTm9kZTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbm9kZSBtb3JlIHN0cmljdGx5IHR5cGVkIGlmZiBpdCBpcyBvZiB0aGUgZ2l2ZW4gdHlwZS4gT3RoZXJ3aXNlLFxuICogcmV0dXJucyBudWxsLlxuICovXG5cbmZ1bmN0aW9uIGNoZWNrU3ltYm9sTm9kZVR5cGUobm9kZSkge1xuICBpZiAobm9kZSAmJiAobm9kZS50eXBlID09PSBcImF0b21cIiB8fCBOT05fQVRPTVMuaGFzT3duUHJvcGVydHkobm9kZS50eXBlKSkpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3NwYWNpbmdEYXRhLmpzXG4vKipcbiAqIERlc2NyaWJlcyBzcGFjZXMgYmV0d2VlbiBkaWZmZXJlbnQgY2xhc3NlcyBvZiBhdG9tcy5cbiAqL1xudmFyIHRoaW5zcGFjZSA9IHtcbiAgbnVtYmVyOiAzLFxuICB1bml0OiBcIm11XCJcbn07XG52YXIgbWVkaXVtc3BhY2UgPSB7XG4gIG51bWJlcjogNCxcbiAgdW5pdDogXCJtdVwiXG59O1xudmFyIHRoaWNrc3BhY2UgPSB7XG4gIG51bWJlcjogNSxcbiAgdW5pdDogXCJtdVwiXG59OyAvLyBNYWtpbmcgdGhlIHR5cGUgYmVsb3cgZXhhY3Qgd2l0aCBhbGwgb3B0aW9uYWwgZmllbGRzIGRvZXNuJ3Qgd29yayBkdWUgdG9cbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzQ1ODJcbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzU2ODhcbi8vIEhvd2V2ZXIsIHNpbmNlICphbGwqIGZpZWxkcyBhcmUgb3B0aW9uYWwsICRTaGFwZTw+IHdvcmtzIGFzIHN1Z2dlc3RlZCBpbiA1Njg4XG4vLyBhYm92ZS5cblxuLy8gU3BhY2luZyByZWxhdGlvbnNoaXBzIGZvciBkaXNwbGF5IGFuZCB0ZXh0IHN0eWxlc1xudmFyIHNwYWNpbmdzID0ge1xuICBtb3JkOiB7XG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbWJpbjogbWVkaXVtc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICB9LFxuICBtb3A6IHtcbiAgICBtb3JkOiB0aGluc3BhY2UsXG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICB9LFxuICBtYmluOiB7XG4gICAgbW9yZDogbWVkaXVtc3BhY2UsXG4gICAgbW9wOiBtZWRpdW1zcGFjZSxcbiAgICBtb3BlbjogbWVkaXVtc3BhY2UsXG4gICAgbWlubmVyOiBtZWRpdW1zcGFjZVxuICB9LFxuICBtcmVsOiB7XG4gICAgbW9yZDogdGhpY2tzcGFjZSxcbiAgICBtb3A6IHRoaWNrc3BhY2UsXG4gICAgbW9wZW46IHRoaWNrc3BhY2UsXG4gICAgbWlubmVyOiB0aGlja3NwYWNlXG4gIH0sXG4gIG1vcGVuOiB7fSxcbiAgbWNsb3NlOiB7XG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbWJpbjogbWVkaXVtc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICB9LFxuICBtcHVuY3Q6IHtcbiAgICBtb3JkOiB0aGluc3BhY2UsXG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtb3BlbjogdGhpbnNwYWNlLFxuICAgIG1jbG9zZTogdGhpbnNwYWNlLFxuICAgIG1wdW5jdDogdGhpbnNwYWNlLFxuICAgIG1pbm5lcjogdGhpbnNwYWNlXG4gIH0sXG4gIG1pbm5lcjoge1xuICAgIG1vcmQ6IHRoaW5zcGFjZSxcbiAgICBtb3A6IHRoaW5zcGFjZSxcbiAgICBtYmluOiBtZWRpdW1zcGFjZSxcbiAgICBtcmVsOiB0aGlja3NwYWNlLFxuICAgIG1vcGVuOiB0aGluc3BhY2UsXG4gICAgbXB1bmN0OiB0aGluc3BhY2UsXG4gICAgbWlubmVyOiB0aGluc3BhY2VcbiAgfVxufTsgLy8gU3BhY2luZyByZWxhdGlvbnNoaXBzIGZvciBzY3JpcHQgYW5kIHNjcmlwdHNjcmlwdCBzdHlsZXNcblxudmFyIHRpZ2h0U3BhY2luZ3MgPSB7XG4gIG1vcmQ6IHtcbiAgICBtb3A6IHRoaW5zcGFjZVxuICB9LFxuICBtb3A6IHtcbiAgICBtb3JkOiB0aGluc3BhY2UsXG4gICAgbW9wOiB0aGluc3BhY2VcbiAgfSxcbiAgbWJpbjoge30sXG4gIG1yZWw6IHt9LFxuICBtb3Blbjoge30sXG4gIG1jbG9zZToge1xuICAgIG1vcDogdGhpbnNwYWNlXG4gIH0sXG4gIG1wdW5jdDoge30sXG4gIG1pbm5lcjoge1xuICAgIG1vcDogdGhpbnNwYWNlXG4gIH1cbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9kZWZpbmVGdW5jdGlvbi5qc1xuXG5cbi8qKlxuICogQWxsIHJlZ2lzdGVyZWQgZnVuY3Rpb25zLlxuICogYGZ1bmN0aW9ucy5qc2AganVzdCBleHBvcnRzIHRoaXMgc2FtZSBkaWN0aW9uYXJ5IGFnYWluIGFuZCBtYWtlcyBpdCBwdWJsaWMuXG4gKiBgUGFyc2VyLmpzYCByZXF1aXJlcyB0aGlzIGRpY3Rpb25hcnkuXG4gKi9cbnZhciBfZnVuY3Rpb25zID0ge307XG4vKipcbiAqIEFsbCBIVE1MIGJ1aWxkZXJzLiBTaG91bGQgYmUgb25seSB1c2VkIGluIHRoZSBgZGVmaW5lKmAgYW5kIHRoZSBgYnVpbGQqTUxgXG4gKiBmdW5jdGlvbnMuXG4gKi9cblxudmFyIF9odG1sR3JvdXBCdWlsZGVycyA9IHt9O1xuLyoqXG4gKiBBbGwgTWF0aE1MIGJ1aWxkZXJzLiBTaG91bGQgYmUgb25seSB1c2VkIGluIHRoZSBgZGVmaW5lKmAgYW5kIHRoZSBgYnVpbGQqTUxgXG4gKiBmdW5jdGlvbnMuXG4gKi9cblxudmFyIF9tYXRobWxHcm91cEJ1aWxkZXJzID0ge307XG5mdW5jdGlvbiBkZWZpbmVGdW5jdGlvbihfcmVmKSB7XG4gIHZhciB0eXBlID0gX3JlZi50eXBlLFxuICAgICAgbmFtZXMgPSBfcmVmLm5hbWVzLFxuICAgICAgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgaGFuZGxlciA9IF9yZWYuaGFuZGxlcixcbiAgICAgIGh0bWxCdWlsZGVyID0gX3JlZi5odG1sQnVpbGRlcixcbiAgICAgIG1hdGhtbEJ1aWxkZXIgPSBfcmVmLm1hdGhtbEJ1aWxkZXI7XG4gIC8vIFNldCBkZWZhdWx0IHZhbHVlcyBvZiBmdW5jdGlvbnNcbiAgdmFyIGRhdGEgPSB7XG4gICAgdHlwZTogdHlwZSxcbiAgICBudW1BcmdzOiBwcm9wcy5udW1BcmdzLFxuICAgIGFyZ1R5cGVzOiBwcm9wcy5hcmdUeXBlcyxcbiAgICBncmVlZGluZXNzOiBwcm9wcy5ncmVlZGluZXNzID09PSB1bmRlZmluZWQgPyAxIDogcHJvcHMuZ3JlZWRpbmVzcyxcbiAgICBhbGxvd2VkSW5UZXh0OiAhIXByb3BzLmFsbG93ZWRJblRleHQsXG4gICAgYWxsb3dlZEluTWF0aDogcHJvcHMuYWxsb3dlZEluTWF0aCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHByb3BzLmFsbG93ZWRJbk1hdGgsXG4gICAgbnVtT3B0aW9uYWxBcmdzOiBwcm9wcy5udW1PcHRpb25hbEFyZ3MgfHwgMCxcbiAgICBpbmZpeDogISFwcm9wcy5pbmZpeCxcbiAgICBoYW5kbGVyOiBoYW5kbGVyXG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuICAgIF9mdW5jdGlvbnNbbmFtZXNbaV1dID0gZGF0YTtcbiAgfVxuXG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKGh0bWxCdWlsZGVyKSB7XG4gICAgICBfaHRtbEdyb3VwQnVpbGRlcnNbdHlwZV0gPSBodG1sQnVpbGRlcjtcbiAgICB9XG5cbiAgICBpZiAobWF0aG1sQnVpbGRlcikge1xuICAgICAgX21hdGhtbEdyb3VwQnVpbGRlcnNbdHlwZV0gPSBtYXRobWxCdWlsZGVyO1xuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBVc2UgdGhpcyB0byByZWdpc3RlciBvbmx5IHRoZSBIVE1MIGFuZCBNYXRoTUwgYnVpbGRlcnMgZm9yIGEgZnVuY3Rpb24gKGUuZy5cbiAqIGlmIHRoZSBmdW5jdGlvbidzIFBhcnNlTm9kZSBpcyBnZW5lcmF0ZWQgaW4gUGFyc2VyLmpzIHJhdGhlciB0aGFuIHZpYSBhXG4gKiBzdGFuZC1hbG9uZSBoYW5kbGVyIHByb3ZpZGVkIHRvIGBkZWZpbmVGdW5jdGlvbmApLlxuICovXG5cbmZ1bmN0aW9uIGRlZmluZUZ1bmN0aW9uQnVpbGRlcnMoX3JlZjIpIHtcbiAgdmFyIHR5cGUgPSBfcmVmMi50eXBlLFxuICAgICAgaHRtbEJ1aWxkZXIgPSBfcmVmMi5odG1sQnVpbGRlcixcbiAgICAgIG1hdGhtbEJ1aWxkZXIgPSBfcmVmMi5tYXRobWxCdWlsZGVyO1xuICBkZWZpbmVGdW5jdGlvbih7XG4gICAgdHlwZTogdHlwZSxcbiAgICBuYW1lczogW10sXG4gICAgcHJvcHM6IHtcbiAgICAgIG51bUFyZ3M6IDBcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBuZXZlciBiZSBjYWxsZWQuJyk7XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxuICB9KTtcbn0gLy8gU2luY2UgdGhlIGNvcnJlc3BvbmRpbmcgYnVpbGRIVE1ML2J1aWxkTWF0aE1MIGZ1bmN0aW9uIGV4cGVjdHMgYVxuLy8gbGlzdCBvZiBlbGVtZW50cywgd2Ugbm9ybWFsaXplIGZvciBkaWZmZXJlbnQga2luZHMgb2YgYXJndW1lbnRzXG5cbnZhciBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudCA9IGZ1bmN0aW9uIG9yZGFyZ3VtZW50KGFyZykge1xuICB2YXIgbm9kZSA9IGNoZWNrTm9kZVR5cGUoYXJnLCBcIm9yZGdyb3VwXCIpO1xuICByZXR1cm4gbm9kZSA/IG5vZGUuYm9keSA6IFthcmddO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2J1aWxkSFRNTC5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgZG9lcyB0aGUgbWFpbiB3b3JrIG9mIGJ1aWxkaW5nIGEgZG9tVHJlZSBzdHJ1Y3R1cmUgZnJvbSBhIHBhcnNlXG4gKiB0cmVlLiBUaGUgZW50cnkgcG9pbnQgaXMgdGhlIGBidWlsZEhUTUxgIGZ1bmN0aW9uLCB3aGljaCB0YWtlcyBhIHBhcnNlIHRyZWUuXG4gKiBUaGVuLCB0aGUgYnVpbGRFeHByZXNzaW9uLCBidWlsZEdyb3VwLCBhbmQgdmFyaW91cyBncm91cEJ1aWxkZXJzIGZ1bmN0aW9uc1xuICogYXJlIGNhbGxlZCwgdG8gcHJvZHVjZSBhIGZpbmFsIEhUTUwgdHJlZS5cbiAqL1xuXG5cblxuXG5cblxuXG5cblxudmFyIGJ1aWxkSFRNTF9tYWtlU3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuOyAvLyBCaW5hcnkgYXRvbXMgKGZpcnN0IGNsYXNzIGBtYmluYCkgY2hhbmdlIGludG8gb3JkaW5hcnkgYXRvbXMgKGBtb3JkYClcbi8vIGRlcGVuZGluZyBvbiB0aGVpciBzdXJyb3VuZGluZ3MuIFNlZSBUZVhib29rIHBnLiA0NDItNDQ2LCBSdWxlcyA1IGFuZCA2LFxuLy8gYW5kIHRoZSB0ZXh0IGJlZm9yZSBSdWxlIDE5LlxuXG52YXIgYmluTGVmdENhbmNlbGxlciA9IFtcImxlZnRtb3N0XCIsIFwibWJpblwiLCBcIm1vcGVuXCIsIFwibXJlbFwiLCBcIm1vcFwiLCBcIm1wdW5jdFwiXTtcbnZhciBiaW5SaWdodENhbmNlbGxlciA9IFtcInJpZ2h0bW9zdFwiLCBcIm1yZWxcIiwgXCJtY2xvc2VcIiwgXCJtcHVuY3RcIl07XG52YXIgc3R5bGVNYXAgPSB7XG4gIFwiZGlzcGxheVwiOiBzcmNfU3R5bGUuRElTUExBWSxcbiAgXCJ0ZXh0XCI6IHNyY19TdHlsZS5URVhULFxuICBcInNjcmlwdFwiOiBzcmNfU3R5bGUuU0NSSVBULFxuICBcInNjcmlwdHNjcmlwdFwiOiBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUXG59O1xudmFyIERvbUVudW0gPSB7XG4gIG1vcmQ6IFwibW9yZFwiLFxuICBtb3A6IFwibW9wXCIsXG4gIG1iaW46IFwibWJpblwiLFxuICBtcmVsOiBcIm1yZWxcIixcbiAgbW9wZW46IFwibW9wZW5cIixcbiAgbWNsb3NlOiBcIm1jbG9zZVwiLFxuICBtcHVuY3Q6IFwibXB1bmN0XCIsXG4gIG1pbm5lcjogXCJtaW5uZXJcIlxufTtcblxuLyoqXG4gKiBUYWtlIGEgbGlzdCBvZiBub2RlcywgYnVpbGQgdGhlbSBpbiBvcmRlciwgYW5kIHJldHVybiBhIGxpc3Qgb2YgdGhlIGJ1aWx0XG4gKiBub2Rlcy4gZG9jdW1lbnRGcmFnbWVudHMgYXJlIGZsYXR0ZW5lZCBpbnRvIHRoZWlyIGNvbnRlbnRzLCBzbyB0aGVcbiAqIHJldHVybmVkIGxpc3QgY29udGFpbnMgbm8gZnJhZ21lbnRzLiBgaXNSZWFsR3JvdXBgIGlzIHRydWUgaWYgYGV4cHJlc3Npb25gXG4gKiBpcyBhIHJlYWwgZ3JvdXAgKG5vIGF0b21zIHdpbGwgYmUgYWRkZWQgb24gZWl0aGVyIHNpZGUpLCBhcyBvcHBvc2VkIHRvXG4gKiBhIHBhcnRpYWwgZ3JvdXAgKGUuZy4gb25lIGNyZWF0ZWQgYnkgXFxjb2xvcikuIGBzdXJyb3VuZGluZ2AgaXMgYW4gYXJyYXlcbiAqIGNvbnNpc3RpbmcgdHlwZSBvZiBub2RlcyB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxlZnQgYW5kIHJpZ2h0LlxuICovXG52YXIgYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIGJ1aWxkRXhwcmVzc2lvbihleHByZXNzaW9uLCBvcHRpb25zLCBpc1JlYWxHcm91cCwgc3Vycm91bmRpbmcpIHtcbiAgaWYgKHN1cnJvdW5kaW5nID09PSB2b2lkIDApIHtcbiAgICBzdXJyb3VuZGluZyA9IFtudWxsLCBudWxsXTtcbiAgfVxuXG4gIC8vIFBhcnNlIGV4cHJlc3Npb25zIGludG8gYGdyb3Vwc2AuXG4gIHZhciBncm91cHMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb24ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb3V0cHV0ID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZXhwcmVzc2lvbltpXSwgb3B0aW9ucyk7XG5cbiAgICBpZiAob3V0cHV0IGluc3RhbmNlb2YgdHJlZV9Eb2N1bWVudEZyYWdtZW50KSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBvdXRwdXQuY2hpbGRyZW47XG4gICAgICBncm91cHMucHVzaC5hcHBseShncm91cHMsIGNoaWxkcmVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBzLnB1c2gob3V0cHV0KTtcbiAgICB9XG4gIH0gLy8gSWYgYGV4cHJlc3Npb25gIGlzIGEgcGFydGlhbCBncm91cCwgbGV0IHRoZSBwYXJlbnQgaGFuZGxlIHNwYWNpbmdzXG4gIC8vIHRvIGF2b2lkIHByb2Nlc3NpbmcgZ3JvdXBzIG11bHRpcGxlIHRpbWVzLlxuXG5cbiAgaWYgKCFpc1JlYWxHcm91cCkge1xuICAgIHJldHVybiBncm91cHM7XG4gIH1cblxuICB2YXIgZ2x1ZU9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIGlmIChleHByZXNzaW9uLmxlbmd0aCA9PT0gMSkge1xuICAgIHZhciBub2RlID0gY2hlY2tOb2RlVHlwZShleHByZXNzaW9uWzBdLCBcInNpemluZ1wiKSB8fCBjaGVja05vZGVUeXBlKGV4cHJlc3Npb25bMF0sIFwic3R5bGluZ1wiKTtcblxuICAgIGlmICghbm9kZSkgey8vIE5vIG1hdGNoLlxuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBcInNpemluZ1wiKSB7XG4gICAgICBnbHVlT3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU2l6ZShub2RlLnNpemUpO1xuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBcInN0eWxpbmdcIikge1xuICAgICAgZ2x1ZU9wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlTWFwW25vZGUuc3R5bGVdKTtcbiAgICB9XG4gIH0gLy8gRHVtbXkgc3BhbnMgZm9yIGRldGVybWluaW5nIHNwYWNpbmdzIGJldHdlZW4gc3Vycm91bmRpbmcgYXRvbXMuXG4gIC8vIElmIGBleHByZXNzaW9uYCBoYXMgbm8gYXRvbXMgb24gdGhlIGxlZnQgb3IgcmlnaHQsIGNsYXNzIFwibGVmdG1vc3RcIlxuICAvLyBvciBcInJpZ2h0bW9zdFwiLCByZXNwZWN0aXZlbHksIGlzIHVzZWQgdG8gaW5kaWNhdGUgaXQuXG5cblxuICB2YXIgZHVtbXlQcmV2ID0gYnVpbGRIVE1MX21ha2VTcGFuKFtzdXJyb3VuZGluZ1swXSB8fCBcImxlZnRtb3N0XCJdLCBbXSwgb3B0aW9ucyk7XG4gIHZhciBkdW1teU5leHQgPSBidWlsZEhUTUxfbWFrZVNwYW4oW3N1cnJvdW5kaW5nWzFdIHx8IFwicmlnaHRtb3N0XCJdLCBbXSwgb3B0aW9ucyk7IC8vIFRPRE86IFRoZXNlIGNvZGUgYXNzdW1lcyB0aGF0IGEgbm9kZSdzIG1hdGggY2xhc3MgaXMgdGhlIGZpcnN0IGVsZW1lbnRcbiAgLy8gb2YgaXRzIGBjbGFzc2VzYCBhcnJheS4gQSBsYXRlciBjbGVhbnVwIHNob3VsZCBlbnN1cmUgdGhpcywgZm9yXG4gIC8vIGluc3RhbmNlIGJ5IGNoYW5naW5nIHRoZSBzaWduYXR1cmUgb2YgYG1ha2VTcGFuYC5cbiAgLy8gQmVmb3JlIGRldGVybWluaW5nIHdoYXQgc3BhY2VzIHRvIGluc2VydCwgcGVyZm9ybSBiaW4gY2FuY2VsbGF0aW9uLlxuICAvLyBCaW5hcnkgb3BlcmF0b3JzIGNoYW5nZSB0byBvcmRpbmFyeSBzeW1ib2xzIGluIHNvbWUgY29udGV4dHMuXG5cbiAgdHJhdmVyc2VOb25TcGFjZU5vZGVzKGdyb3VwcywgZnVuY3Rpb24gKG5vZGUsIHByZXYpIHtcbiAgICB2YXIgcHJldlR5cGUgPSBwcmV2LmNsYXNzZXNbMF07XG4gICAgdmFyIHR5cGUgPSBub2RlLmNsYXNzZXNbMF07XG5cbiAgICBpZiAocHJldlR5cGUgPT09IFwibWJpblwiICYmIHV0aWxzLmNvbnRhaW5zKGJpblJpZ2h0Q2FuY2VsbGVyLCB0eXBlKSkge1xuICAgICAgcHJldi5jbGFzc2VzWzBdID0gXCJtb3JkXCI7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBcIm1iaW5cIiAmJiB1dGlscy5jb250YWlucyhiaW5MZWZ0Q2FuY2VsbGVyLCBwcmV2VHlwZSkpIHtcbiAgICAgIG5vZGUuY2xhc3Nlc1swXSA9IFwibW9yZFwiO1xuICAgIH1cbiAgfSwge1xuICAgIG5vZGU6IGR1bW15UHJldlxuICB9LCBkdW1teU5leHQpO1xuICB0cmF2ZXJzZU5vblNwYWNlTm9kZXMoZ3JvdXBzLCBmdW5jdGlvbiAobm9kZSwgcHJldikge1xuICAgIHZhciBwcmV2VHlwZSA9IGdldFR5cGVPZkRvbVRyZWUocHJldik7XG4gICAgdmFyIHR5cGUgPSBnZXRUeXBlT2ZEb21UcmVlKG5vZGUpOyAvLyAnbXRpZ2h0JyBpbmRpY2F0ZXMgdGhhdCB0aGUgbm9kZSBpcyBzY3JpcHQgb3Igc2NyaXB0c2NyaXB0IHN0eWxlLlxuXG4gICAgdmFyIHNwYWNlID0gcHJldlR5cGUgJiYgdHlwZSA/IG5vZGUuaGFzQ2xhc3MoXCJtdGlnaHRcIikgPyB0aWdodFNwYWNpbmdzW3ByZXZUeXBlXVt0eXBlXSA6IHNwYWNpbmdzW3ByZXZUeXBlXVt0eXBlXSA6IG51bGw7XG5cbiAgICBpZiAoc3BhY2UpIHtcbiAgICAgIC8vIEluc2VydCBnbHVlIChzcGFjaW5nKSBhZnRlciB0aGUgYHByZXZgLlxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VHbHVlKHNwYWNlLCBnbHVlT3B0aW9ucyk7XG4gICAgfVxuICB9LCB7XG4gICAgbm9kZTogZHVtbXlQcmV2XG4gIH0sIGR1bW15TmV4dCk7XG4gIHJldHVybiBncm91cHM7XG59OyAvLyBEZXB0aC1maXJzdCB0cmF2ZXJzZSBub24tc3BhY2UgYG5vZGVzYCwgY2FsbGluZyBgY2FsbGJhY2tgIHdpdGggdGhlIGN1cnJlbnQgYW5kXG4vLyBwcmV2aW91cyBub2RlIGFzIGFyZ3VtZW50cywgb3B0aW9uYWxseSByZXR1cm5pbmcgYSBub2RlIHRvIGluc2VydCBhZnRlciB0aGVcbi8vIHByZXZpb3VzIG5vZGUuIGBwcmV2YCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgcHJldmlvdXMgbm9kZSBhbmQgYGluc2VydEFmdGVyYFxuLy8gZnVuY3Rpb24gdG8gaW5zZXJ0IGFmdGVyIGl0LiBgbmV4dGAgaXMgYSBub2RlIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgcmlnaHQuXG4vLyBVc2VkIGZvciBiaW4gY2FuY2VsbGF0aW9uIGFuZCBpbnNlcnRpbmcgc3BhY2luZ3MuXG5cbnZhciB0cmF2ZXJzZU5vblNwYWNlTm9kZXMgPSBmdW5jdGlvbiB0cmF2ZXJzZU5vblNwYWNlTm9kZXMobm9kZXMsIGNhbGxiYWNrLCBwcmV2LCBuZXh0KSB7XG4gIGlmIChuZXh0KSB7XG4gICAgLy8gdGVtcG9yYXJpbHkgYXBwZW5kIHRoZSByaWdodCBub2RlLCBpZiBleGlzdHNcbiAgICBub2Rlcy5wdXNoKG5leHQpO1xuICB9XG5cbiAgdmFyIGkgPSAwO1xuXG4gIGZvciAoOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgIHZhciBwYXJ0aWFsR3JvdXAgPSBidWlsZEhUTUxfY2hlY2tQYXJ0aWFsR3JvdXAobm9kZSk7XG5cbiAgICBpZiAocGFydGlhbEdyb3VwKSB7XG4gICAgICAvLyBSZWN1cnNpdmUgREZTXG4gICAgICAvLyAkRmxvd0ZpeE1lOiBtYWtlIG5vZGVzIGEgJFJlYWRPbmx5QXJyYXkgYnkgcmV0dXJuaW5nIGEgbmV3IGFycmF5XG4gICAgICB0cmF2ZXJzZU5vblNwYWNlTm9kZXMocGFydGlhbEdyb3VwLmNoaWxkcmVuLCBjYWxsYmFjaywgcHJldik7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIElnbm9yZSBleHBsaWNpdCBzcGFjZXMgKGUuZy4sIFxcOywgXFwsKSB3aGVuIGRldGVybWluaW5nIHdoYXQgaW1wbGljaXRcbiAgICAvLyBzcGFjaW5nIHNob3VsZCBnbyBiZXR3ZWVuIGF0b21zIG9mIGRpZmZlcmVudCBjbGFzc2VzXG5cblxuICAgIGlmIChub2RlLmNsYXNzZXNbMF0gPT09IFwibXNwYWNlXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciByZXN1bHQgPSBjYWxsYmFjayhub2RlLCBwcmV2Lm5vZGUpO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgaWYgKHByZXYuaW5zZXJ0QWZ0ZXIpIHtcbiAgICAgICAgcHJldi5pbnNlcnRBZnRlcihyZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gaW5zZXJ0IGF0IGZyb250XG4gICAgICAgIG5vZGVzLnVuc2hpZnQocmVzdWx0KTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByZXYubm9kZSA9IG5vZGU7XG5cbiAgICBwcmV2Lmluc2VydEFmdGVyID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgbm9kZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgbik7XG4gICAgICAgIGkrKztcbiAgICAgIH07XG4gICAgfShpKTtcbiAgfVxuXG4gIGlmIChuZXh0KSB7XG4gICAgbm9kZXMucG9wKCk7XG4gIH1cbn07IC8vIENoZWNrIGlmIGdpdmVuIG5vZGUgaXMgYSBwYXJ0aWFsIGdyb3VwLCBpLmUuLCBkb2VzIG5vdCBhZmZlY3Qgc3BhY2luZyBhcm91bmQuXG5cblxudmFyIGJ1aWxkSFRNTF9jaGVja1BhcnRpYWxHcm91cCA9IGZ1bmN0aW9uIGNoZWNrUGFydGlhbEdyb3VwKG5vZGUpIHtcbiAgaWYgKG5vZGUgaW5zdGFuY2VvZiB0cmVlX0RvY3VtZW50RnJhZ21lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIGRvbVRyZWVfQW5jaG9yKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07IC8vIFJldHVybiB0aGUgb3V0ZXJtb3N0IG5vZGUgb2YgYSBkb21UcmVlLlxuXG5cbnZhciBnZXRPdXRlcm1vc3ROb2RlID0gZnVuY3Rpb24gZ2V0T3V0ZXJtb3N0Tm9kZShub2RlLCBzaWRlKSB7XG4gIHZhciBwYXJ0aWFsR3JvdXAgPSBidWlsZEhUTUxfY2hlY2tQYXJ0aWFsR3JvdXAobm9kZSk7XG5cbiAgaWYgKHBhcnRpYWxHcm91cCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHBhcnRpYWxHcm91cC5jaGlsZHJlbjtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGlmIChzaWRlID09PSBcInJpZ2h0XCIpIHtcbiAgICAgICAgcmV0dXJuIGdldE91dGVybW9zdE5vZGUoY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0sIFwicmlnaHRcIik7XG4gICAgICB9IGVsc2UgaWYgKHNpZGUgPT09IFwibGVmdFwiKSB7XG4gICAgICAgIHJldHVybiBnZXRPdXRlcm1vc3ROb2RlKGNoaWxkcmVuWzBdLCBcImxlZnRcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59OyAvLyBSZXR1cm4gbWF0aCBhdG9tIGNsYXNzIChtY2xhc3MpIG9mIGEgZG9tVHJlZS5cbi8vIElmIGBzaWRlYCBpcyBnaXZlbiwgaXQgd2lsbCBnZXQgdGhlIHR5cGUgb2YgdGhlIG91dGVybW9zdCBub2RlIGF0IGdpdmVuIHNpZGUuXG5cblxudmFyIGdldFR5cGVPZkRvbVRyZWUgPSBmdW5jdGlvbiBnZXRUeXBlT2ZEb21UcmVlKG5vZGUsIHNpZGUpIHtcbiAgaWYgKCFub2RlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoc2lkZSkge1xuICAgIG5vZGUgPSBnZXRPdXRlcm1vc3ROb2RlKG5vZGUsIHNpZGUpO1xuICB9IC8vIFRoaXMgbWFrZXMgYSBsb3Qgb2YgYXNzdW1wdGlvbnMgYXMgdG8gd2hlcmUgdGhlIHR5cGUgb2YgYXRvbVxuICAvLyBhcHBlYXJzLiAgV2Ugc2hvdWxkIGRvIGEgYmV0dGVyIGpvYiBvZiBlbmZvcmNpbmcgdGhpcy5cblxuXG4gIHJldHVybiBEb21FbnVtW25vZGUuY2xhc3Nlc1swXV0gfHwgbnVsbDtcbn07XG52YXIgbWFrZU51bGxEZWxpbWl0ZXIgPSBmdW5jdGlvbiBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBjbGFzc2VzKSB7XG4gIHZhciBtb3JlQ2xhc3NlcyA9IFtcIm51bGxkZWxpbWl0ZXJcIl0uY29uY2F0KG9wdGlvbnMuYmFzZVNpemluZ0NsYXNzZXMoKSk7XG4gIHJldHVybiBidWlsZEhUTUxfbWFrZVNwYW4oY2xhc3Nlcy5jb25jYXQobW9yZUNsYXNzZXMpKTtcbn07XG4vKipcbiAqIGJ1aWxkR3JvdXAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBncm91cCBhbmQgY2FsbHMgdGhlIGNvcnJlY3QgZ3JvdXBUeXBlXG4gKiBmdW5jdGlvbiBmb3IgaXQuIEl0IGFsc28gaGFuZGxlcyB0aGUgaW50ZXJhY3Rpb24gb2Ygc2l6ZSBhbmQgc3R5bGUgY2hhbmdlc1xuICogYmV0d2VlbiBwYXJlbnRzIGFuZCBjaGlsZHJlbi5cbiAqL1xuXG52YXIgYnVpbGRIVE1MX2J1aWxkR3JvdXAgPSBmdW5jdGlvbiBidWlsZEdyb3VwKGdyb3VwLCBvcHRpb25zLCBiYXNlT3B0aW9ucykge1xuICBpZiAoIWdyb3VwKSB7XG4gICAgcmV0dXJuIGJ1aWxkSFRNTF9tYWtlU3BhbigpO1xuICB9XG5cbiAgaWYgKF9odG1sR3JvdXBCdWlsZGVyc1tncm91cC50eXBlXSkge1xuICAgIC8vIENhbGwgdGhlIGdyb3VwQnVpbGRlcnMgZnVuY3Rpb25cbiAgICB2YXIgZ3JvdXBOb2RlID0gX2h0bWxHcm91cEJ1aWxkZXJzW2dyb3VwLnR5cGVdKGdyb3VwLCBvcHRpb25zKTsgLy8gSWYgdGhlIHNpemUgY2hhbmdlZCBiZXR3ZWVuIHRoZSBwYXJlbnQgYW5kIHRoZSBjdXJyZW50IGdyb3VwLCBhY2NvdW50XG4gICAgLy8gZm9yIHRoYXQgc2l6ZSBkaWZmZXJlbmNlLlxuXG4gICAgaWYgKGJhc2VPcHRpb25zICYmIG9wdGlvbnMuc2l6ZSAhPT0gYmFzZU9wdGlvbnMuc2l6ZSkge1xuICAgICAgZ3JvdXBOb2RlID0gYnVpbGRIVE1MX21ha2VTcGFuKG9wdGlvbnMuc2l6aW5nQ2xhc3NlcyhiYXNlT3B0aW9ucyksIFtncm91cE5vZGVdLCBvcHRpb25zKTtcbiAgICAgIHZhciBtdWx0aXBsaWVyID0gb3B0aW9ucy5zaXplTXVsdGlwbGllciAvIGJhc2VPcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgICAgZ3JvdXBOb2RlLmhlaWdodCAqPSBtdWx0aXBsaWVyO1xuICAgICAgZ3JvdXBOb2RlLmRlcHRoICo9IG11bHRpcGxpZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwTm9kZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJHb3QgZ3JvdXAgb2YgdW5rbm93biB0eXBlOiAnXCIgKyBncm91cC50eXBlICsgXCInXCIpO1xuICB9XG59O1xuLyoqXG4gKiBDb21iaW5lIGFuIGFycmF5IG9mIEhUTUwgRE9NIG5vZGVzIChlLmcuLCB0aGUgb3V0cHV0IG9mIGBidWlsZEV4cHJlc3Npb25gKVxuICogaW50byBhbiB1bmJyZWFrYWJsZSBIVE1MIG5vZGUgb2YgY2xhc3MgLmJhc2UsIHdpdGggcHJvcGVyIHN0cnV0cyB0b1xuICogZ3VhcmFudGVlIGNvcnJlY3QgdmVydGljYWwgZXh0ZW50LiAgYGJ1aWxkSFRNTGAgY2FsbHMgdGhpcyByZXBlYXRlZGx5IHRvXG4gKiBtYWtlIHVwIHRoZSBlbnRpcmUgZXhwcmVzc2lvbiBhcyBhIHNlcXVlbmNlIG9mIHVuYnJlYWthYmxlIHVuaXRzLlxuICovXG5cbmZ1bmN0aW9uIGJ1aWxkSFRNTFVuYnJlYWthYmxlKGNoaWxkcmVuLCBvcHRpb25zKSB7XG4gIC8vIENvbXB1dGUgaGVpZ2h0IGFuZCBkZXB0aCBvZiB0aGlzIGNodW5rLlxuICB2YXIgYm9keSA9IGJ1aWxkSFRNTF9tYWtlU3BhbihbXCJiYXNlXCJdLCBjaGlsZHJlbiwgb3B0aW9ucyk7IC8vIEFkZCBzdHJ1dCwgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSB0b3Agb2YgdGhlIEhUTUwgZWxlbWVudCBmYWxscyBhdFxuICAvLyB0aGUgaGVpZ2h0IG9mIHRoZSBleHByZXNzaW9uLCBhbmQgdGhlIGJvdHRvbSBvZiB0aGUgSFRNTCBlbGVtZW50XG4gIC8vIGZhbGxzIGF0IHRoZSBkZXB0aCBvZiB0aGUgZXhwcmVzc2lvbi5cbiAgLy8gV2UgdXNlZCB0byBoYXZlIHNlcGFyYXRlIHRvcCBhbmQgYm90dG9tIHN0cnV0cywgd2hlcmUgdGhlIGJvdHRvbSBzdHJ1dFxuICAvLyB3b3VsZCBsaWtlIHRvIHVzZSBgdmVydGljYWwtYWxpZ246IHRvcGAsIGJ1dCBpbiBJRSA5IHRoaXMgbG93ZXJzIHRoZVxuICAvLyBiYXNlbGluZSBvZiB0aGUgYm94IHRvIHRoZSBib3R0b20gb2YgdGhpcyBzdHJ1dCAoaW5zdGVhZCBvZiBzdGF5aW5nIGluXG4gIC8vIHRoZSBub3JtYWwgcGxhY2UpIHNvIHdlIHVzZSBhbiBhYnNvbHV0ZSB2YWx1ZSBmb3IgdmVydGljYWwtYWxpZ24gaW5zdGVhZC5cblxuICB2YXIgc3RydXQgPSBidWlsZEhUTUxfbWFrZVNwYW4oW1wic3RydXRcIl0pO1xuICBzdHJ1dC5zdHlsZS5oZWlnaHQgPSBib2R5LmhlaWdodCArIGJvZHkuZGVwdGggKyBcImVtXCI7XG4gIHN0cnV0LnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAtYm9keS5kZXB0aCArIFwiZW1cIjtcbiAgYm9keS5jaGlsZHJlbi51bnNoaWZ0KHN0cnV0KTtcbiAgcmV0dXJuIGJvZHk7XG59XG4vKipcbiAqIFRha2UgYW4gZW50aXJlIHBhcnNlIHRyZWUsIGFuZCBidWlsZCBpdCBpbnRvIGFuIGFwcHJvcHJpYXRlIHNldCBvZiBIVE1MXG4gKiBub2Rlcy5cbiAqL1xuXG5cbmZ1bmN0aW9uIGJ1aWxkSFRNTCh0cmVlLCBvcHRpb25zKSB7XG4gIC8vIFN0cmlwIG9mZiBvdXRlciB0YWcgd3JhcHBlciBmb3IgcHJvY2Vzc2luZyBiZWxvdy5cbiAgdmFyIHRhZyA9IG51bGw7XG5cbiAgaWYgKHRyZWUubGVuZ3RoID09PSAxICYmIHRyZWVbMF0udHlwZSA9PT0gXCJ0YWdcIikge1xuICAgIHRhZyA9IHRyZWVbMF0udGFnO1xuICAgIHRyZWUgPSB0cmVlWzBdLmJvZHk7XG4gIH0gLy8gQnVpbGQgdGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGluIHRoZSB0cmVlXG5cblxuICB2YXIgZXhwcmVzc2lvbiA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24odHJlZSwgb3B0aW9ucywgdHJ1ZSk7XG4gIHZhciBjaGlsZHJlbiA9IFtdOyAvLyBDcmVhdGUgb25lIGJhc2Ugbm9kZSBmb3IgZWFjaCBjaHVuayBiZXR3ZWVuIHBvdGVudGlhbCBsaW5lIGJyZWFrcy5cbiAgLy8gVGhlIFRlWEJvb2sgW3AuMTczXSBzYXlzIFwiQSBmb3JtdWxhIHdpbGwgYmUgYnJva2VuIG9ubHkgYWZ0ZXIgYVxuICAvLyByZWxhdGlvbiBzeW1ib2wgbGlrZSAkPSQgb3IgJDwkIG9yICRcXHJpZ2h0YXJyb3ckLCBvciBhZnRlciBhIGJpbmFyeVxuICAvLyBvcGVyYXRpb24gc3ltYm9sIGxpa2UgJCskIG9yICQtJCBvciAkXFx0aW1lcyQsIHdoZXJlIHRoZSByZWxhdGlvbiBvclxuICAvLyBiaW5hcnkgb3BlcmF0aW9uIGlzIG9uIHRoZSBgYG91dGVyIGxldmVsJycgb2YgdGhlIGZvcm11bGEgKGkuZS4sIG5vdFxuICAvLyBlbmNsb3NlZCBpbiB7Li4ufSBhbmQgbm90IHBhcnQgb2YgYW4gXFxvdmVyIGNvbnN0cnVjdGlvbikuXCJcblxuICB2YXIgcGFydHMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb24ubGVuZ3RoOyBpKyspIHtcbiAgICBwYXJ0cy5wdXNoKGV4cHJlc3Npb25baV0pO1xuXG4gICAgaWYgKGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJtYmluXCIpIHx8IGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJtcmVsXCIpIHx8IGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJhbGxvd2JyZWFrXCIpKSB7XG4gICAgICAvLyBQdXQgYW55IHBvc3Qtb3BlcmF0b3IgZ2x1ZSBvbiBzYW1lIGxpbmUgYXMgb3BlcmF0b3IuXG4gICAgICAvLyBXYXRjaCBmb3IgXFxub2JyZWFrIGFsb25nIHRoZSB3YXksIGFuZCBzdG9wIGF0IFxcbmV3bGluZS5cbiAgICAgIHZhciBub2JyZWFrID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlIChpIDwgZXhwcmVzc2lvbi5sZW5ndGggLSAxICYmIGV4cHJlc3Npb25baSArIDFdLmhhc0NsYXNzKFwibXNwYWNlXCIpICYmICFleHByZXNzaW9uW2kgKyAxXS5oYXNDbGFzcyhcIm5ld2xpbmVcIikpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBwYXJ0cy5wdXNoKGV4cHJlc3Npb25baV0pO1xuXG4gICAgICAgIGlmIChleHByZXNzaW9uW2ldLmhhc0NsYXNzKFwibm9icmVha1wiKSkge1xuICAgICAgICAgIG5vYnJlYWsgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIERvbid0IGFsbG93IGJyZWFrIGlmIFxcbm9icmVhayBhbW9uZyB0aGUgcG9zdC1vcGVyYXRvciBnbHVlLlxuXG5cbiAgICAgIGlmICghbm9icmVhaykge1xuICAgICAgICBjaGlsZHJlbi5wdXNoKGJ1aWxkSFRNTFVuYnJlYWthYmxlKHBhcnRzLCBvcHRpb25zKSk7XG4gICAgICAgIHBhcnRzID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChleHByZXNzaW9uW2ldLmhhc0NsYXNzKFwibmV3bGluZVwiKSkge1xuICAgICAgLy8gV3JpdGUgdGhlIGxpbmUgZXhjZXB0IHRoZSBuZXdsaW5lXG4gICAgICBwYXJ0cy5wb3AoKTtcblxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChidWlsZEhUTUxVbmJyZWFrYWJsZShwYXJ0cywgb3B0aW9ucykpO1xuICAgICAgICBwYXJ0cyA9IFtdO1xuICAgICAgfSAvLyBQdXQgdGhlIG5ld2xpbmUgYXQgdGhlIHRvcCBsZXZlbFxuXG5cbiAgICAgIGNoaWxkcmVuLnB1c2goZXhwcmVzc2lvbltpXSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICBjaGlsZHJlbi5wdXNoKGJ1aWxkSFRNTFVuYnJlYWthYmxlKHBhcnRzLCBvcHRpb25zKSk7XG4gIH0gLy8gTm93LCBpZiB0aGVyZSB3YXMgYSB0YWcsIGJ1aWxkIGl0IHRvbyBhbmQgYXBwZW5kIGl0IGFzIGEgZmluYWwgY2hpbGQuXG5cblxuICB2YXIgdGFnQ2hpbGQ7XG5cbiAgaWYgKHRhZykge1xuICAgIHRhZ0NoaWxkID0gYnVpbGRIVE1MVW5icmVha2FibGUoYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbih0YWcsIG9wdGlvbnMsIHRydWUpKTtcbiAgICB0YWdDaGlsZC5jbGFzc2VzID0gW1widGFnXCJdO1xuICAgIGNoaWxkcmVuLnB1c2godGFnQ2hpbGQpO1xuICB9XG5cbiAgdmFyIGh0bWxOb2RlID0gYnVpbGRIVE1MX21ha2VTcGFuKFtcImthdGV4LWh0bWxcIl0sIGNoaWxkcmVuKTtcbiAgaHRtbE5vZGUuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIpOyAvLyBBZGp1c3QgdGhlIHN0cnV0IG9mIHRoZSB0YWcgdG8gYmUgdGhlIG1heGltdW0gaGVpZ2h0IG9mIGFsbCBjaGlsZHJlblxuICAvLyAodGhlIGhlaWdodCBvZiB0aGUgZW5jbG9zaW5nIGh0bWxOb2RlKSBmb3IgcHJvcGVyIHZlcnRpY2FsIGFsaWdubWVudC5cblxuICBpZiAodGFnQ2hpbGQpIHtcbiAgICB2YXIgc3RydXQgPSB0YWdDaGlsZC5jaGlsZHJlblswXTtcbiAgICBzdHJ1dC5zdHlsZS5oZWlnaHQgPSBodG1sTm9kZS5oZWlnaHQgKyBodG1sTm9kZS5kZXB0aCArIFwiZW1cIjtcbiAgICBzdHJ1dC5zdHlsZS52ZXJ0aWNhbEFsaWduID0gLWh0bWxOb2RlLmRlcHRoICsgXCJlbVwiO1xuICB9XG5cbiAgcmV0dXJuIGh0bWxOb2RlO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvbWF0aE1MVHJlZS5qc1xuLyoqXG4gKiBUaGVzZSBvYmplY3RzIHN0b3JlIGRhdGEgYWJvdXQgTWF0aE1MIG5vZGVzLiBUaGlzIGlzIHRoZSBNYXRoTUwgZXF1aXZhbGVudFxuICogb2YgdGhlIHR5cGVzIGluIGRvbVRyZWUuanMuIFNpbmNlIE1hdGhNTCBoYW5kbGVzIGl0cyBvd24gcmVuZGVyaW5nLCBhbmRcbiAqIHNpbmNlIHdlJ3JlIG1haW5seSB1c2luZyBNYXRoTUwgdG8gaW1wcm92ZSBhY2Nlc3NpYmlsaXR5LCB3ZSBkb24ndCBtYW5hZ2VcbiAqIGFueSBvZiB0aGUgc3R5bGluZyBzdGF0ZSB0aGF0IHRoZSBwbGFpbiBET00gbm9kZXMgZG8uXG4gKlxuICogVGhlIGB0b05vZGVgIGFuZCBgdG9NYXJrdXBgIGZ1bmN0aW9ucyB3b3JrIHNpbWxhcmx5IHRvIGhvdyB0aGV5IGRvIGluXG4gKiBkb21UcmVlLmpzLCBjcmVhdGluZyBuYW1lc3BhY2VkIERPTSBub2RlcyBhbmQgSFRNTCB0ZXh0IG1hcmt1cCByZXNwZWN0aXZlbHkuXG4gKi9cblxuXG5mdW5jdGlvbiBuZXdEb2N1bWVudEZyYWdtZW50KGNoaWxkcmVuKSB7XG4gIHJldHVybiBuZXcgdHJlZV9Eb2N1bWVudEZyYWdtZW50KGNoaWxkcmVuKTtcbn1cbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBnZW5lcmFsIHB1cnBvc2UgTWF0aE1MIG5vZGUgb2YgYW55IHR5cGUuIFRoZVxuICogY29uc3RydWN0b3IgcmVxdWlyZXMgdGhlIHR5cGUgb2Ygbm9kZSB0byBjcmVhdGUgKGZvciBleGFtcGxlLCBgXCJtb1wiYCBvclxuICogYFwibXNwYWNlXCJgLCBjb3JyZXNwb25kaW5nIHRvIGA8bW8+YCBhbmQgYDxtc3BhY2U+YCB0YWdzKS5cbiAqL1xuXG52YXIgbWF0aE1MVHJlZV9NYXRoTm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1hdGhOb2RlKHR5cGUsIGNoaWxkcmVuKSB7XG4gICAgdGhpcy50eXBlID0gdm9pZCAwO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmNoaWxkcmVuID0gdm9pZCAwO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0ge307XG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICB9XG4gIC8qKlxuICAgKiBTZXRzIGFuIGF0dHJpYnV0ZSBvbiBhIE1hdGhNTCBub2RlLiBNYXRoTUwgZGVwZW5kcyBvbiBhdHRyaWJ1dGVzIHRvIGNvbnZleSBhXG4gICAqIHNlbWFudGljIGNvbnRlbnQsIHNvIHRoaXMgaXMgdXNlZCBoZWF2aWx5LlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBNYXRoTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkge1xuICAgIHRoaXMuYXR0cmlidXRlc1tuYW1lXSA9IHZhbHVlO1xuICB9XG4gIC8qKlxuICAgKiBHZXRzIGFuIGF0dHJpYnV0ZSBvbiBhIE1hdGhNTCBub2RlLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5nZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbbmFtZV07XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYXRoIG5vZGUgaW50byBhIE1hdGhNTC1uYW1lc3BhY2VkIERPTSBlbGVtZW50LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsIHRoaXMudHlwZSk7XG5cbiAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHIsIHRoaXMuYXR0cmlidXRlc1thdHRyXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlLmFwcGVuZENoaWxkKHRoaXMuY2hpbGRyZW5baV0udG9Ob2RlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgbWF0aCBub2RlIGludG8gYW4gSFRNTCBtYXJrdXAgc3RyaW5nLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHZhciBtYXJrdXAgPSBcIjxcIiArIHRoaXMudHlwZTsgLy8gQWRkIHRoZSBhdHRyaWJ1dGVzXG5cbiAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgIG1hcmt1cCArPSBcIiBcIiArIGF0dHIgKyBcIj1cXFwiXCI7XG4gICAgICAgIG1hcmt1cCArPSB1dGlscy5lc2NhcGUodGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgICAgbWFya3VwICs9IFwiXFxcIlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIj5cIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgbWFya3VwICs9IHRoaXMuY2hpbGRyZW5baV0udG9NYXJrdXAoKTtcbiAgICB9XG5cbiAgICBtYXJrdXAgKz0gXCI8L1wiICsgdGhpcy50eXBlICsgXCI+XCI7XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgc3RyaW5nLCBzaW1pbGFyIHRvIGlubmVyVGV4dCwgYnV0IGVzY2FwZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQudG9UZXh0KCk7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICByZXR1cm4gTWF0aE5vZGU7XG59KCk7XG4vKipcbiAqIFRoaXMgbm9kZSByZXByZXNlbnRzIGEgcGllY2Ugb2YgdGV4dC5cbiAqL1xuXG52YXIgbWF0aE1MVHJlZV9UZXh0Tm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRleHROb2RlKHRleHQpIHtcbiAgICB0aGlzLnRleHQgPSB2b2lkIDA7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHRleHQgbm9kZSBpbnRvIGEgRE9NIHRleHQgbm9kZS5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvMiA9IFRleHROb2RlLnByb3RvdHlwZTtcblxuICBfcHJvdG8yLnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy50ZXh0KTtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHRleHQgbm9kZSBpbnRvIGVzY2FwZWQgSFRNTCBtYXJrdXBcbiAgICogKHJlcHJlc2VudGluZyB0aGUgdGV4dCBpdHNlbGYpLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90bzIudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICByZXR1cm4gdXRpbHMuZXNjYXBlKHRoaXMudG9UZXh0KCkpO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgdGV4dCBub2RlIGludG8gYSBzdHJpbmdcbiAgICogKHJlcHJlc2VudGluZyB0aGUgdGV4dCBpdGVzZWxmKS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8yLnRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0O1xuICB9O1xuXG4gIHJldHVybiBUZXh0Tm9kZTtcbn0oKTtcbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBzcGFjZSwgYnV0IG1heSByZW5kZXIgYXMgPG1zcGFjZS4uLi8+IG9yIGFzIHRleHQsXG4gKiBkZXBlbmRpbmcgb24gdGhlIHdpZHRoLlxuICovXG5cbnZhciBTcGFjZU5vZGUgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgU3BhY2Ugbm9kZSB3aXRoIHdpZHRoIGdpdmVuIGluIENTUyBlbXMuXG4gICAqL1xuICBmdW5jdGlvbiBTcGFjZU5vZGUod2lkdGgpIHtcbiAgICB0aGlzLndpZHRoID0gdm9pZCAwO1xuICAgIHRoaXMuY2hhcmFjdGVyID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDsgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDAwL1dELU1hdGhNTDItMjAwMDAzMjgvY2hhcHRlcjYuaHRtbFxuICAgIC8vIGZvciBhIHRhYmxlIG9mIHNwYWNlLWxpa2UgY2hhcmFjdGVycy4gIFdlIHVzZSBVbmljb2RlXG4gICAgLy8gcmVwcmVzZW50YXRpb25zIGluc3RlYWQgb2YgJkxvbmdOYW1lczsgYXMgaXQncyBub3QgY2xlYXIgaG93IHRvXG4gICAgLy8gbWFrZSB0aGUgbGF0dGVyIHZpYSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZS5cblxuICAgIGlmICh3aWR0aCA+PSAwLjA1NTU1ICYmIHdpZHRoIDw9IDAuMDU1NTYpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDBBXCI7IC8vICZWZXJ5VGhpblNwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gMC4xNjY2ICYmIHdpZHRoIDw9IDAuMTY2Nykge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwMDlcIjsgLy8gJlRoaW5TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IDAuMjIyMiAmJiB3aWR0aCA8PSAwLjIyMjMpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDA1XCI7IC8vICZNZWRpdW1TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IDAuMjc3NyAmJiB3aWR0aCA8PSAwLjI3NzgpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDA1XFx1MjAwQVwiOyAvLyAmVGhpY2tTcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IC0wLjA1NTU2ICYmIHdpZHRoIDw9IC0wLjA1NTU1KSB7XG4gICAgICB0aGlzLmNoYXJhY3RlciA9IFwiXFx1MjAwQVxcdTIwNjNcIjsgLy8gJk5lZ2F0aXZlVmVyeVRoaW5TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IC0wLjE2NjcgJiYgd2lkdGggPD0gLTAuMTY2Nikge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwMDlcXHUyMDYzXCI7IC8vICZOZWdhdGl2ZVRoaW5TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IC0wLjIyMjMgJiYgd2lkdGggPD0gLTAuMjIyMikge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwNUZcXHUyMDYzXCI7IC8vICZOZWdhdGl2ZU1lZGl1bVNwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gLTAuMjc3OCAmJiB3aWR0aCA8PSAtMC4yNzc3KSB7XG4gICAgICB0aGlzLmNoYXJhY3RlciA9IFwiXFx1MjAwNVxcdTIwNjNcIjsgLy8gJk5lZ2F0aXZlVGhpY2tTcGFjZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgTWF0aE1MLW5hbWVzcGFjZWQgRE9NIGVsZW1lbnQuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90bzMgPSBTcGFjZU5vZGUucHJvdG90eXBlO1xuXG4gIF9wcm90bzMudG9Ob2RlID0gZnVuY3Rpb24gdG9Ob2RlKCkge1xuICAgIGlmICh0aGlzLmNoYXJhY3Rlcikge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuY2hhcmFjdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsIFwibXNwYWNlXCIpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCB0aGlzLndpZHRoICsgXCJlbVwiKTtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGFuIEhUTUwgbWFya3VwIHN0cmluZy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8zLnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgaWYgKHRoaXMuY2hhcmFjdGVyKSB7XG4gICAgICByZXR1cm4gXCI8bXRleHQ+XCIgKyB0aGlzLmNoYXJhY3RlciArIFwiPC9tdGV4dD5cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiPG1zcGFjZSB3aWR0aD1cXFwiXCIgKyB0aGlzLndpZHRoICsgXCJlbVxcXCIvPlwiO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgc3RyaW5nLCBzaW1pbGFyIHRvIGlubmVyVGV4dC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8zLnRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICBpZiAodGhpcy5jaGFyYWN0ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNoYXJhY3RlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiIFwiO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU3BhY2VOb2RlO1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtYXRoTUxUcmVlID0gKHtcbiAgTWF0aE5vZGU6IG1hdGhNTFRyZWVfTWF0aE5vZGUsXG4gIFRleHROb2RlOiBtYXRoTUxUcmVlX1RleHROb2RlLFxuICBTcGFjZU5vZGU6IFNwYWNlTm9kZSxcbiAgbmV3RG9jdW1lbnRGcmFnbWVudDogbmV3RG9jdW1lbnRGcmFnbWVudFxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9idWlsZE1hdGhNTC5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgY29udmVydHMgYSBwYXJzZSB0cmVlIGludG8gYSBjb29yZXNwb25kaW5nIE1hdGhNTCB0cmVlLiBUaGUgbWFpblxuICogZW50cnkgcG9pbnQgaXMgdGhlIGBidWlsZE1hdGhNTGAgZnVuY3Rpb24sIHdoaWNoIHRha2VzIGEgcGFyc2UgdHJlZSBmcm9tIHRoZVxuICogcGFyc2VyLlxuICovXG5cblxuXG5cblxuXG5cblxuXG4vKipcbiAqIFRha2VzIGEgc3ltYm9sIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgTWF0aE1MIHRleHQgbm9kZSBhZnRlciBwZXJmb3JtaW5nXG4gKiBvcHRpb25hbCByZXBsYWNlbWVudCBmcm9tIHN5bWJvbHMuanMuXG4gKi9cbnZhciBidWlsZE1hdGhNTF9tYWtlVGV4dCA9IGZ1bmN0aW9uIG1ha2VUZXh0KHRleHQsIG1vZGUsIG9wdGlvbnMpIHtcbiAgaWYgKHNyY19zeW1ib2xzW21vZGVdW3RleHRdICYmIHNyY19zeW1ib2xzW21vZGVdW3RleHRdLnJlcGxhY2UgJiYgdGV4dC5jaGFyQ29kZUF0KDApICE9PSAweEQ4MzUgJiYgIShsaWdhdHVyZXMuaGFzT3duUHJvcGVydHkodGV4dCkgJiYgb3B0aW9ucyAmJiAob3B0aW9ucy5mb250RmFtaWx5ICYmIG9wdGlvbnMuZm9udEZhbWlseS5zdWJzdHIoNCwgMikgPT09IFwidHRcIiB8fCBvcHRpb25zLmZvbnQgJiYgb3B0aW9ucy5mb250LnN1YnN0cig0LCAyKSA9PT0gXCJ0dFwiKSkpIHtcbiAgICB0ZXh0ID0gc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0ucmVwbGFjZTtcbiAgfVxuXG4gIHJldHVybiBuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZSh0ZXh0KTtcbn07XG4vKipcbiAqIFdyYXAgdGhlIGdpdmVuIGFycmF5IG9mIG5vZGVzIGluIGFuIDxtcm93PiBub2RlIGlmIG5lZWRlZCwgaS5lLixcbiAqIHVubGVzcyB0aGUgYXJyYXkgaGFzIGxlbmd0aCAxLiAgQWx3YXlzIHJldHVybnMgYSBzaW5nbGUgbm9kZS5cbiAqL1xuXG52YXIgYnVpbGRNYXRoTUxfbWFrZVJvdyA9IGZ1bmN0aW9uIG1ha2VSb3coYm9keSkge1xuICBpZiAoYm9keS5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gYm9keVswXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcm93XCIsIGJvZHkpO1xuICB9XG59O1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBtYXRoIHZhcmlhbnQgYXMgYSBzdHJpbmcgb3IgbnVsbCBpZiBub25lIGlzIHJlcXVpcmVkLlxuICovXG5cbnZhciBidWlsZE1hdGhNTF9nZXRWYXJpYW50ID0gZnVuY3Rpb24gZ2V0VmFyaWFudChncm91cCwgb3B0aW9ucykge1xuICAvLyBIYW5kbGUgXFx0ZXh0Li4uIGZvbnQgc3BlY2lmaWVycyBhcyBiZXN0IHdlIGNhbi5cbiAgLy8gTWF0aE1MIGhhcyBhIGxpbWl0ZWQgbGlzdCBvZiBhbGxvd2FibGUgbWF0aHZhcmlhbnQgc3BlY2lmaWVyczsgc2VlXG4gIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9NYXRoTUwzL2NoYXB0ZXIzLmh0bWwjcHJlc20uY29tbWF0dFxuICBpZiAob3B0aW9ucy5mb250RmFtaWx5ID09PSBcInRleHR0dFwiKSB7XG4gICAgcmV0dXJuIFwibW9ub3NwYWNlXCI7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5mb250RmFtaWx5ID09PSBcInRleHRzZlwiKSB7XG4gICAgaWYgKG9wdGlvbnMuZm9udFNoYXBlID09PSBcInRleHRpdFwiICYmIG9wdGlvbnMuZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgICAgcmV0dXJuIFwic2Fucy1zZXJpZi1ib2xkLWl0YWxpY1wiO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5mb250U2hhcGUgPT09IFwidGV4dGl0XCIpIHtcbiAgICAgIHJldHVybiBcInNhbnMtc2VyaWYtaXRhbGljXCI7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmZvbnRXZWlnaHQgPT09IFwidGV4dGJmXCIpIHtcbiAgICAgIHJldHVybiBcImJvbGQtc2Fucy1zZXJpZlwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJzYW5zLXNlcmlmXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMuZm9udFNoYXBlID09PSBcInRleHRpdFwiICYmIG9wdGlvbnMuZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgIHJldHVybiBcImJvbGQtaXRhbGljXCI7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5mb250U2hhcGUgPT09IFwidGV4dGl0XCIpIHtcbiAgICByZXR1cm4gXCJpdGFsaWNcIjtcbiAgfSBlbHNlIGlmIChvcHRpb25zLmZvbnRXZWlnaHQgPT09IFwidGV4dGJmXCIpIHtcbiAgICByZXR1cm4gXCJib2xkXCI7XG4gIH1cblxuICB2YXIgZm9udCA9IG9wdGlvbnMuZm9udDtcblxuICBpZiAoIWZvbnQgfHwgZm9udCA9PT0gXCJtYXRobm9ybWFsXCIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtb2RlID0gZ3JvdXAubW9kZTtcblxuICBpZiAoZm9udCA9PT0gXCJtYXRoaXRcIikge1xuICAgIHJldHVybiBcIml0YWxpY1wiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwiYm9sZHN5bWJvbFwiKSB7XG4gICAgcmV0dXJuIFwiYm9sZC1pdGFsaWNcIjtcbiAgfSBlbHNlIGlmIChmb250ID09PSBcIm1hdGhiZlwiKSB7XG4gICAgcmV0dXJuIFwiYm9sZFwiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWF0aGJiXCIpIHtcbiAgICByZXR1cm4gXCJkb3VibGUtc3RydWNrXCI7XG4gIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJtYXRoZnJha1wiKSB7XG4gICAgcmV0dXJuIFwiZnJha3R1clwiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWF0aHNjclwiIHx8IGZvbnQgPT09IFwibWF0aGNhbFwiKSB7XG4gICAgLy8gTWF0aE1MIG1ha2VzIG5vIGRpc3RpbmN0aW9uIGJldHdlZW4gc2NyaXB0IGFuZCBjYWxpZ3JhaHBpY1xuICAgIHJldHVybiBcInNjcmlwdFwiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWF0aHNmXCIpIHtcbiAgICByZXR1cm4gXCJzYW5zLXNlcmlmXCI7XG4gIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJtYXRodHRcIikge1xuICAgIHJldHVybiBcIm1vbm9zcGFjZVwiO1xuICB9XG5cbiAgdmFyIHRleHQgPSBncm91cC50ZXh0O1xuXG4gIGlmICh1dGlscy5jb250YWlucyhbXCJcXFxcaW1hdGhcIiwgXCJcXFxcam1hdGhcIl0sIHRleHQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0gJiYgc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0ucmVwbGFjZSkge1xuICAgIHRleHQgPSBzcmNfc3ltYm9sc1ttb2RlXVt0ZXh0XS5yZXBsYWNlO1xuICB9XG5cbiAgdmFyIGZvbnROYW1lID0gYnVpbGRDb21tb24uZm9udE1hcFtmb250XS5mb250TmFtZTtcblxuICBpZiAoZ2V0Q2hhcmFjdGVyTWV0cmljcyh0ZXh0LCBmb250TmFtZSwgbW9kZSkpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24uZm9udE1hcFtmb250XS52YXJpYW50O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuLyoqXG4gKiBUYWtlcyBhIGxpc3Qgb2Ygbm9kZXMsIGJ1aWxkcyB0aGVtLCBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgdGhlIGdlbmVyYXRlZFxuICogTWF0aE1MIG5vZGVzLiAgQWxzbyBjb21iaW5lIGNvbnNlY3V0aXZlIDxtdGV4dD4gb3V0cHV0cyBpbnRvIGEgc2luZ2xlXG4gKiA8bXRleHQ+IHRhZy5cbiAqL1xuXG52YXIgYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uID0gZnVuY3Rpb24gYnVpbGRFeHByZXNzaW9uKGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzT3JkZ3JvdXApIHtcbiAgaWYgKGV4cHJlc3Npb24ubGVuZ3RoID09PSAxKSB7XG4gICAgdmFyIGdyb3VwID0gYnVpbGRNYXRoTUxfYnVpbGRHcm91cChleHByZXNzaW9uWzBdLCBvcHRpb25zKTtcblxuICAgIGlmIChpc09yZGdyb3VwICYmIGdyb3VwIGluc3RhbmNlb2YgbWF0aE1MVHJlZV9NYXRoTm9kZSAmJiBncm91cC50eXBlID09PSBcIm1vXCIpIHtcbiAgICAgIC8vIFdoZW4gVGVYIHdyaXRlcnMgd2FudCB0byBzdXBwcmVzcyBzcGFjaW5nIG9uIGFuIG9wZXJhdG9yLFxuICAgICAgLy8gdGhleSBvZnRlbiBwdXQgdGhlIG9wZXJhdG9yIGJ5IGl0c2VsZiBpbnNpZGUgYnJhY2VzLlxuICAgICAgZ3JvdXAuc2V0QXR0cmlidXRlKFwibHNwYWNlXCIsIFwiMGVtXCIpO1xuICAgICAgZ3JvdXAuc2V0QXR0cmlidXRlKFwicnNwYWNlXCIsIFwiMGVtXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBbZ3JvdXBdO1xuICB9XG5cbiAgdmFyIGdyb3VwcyA9IFtdO1xuICB2YXIgbGFzdEdyb3VwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBfZ3JvdXAgPSBidWlsZE1hdGhNTF9idWlsZEdyb3VwKGV4cHJlc3Npb25baV0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKF9ncm91cCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfTWF0aE5vZGUgJiYgbGFzdEdyb3VwIGluc3RhbmNlb2YgbWF0aE1MVHJlZV9NYXRoTm9kZSkge1xuICAgICAgLy8gQ29uY2F0ZW5hdGUgYWRqYWNlbnQgPG10ZXh0PnNcbiAgICAgIGlmIChfZ3JvdXAudHlwZSA9PT0gJ210ZXh0JyAmJiBsYXN0R3JvdXAudHlwZSA9PT0gJ210ZXh0JyAmJiBfZ3JvdXAuZ2V0QXR0cmlidXRlKCdtYXRodmFyaWFudCcpID09PSBsYXN0R3JvdXAuZ2V0QXR0cmlidXRlKCdtYXRodmFyaWFudCcpKSB7XG4gICAgICAgIHZhciBfbGFzdEdyb3VwJGNoaWxkcmVuO1xuXG4gICAgICAgIChfbGFzdEdyb3VwJGNoaWxkcmVuID0gbGFzdEdyb3VwLmNoaWxkcmVuKS5wdXNoLmFwcGx5KF9sYXN0R3JvdXAkY2hpbGRyZW4sIF9ncm91cC5jaGlsZHJlbik7XG5cbiAgICAgICAgY29udGludWU7IC8vIENvbmNhdGVuYXRlIGFkamFjZW50IDxtbj5zXG4gICAgICB9IGVsc2UgaWYgKF9ncm91cC50eXBlID09PSAnbW4nICYmIGxhc3RHcm91cC50eXBlID09PSAnbW4nKSB7XG4gICAgICAgIHZhciBfbGFzdEdyb3VwJGNoaWxkcmVuMjtcblxuICAgICAgICAoX2xhc3RHcm91cCRjaGlsZHJlbjIgPSBsYXN0R3JvdXAuY2hpbGRyZW4pLnB1c2guYXBwbHkoX2xhc3RHcm91cCRjaGlsZHJlbjIsIF9ncm91cC5jaGlsZHJlbik7XG5cbiAgICAgICAgY29udGludWU7IC8vIENvbmNhdGVuYXRlIDxtbj4uLi48L21uPiBmb2xsb3dlZCBieSA8bWk+LjwvbWk+XG4gICAgICB9IGVsc2UgaWYgKF9ncm91cC50eXBlID09PSAnbWknICYmIF9ncm91cC5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgbGFzdEdyb3VwLnR5cGUgPT09ICdtbicpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gX2dyb3VwLmNoaWxkcmVuWzBdO1xuXG4gICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfVGV4dE5vZGUgJiYgY2hpbGQudGV4dCA9PT0gJy4nKSB7XG4gICAgICAgICAgdmFyIF9sYXN0R3JvdXAkY2hpbGRyZW4zO1xuXG4gICAgICAgICAgKF9sYXN0R3JvdXAkY2hpbGRyZW4zID0gbGFzdEdyb3VwLmNoaWxkcmVuKS5wdXNoLmFwcGx5KF9sYXN0R3JvdXAkY2hpbGRyZW4zLCBfZ3JvdXAuY2hpbGRyZW4pO1xuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobGFzdEdyb3VwLnR5cGUgPT09ICdtaScgJiYgbGFzdEdyb3VwLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB2YXIgbGFzdENoaWxkID0gbGFzdEdyb3VwLmNoaWxkcmVuWzBdO1xuXG4gICAgICAgIGlmIChsYXN0Q2hpbGQgaW5zdGFuY2VvZiBtYXRoTUxUcmVlX1RleHROb2RlICYmIGxhc3RDaGlsZC50ZXh0ID09PSBcIlxcdTAzMzhcIiAmJiAoX2dyb3VwLnR5cGUgPT09ICdtbycgfHwgX2dyb3VwLnR5cGUgPT09ICdtaScgfHwgX2dyb3VwLnR5cGUgPT09ICdtbicpKSB7XG4gICAgICAgICAgdmFyIF9jaGlsZCA9IF9ncm91cC5jaGlsZHJlblswXTtcblxuICAgICAgICAgIGlmIChfY2hpbGQgaW5zdGFuY2VvZiBtYXRoTUxUcmVlX1RleHROb2RlICYmIF9jaGlsZC50ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIE92ZXJsYXkgd2l0aCBjb21iaW5pbmcgY2hhcmFjdGVyIGxvbmcgc29saWR1c1xuICAgICAgICAgICAgX2NoaWxkLnRleHQgPSBfY2hpbGQudGV4dC5zbGljZSgwLCAxKSArIFwiXFx1MDMzOFwiICsgX2NoaWxkLnRleHQuc2xpY2UoMSk7XG4gICAgICAgICAgICBncm91cHMucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JvdXBzLnB1c2goX2dyb3VwKTtcbiAgICBsYXN0R3JvdXAgPSBfZ3JvdXA7XG4gIH1cblxuICByZXR1cm4gZ3JvdXBzO1xufTtcbi8qKlxuICogRXF1aXZhbGVudCB0byBidWlsZEV4cHJlc3Npb24sIGJ1dCB3cmFwcyB0aGUgZWxlbWVudHMgaW4gYW4gPG1yb3c+XG4gKiBpZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuICBSZXR1cm5zIGEgc2luZ2xlIG5vZGUgaW5zdGVhZCBvZiBhbiBhcnJheS5cbiAqL1xuXG52YXIgYnVpbGRFeHByZXNzaW9uUm93ID0gZnVuY3Rpb24gYnVpbGRFeHByZXNzaW9uUm93KGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzT3JkZ3JvdXApIHtcbiAgcmV0dXJuIGJ1aWxkTWF0aE1MX21ha2VSb3coYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzT3JkZ3JvdXApKTtcbn07XG4vKipcbiAqIFRha2VzIGEgZ3JvdXAgZnJvbSB0aGUgcGFyc2VyIGFuZCBjYWxscyB0aGUgYXBwcm9wcmlhdGUgZ3JvdXBCdWlsZGVycyBmdW5jdGlvblxuICogb24gaXQgdG8gcHJvZHVjZSBhIE1hdGhNTCBub2RlLlxuICovXG5cbnZhciBidWlsZE1hdGhNTF9idWlsZEdyb3VwID0gZnVuY3Rpb24gYnVpbGRHcm91cChncm91cCwgb3B0aW9ucykge1xuICBpZiAoIWdyb3VwKSB7XG4gICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXJvd1wiKTtcbiAgfVxuXG4gIGlmIChfbWF0aG1sR3JvdXBCdWlsZGVyc1tncm91cC50eXBlXSkge1xuICAgIC8vIENhbGwgdGhlIGdyb3VwQnVpbGRlcnMgZnVuY3Rpb25cbiAgICB2YXIgcmVzdWx0ID0gX21hdGhtbEdyb3VwQnVpbGRlcnNbZ3JvdXAudHlwZV0oZ3JvdXAsIG9wdGlvbnMpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiR290IGdyb3VwIG9mIHVua25vd24gdHlwZTogJ1wiICsgZ3JvdXAudHlwZSArIFwiJ1wiKTtcbiAgfVxufTtcbi8qKlxuICogVGFrZXMgYSBmdWxsIHBhcnNlIHRyZWUgYW5kIHNldHRpbmdzIGFuZCBidWlsZHMgYSBNYXRoTUwgcmVwcmVzZW50YXRpb24gb2ZcbiAqIGl0LiBJbiBwYXJ0aWN1bGFyLCB3ZSBwdXQgdGhlIGVsZW1lbnRzIGZyb20gYnVpbGRpbmcgdGhlIHBhcnNlIHRyZWUgaW50byBhXG4gKiA8c2VtYW50aWNzPiB0YWcgc28gd2UgY2FuIGFsc28gaW5jbHVkZSB0aGF0IFRlWCBzb3VyY2UgYXMgYW4gYW5ub3RhdGlvbi5cbiAqXG4gKiBOb3RlIHRoYXQgd2UgYWN0dWFsbHkgcmV0dXJuIGEgZG9tVHJlZSBlbGVtZW50IHdpdGggYSBgPG1hdGg+YCBpbnNpZGUgaXQgc29cbiAqIHdlIGNhbiBkbyBhcHByb3ByaWF0ZSBzdHlsaW5nLlxuICovXG5cbmZ1bmN0aW9uIGJ1aWxkTWF0aE1MKHRyZWUsIHRleEV4cHJlc3Npb24sIG9wdGlvbnMsIGZvck1hdGhtbE9ubHkpIHtcbiAgdmFyIGV4cHJlc3Npb24gPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24odHJlZSwgb3B0aW9ucyk7IC8vIFdyYXAgdXAgdGhlIGV4cHJlc3Npb24gaW4gYW4gbXJvdyBzbyBpdCBpcyBwcmVzZW50ZWQgaW4gdGhlIHNlbWFudGljc1xuICAvLyB0YWcgY29ycmVjdGx5LCB1bmxlc3MgaXQncyBhIHNpbmdsZSA8bXJvdz4gb3IgPG10YWJsZT4uXG5cbiAgdmFyIHdyYXBwZXI7XG5cbiAgaWYgKGV4cHJlc3Npb24ubGVuZ3RoID09PSAxICYmIGV4cHJlc3Npb25bMF0gaW5zdGFuY2VvZiBtYXRoTUxUcmVlX01hdGhOb2RlICYmIHV0aWxzLmNvbnRhaW5zKFtcIm1yb3dcIiwgXCJtdGFibGVcIl0sIGV4cHJlc3Npb25bMF0udHlwZSkpIHtcbiAgICB3cmFwcGVyID0gZXhwcmVzc2lvblswXTtcbiAgfSBlbHNlIHtcbiAgICB3cmFwcGVyID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcm93XCIsIGV4cHJlc3Npb24pO1xuICB9IC8vIEJ1aWxkIGEgVGVYIGFubm90YXRpb24gb2YgdGhlIHNvdXJjZVxuXG5cbiAgdmFyIGFubm90YXRpb24gPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcImFubm90YXRpb25cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKHRleEV4cHJlc3Npb24pXSk7XG4gIGFubm90YXRpb24uc2V0QXR0cmlidXRlKFwiZW5jb2RpbmdcIiwgXCJhcHBsaWNhdGlvbi94LXRleFwiKTtcbiAgdmFyIHNlbWFudGljcyA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwic2VtYW50aWNzXCIsIFt3cmFwcGVyLCBhbm5vdGF0aW9uXSk7XG4gIHZhciBtYXRoID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtYXRoXCIsIFtzZW1hbnRpY3NdKTtcbiAgbWF0aC5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLCBcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIik7IC8vIFlvdSBjYW4ndCBzdHlsZSA8bWF0aD4gbm9kZXMsIHNvIHdlIHdyYXAgdGhlIG5vZGUgaW4gYSBzcGFuLlxuICAvLyBOT1RFOiBUaGUgc3BhbiBjbGFzcyBpcyBub3QgdHlwZWQgdG8gaGF2ZSA8bWF0aD4gbm9kZXMgYXMgY2hpbGRyZW4sIGFuZFxuICAvLyB3ZSBkb24ndCB3YW50IHRvIG1ha2UgdGhlIGNoaWxkcmVuIHR5cGUgbW9yZSBnZW5lcmljIHNpbmNlIHRoZSBjaGlsZHJlblxuICAvLyBvZiBzcGFuIGFyZSBleHBlY3RlZCB0byBoYXZlIG1vcmUgZmllbGRzIGluIGBidWlsZEh0bWxgIGNvbnRleHRzLlxuXG4gIHZhciB3cmFwcGVyQ2xhc3MgPSBmb3JNYXRobWxPbmx5ID8gXCJrYXRleFwiIDogXCJrYXRleC1tYXRobWxcIjsgLy8gJEZsb3dGaXhNZVxuXG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3Bhbihbd3JhcHBlckNsYXNzXSwgW21hdGhdKTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2J1aWxkVHJlZS5qc1xuXG5cblxuXG5cblxuXG52YXIgYnVpbGRUcmVlX29wdGlvbnNGcm9tU2V0dGluZ3MgPSBmdW5jdGlvbiBvcHRpb25zRnJvbVNldHRpbmdzKHNldHRpbmdzKSB7XG4gIHJldHVybiBuZXcgc3JjX09wdGlvbnMoe1xuICAgIHN0eWxlOiBzZXR0aW5ncy5kaXNwbGF5TW9kZSA/IHNyY19TdHlsZS5ESVNQTEFZIDogc3JjX1N0eWxlLlRFWFQsXG4gICAgbWF4U2l6ZTogc2V0dGluZ3MubWF4U2l6ZSxcbiAgICBtaW5SdWxlVGhpY2tuZXNzOiBzZXR0aW5ncy5taW5SdWxlVGhpY2tuZXNzXG4gIH0pO1xufTtcblxudmFyIGJ1aWxkVHJlZV9kaXNwbGF5V3JhcCA9IGZ1bmN0aW9uIGRpc3BsYXlXcmFwKG5vZGUsIHNldHRpbmdzKSB7XG4gIGlmIChzZXR0aW5ncy5kaXNwbGF5TW9kZSkge1xuICAgIHZhciBjbGFzc2VzID0gW1wia2F0ZXgtZGlzcGxheVwiXTtcblxuICAgIGlmIChzZXR0aW5ncy5sZXFubykge1xuICAgICAgY2xhc3Nlcy5wdXNoKFwibGVxbm9cIik7XG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzLmZsZXFuKSB7XG4gICAgICBjbGFzc2VzLnB1c2goXCJmbGVxblwiKTtcbiAgICB9XG5cbiAgICBub2RlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oY2xhc3NlcywgW25vZGVdKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxudmFyIGJ1aWxkVHJlZV9idWlsZFRyZWUgPSBmdW5jdGlvbiBidWlsZFRyZWUodHJlZSwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpIHtcbiAgdmFyIG9wdGlvbnMgPSBidWlsZFRyZWVfb3B0aW9uc0Zyb21TZXR0aW5ncyhzZXR0aW5ncyk7XG4gIHZhciBrYXRleE5vZGU7XG5cbiAgaWYgKHNldHRpbmdzLm91dHB1dCA9PT0gXCJtYXRobWxcIikge1xuICAgIHJldHVybiBidWlsZE1hdGhNTCh0cmVlLCBleHByZXNzaW9uLCBvcHRpb25zLCB0cnVlKTtcbiAgfSBlbHNlIGlmIChzZXR0aW5ncy5vdXRwdXQgPT09IFwiaHRtbFwiKSB7XG4gICAgdmFyIGh0bWxOb2RlID0gYnVpbGRIVE1MKHRyZWUsIG9wdGlvbnMpO1xuICAgIGthdGV4Tm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImthdGV4XCJdLCBbaHRtbE5vZGVdKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbWF0aE1MTm9kZSA9IGJ1aWxkTWF0aE1MKHRyZWUsIGV4cHJlc3Npb24sIG9wdGlvbnMsIGZhbHNlKTtcblxuICAgIHZhciBfaHRtbE5vZGUgPSBidWlsZEhUTUwodHJlZSwgb3B0aW9ucyk7XG5cbiAgICBrYXRleE5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJrYXRleFwiXSwgW21hdGhNTE5vZGUsIF9odG1sTm9kZV0pO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkVHJlZV9kaXNwbGF5V3JhcChrYXRleE5vZGUsIHNldHRpbmdzKTtcbn07XG52YXIgYnVpbGRUcmVlX2J1aWxkSFRNTFRyZWUgPSBmdW5jdGlvbiBidWlsZEhUTUxUcmVlKHRyZWUsIGV4cHJlc3Npb24sIHNldHRpbmdzKSB7XG4gIHZhciBvcHRpb25zID0gYnVpbGRUcmVlX29wdGlvbnNGcm9tU2V0dGluZ3Moc2V0dGluZ3MpO1xuICB2YXIgaHRtbE5vZGUgPSBidWlsZEhUTUwodHJlZSwgb3B0aW9ucyk7XG4gIHZhciBrYXRleE5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJrYXRleFwiXSwgW2h0bWxOb2RlXSk7XG4gIHJldHVybiBidWlsZFRyZWVfZGlzcGxheVdyYXAoa2F0ZXhOb2RlLCBzZXR0aW5ncyk7XG59O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2J1aWxkVHJlZSA9IChidWlsZFRyZWVfYnVpbGRUcmVlKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3N0cmV0Y2h5LmpzXG4vKipcbiAqIFRoaXMgZmlsZSBwcm92aWRlcyBzdXBwb3J0IHRvIGJ1aWxkTWF0aE1MLmpzIGFuZCBidWlsZEhUTUwuanNcbiAqIGZvciBzdHJldGNoeSB3aWRlIGVsZW1lbnRzIHJlbmRlcmVkIGZyb20gU1ZHIGZpbGVzXG4gKiBhbmQgb3RoZXIgQ1NTIHRyaWNrZXJ5LlxuICovXG5cblxuXG5cbnZhciBzdHJldGNoeUNvZGVQb2ludCA9IHtcbiAgd2lkZWhhdDogXCJeXCIsXG4gIHdpZGVjaGVjazogXCLLh1wiLFxuICB3aWRldGlsZGU6IFwiflwiLFxuICB1dGlsZGU6IFwiflwiLFxuICBvdmVybGVmdGFycm93OiBcIlxcdTIxOTBcIixcbiAgdW5kZXJsZWZ0YXJyb3c6IFwiXFx1MjE5MFwiLFxuICB4bGVmdGFycm93OiBcIlxcdTIxOTBcIixcbiAgb3ZlcnJpZ2h0YXJyb3c6IFwiXFx1MjE5MlwiLFxuICB1bmRlcnJpZ2h0YXJyb3c6IFwiXFx1MjE5MlwiLFxuICB4cmlnaHRhcnJvdzogXCJcXHUyMTkyXCIsXG4gIHVuZGVyYnJhY2U6IFwiXFx1MjNERlwiLFxuICBvdmVyYnJhY2U6IFwiXFx1MjNERVwiLFxuICBvdmVyZ3JvdXA6IFwiXFx1MjNFMFwiLFxuICB1bmRlcmdyb3VwOiBcIlxcdTIzRTFcIixcbiAgb3ZlcmxlZnRyaWdodGFycm93OiBcIlxcdTIxOTRcIixcbiAgdW5kZXJsZWZ0cmlnaHRhcnJvdzogXCJcXHUyMTk0XCIsXG4gIHhsZWZ0cmlnaHRhcnJvdzogXCJcXHUyMTk0XCIsXG4gIE92ZXJyaWdodGFycm93OiBcIlxcdTIxRDJcIixcbiAgeFJpZ2h0YXJyb3c6IFwiXFx1MjFEMlwiLFxuICBvdmVybGVmdGhhcnBvb246IFwiXFx1MjFCQ1wiLFxuICB4bGVmdGhhcnBvb251cDogXCJcXHUyMUJDXCIsXG4gIG92ZXJyaWdodGhhcnBvb246IFwiXFx1MjFDMFwiLFxuICB4cmlnaHRoYXJwb29udXA6IFwiXFx1MjFDMFwiLFxuICB4TGVmdGFycm93OiBcIlxcdTIxRDBcIixcbiAgeExlZnRyaWdodGFycm93OiBcIlxcdTIxRDRcIixcbiAgeGhvb2tsZWZ0YXJyb3c6IFwiXFx1MjFBOVwiLFxuICB4aG9va3JpZ2h0YXJyb3c6IFwiXFx1MjFBQVwiLFxuICB4bWFwc3RvOiBcIlxcdTIxQTZcIixcbiAgeHJpZ2h0aGFycG9vbmRvd246IFwiXFx1MjFDMVwiLFxuICB4bGVmdGhhcnBvb25kb3duOiBcIlxcdTIxQkRcIixcbiAgeHJpZ2h0bGVmdGhhcnBvb25zOiBcIlxcdTIxQ0NcIixcbiAgeGxlZnRyaWdodGhhcnBvb25zOiBcIlxcdTIxQ0JcIixcbiAgeHR3b2hlYWRsZWZ0YXJyb3c6IFwiXFx1MjE5RVwiLFxuICB4dHdvaGVhZHJpZ2h0YXJyb3c6IFwiXFx1MjFBMFwiLFxuICB4bG9uZ2VxdWFsOiBcIj1cIixcbiAgeHRvZnJvbTogXCJcXHUyMUM0XCIsXG4gIHhyaWdodGxlZnRhcnJvd3M6IFwiXFx1MjFDNFwiLFxuICB4cmlnaHRlcXVpbGlicml1bTogXCJcXHUyMUNDXCIsXG4gIC8vIE5vdCBhIHBlcmZlY3QgbWF0Y2guXG4gIHhsZWZ0ZXF1aWxpYnJpdW06IFwiXFx1MjFDQlwiIC8vIE5vbmUgYmV0dGVyIGF2YWlsYWJsZS5cblxufTtcblxudmFyIHN0cmV0Y2h5X21hdGhNTG5vZGUgPSBmdW5jdGlvbiBtYXRoTUxub2RlKGxhYmVsKSB7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbbmV3IG1hdGhNTFRyZWUuVGV4dE5vZGUoc3RyZXRjaHlDb2RlUG9pbnRbbGFiZWwuc3Vic3RyKDEpXSldKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcInRydWVcIik7XG4gIHJldHVybiBub2RlO1xufTsgLy8gTWFueSBvZiB0aGUgS2FUZVggU1ZHIGltYWdlcyBoYXZlIGJlZW4gYWRhcHRlZCBmcm9tIGdseXBocyBpbiBLYVRlWCBmb250cy5cbi8vIENvcHlyaWdodCAoYykgMjAwOS0yMDEwLCBEZXNpZ24gU2NpZW5jZSwgSW5jLiAoPHd3dy5tYXRoamF4Lm9yZz4pXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNyBLaGFuIEFjYWRlbXkgKDx3d3cua2hhbmFjYWRlbXkub3JnPilcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UsIFZlcnNpb24gMS4xLlxuLy8gU2VlIFxcbmh0dHA6Ly9zY3JpcHRzLnNpbC5vcmcvT0ZMXG4vLyBWZXJ5IExvbmcgU1ZHc1xuLy8gICAgTWFueSBvZiB0aGUgS2FUZVggc3RyZXRjaHkgd2lkZSBlbGVtZW50cyB1c2UgYSBsb25nIFNWRyBpbWFnZSBhbmQgYW5cbi8vICAgIG92ZXJmbG93OiBoaWRkZW4gdGFjdGljIHRvIGFjaGlldmUgYSBzdHJldGNoeSBpbWFnZSB3aGlsZSBhdm9pZGluZ1xuLy8gICAgZGlzdG9ydGlvbiBvZiBhcnJvd2hlYWRzIG9yIGJyYWNlIGNvcm5lcnMuXG4vLyAgICBUaGUgU1ZHIHR5cGljYWxseSBjb250YWlucyBhIHZlcnkgbG9uZyAoNDAwIGVtKSBhcnJvdy5cbi8vICAgIFRoZSBTVkcgaXMgaW4gYSBjb250YWluZXIgc3BhbiB0aGF0IGhhcyBvdmVyZmxvdzogaGlkZGVuLCBzbyB0aGUgc3BhblxuLy8gICAgYWN0cyBsaWtlIGEgd2luZG93IHRoYXQgZXhwb3NlcyBvbmx5IHBhcnQgb2YgdGhlICBTVkcuXG4vLyAgICBUaGUgU1ZHIGFsd2F5cyBoYXMgYSBsb25nZXIsIHRoaW5uZXIgYXNwZWN0IHJhdGlvIHRoYW4gdGhlIGNvbnRhaW5lciBzcGFuLlxuLy8gICAgQWZ0ZXIgdGhlIFNWRyBmaWxscyAxMDAlIG9mIHRoZSBoZWlnaHQgb2YgdGhlIGNvbnRhaW5lciBzcGFuLFxuLy8gICAgdGhlcmUgaXMgYSBsb25nIGFycm93IHNoYWZ0IGxlZnQgb3Zlci4gVGhhdCBsZWZ0LW92ZXIgc2hhZnQgaXMgbm90IHNob3duLlxuLy8gICAgSW5zdGVhZCwgaXQgaXMgc2xpY2VkIG9mZiBiZWNhdXNlIHRoZSBzcGFuJ3MgQ1NTIGhhcyBvdmVyZmxvdzogaGlkZGVuLlxuLy8gICAgVGh1cywgdGhlIHJlYWRlciBzZWVzIGFuIGFycm93IHRoYXQgbWF0Y2hlcyB0aGUgc3ViamVjdCBtYXR0ZXIgd2lkdGhcbi8vICAgIHdpdGhvdXQgZGlzdG9ydGlvbi5cbi8vICAgIFNvbWUgZnVuY3Rpb25zLCBzdWNoIGFzIFxcY2FuY2VsLCBuZWVkIHRvIHZhcnkgdGhlaXIgYXNwZWN0IHJhdGlvLiBUaGVzZVxuLy8gICAgZnVuY3Rpb25zIGRvIG5vdCBnZXQgdGhlIG92ZXJmbG93IFNWRyB0cmVhdG1lbnQuXG4vLyBTZWNvbmQgQnJ1c2ggU3Ryb2tlXG4vLyAgICBMb3cgcmVzb2x1dGlvbiBtb25pdG9ycyBzdHJ1Z2dsZSB0byBkaXNwbGF5IGltYWdlcyBpbiBmaW5lIGRldGFpbC5cbi8vICAgIFNvIGJyb3dzZXJzIGFwcGx5IGFudGktYWxpYXNpbmcuIEEgbG9uZyBzdHJhaWdodCBhcnJvdyBzaGFmdCB0aGVyZWZvcmVcbi8vICAgIHdpbGwgc29tZXRpbWVzIGFwcGVhciBhcyBpZiBpdCBoYXMgYSBibHVycmVkIGVkZ2UuXG4vLyAgICBUbyBtaXRpZ2F0ZSB0aGlzLCB0aGVzZSBTVkcgZmlsZXMgY29udGFpbiBhIHNlY29uZCBcImJydXNoLXN0cm9rZVwiIG9uIHRoZVxuLy8gICAgYXJyb3cgc2hhZnRzLiBUaGF0IGlzLCBhIHNlY29uZCBsb25nIHRoaW4gcmVjdGFuZ3VsYXIgU1ZHIHBhdGggaGFzIGJlZW5cbi8vICAgIHdyaXR0ZW4gZGlyZWN0bHkgb24gdG9wIG9mIGVhY2ggYXJyb3cgc2hhZnQuIFRoaXMgcmVpbmZvcmNlbWVudCBjYXVzZXNcbi8vICAgIHNvbWUgb2YgdGhlIHNjcmVlbiBwaXhlbHMgdG8gZGlzcGxheSBhcyBibGFjayBpbnN0ZWFkIG9mIHRoZSBhbnRpLWFsaWFzZWRcbi8vICAgIGdyYXkgcGl4ZWwgdGhhdCBhICBzaW5nbGUgcGF0aCB3b3VsZCBnZW5lcmF0ZS4gU28gd2UgZ2V0IGFycm93IHNoYWZ0c1xuLy8gICAgd2hvc2UgZWRnZXMgYXBwZWFyIHRvIGJlIHNoYXJwZXIuXG4vLyBJbiB0aGUga2F0ZXhJbWFnZXNEYXRhIG9iamVjdCBqdXN0IGJlbG93LCB0aGUgZGltZW5zaW9ucyBhbGxcbi8vIGNvcnJlc3BvbmQgdG8gcGF0aCBnZW9tZXRyeSBpbnNpZGUgdGhlIHJlbGV2YW50IFNWRy5cbi8vIEZvciBleGFtcGxlLCBcXG92ZXJyaWdodGFycm93IHVzZXMgdGhlIHNhbWUgYXJyb3doZWFkIGFzIGdseXBoIFUrMjE5MlxuLy8gZnJvbSB0aGUgS2FUZVggTWFpbiBmb250LiBUaGUgc2NhbGluZyBmYWN0b3IgaXMgMTAwMC5cbi8vIFRoYXQgaXMsIGluc2lkZSB0aGUgZm9udCwgdGhhdCBhcnJvd2hlYWQgaXMgNTIyIHVuaXRzIHRhbGwsIHdoaWNoXG4vLyBjb3JyZXNwb25kcyB0byAwLjUyMiBlbSBpbnNpZGUgdGhlIGRvY3VtZW50LlxuXG5cbnZhciBrYXRleEltYWdlc0RhdGEgPSB7XG4gIC8vICAgcGF0aChzKSwgbWluV2lkdGgsIGhlaWdodCwgYWxpZ25cbiAgb3ZlcnJpZ2h0YXJyb3c6IFtbXCJyaWdodGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICBvdmVybGVmdGFycm93OiBbW1wibGVmdGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNaW5ZTWluXCJdLFxuICB1bmRlcnJpZ2h0YXJyb3c6IFtbXCJyaWdodGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICB1bmRlcmxlZnRhcnJvdzogW1tcImxlZnRhcnJvd1wiXSwgMC44ODgsIDUyMiwgXCJ4TWluWU1pblwiXSxcbiAgeHJpZ2h0YXJyb3c6IFtbXCJyaWdodGFycm93XCJdLCAxLjQ2OSwgNTIyLCBcInhNYXhZTWluXCJdLFxuICB4bGVmdGFycm93OiBbW1wibGVmdGFycm93XCJdLCAxLjQ2OSwgNTIyLCBcInhNaW5ZTWluXCJdLFxuICBPdmVycmlnaHRhcnJvdzogW1tcImRvdWJsZXJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1NjAsIFwieE1heFlNaW5cIl0sXG4gIHhSaWdodGFycm93OiBbW1wiZG91YmxlcmlnaHRhcnJvd1wiXSwgMS41MjYsIDU2MCwgXCJ4TWF4WU1pblwiXSxcbiAgeExlZnRhcnJvdzogW1tcImRvdWJsZWxlZnRhcnJvd1wiXSwgMS41MjYsIDU2MCwgXCJ4TWluWU1pblwiXSxcbiAgb3ZlcmxlZnRoYXJwb29uOiBbW1wibGVmdGhhcnBvb25cIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIHhsZWZ0aGFycG9vbnVwOiBbW1wibGVmdGhhcnBvb25cIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIHhsZWZ0aGFycG9vbmRvd246IFtbXCJsZWZ0aGFycG9vbmRvd25cIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIG92ZXJyaWdodGhhcnBvb246IFtbXCJyaWdodGhhcnBvb25cIl0sIDAuODg4LCA1MjIsIFwieE1heFlNaW5cIl0sXG4gIHhyaWdodGhhcnBvb251cDogW1tcInJpZ2h0aGFycG9vblwiXSwgMC44ODgsIDUyMiwgXCJ4TWF4WU1pblwiXSxcbiAgeHJpZ2h0aGFycG9vbmRvd246IFtbXCJyaWdodGhhcnBvb25kb3duXCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICB4bG9uZ2VxdWFsOiBbW1wibG9uZ2VxdWFsXCJdLCAwLjg4OCwgMzM0LCBcInhNaW5ZTWluXCJdLFxuICB4dHdvaGVhZGxlZnRhcnJvdzogW1tcInR3b2hlYWRsZWZ0YXJyb3dcIl0sIDAuODg4LCAzMzQsIFwieE1pbllNaW5cIl0sXG4gIHh0d29oZWFkcmlnaHRhcnJvdzogW1tcInR3b2hlYWRyaWdodGFycm93XCJdLCAwLjg4OCwgMzM0LCBcInhNYXhZTWluXCJdLFxuICBvdmVybGVmdHJpZ2h0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIiwgXCJyaWdodGFycm93XCJdLCAwLjg4OCwgNTIyXSxcbiAgb3ZlcmJyYWNlOiBbW1wibGVmdGJyYWNlXCIsIFwibWlkYnJhY2VcIiwgXCJyaWdodGJyYWNlXCJdLCAxLjYsIDU0OF0sXG4gIHVuZGVyYnJhY2U6IFtbXCJsZWZ0YnJhY2V1bmRlclwiLCBcIm1pZGJyYWNldW5kZXJcIiwgXCJyaWdodGJyYWNldW5kZXJcIl0sIDEuNiwgNTQ4XSxcbiAgdW5kZXJsZWZ0cmlnaHRhcnJvdzogW1tcImxlZnRhcnJvd1wiLCBcInJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1MjJdLFxuICB4bGVmdHJpZ2h0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIiwgXCJyaWdodGFycm93XCJdLCAxLjc1LCA1MjJdLFxuICB4TGVmdHJpZ2h0YXJyb3c6IFtbXCJkb3VibGVsZWZ0YXJyb3dcIiwgXCJkb3VibGVyaWdodGFycm93XCJdLCAxLjc1LCA1NjBdLFxuICB4cmlnaHRsZWZ0aGFycG9vbnM6IFtbXCJsZWZ0aGFycG9vbmRvd25wbHVzXCIsIFwicmlnaHRoYXJwb29ucGx1c1wiXSwgMS43NSwgNzE2XSxcbiAgeGxlZnRyaWdodGhhcnBvb25zOiBbW1wibGVmdGhhcnBvb25wbHVzXCIsIFwicmlnaHRoYXJwb29uZG93bnBsdXNcIl0sIDEuNzUsIDcxNl0sXG4gIHhob29rbGVmdGFycm93OiBbW1wibGVmdGFycm93XCIsIFwicmlnaHRob29rXCJdLCAxLjA4LCA1MjJdLFxuICB4aG9va3JpZ2h0YXJyb3c6IFtbXCJsZWZ0aG9va1wiLCBcInJpZ2h0YXJyb3dcIl0sIDEuMDgsIDUyMl0sXG4gIG92ZXJsaW5lc2VnbWVudDogW1tcImxlZnRsaW5lc2VnbWVudFwiLCBcInJpZ2h0bGluZXNlZ21lbnRcIl0sIDAuODg4LCA1MjJdLFxuICB1bmRlcmxpbmVzZWdtZW50OiBbW1wibGVmdGxpbmVzZWdtZW50XCIsIFwicmlnaHRsaW5lc2VnbWVudFwiXSwgMC44ODgsIDUyMl0sXG4gIG92ZXJncm91cDogW1tcImxlZnRncm91cFwiLCBcInJpZ2h0Z3JvdXBcIl0sIDAuODg4LCAzNDJdLFxuICB1bmRlcmdyb3VwOiBbW1wibGVmdGdyb3VwdW5kZXJcIiwgXCJyaWdodGdyb3VwdW5kZXJcIl0sIDAuODg4LCAzNDJdLFxuICB4bWFwc3RvOiBbW1wibGVmdG1hcHN0b1wiLCBcInJpZ2h0YXJyb3dcIl0sIDEuNSwgNTIyXSxcbiAgeHRvZnJvbTogW1tcImxlZnRUb0Zyb21cIiwgXCJyaWdodFRvRnJvbVwiXSwgMS43NSwgNTI4XSxcbiAgLy8gVGhlIG5leHQgdGhyZWUgYXJyb3dzIGFyZSBmcm9tIHRoZSBtaGNoZW0gcGFja2FnZS5cbiAgLy8gSW4gbWhjaGVtLnN0eSwgbWluLWxlbmd0aCBpcyAyLjBlbS4gQnV0IHRoZXNlIGFycm93cyBtaWdodCBhcHBlYXIgaW4gdGhlXG4gIC8vIGRvY3VtZW50IGFzIFxceHJpZ2h0YXJyb3cgb3IgXFx4cmlnaHRsZWZ0aGFycG9vbnMuIFRob3NlIGhhdmVcbiAgLy8gbWluLWxlbmd0aCA9IDEuNzVlbSwgc28gd2Ugc2V0IG1pbi1sZW5ndGggb24gdGhlc2UgbmV4dCB0aHJlZSB0byBtYXRjaC5cbiAgeHJpZ2h0bGVmdGFycm93czogW1tcImJhcmFib3ZlbGVmdGFycm93XCIsIFwicmlnaHRhcnJvd2Fib3ZlYmFyXCJdLCAxLjc1LCA5MDFdLFxuICB4cmlnaHRlcXVpbGlicml1bTogW1tcImJhcmFib3Zlc2hvcnRsZWZ0aGFycG9vblwiLCBcInJpZ2h0aGFycG9vbmFib3Zlc2hvcnRiYXJcIl0sIDEuNzUsIDcxNl0sXG4gIHhsZWZ0ZXF1aWxpYnJpdW06IFtbXCJzaG9ydGJhcmFib3ZlbGVmdGhhcnBvb25cIiwgXCJzaG9ydHJpZ2h0aGFycG9vbmFib3ZlYmFyXCJdLCAxLjc1LCA3MTZdXG59O1xuXG52YXIgZ3JvdXBMZW5ndGggPSBmdW5jdGlvbiBncm91cExlbmd0aChhcmcpIHtcbiAgaWYgKGFyZy50eXBlID09PSBcIm9yZGdyb3VwXCIpIHtcbiAgICByZXR1cm4gYXJnLmJvZHkubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59O1xuXG52YXIgc3RyZXRjaHlfc3ZnU3BhbiA9IGZ1bmN0aW9uIHN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpIHtcbiAgLy8gQ3JlYXRlIGEgc3BhbiB3aXRoIGlubGluZSBTVkcgZm9yIHRoZSBlbGVtZW50LlxuICBmdW5jdGlvbiBidWlsZFN2Z1NwYW5fKCkge1xuICAgIHZhciB2aWV3Qm94V2lkdGggPSA0MDAwMDA7IC8vIGRlZmF1bHRcblxuICAgIHZhciBsYWJlbCA9IGdyb3VwLmxhYmVsLnN1YnN0cigxKTtcblxuICAgIGlmICh1dGlscy5jb250YWlucyhbXCJ3aWRlaGF0XCIsIFwid2lkZWNoZWNrXCIsIFwid2lkZXRpbGRlXCIsIFwidXRpbGRlXCJdLCBsYWJlbCkpIHtcbiAgICAgIC8vIEVhY2ggdHlwZSBpbiB0aGUgYGlmYCBzdGF0ZW1lbnQgY29ycmVzcG9uZHMgdG8gb25lIG9mIHRoZSBQYXJzZU5vZGVcbiAgICAgIC8vIHR5cGVzIGJlbG93LiBUaGlzIG5hcnJvd2luZyBpcyByZXF1aXJlZCB0byBhY2Nlc3MgYGdycC5iYXNlYC5cbiAgICAgIHZhciBncnAgPSBncm91cDsgLy8gVGhlcmUgYXJlIGZvdXIgU1ZHIGltYWdlcyBhdmFpbGFibGUgZm9yIGVhY2ggZnVuY3Rpb24uXG4gICAgICAvLyBDaG9vc2UgYSB0YWxsZXIgaW1hZ2Ugd2hlbiB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0ZXJzLlxuXG4gICAgICB2YXIgbnVtQ2hhcnMgPSBncm91cExlbmd0aChncnAuYmFzZSk7XG4gICAgICB2YXIgdmlld0JveEhlaWdodDtcbiAgICAgIHZhciBwYXRoTmFtZTtcblxuICAgICAgdmFyIF9oZWlnaHQ7XG5cbiAgICAgIGlmIChudW1DaGFycyA+IDUpIHtcbiAgICAgICAgaWYgKGxhYmVsID09PSBcIndpZGVoYXRcIiB8fCBsYWJlbCA9PT0gXCJ3aWRlY2hlY2tcIikge1xuICAgICAgICAgIHZpZXdCb3hIZWlnaHQgPSA0MjA7XG4gICAgICAgICAgdmlld0JveFdpZHRoID0gMjM2NDtcbiAgICAgICAgICBfaGVpZ2h0ID0gMC40MjtcbiAgICAgICAgICBwYXRoTmFtZSA9IGxhYmVsICsgXCI0XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlld0JveEhlaWdodCA9IDMxMjtcbiAgICAgICAgICB2aWV3Qm94V2lkdGggPSAyMzQwO1xuICAgICAgICAgIF9oZWlnaHQgPSAwLjM0O1xuICAgICAgICAgIHBhdGhOYW1lID0gXCJ0aWxkZTRcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGltZ0luZGV4ID0gWzEsIDEsIDIsIDIsIDMsIDNdW251bUNoYXJzXTtcblxuICAgICAgICBpZiAobGFiZWwgPT09IFwid2lkZWhhdFwiIHx8IGxhYmVsID09PSBcIndpZGVjaGVja1wiKSB7XG4gICAgICAgICAgdmlld0JveFdpZHRoID0gWzAsIDEwNjIsIDIzNjQsIDIzNjQsIDIzNjRdW2ltZ0luZGV4XTtcbiAgICAgICAgICB2aWV3Qm94SGVpZ2h0ID0gWzAsIDIzOSwgMzAwLCAzNjAsIDQyMF1baW1nSW5kZXhdO1xuICAgICAgICAgIF9oZWlnaHQgPSBbMCwgMC4yNCwgMC4zLCAwLjMsIDAuMzYsIDAuNDJdW2ltZ0luZGV4XTtcbiAgICAgICAgICBwYXRoTmFtZSA9IGxhYmVsICsgaW1nSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlld0JveFdpZHRoID0gWzAsIDYwMCwgMTAzMywgMjMzOSwgMjM0MF1baW1nSW5kZXhdO1xuICAgICAgICAgIHZpZXdCb3hIZWlnaHQgPSBbMCwgMjYwLCAyODYsIDMwNiwgMzEyXVtpbWdJbmRleF07XG4gICAgICAgICAgX2hlaWdodCA9IFswLCAwLjI2LCAwLjI4NiwgMC4zLCAwLjMwNiwgMC4zNF1baW1nSW5kZXhdO1xuICAgICAgICAgIHBhdGhOYW1lID0gXCJ0aWxkZVwiICsgaW1nSW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHBhdGggPSBuZXcgZG9tVHJlZV9QYXRoTm9kZShwYXRoTmFtZSk7XG4gICAgICB2YXIgc3ZnTm9kZSA9IG5ldyBTdmdOb2RlKFtwYXRoXSwge1xuICAgICAgICBcIndpZHRoXCI6IFwiMTAwJVwiLFxuICAgICAgICBcImhlaWdodFwiOiBfaGVpZ2h0ICsgXCJlbVwiLFxuICAgICAgICBcInZpZXdCb3hcIjogXCIwIDAgXCIgKyB2aWV3Qm94V2lkdGggKyBcIiBcIiArIHZpZXdCb3hIZWlnaHQsXG4gICAgICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBcIm5vbmVcIlxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzcGFuOiBidWlsZENvbW1vbi5tYWtlU3ZnU3BhbihbXSwgW3N2Z05vZGVdLCBvcHRpb25zKSxcbiAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogX2hlaWdodFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHNwYW5zID0gW107XG4gICAgICB2YXIgZGF0YSA9IGthdGV4SW1hZ2VzRGF0YVtsYWJlbF07XG4gICAgICB2YXIgcGF0aHMgPSBkYXRhWzBdLFxuICAgICAgICAgIF9taW5XaWR0aCA9IGRhdGFbMV0sXG4gICAgICAgICAgX3ZpZXdCb3hIZWlnaHQgPSBkYXRhWzJdO1xuXG4gICAgICB2YXIgX2hlaWdodDIgPSBfdmlld0JveEhlaWdodCAvIDEwMDA7XG5cbiAgICAgIHZhciBudW1TdmdDaGlsZHJlbiA9IHBhdGhzLmxlbmd0aDtcbiAgICAgIHZhciB3aWR0aENsYXNzZXM7XG4gICAgICB2YXIgYWxpZ25zO1xuXG4gICAgICBpZiAobnVtU3ZnQ2hpbGRyZW4gPT09IDEpIHtcbiAgICAgICAgLy8gJEZsb3dGaXhNZTogQWxsIHRoZXNlIGNhc2VzIG11c3QgYmUgb2YgdGhlIDQtdHVwbGUgdHlwZS5cbiAgICAgICAgdmFyIGFsaWduMSA9IGRhdGFbM107XG4gICAgICAgIHdpZHRoQ2xhc3NlcyA9IFtcImhpZGUtdGFpbFwiXTtcbiAgICAgICAgYWxpZ25zID0gW2FsaWduMV07XG4gICAgICB9IGVsc2UgaWYgKG51bVN2Z0NoaWxkcmVuID09PSAyKSB7XG4gICAgICAgIHdpZHRoQ2xhc3NlcyA9IFtcImhhbGZhcnJvdy1sZWZ0XCIsIFwiaGFsZmFycm93LXJpZ2h0XCJdO1xuICAgICAgICBhbGlnbnMgPSBbXCJ4TWluWU1pblwiLCBcInhNYXhZTWluXCJdO1xuICAgICAgfSBlbHNlIGlmIChudW1TdmdDaGlsZHJlbiA9PT0gMykge1xuICAgICAgICB3aWR0aENsYXNzZXMgPSBbXCJicmFjZS1sZWZ0XCIsIFwiYnJhY2UtY2VudGVyXCIsIFwiYnJhY2UtcmlnaHRcIl07XG4gICAgICAgIGFsaWducyA9IFtcInhNaW5ZTWluXCIsIFwieE1pZFlNaW5cIiwgXCJ4TWF4WU1pblwiXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvcnJlY3Qga2F0ZXhJbWFnZXNEYXRhIG9yIHVwZGF0ZSBjb2RlIGhlcmUgdG8gc3VwcG9ydFxcbiAgICAgICAgICAgICAgICAgICAgXCIgKyBudW1TdmdDaGlsZHJlbiArIFwiIGNoaWxkcmVuLlwiKTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1TdmdDaGlsZHJlbjsgaSsrKSB7XG4gICAgICAgIHZhciBfcGF0aCA9IG5ldyBkb21UcmVlX1BhdGhOb2RlKHBhdGhzW2ldKTtcblxuICAgICAgICB2YXIgX3N2Z05vZGUgPSBuZXcgU3ZnTm9kZShbX3BhdGhdLCB7XG4gICAgICAgICAgXCJ3aWR0aFwiOiBcIjQwMGVtXCIsXG4gICAgICAgICAgXCJoZWlnaHRcIjogX2hlaWdodDIgKyBcImVtXCIsXG4gICAgICAgICAgXCJ2aWV3Qm94XCI6IFwiMCAwIFwiICsgdmlld0JveFdpZHRoICsgXCIgXCIgKyBfdmlld0JveEhlaWdodCxcbiAgICAgICAgICBcInByZXNlcnZlQXNwZWN0UmF0aW9cIjogYWxpZ25zW2ldICsgXCIgc2xpY2VcIlxuICAgICAgICB9KTtcblxuICAgICAgICB2YXIgX3NwYW4gPSBidWlsZENvbW1vbi5tYWtlU3ZnU3Bhbihbd2lkdGhDbGFzc2VzW2ldXSwgW19zdmdOb2RlXSwgb3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKG51bVN2Z0NoaWxkcmVuID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNwYW46IF9zcGFuLFxuICAgICAgICAgICAgbWluV2lkdGg6IF9taW5XaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogX2hlaWdodDJcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF9zcGFuLnN0eWxlLmhlaWdodCA9IF9oZWlnaHQyICsgXCJlbVwiO1xuICAgICAgICAgIHNwYW5zLnB1c2goX3NwYW4pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNwYW46IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcInN0cmV0Y2h5XCJdLCBzcGFucywgb3B0aW9ucyksXG4gICAgICAgIG1pbldpZHRoOiBfbWluV2lkdGgsXG4gICAgICAgIGhlaWdodDogX2hlaWdodDJcbiAgICAgIH07XG4gICAgfVxuICB9IC8vIGJ1aWxkU3ZnU3Bhbl8oKVxuXG5cbiAgdmFyIF9idWlsZFN2Z1NwYW5fID0gYnVpbGRTdmdTcGFuXygpLFxuICAgICAgc3BhbiA9IF9idWlsZFN2Z1NwYW5fLnNwYW4sXG4gICAgICBtaW5XaWR0aCA9IF9idWlsZFN2Z1NwYW5fLm1pbldpZHRoLFxuICAgICAgaGVpZ2h0ID0gX2J1aWxkU3ZnU3Bhbl8uaGVpZ2h0OyAvLyBOb3RlIHRoYXQgd2UgYXJlIHJldHVybmluZyBzcGFuLmRlcHRoID0gMC5cbiAgLy8gQW55IGFkanVzdG1lbnRzIHJlbGF0aXZlIHRvIHRoZSBiYXNlbGluZSBtdXN0IGJlIGRvbmUgaW4gYnVpbGRIVE1MLlxuXG5cbiAgc3Bhbi5oZWlnaHQgPSBoZWlnaHQ7XG4gIHNwYW4uc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgXCJlbVwiO1xuXG4gIGlmIChtaW5XaWR0aCA+IDApIHtcbiAgICBzcGFuLnN0eWxlLm1pbldpZHRoID0gbWluV2lkdGggKyBcImVtXCI7XG4gIH1cblxuICByZXR1cm4gc3Bhbjtcbn07XG5cbnZhciBzdHJldGNoeV9lbmNsb3NlU3BhbiA9IGZ1bmN0aW9uIGVuY2xvc2VTcGFuKGlubmVyLCBsYWJlbCwgcGFkLCBvcHRpb25zKSB7XG4gIC8vIFJldHVybiBhbiBpbWFnZSBzcGFuIGZvciBcXGNhbmNlbCwgXFxiY2FuY2VsLCBcXHhjYW5jZWwsIG9yIFxcZmJveFxuICB2YXIgaW1nO1xuICB2YXIgdG90YWxIZWlnaHQgPSBpbm5lci5oZWlnaHQgKyBpbm5lci5kZXB0aCArIDIgKiBwYWQ7XG5cbiAgaWYgKC9mYm94fGNvbG9yLy50ZXN0KGxhYmVsKSkge1xuICAgIGltZyA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcInN0cmV0Y2h5XCIsIGxhYmVsXSwgW10sIG9wdGlvbnMpO1xuXG4gICAgaWYgKGxhYmVsID09PSBcImZib3hcIikge1xuICAgICAgdmFyIGNvbG9yID0gb3B0aW9ucy5jb2xvciAmJiBvcHRpb25zLmdldENvbG9yKCk7XG5cbiAgICAgIGlmIChjb2xvcikge1xuICAgICAgICBpbWcuc3R5bGUuYm9yZGVyQ29sb3IgPSBjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gXFxjYW5jZWwsIFxcYmNhbmNlbCwgb3IgXFx4Y2FuY2VsXG4gICAgLy8gU2luY2UgXFxjYW5jZWwncyBTVkcgaXMgaW5saW5lIGFuZCBpdCBvbWl0cyB0aGUgdmlld0JveCBhdHRyaWJ1dGUsXG4gICAgLy8gaXRzIHN0cm9rZS13aWR0aCB3aWxsIG5vdCB2YXJ5IHdpdGggc3BhbiBhcmVhLlxuICAgIHZhciBsaW5lcyA9IFtdO1xuXG4gICAgaWYgKC9eW2J4XWNhbmNlbCQvLnRlc3QobGFiZWwpKSB7XG4gICAgICBsaW5lcy5wdXNoKG5ldyBMaW5lTm9kZSh7XG4gICAgICAgIFwieDFcIjogXCIwXCIsXG4gICAgICAgIFwieTFcIjogXCIwXCIsXG4gICAgICAgIFwieDJcIjogXCIxMDAlXCIsXG4gICAgICAgIFwieTJcIjogXCIxMDAlXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMC4wNDZlbVwiXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKC9eeD9jYW5jZWwkLy50ZXN0KGxhYmVsKSkge1xuICAgICAgbGluZXMucHVzaChuZXcgTGluZU5vZGUoe1xuICAgICAgICBcIngxXCI6IFwiMFwiLFxuICAgICAgICBcInkxXCI6IFwiMTAwJVwiLFxuICAgICAgICBcIngyXCI6IFwiMTAwJVwiLFxuICAgICAgICBcInkyXCI6IFwiMFwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjAuMDQ2ZW1cIlxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHZhciBzdmdOb2RlID0gbmV3IFN2Z05vZGUobGluZXMsIHtcbiAgICAgIFwid2lkdGhcIjogXCIxMDAlXCIsXG4gICAgICBcImhlaWdodFwiOiB0b3RhbEhlaWdodCArIFwiZW1cIlxuICAgIH0pO1xuICAgIGltZyA9IGJ1aWxkQ29tbW9uLm1ha2VTdmdTcGFuKFtdLCBbc3ZnTm9kZV0sIG9wdGlvbnMpO1xuICB9XG5cbiAgaW1nLmhlaWdodCA9IHRvdGFsSGVpZ2h0O1xuICBpbWcuc3R5bGUuaGVpZ2h0ID0gdG90YWxIZWlnaHQgKyBcImVtXCI7XG4gIHJldHVybiBpbWc7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzdHJldGNoeSA9ICh7XG4gIGVuY2xvc2VTcGFuOiBzdHJldGNoeV9lbmNsb3NlU3BhbixcbiAgbWF0aE1Mbm9kZTogc3RyZXRjaHlfbWF0aE1Mbm9kZSxcbiAgc3ZnU3Bhbjogc3RyZXRjaHlfc3ZnU3BhblxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvYWNjZW50LmpzXG5cblxuXG5cblxuXG5cblxuXG4vLyBOT1RFOiBVbmxpa2UgbW9zdCBgaHRtbEJ1aWxkZXJgcywgdGhpcyBvbmUgaGFuZGxlcyBub3Qgb25seSBcImFjY2VudFwiLCBidXRcbnZhciBhY2NlbnRfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncnAsIG9wdGlvbnMpIHtcbiAgLy8gQWNjZW50cyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZy4gNDQzLCBydWxlIDEyLlxuICB2YXIgYmFzZTtcbiAgdmFyIGdyb3VwO1xuICB2YXIgc3VwU3ViID0gY2hlY2tOb2RlVHlwZShncnAsIFwic3Vwc3ViXCIpO1xuICB2YXIgc3VwU3ViR3JvdXA7XG5cbiAgaWYgKHN1cFN1Yikge1xuICAgIC8vIElmIG91ciBiYXNlIGlzIGEgY2hhcmFjdGVyIGJveCwgYW5kIHdlIGhhdmUgc3VwZXJzY3JpcHRzIGFuZFxuICAgIC8vIHN1YnNjcmlwdHMsIHRoZSBzdXBzdWIgd2lsbCBkZWZlciB0byB1cy4gSW4gcGFydGljdWxhciwgd2Ugd2FudFxuICAgIC8vIHRvIGF0dGFjaCB0aGUgc3VwZXJzY3JpcHRzIGFuZCBzdWJzY3JpcHRzIHRvIHRoZSBpbm5lciBib2R5IChzb1xuICAgIC8vIHRoYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgd29uJ3QgYmVcbiAgICAvLyBhZmZlY3RlZCBieSB0aGUgaGVpZ2h0IG9mIHRoZSBhY2NlbnQpLiBXZSBhY2NvbXBsaXNoIHRoaXMgYnlcbiAgICAvLyBzdGlja2luZyB0aGUgYmFzZSBvZiB0aGUgYWNjZW50IGludG8gdGhlIGJhc2Ugb2YgdGhlIHN1cHN1YiwgYW5kXG4gICAgLy8gcmVuZGVyaW5nIHRoYXQsIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2Ygd2hlcmUgdGhlIGFjY2VudCBpcy5cbiAgICAvLyBUaGUgcmVhbCBhY2NlbnQgZ3JvdXAgaXMgdGhlIGJhc2Ugb2YgdGhlIHN1cHN1YiBncm91cFxuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoc3VwU3ViLmJhc2UsIFwiYWNjZW50XCIpOyAvLyBUaGUgY2hhcmFjdGVyIGJveCBpcyB0aGUgYmFzZSBvZiB0aGUgYWNjZW50IGdyb3VwXG5cbiAgICBiYXNlID0gZ3JvdXAuYmFzZTsgLy8gU3RpY2sgdGhlIGNoYXJhY3RlciBib3ggaW50byB0aGUgYmFzZSBvZiB0aGUgc3Vwc3ViIGdyb3VwXG5cbiAgICBzdXBTdWIuYmFzZSA9IGJhc2U7IC8vIFJlcmVuZGVyIHRoZSBzdXBzdWIgZ3JvdXAgd2l0aCBpdHMgbmV3IGJhc2UsIGFuZCBzdG9yZSB0aGF0XG4gICAgLy8gcmVzdWx0LlxuXG4gICAgc3VwU3ViR3JvdXAgPSBhc3NlcnRTcGFuKGJ1aWxkSFRNTF9idWlsZEdyb3VwKHN1cFN1Yiwgb3B0aW9ucykpOyAvLyByZXNldCBvcmlnaW5hbCBiYXNlXG5cbiAgICBzdXBTdWIuYmFzZSA9IGdyb3VwO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcImFjY2VudFwiKTtcbiAgICBiYXNlID0gZ3JvdXAuYmFzZTtcbiAgfSAvLyBCdWlsZCB0aGUgYmFzZSBncm91cFxuXG5cbiAgdmFyIGJvZHkgPSBidWlsZEhUTUxfYnVpbGRHcm91cChiYXNlLCBvcHRpb25zLmhhdmluZ0NyYW1wZWRTdHlsZSgpKTsgLy8gRG9lcyB0aGUgYWNjZW50IG5lZWQgdG8gc2hpZnQgZm9yIHRoZSBza2V3IG9mIGEgY2hhcmFjdGVyP1xuXG4gIHZhciBtdXN0U2hpZnQgPSBncm91cC5pc1NoaWZ0eSAmJiB1dGlscy5pc0NoYXJhY3RlckJveChiYXNlKTsgLy8gQ2FsY3VsYXRlIHRoZSBza2V3IG9mIHRoZSBhY2NlbnQuIFRoaXMgaXMgYmFzZWQgb24gdGhlIGxpbmUgXCJJZiB0aGVcbiAgLy8gbnVjbGV1cyBpcyBub3QgYSBzaW5nbGUgY2hhcmFjdGVyLCBsZXQgcyA9IDA7IG90aGVyd2lzZSBzZXQgcyB0byB0aGVcbiAgLy8ga2VybiBhbW91bnQgZm9yIHRoZSBudWNsZXVzIGZvbGxvd2VkIGJ5IHRoZSBcXHNrZXdjaGFyIG9mIGl0cyBmb250LlwiXG4gIC8vIE5vdGUgdGhhdCBvdXIgc2tldyBtZXRyaWNzIGFyZSBqdXN0IHRoZSBrZXJuIGJldHdlZW4gZWFjaCBjaGFyYWN0ZXJcbiAgLy8gYW5kIHRoZSBza2V3Y2hhci5cblxuICB2YXIgc2tldyA9IDA7XG5cbiAgaWYgKG11c3RTaGlmdCkge1xuICAgIC8vIElmIHRoZSBiYXNlIGlzIGEgY2hhcmFjdGVyIGJveCwgdGhlbiB3ZSB3YW50IHRoZSBza2V3IG9mIHRoZVxuICAgIC8vIGlubmVybW9zdCBjaGFyYWN0ZXIuIFRvIGRvIHRoYXQsIHdlIGZpbmQgdGhlIGlubmVybW9zdCBjaGFyYWN0ZXI6XG4gICAgdmFyIGJhc2VDaGFyID0gdXRpbHMuZ2V0QmFzZUVsZW0oYmFzZSk7IC8vIFRoZW4sIHdlIHJlbmRlciBpdHMgZ3JvdXAgdG8gZ2V0IHRoZSBzeW1ib2wgaW5zaWRlIGl0XG5cbiAgICB2YXIgYmFzZUdyb3VwID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoYmFzZUNoYXIsIG9wdGlvbnMuaGF2aW5nQ3JhbXBlZFN0eWxlKCkpOyAvLyBGaW5hbGx5LCB3ZSBwdWxsIHRoZSBza2V3IG9mZiBvZiB0aGUgc3ltYm9sLlxuXG4gICAgc2tldyA9IGFzc2VydFN5bWJvbERvbU5vZGUoYmFzZUdyb3VwKS5za2V3OyAvLyBOb3RlIHRoYXQgd2Ugbm93IHRocm93IGF3YXkgYmFzZUdyb3VwLCBiZWNhdXNlIHRoZSBsYXllcnMgd2VcbiAgICAvLyByZW1vdmVkIHdpdGggZ2V0QmFzZUVsZW0gbWlnaHQgY29udGFpbiB0aGluZ3MgbGlrZSBcXGNvbG9yIHdoaWNoXG4gICAgLy8gd2UgY2FuJ3QgZ2V0IHJpZCBvZi5cbiAgICAvLyBUT0RPKGVtaWx5KTogRmluZCBhIGJldHRlciB3YXkgdG8gZ2V0IHRoZSBza2V3XG4gIH0gLy8gY2FsY3VsYXRlIHRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgYm9keSBhbmQgdGhlIGFjY2VudFxuXG5cbiAgdmFyIGNsZWFyYW5jZSA9IE1hdGgubWluKGJvZHkuaGVpZ2h0LCBvcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodCk7IC8vIEJ1aWxkIHRoZSBhY2NlbnRcblxuICB2YXIgYWNjZW50Qm9keTtcblxuICBpZiAoIWdyb3VwLmlzU3RyZXRjaHkpIHtcbiAgICB2YXIgYWNjZW50O1xuICAgIHZhciB3aWR0aDtcblxuICAgIGlmIChncm91cC5sYWJlbCA9PT0gXCJcXFxcdmVjXCIpIHtcbiAgICAgIC8vIEJlZm9yZSB2ZXJzaW9uIDAuOSwgXFx2ZWMgdXNlZCB0aGUgY29tYmluaW5nIGZvbnQgZ2x5cGggVSsyMEQ3LlxuICAgICAgLy8gQnV0IGJyb3dzZXJzLCBlc3BlY2lhbGx5IFNhZmFyaSwgYXJlIG5vdCBjb25zaXN0ZW50IGluIGhvdyB0aGV5XG4gICAgICAvLyByZW5kZXIgY29tYmluaW5nIGNoYXJhY3RlcnMgd2hlbiBub3QgcHJlY2VkZWQgYnkgYSBjaGFyYWN0ZXIuXG4gICAgICAvLyBTbyBub3cgd2UgdXNlIGFuIFNWRy5cbiAgICAgIC8vIElmIFNhZmFyaSByZWZvcm1zLCB3ZSBzaG91bGQgY29uc2lkZXIgcmV2ZXJ0aW5nIHRvIHRoZSBnbHlwaC5cbiAgICAgIGFjY2VudCA9IGJ1aWxkQ29tbW9uLnN0YXRpY1N2ZyhcInZlY1wiLCBvcHRpb25zKTtcbiAgICAgIHdpZHRoID0gYnVpbGRDb21tb24uc3ZnRGF0YS52ZWNbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjY2VudCA9IGJ1aWxkQ29tbW9uLm1ha2VPcmQoe1xuICAgICAgICBtb2RlOiBncm91cC5tb2RlLFxuICAgICAgICB0ZXh0OiBncm91cC5sYWJlbFxuICAgICAgfSwgb3B0aW9ucywgXCJ0ZXh0b3JkXCIpO1xuICAgICAgYWNjZW50ID0gYXNzZXJ0U3ltYm9sRG9tTm9kZShhY2NlbnQpOyAvLyBSZW1vdmUgdGhlIGl0YWxpYyBjb3JyZWN0aW9uIG9mIHRoZSBhY2NlbnQsIGJlY2F1c2UgaXQgb25seSBzZXJ2ZXMgdG9cbiAgICAgIC8vIHNoaWZ0IHRoZSBhY2NlbnQgb3ZlciB0byBhIHBsYWNlIHdlIGRvbid0IHdhbnQuXG5cbiAgICAgIGFjY2VudC5pdGFsaWMgPSAwO1xuICAgICAgd2lkdGggPSBhY2NlbnQud2lkdGg7XG4gICAgfVxuXG4gICAgYWNjZW50Qm9keSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImFjY2VudC1ib2R5XCJdLCBbYWNjZW50XSk7IC8vIFwiRnVsbFwiIGFjY2VudHMgZXhwYW5kIHRoZSB3aWR0aCBvZiB0aGUgcmVzdWx0aW5nIHN5bWJvbCB0byBiZVxuICAgIC8vIGF0IGxlYXN0IHRoZSB3aWR0aCBvZiB0aGUgYWNjZW50LCBhbmQgb3ZlcmxhcCBkaXJlY3RseSBvbnRvIHRoZVxuICAgIC8vIGNoYXJhY3RlciB3aXRob3V0IGFueSB2ZXJ0aWNhbCBvZmZzZXQuXG5cbiAgICB2YXIgYWNjZW50RnVsbCA9IGdyb3VwLmxhYmVsID09PSBcIlxcXFx0ZXh0Y2lyY2xlZFwiO1xuXG4gICAgaWYgKGFjY2VudEZ1bGwpIHtcbiAgICAgIGFjY2VudEJvZHkuY2xhc3Nlcy5wdXNoKCdhY2NlbnQtZnVsbCcpO1xuICAgICAgY2xlYXJhbmNlID0gYm9keS5oZWlnaHQ7XG4gICAgfSAvLyBTaGlmdCB0aGUgYWNjZW50IG92ZXIgYnkgdGhlIHNrZXcuXG5cblxuICAgIHZhciBsZWZ0ID0gc2tldzsgLy8gQ1NTIGRlZmluZXMgYC5rYXRleCAuYWNjZW50IC5hY2NlbnQtYm9keTpub3QoLmFjY2VudC1mdWxsKSB7IHdpZHRoOiAwIH1gXG4gICAgLy8gc28gdGhhdCB0aGUgYWNjZW50IGRvZXNuJ3QgY29udHJpYnV0ZSB0byB0aGUgYm91bmRpbmcgYm94LlxuICAgIC8vIFdlIG5lZWQgdG8gc2hpZnQgdGhlIGNoYXJhY3RlciBieSBpdHMgd2lkdGggKGVmZmVjdGl2ZWx5IGhhbGZcbiAgICAvLyBpdHMgd2lkdGgpIHRvIGNvbXBlbnNhdGUuXG5cbiAgICBpZiAoIWFjY2VudEZ1bGwpIHtcbiAgICAgIGxlZnQgLT0gd2lkdGggLyAyO1xuICAgIH1cblxuICAgIGFjY2VudEJvZHkuc3R5bGUubGVmdCA9IGxlZnQgKyBcImVtXCI7IC8vIFxcdGV4dGNpcmNsZWQgdXNlcyB0aGUgXFxiaWdjaXJjIGdseXBoLCBzbyBpdCBuZWVkcyBzb21lXG4gICAgLy8gdmVydGljYWwgYWRqdXN0bWVudCB0byBtYXRjaCBMYVRlWC5cblxuICAgIGlmIChncm91cC5sYWJlbCA9PT0gXCJcXFxcdGV4dGNpcmNsZWRcIikge1xuICAgICAgYWNjZW50Qm9keS5zdHlsZS50b3AgPSBcIi4yZW1cIjtcbiAgICB9XG5cbiAgICBhY2NlbnRCb2R5ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJmaXJzdEJhc2VsaW5lXCIsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJvZHlcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IC1jbGVhcmFuY2VcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGFjY2VudEJvZHlcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgYWNjZW50Qm9keSA9IHN0cmV0Y2h5LnN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpO1xuICAgIGFjY2VudEJvZHkgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYm9keVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYWNjZW50Qm9keSxcbiAgICAgICAgd3JhcHBlckNsYXNzZXM6IFtcInN2Zy1hbGlnblwiXSxcbiAgICAgICAgd3JhcHBlclN0eWxlOiBza2V3ID4gMCA/IHtcbiAgICAgICAgICB3aWR0aDogXCJjYWxjKDEwMCUgLSBcIiArIDIgKiBza2V3ICsgXCJlbSlcIixcbiAgICAgICAgICBtYXJnaW5MZWZ0OiAyICogc2tldyArIFwiZW1cIlxuICAgICAgICB9IDogdW5kZWZpbmVkXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9XG5cbiAgdmFyIGFjY2VudFdyYXAgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwiYWNjZW50XCJdLCBbYWNjZW50Qm9keV0sIG9wdGlvbnMpO1xuXG4gIGlmIChzdXBTdWJHcm91cCkge1xuICAgIC8vIEhlcmUsIHdlIHJlcGxhY2UgdGhlIFwiYmFzZVwiIGNoaWxkIG9mIHRoZSBzdXBzdWIgd2l0aCBvdXIgbmV3bHlcbiAgICAvLyBnZW5lcmF0ZWQgYWNjZW50LlxuICAgIHN1cFN1Ykdyb3VwLmNoaWxkcmVuWzBdID0gYWNjZW50V3JhcDsgLy8gU2luY2Ugd2UgZG9uJ3QgcmVydW4gdGhlIGhlaWdodCBjYWxjdWxhdGlvbiBhZnRlciByZXBsYWNpbmcgdGhlXG4gICAgLy8gYWNjZW50LCB3ZSBtYW51YWxseSByZWNhbGN1bGF0ZSBoZWlnaHQuXG5cbiAgICBzdXBTdWJHcm91cC5oZWlnaHQgPSBNYXRoLm1heChhY2NlbnRXcmFwLmhlaWdodCwgc3VwU3ViR3JvdXAuaGVpZ2h0KTsgLy8gQWNjZW50cyBzaG91bGQgYWx3YXlzIGJlIG9yZHMsIGV2ZW4gd2hlbiB0aGVpciBpbm5hcmRzIGFyZSBub3QuXG5cbiAgICBzdXBTdWJHcm91cC5jbGFzc2VzWzBdID0gXCJtb3JkXCI7XG4gICAgcmV0dXJuIHN1cFN1Ykdyb3VwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhY2NlbnRXcmFwO1xuICB9XG59O1xuXG52YXIgYWNjZW50X21hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBhY2NlbnROb2RlID0gZ3JvdXAuaXNTdHJldGNoeSA/IHN0cmV0Y2h5Lm1hdGhNTG5vZGUoZ3JvdXAubGFiZWwpIDogbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAubGFiZWwsIGdyb3VwLm1vZGUpXSk7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb3ZlclwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5iYXNlLCBvcHRpb25zKSwgYWNjZW50Tm9kZV0pO1xuICBub2RlLnNldEF0dHJpYnV0ZShcImFjY2VudFwiLCBcInRydWVcIik7XG4gIHJldHVybiBub2RlO1xufTtcblxudmFyIE5PTl9TVFJFVENIWV9BQ0NFTlRfUkVHRVggPSBuZXcgUmVnRXhwKFtcIlxcXFxhY3V0ZVwiLCBcIlxcXFxncmF2ZVwiLCBcIlxcXFxkZG90XCIsIFwiXFxcXHRpbGRlXCIsIFwiXFxcXGJhclwiLCBcIlxcXFxicmV2ZVwiLCBcIlxcXFxjaGVja1wiLCBcIlxcXFxoYXRcIiwgXCJcXFxcdmVjXCIsIFwiXFxcXGRvdFwiLCBcIlxcXFxtYXRocmluZ1wiXS5tYXAoZnVuY3Rpb24gKGFjY2VudCkge1xuICByZXR1cm4gXCJcXFxcXCIgKyBhY2NlbnQ7XG59KS5qb2luKFwifFwiKSk7IC8vIEFjY2VudHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImFjY2VudFwiLFxuICBuYW1lczogW1wiXFxcXGFjdXRlXCIsIFwiXFxcXGdyYXZlXCIsIFwiXFxcXGRkb3RcIiwgXCJcXFxcdGlsZGVcIiwgXCJcXFxcYmFyXCIsIFwiXFxcXGJyZXZlXCIsIFwiXFxcXGNoZWNrXCIsIFwiXFxcXGhhdFwiLCBcIlxcXFx2ZWNcIiwgXCJcXFxcZG90XCIsIFwiXFxcXG1hdGhyaW5nXCIsIFwiXFxcXHdpZGVjaGVja1wiLCBcIlxcXFx3aWRlaGF0XCIsIFwiXFxcXHdpZGV0aWxkZVwiLCBcIlxcXFxvdmVycmlnaHRhcnJvd1wiLCBcIlxcXFxvdmVybGVmdGFycm93XCIsIFwiXFxcXE92ZXJyaWdodGFycm93XCIsIFwiXFxcXG92ZXJsZWZ0cmlnaHRhcnJvd1wiLCBcIlxcXFxvdmVyZ3JvdXBcIiwgXCJcXFxcb3ZlcmxpbmVzZWdtZW50XCIsIFwiXFxcXG92ZXJsZWZ0aGFycG9vblwiLCBcIlxcXFxvdmVycmlnaHRoYXJwb29uXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIGJhc2UgPSBhcmdzWzBdO1xuICAgIHZhciBpc1N0cmV0Y2h5ID0gIU5PTl9TVFJFVENIWV9BQ0NFTlRfUkVHRVgudGVzdChjb250ZXh0LmZ1bmNOYW1lKTtcbiAgICB2YXIgaXNTaGlmdHkgPSAhaXNTdHJldGNoeSB8fCBjb250ZXh0LmZ1bmNOYW1lID09PSBcIlxcXFx3aWRlaGF0XCIgfHwgY29udGV4dC5mdW5jTmFtZSA9PT0gXCJcXFxcd2lkZXRpbGRlXCIgfHwgY29udGV4dC5mdW5jTmFtZSA9PT0gXCJcXFxcd2lkZWNoZWNrXCI7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiYWNjZW50XCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGNvbnRleHQuZnVuY05hbWUsXG4gICAgICBpc1N0cmV0Y2h5OiBpc1N0cmV0Y2h5LFxuICAgICAgaXNTaGlmdHk6IGlzU2hpZnR5LFxuICAgICAgYmFzZTogYmFzZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhY2NlbnRfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFjY2VudF9tYXRobWxCdWlsZGVyXG59KTsgLy8gVGV4dC1tb2RlIGFjY2VudHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImFjY2VudFwiLFxuICBuYW1lczogW1wiXFxcXCdcIiwgXCJcXFxcYFwiLCBcIlxcXFxeXCIsIFwiXFxcXH5cIiwgXCJcXFxcPVwiLCBcIlxcXFx1XCIsIFwiXFxcXC5cIiwgJ1xcXFxcIicsIFwiXFxcXHJcIiwgXCJcXFxcSFwiLCBcIlxcXFx2XCIsIFwiXFxcXHRleHRjaXJjbGVkXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBhbGxvd2VkSW5NYXRoOiBmYWxzZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB2YXIgYmFzZSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiYWNjZW50XCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGNvbnRleHQuZnVuY05hbWUsXG4gICAgICBpc1N0cmV0Y2h5OiBmYWxzZSxcbiAgICAgIGlzU2hpZnR5OiB0cnVlLFxuICAgICAgYmFzZTogYmFzZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhY2NlbnRfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFjY2VudF9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9hY2NlbnR1bmRlci5qc1xuLy8gSG9yaXpvbnRhbCBvdmVybGFwIGZ1bmN0aW9uc1xuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImFjY2VudFVuZGVyXCIsXG4gIG5hbWVzOiBbXCJcXFxcdW5kZXJsZWZ0YXJyb3dcIiwgXCJcXFxcdW5kZXJyaWdodGFycm93XCIsIFwiXFxcXHVuZGVybGVmdHJpZ2h0YXJyb3dcIiwgXCJcXFxcdW5kZXJncm91cFwiLCBcIlxcXFx1bmRlcmxpbmVzZWdtZW50XCIsIFwiXFxcXHV0aWxkZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBiYXNlID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJhY2NlbnRVbmRlclwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBsYWJlbDogZnVuY05hbWUsXG4gICAgICBiYXNlOiBiYXNlXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gVHJlYXQgdW5kZXIgYWNjZW50cyBtdWNoIGxpa2UgdW5kZXJsaW5lcy5cbiAgICB2YXIgaW5uZXJHcm91cCA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpO1xuICAgIHZhciBhY2NlbnRCb2R5ID0gc3RyZXRjaHkuc3ZnU3Bhbihncm91cCwgb3B0aW9ucyk7XG4gICAgdmFyIGtlcm4gPSBncm91cC5sYWJlbCA9PT0gXCJcXFxcdXRpbGRlXCIgPyAwLjEyIDogMDsgLy8gR2VuZXJhdGUgdGhlIHZsaXN0LCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBrZXJuc1xuXG4gICAgdmFyIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgIHBvc2l0aW9uRGF0YTogYWNjZW50Qm9keS5oZWlnaHQgKyBrZXJuLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBhY2NlbnRCb2R5LFxuICAgICAgICB3cmFwcGVyQ2xhc3NlczogW1wic3ZnLWFsaWduXCJdXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBrZXJuXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lckdyb3VwXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwiYWNjZW50dW5kZXJcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGFjY2VudE5vZGUgPSBzdHJldGNoeS5tYXRoTUxub2RlKGdyb3VwLmxhYmVsKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXVuZGVyXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpLCBhY2NlbnROb2RlXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhY2NlbnR1bmRlclwiLCBcInRydWVcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2Fycm93LmpzXG5cblxuXG5cblxuXG5cbi8vIEhlbHBlciBmdW5jdGlvblxudmFyIGFycm93X3BhZGRlZE5vZGUgPSBmdW5jdGlvbiBwYWRkZWROb2RlKGdyb3VwKSB7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGFkZGVkXCIsIGdyb3VwID8gW2dyb3VwXSA6IFtdKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIiswLjZlbVwiKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgXCIwLjNlbVwiKTtcbiAgcmV0dXJuIG5vZGU7XG59OyAvLyBTdHJldGNoeSBhcnJvd3Mgd2l0aCBhbiBvcHRpb25hbCBhcmd1bWVudFxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ4QXJyb3dcIixcbiAgbmFtZXM6IFtcIlxcXFx4bGVmdGFycm93XCIsIFwiXFxcXHhyaWdodGFycm93XCIsIFwiXFxcXHhMZWZ0YXJyb3dcIiwgXCJcXFxceFJpZ2h0YXJyb3dcIiwgXCJcXFxceGxlZnRyaWdodGFycm93XCIsIFwiXFxcXHhMZWZ0cmlnaHRhcnJvd1wiLCBcIlxcXFx4aG9va2xlZnRhcnJvd1wiLCBcIlxcXFx4aG9va3JpZ2h0YXJyb3dcIiwgXCJcXFxceG1hcHN0b1wiLCBcIlxcXFx4cmlnaHRoYXJwb29uZG93blwiLCBcIlxcXFx4cmlnaHRoYXJwb29udXBcIiwgXCJcXFxceGxlZnRoYXJwb29uZG93blwiLCBcIlxcXFx4bGVmdGhhcnBvb251cFwiLCBcIlxcXFx4cmlnaHRsZWZ0aGFycG9vbnNcIiwgXCJcXFxceGxlZnRyaWdodGhhcnBvb25zXCIsIFwiXFxcXHhsb25nZXF1YWxcIiwgXCJcXFxceHR3b2hlYWRyaWdodGFycm93XCIsIFwiXFxcXHh0d29oZWFkbGVmdGFycm93XCIsIFwiXFxcXHh0b2Zyb21cIiwgLy8gVGhlIG5leHQgMyBmdW5jdGlvbnMgYXJlIGhlcmUgdG8gc3VwcG9ydCB0aGUgbWhjaGVtIGV4dGVuc2lvbi5cbiAgLy8gRGlyZWN0IHVzZSBvZiB0aGVzZSBmdW5jdGlvbnMgaXMgZGlzY291cmFnZWQgYW5kIG1heSBicmVhayBzb21lZGF5LlxuICBcIlxcXFx4cmlnaHRsZWZ0YXJyb3dzXCIsIFwiXFxcXHhyaWdodGVxdWlsaWJyaXVtXCIsIFwiXFxcXHhsZWZ0ZXF1aWxpYnJpdW1cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwieEFycm93XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGJvZHk6IGFyZ3NbMF0sXG4gICAgICBiZWxvdzogb3B0QXJnc1swXVxuICAgIH07XG4gIH0sXG4gIC8vIEZsb3cgaXMgdW5hYmxlIHRvIGNvcnJlY3RseSBpbmZlciB0aGUgdHlwZSBvZiBgZ3JvdXBgLCBldmVuIHRob3VnaCBpdCdzXG4gIC8vIHVuYW1pYmlndW91c2x5IGRldGVybWluZWQgZnJvbSB0aGUgcGFzc2VkLWluIGB0eXBlYCBhYm92ZS5cbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHN0eWxlID0gb3B0aW9ucy5zdHlsZTsgLy8gQnVpbGQgdGhlIGFyZ3VtZW50IGdyb3VwcyBpbiB0aGUgYXBwcm9wcmlhdGUgc3R5bGUuXG4gICAgLy8gUmVmOiBhbXNtYXRoLmR0eDogICBcXGhib3h7JFxcc2NyaXB0c3R5bGVcXG1rZXJuIzNtdXsjNn1cXG1rZXJuIzRtdSR9JVxuICAgIC8vIFNvbWUgZ3JvdXBzIGNhbiByZXR1cm4gZG9jdW1lbnQgZnJhZ21lbnRzLiAgSGFuZGxlIHRob3NlIGJ5IHdyYXBwaW5nXG4gICAgLy8gdGhlbSBpbiBhIHNwYW4uXG5cbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUuc3VwKCkpO1xuICAgIHZhciB1cHBlckdyb3VwID0gYnVpbGRDb21tb24ud3JhcEZyYWdtZW50KGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG5ld09wdGlvbnMsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB1cHBlckdyb3VwLmNsYXNzZXMucHVzaChcIngtYXJyb3ctcGFkXCIpO1xuICAgIHZhciBsb3dlckdyb3VwO1xuXG4gICAgaWYgKGdyb3VwLmJlbG93KSB7XG4gICAgICAvLyBCdWlsZCB0aGUgbG93ZXIgZ3JvdXBcbiAgICAgIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1YigpKTtcbiAgICAgIGxvd2VyR3JvdXAgPSBidWlsZENvbW1vbi53cmFwRnJhZ21lbnQoYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYmVsb3csIG5ld09wdGlvbnMsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICAgIGxvd2VyR3JvdXAuY2xhc3Nlcy5wdXNoKFwieC1hcnJvdy1wYWRcIik7XG4gICAgfVxuXG4gICAgdmFyIGFycm93Qm9keSA9IHN0cmV0Y2h5LnN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpOyAvLyBSZSBzaGlmdDogTm90ZSB0aGF0IHN0cmV0Y2h5LnN2Z1NwYW4gcmV0dXJuZWQgYXJyb3dCb2R5LmRlcHRoID0gMC5cbiAgICAvLyBUaGUgcG9pbnQgd2Ugd2FudCBvbiB0aGUgbWF0aCBheGlzIGlzIGF0IDAuNSAqIGFycm93Qm9keS5oZWlnaHQuXG5cbiAgICB2YXIgYXJyb3dTaGlmdCA9IC1vcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodCArIDAuNSAqIGFycm93Qm9keS5oZWlnaHQ7IC8vIDIgbXUga2Vybi4gUmVmOiBhbXNtYXRoLmR0eDogIzdcXGlmMCMyXFxlbHNlXFxta2VybiMybXVcXGZpXG5cbiAgICB2YXIgdXBwZXJTaGlmdCA9IC1vcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodCAtIDAuNSAqIGFycm93Qm9keS5oZWlnaHQgLSAwLjExMTsgLy8gMC4xMTEgZW0gPSAyIG11XG5cbiAgICBpZiAodXBwZXJHcm91cC5kZXB0aCA+IDAuMjUgfHwgZ3JvdXAubGFiZWwgPT09IFwiXFxcXHhsZWZ0ZXF1aWxpYnJpdW1cIikge1xuICAgICAgdXBwZXJTaGlmdCAtPSB1cHBlckdyb3VwLmRlcHRoOyAvLyBzaGlmdCB1cCBpZiBkZXB0aCBlbmNyb2FjaGVzXG4gICAgfSAvLyBHZW5lcmF0ZSB0aGUgdmxpc3RcblxuXG4gICAgdmFyIHZsaXN0O1xuXG4gICAgaWYgKGxvd2VyR3JvdXApIHtcbiAgICAgIHZhciBsb3dlclNoaWZ0ID0gLW9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0ICsgbG93ZXJHcm91cC5oZWlnaHQgKyAwLjUgKiBhcnJvd0JvZHkuaGVpZ2h0ICsgMC4xMTE7XG4gICAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogdXBwZXJHcm91cCxcbiAgICAgICAgICBzaGlmdDogdXBwZXJTaGlmdFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogYXJyb3dCb2R5LFxuICAgICAgICAgIHNoaWZ0OiBhcnJvd1NoaWZ0XG4gICAgICAgIH0sIHtcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiBsb3dlckdyb3VwLFxuICAgICAgICAgIHNoaWZ0OiBsb3dlclNoaWZ0XG4gICAgICAgIH1dXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IHVwcGVyR3JvdXAsXG4gICAgICAgICAgc2hpZnQ6IHVwcGVyU2hpZnRcbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IGFycm93Qm9keSxcbiAgICAgICAgICBzaGlmdDogYXJyb3dTaGlmdFxuICAgICAgICB9XVxuICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfSAvLyAkRmxvd0ZpeE1lOiBSZXBsYWNlIHRoaXMgd2l0aCBwYXNzaW5nIFwic3ZnLWFsaWduXCIgaW50byBtYWtlVkxpc3QuXG5cblxuICAgIHZsaXN0LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzFdLmNsYXNzZXMucHVzaChcInN2Zy1hbGlnblwiKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXJlbFwiLCBcIngtYXJyb3dcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGFycm93Tm9kZSA9IHN0cmV0Y2h5Lm1hdGhNTG5vZGUoZ3JvdXAubGFiZWwpO1xuICAgIHZhciBub2RlO1xuXG4gICAgaWYgKGdyb3VwLmJvZHkpIHtcbiAgICAgIHZhciB1cHBlck5vZGUgPSBhcnJvd19wYWRkZWROb2RlKGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucykpO1xuXG4gICAgICBpZiAoZ3JvdXAuYmVsb3cpIHtcbiAgICAgICAgdmFyIGxvd2VyTm9kZSA9IGFycm93X3BhZGRlZE5vZGUoYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5iZWxvdywgb3B0aW9ucykpO1xuICAgICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdW5kZXJvdmVyXCIsIFthcnJvd05vZGUsIGxvd2VyTm9kZSwgdXBwZXJOb2RlXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb3ZlclwiLCBbYXJyb3dOb2RlLCB1cHBlck5vZGVdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGdyb3VwLmJlbG93KSB7XG4gICAgICB2YXIgX2xvd2VyTm9kZSA9IGFycm93X3BhZGRlZE5vZGUoYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5iZWxvdywgb3B0aW9ucykpO1xuXG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdW5kZXJcIiwgW2Fycm93Tm9kZSwgX2xvd2VyTm9kZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAvLyBQYXJzZXIuanMgdGhyb3dzIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIGFyZ3VtZW50LlxuICAgICAgbm9kZSA9IGFycm93X3BhZGRlZE5vZGUoKTtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vdmVyXCIsIFthcnJvd05vZGUsIG5vZGVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvY2hhci5qc1xuXG5cbiAvLyBcXEBjaGFyIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBncm91cGVkIGRlY2ltYWwgYXJndW1lbnQgbGlrZVxuLy8gezEyM30gYW5kIGNvbnZlcnRzIGludG8gc3ltYm9sIHdpdGggY29kZSAxMjMuICBJdCBpcyB1c2VkIGJ5IHRoZSAqbWFjcm8qXG4vLyBcXGNoYXIgZGVmaW5lZCBpbiBtYWNyb3MuanMuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gIG5hbWVzOiBbXCJcXFxcQGNoYXJcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYXJnID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJvcmRncm91cFwiKTtcbiAgICB2YXIgZ3JvdXAgPSBhcmcuYm9keTtcbiAgICB2YXIgbnVtYmVyID0gXCJcIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gYXNzZXJ0Tm9kZVR5cGUoZ3JvdXBbaV0sIFwidGV4dG9yZFwiKTtcbiAgICAgIG51bWJlciArPSBub2RlLnRleHQ7XG4gICAgfVxuXG4gICAgdmFyIGNvZGUgPSBwYXJzZUludChudW1iZXIpO1xuXG4gICAgaWYgKGlzTmFOKGNvZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcQGNoYXIgaGFzIG5vbi1udW1lcmljIGFyZ3VtZW50IFwiICsgbnVtYmVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIHRleHQ6IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbiAgICB9O1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9jb2xvci5qc1xuXG5cblxuXG5cblxuXG52YXIgY29sb3JfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgZWxlbWVudHMgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMud2l0aENvbG9yKGdyb3VwLmNvbG9yKSwgZmFsc2UpOyAvLyBcXGNvbG9yIGlzbid0IHN1cHBvc2VkIHRvIGFmZmVjdCB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudHMgaXQgY29udGFpbnMuXG4gIC8vIFRvIGFjY29tcGxpc2ggdGhpcywgd2Ugd3JhcCB0aGUgcmVzdWx0cyBpbiBhIGZyYWdtZW50LCBzbyB0aGUgaW5uZXJcbiAgLy8gZWxlbWVudHMgd2lsbCBiZSBhYmxlIHRvIGRpcmVjdGx5IGludGVyYWN0IHdpdGggdGhlaXIgbmVpZ2hib3JzLiBGb3JcbiAgLy8gZXhhbXBsZSwgYFxcY29sb3J7cmVkfXsyICt9IDNgIGhhcyB0aGUgc2FtZSBzcGFjaW5nIGFzIGAyICsgM2BcblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUZyYWdtZW50KGVsZW1lbnRzKTtcbn07XG5cbnZhciBjb2xvcl9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgaW5uZXIgPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucy53aXRoQ29sb3IoZ3JvdXAuY29sb3IpKTtcbiAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1zdHlsZVwiLCBpbm5lcik7XG4gIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aGNvbG9yXCIsIGdyb3VwLmNvbG9yKTtcbiAgcmV0dXJuIG5vZGU7XG59O1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiY29sb3JcIixcbiAgbmFtZXM6IFtcIlxcXFx0ZXh0Y29sb3JcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgIGdyZWVkaW5lc3M6IDMsXG4gICAgYXJnVHlwZXM6IFtcImNvbG9yXCIsIFwib3JpZ2luYWxcIl1cbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHZhciBjb2xvciA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwiY29sb3ItdG9rZW5cIikuY29sb3I7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzFdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImNvbG9yXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGNvbG9yOiBjb2xvcixcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGNvbG9yX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBjb2xvcl9tYXRobWxCdWlsZGVyXG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJjb2xvclwiLFxuICBuYW1lczogW1wiXFxcXGNvbG9yXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBncmVlZGluZXNzOiAzLFxuICAgIGFyZ1R5cGVzOiBbXCJjb2xvclwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcixcbiAgICAgICAgYnJlYWtPblRva2VuVGV4dCA9IF9yZWYyLmJyZWFrT25Ub2tlblRleHQ7XG4gICAgdmFyIGNvbG9yID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJjb2xvci10b2tlblwiKS5jb2xvcjsgLy8gU2V0IG1hY3JvIFxcY3VycmVudEBjb2xvciBpbiBjdXJyZW50IG5hbWVzcGFjZSB0byBzdG9yZSB0aGUgY3VycmVudFxuICAgIC8vIGNvbG9yLCBtaW1pY2tpbmcgdGhlIGJlaGF2aW9yIG9mIGNvbG9yLnN0eS5cbiAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGp1c3QgdG8gY29ycmVjdGx5IGNvbG9yIGEgXFxyaWdodFxuICAgIC8vIHRoYXQgZm9sbG93cyBhIFxcY29sb3IgY29tbWFuZC5cblxuICAgIHBhcnNlci5ndWxsZXQubWFjcm9zLnNldChcIlxcXFxjdXJyZW50QGNvbG9yXCIsIGNvbG9yKTsgLy8gUGFyc2Ugb3V0IHRoZSBpbXBsaWNpdCBib2R5IHRoYXQgc2hvdWxkIGJlIGNvbG9yZWQuXG5cbiAgICB2YXIgYm9keSA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24odHJ1ZSwgYnJlYWtPblRva2VuVGV4dCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiY29sb3JcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgY29sb3I6IGNvbG9yLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBjb2xvcl9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogY29sb3JfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvY3IuanNcbi8vIFJvdyBicmVha3Mgd2l0aGluIHRhYnVsYXIgZW52aXJvbm1lbnRzLCBhbmQgbGluZSBicmVha3MgYXQgdG9wIGxldmVsXG5cblxuXG5cblxuIC8vIFxcXFwgaXMgYSBtYWNybyBtYXBwaW5nIHRvIGVpdGhlciBcXGNyIG9yIFxcbmV3bGluZS4gIEJlY2F1c2UgdGhleSBoYXZlIHRoZVxuLy8gc2FtZSBzaWduYXR1cmUsIHdlIGltcGxlbWVudCB0aGVtIGFzIG9uZSBtZWdhZnVuY3Rpb24sIHdpdGggbmV3Um93XG4vLyBpbmRpY2F0aW5nIHdoZXRoZXIgd2UncmUgaW4gdGhlIFxcY3IgY2FzZSwgYW5kIG5ld0xpbmUgaW5kaWNhdGluZyB3aGV0aGVyXG4vLyB0byBicmVhayB0aGUgbGluZSBpbiB0aGUgXFxuZXdsaW5lIGNhc2UuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJjclwiLFxuICBuYW1lczogW1wiXFxcXGNyXCIsIFwiXFxcXG5ld2xpbmVcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgc2l6ZSA9IG9wdEFyZ3NbMF07XG4gICAgdmFyIG5ld1JvdyA9IGZ1bmNOYW1lID09PSBcIlxcXFxjclwiO1xuICAgIHZhciBuZXdMaW5lID0gZmFsc2U7XG5cbiAgICBpZiAoIW5ld1Jvdykge1xuICAgICAgaWYgKHBhcnNlci5zZXR0aW5ncy5kaXNwbGF5TW9kZSAmJiBwYXJzZXIuc2V0dGluZ3MudXNlU3RyaWN0QmVoYXZpb3IoXCJuZXdMaW5lSW5EaXNwbGF5TW9kZVwiLCBcIkluIExhVGVYLCBcXFxcXFxcXCBvciBcXFxcbmV3bGluZSBcIiArIFwiZG9lcyBub3RoaW5nIGluIGRpc3BsYXkgbW9kZVwiKSkge1xuICAgICAgICBuZXdMaW5lID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdMaW5lID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJjclwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBuZXdMaW5lOiBuZXdMaW5lLFxuICAgICAgbmV3Um93OiBuZXdSb3csXG4gICAgICBzaXplOiBzaXplICYmIGFzc2VydE5vZGVUeXBlKHNpemUsIFwic2l6ZVwiKS52YWx1ZVxuICAgIH07XG4gIH0sXG4gIC8vIFRoZSBmb2xsb3dpbmcgYnVpbGRlcnMgYXJlIGNhbGxlZCBvbmx5IGF0IHRoZSB0b3AgbGV2ZWwsXG4gIC8vIG5vdCB3aXRoaW4gdGFidWxhci9hcnJheSBlbnZpcm9ubWVudHMuXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIGlmIChncm91cC5uZXdSb3cpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxjciB2YWxpZCBvbmx5IHdpdGhpbiBhIHRhYnVsYXIvYXJyYXkgZW52aXJvbm1lbnRcIik7XG4gICAgfVxuXG4gICAgdmFyIHNwYW4gPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtc3BhY2VcIl0sIFtdLCBvcHRpb25zKTtcblxuICAgIGlmIChncm91cC5uZXdMaW5lKSB7XG4gICAgICBzcGFuLmNsYXNzZXMucHVzaChcIm5ld2xpbmVcIik7XG5cbiAgICAgIGlmIChncm91cC5zaXplKSB7XG4gICAgICAgIHNwYW4uc3R5bGUubWFyZ2luVG9wID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5zaXplLCBvcHRpb25zKSArIFwiZW1cIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3BhbjtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3BhY2VcIik7XG5cbiAgICBpZiAoZ3JvdXAubmV3TGluZSkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsaW5lYnJlYWtcIiwgXCJuZXdsaW5lXCIpO1xuXG4gICAgICBpZiAoZ3JvdXAuc2l6ZSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLnNpemUsIG9wdGlvbnMpICsgXCJlbVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9kZWxpbWl0ZXIuanNcbi8qKlxuICogVGhpcyBmaWxlIGRlYWxzIHdpdGggY3JlYXRpbmcgZGVsaW1pdGVycyBvZiB2YXJpb3VzIHNpemVzLiBUaGUgVGVYYm9va1xuICogZGlzY3Vzc2VzIHRoZXNlIHJvdXRpbmVzIG9uIHBhZ2UgNDQxLTQ0MiwgaW4gdGhlIFwiQW5vdGhlciBzdWJyb3V0aW5lIHNldHMgYm94XG4gKiB4IHRvIGEgc3BlY2lmaWVkIHZhcmlhYmxlIGRlbGltaXRlclwiIHBhcmFncmFwaC5cbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUgbWFpbiByb3V0aW5lcyBoZXJlLiBgbWFrZVNtYWxsRGVsaW1gIG1ha2VzIGEgZGVsaW1pdGVyIGluIHRoZVxuICogbm9ybWFsIGZvbnQsIGJ1dCBpbiBlaXRoZXIgdGV4dCwgc2NyaXB0LCBvciBzY3JpcHRzY3JpcHQgc3R5bGUuXG4gKiBgbWFrZUxhcmdlRGVsaW1gIG1ha2VzIGEgZGVsaW1pdGVyIGluIHRleHRzdHlsZSwgYnV0IGluIG9uZSBvZiB0aGUgU2l6ZTEsXG4gKiBTaXplMiwgU2l6ZTMsIG9yIFNpemU0IGZvbnRzLiBgbWFrZVN0YWNrZWREZWxpbWAgbWFrZXMgYSBkZWxpbWl0ZXIgb3V0IG9mXG4gKiBzbWFsbGVyIHBpZWNlcyB0aGF0IGFyZSBzdGFja2VkIG9uIHRvcCBvZiBvbmUgYW5vdGhlci5cbiAqXG4gKiBUaGUgZnVuY3Rpb25zIHRha2UgYSBwYXJhbWV0ZXIgYGNlbnRlcmAsIHdoaWNoIGRldGVybWluZXMgaWYgdGhlIGRlbGltaXRlclxuICogc2hvdWxkIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgYXhpcy5cbiAqXG4gKiBUaGVuLCB0aGVyZSBhcmUgdGhyZWUgZXhwb3NlZCBmdW5jdGlvbnMuIGBzaXplZERlbGltYCBtYWtlcyBhIGRlbGltaXRlciBpblxuICogb25lIG9mIHRoZSBnaXZlbiBzaXplcy4gVGhpcyBpcyB1c2VkIGZvciB0aGluZ3MgbGlrZSBgXFxiaWdsYC5cbiAqIGBjdXN0b21TaXplZERlbGltYCBtYWtlcyBhIGRlbGltaXRlciB3aXRoIGEgZ2l2ZW4gdG90YWwgaGVpZ2h0K2RlcHRoLiBJdCBpc1xuICogY2FsbGVkIGluIHBsYWNlcyBsaWtlIGBcXHNxcnRgLiBgbGVmdFJpZ2h0RGVsaW1gIG1ha2VzIGFuIGFwcHJvcHJpYXRlXG4gKiBkZWxpbWl0ZXIgd2hpY2ggc3Vycm91bmRzIGFuIGV4cHJlc3Npb24gb2YgYSBnaXZlbiBoZWlnaHQgYW4gZGVwdGguIEl0IGlzXG4gKiB1c2VkIGluIGBcXGxlZnRgIGFuZCBgXFxyaWdodGAuXG4gKi9cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogR2V0IHRoZSBtZXRyaWNzIGZvciBhIGdpdmVuIHN5bWJvbCBhbmQgZm9udCwgYWZ0ZXIgdHJhbnNmb3JtYXRpb24gKGkuZS5cbiAqIGFmdGVyIGZvbGxvd2luZyByZXBsYWNlbWVudCBmcm9tIHN5bWJvbHMuanMpXG4gKi9cbnZhciBkZWxpbWl0ZXJfZ2V0TWV0cmljcyA9IGZ1bmN0aW9uIGdldE1ldHJpY3Moc3ltYm9sLCBmb250LCBtb2RlKSB7XG4gIHZhciByZXBsYWNlID0gc3JjX3N5bWJvbHMubWF0aFtzeW1ib2xdICYmIHNyY19zeW1ib2xzLm1hdGhbc3ltYm9sXS5yZXBsYWNlO1xuICB2YXIgbWV0cmljcyA9IGdldENoYXJhY3Rlck1ldHJpY3MocmVwbGFjZSB8fCBzeW1ib2wsIGZvbnQsIG1vZGUpO1xuXG4gIGlmICghbWV0cmljcykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHN5bWJvbCBcIiArIHN5bWJvbCArIFwiIGFuZCBmb250IHNpemUgXCIgKyBmb250ICsgXCIuXCIpO1xuICB9XG5cbiAgcmV0dXJuIG1ldHJpY3M7XG59O1xuLyoqXG4gKiBQdXRzIGEgZGVsaW1pdGVyIHNwYW4gaW4gYSBnaXZlbiBzdHlsZSwgYW5kIGFkZHMgYXBwcm9wcmlhdGUgaGVpZ2h0LCBkZXB0aCxcbiAqIGFuZCBtYXhGb250U2l6ZXMuXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX3N0eWxlV3JhcCA9IGZ1bmN0aW9uIHN0eWxlV3JhcChkZWxpbSwgdG9TdHlsZSwgb3B0aW9ucywgY2xhc3Nlcykge1xuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKHRvU3R5bGUpO1xuICB2YXIgc3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKGNsYXNzZXMuY29uY2F0KG5ld09wdGlvbnMuc2l6aW5nQ2xhc3NlcyhvcHRpb25zKSksIFtkZWxpbV0sIG9wdGlvbnMpO1xuICB2YXIgZGVsaW1TaXplTXVsdGlwbGllciA9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICBzcGFuLmhlaWdodCAqPSBkZWxpbVNpemVNdWx0aXBsaWVyO1xuICBzcGFuLmRlcHRoICo9IGRlbGltU2l6ZU11bHRpcGxpZXI7XG4gIHNwYW4ubWF4Rm9udFNpemUgPSBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICByZXR1cm4gc3Bhbjtcbn07XG5cbnZhciBjZW50ZXJTcGFuID0gZnVuY3Rpb24gY2VudGVyU3BhbihzcGFuLCBvcHRpb25zLCBzdHlsZSkge1xuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKHN0eWxlKTtcbiAgdmFyIHNoaWZ0ID0gKDEgLSBvcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllcikgKiBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDtcbiAgc3Bhbi5jbGFzc2VzLnB1c2goXCJkZWxpbWNlbnRlclwiKTtcbiAgc3Bhbi5zdHlsZS50b3AgPSBzaGlmdCArIFwiZW1cIjtcbiAgc3Bhbi5oZWlnaHQgLT0gc2hpZnQ7XG4gIHNwYW4uZGVwdGggKz0gc2hpZnQ7XG59O1xuLyoqXG4gKiBNYWtlcyBhIHNtYWxsIGRlbGltaXRlci4gVGhpcyBpcyBhIGRlbGltaXRlciB0aGF0IGNvbWVzIGluIHRoZSBNYWluLVJlZ3VsYXJcbiAqIGZvbnQsIGJ1dCBpcyByZXN0eWxlZCB0byBlaXRoZXIgYmUgaW4gdGV4dHN0eWxlLCBzY3JpcHRzdHlsZSwgb3JcbiAqIHNjcmlwdHNjcmlwdHN0eWxlLlxuICovXG5cblxudmFyIGRlbGltaXRlcl9tYWtlU21hbGxEZWxpbSA9IGZ1bmN0aW9uIG1ha2VTbWFsbERlbGltKGRlbGltLCBzdHlsZSwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKSB7XG4gIHZhciB0ZXh0ID0gYnVpbGRDb21tb24ubWFrZVN5bWJvbChkZWxpbSwgXCJNYWluLVJlZ3VsYXJcIiwgbW9kZSwgb3B0aW9ucyk7XG4gIHZhciBzcGFuID0gZGVsaW1pdGVyX3N0eWxlV3JhcCh0ZXh0LCBzdHlsZSwgb3B0aW9ucywgY2xhc3Nlcyk7XG5cbiAgaWYgKGNlbnRlcikge1xuICAgIGNlbnRlclNwYW4oc3Bhbiwgb3B0aW9ucywgc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIHNwYW47XG59O1xuLyoqXG4gKiBCdWlsZHMgYSBzeW1ib2wgaW4gdGhlIGdpdmVuIGZvbnQgc2l6ZSAobm90ZSBzaXplIGlzIGFuIGludGVnZXIpXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21hdGhybVNpemUgPSBmdW5jdGlvbiBtYXRocm1TaXplKHZhbHVlLCBzaXplLCBtb2RlLCBvcHRpb25zKSB7XG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3ltYm9sKHZhbHVlLCBcIlNpemVcIiArIHNpemUgKyBcIi1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMpO1xufTtcbi8qKlxuICogTWFrZXMgYSBsYXJnZSBkZWxpbWl0ZXIuIFRoaXMgaXMgYSBkZWxpbWl0ZXIgdGhhdCBjb21lcyBpbiB0aGUgU2l6ZTEsIFNpemUyLFxuICogU2l6ZTMsIG9yIFNpemU0IGZvbnRzLiBJdCBpcyBhbHdheXMgcmVuZGVyZWQgaW4gdGV4dHN0eWxlLlxuICovXG5cblxudmFyIGRlbGltaXRlcl9tYWtlTGFyZ2VEZWxpbSA9IGZ1bmN0aW9uIG1ha2VMYXJnZURlbGltKGRlbGltLCBzaXplLCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgdmFyIGlubmVyID0gZGVsaW1pdGVyX21hdGhybVNpemUoZGVsaW0sIHNpemUsIG1vZGUsIG9wdGlvbnMpO1xuICB2YXIgc3BhbiA9IGRlbGltaXRlcl9zdHlsZVdyYXAoYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiZGVsaW1zaXppbmdcIiwgXCJzaXplXCIgKyBzaXplXSwgW2lubmVyXSwgb3B0aW9ucyksIHNyY19TdHlsZS5URVhULCBvcHRpb25zLCBjbGFzc2VzKTtcblxuICBpZiAoY2VudGVyKSB7XG4gICAgY2VudGVyU3BhbihzcGFuLCBvcHRpb25zLCBzcmNfU3R5bGUuVEVYVCk7XG4gIH1cblxuICByZXR1cm4gc3Bhbjtcbn07XG4vKipcbiAqIE1ha2UgYW4gaW5uZXIgc3BhbiB3aXRoIHRoZSBnaXZlbiBvZmZzZXQgYW5kIGluIHRoZSBnaXZlbiBmb250LiBUaGlzIGlzIHVzZWRcbiAqIGluIGBtYWtlU3RhY2tlZERlbGltYCB0byBtYWtlIHRoZSBzdGFja2luZyBwaWVjZXMgZm9yIHRoZSBkZWxpbWl0ZXIuXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21ha2VJbm5lciA9IGZ1bmN0aW9uIG1ha2VJbm5lcihzeW1ib2wsIGZvbnQsIG1vZGUpIHtcbiAgdmFyIHNpemVDbGFzczsgLy8gQXBwbHkgdGhlIGNvcnJlY3QgQ1NTIGNsYXNzIHRvIGNob29zZSB0aGUgcmlnaHQgZm9udC5cblxuICBpZiAoZm9udCA9PT0gXCJTaXplMS1SZWd1bGFyXCIpIHtcbiAgICBzaXplQ2xhc3MgPSBcImRlbGltLXNpemUxXCI7XG4gIH0gZWxzZVxuICAgIC8qIGlmIChmb250ID09PSBcIlNpemU0LVJlZ3VsYXJcIikgKi9cbiAgICB7XG4gICAgICBzaXplQ2xhc3MgPSBcImRlbGltLXNpemU0XCI7XG4gICAgfVxuXG4gIHZhciBpbm5lciA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImRlbGltc2l6aW5naW5uZXJcIiwgc2l6ZUNsYXNzXSwgW2J1aWxkQ29tbW9uLm1ha2VTcGFuKFtdLCBbYnVpbGRDb21tb24ubWFrZVN5bWJvbChzeW1ib2wsIGZvbnQsIG1vZGUpXSldKTsgLy8gU2luY2UgdGhpcyB3aWxsIGJlIHBhc3NlZCBpbnRvIGBtYWtlVkxpc3RgIGluIHRoZSBlbmQsIHdyYXAgdGhlIGVsZW1lbnRcbiAgLy8gaW4gdGhlIGFwcHJvcHJpYXRlIHRhZyB0aGF0IFZMaXN0IHVzZXMuXG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcImVsZW1cIixcbiAgICBlbGVtOiBpbm5lclxuICB9O1xufTsgLy8gSGVscGVyIGZvciBtYWtlU3RhY2tlZERlbGltXG5cblxudmFyIGxhcCA9IHtcbiAgdHlwZTogXCJrZXJuXCIsXG4gIHNpemU6IC0wLjAwNVxufTtcbi8qKlxuICogTWFrZSBhIHN0YWNrZWQgZGVsaW1pdGVyIG91dCBvZiBhIGdpdmVuIGRlbGltaXRlciwgd2l0aCB0aGUgdG90YWwgaGVpZ2h0IGF0XG4gKiBsZWFzdCBgaGVpZ2h0VG90YWxgLiBUaGlzIHJvdXRpbmUgaXMgbWVudGlvbmVkIG9uIHBhZ2UgNDQyIG9mIHRoZSBUZVhib29rLlxuICovXG5cbnZhciBkZWxpbWl0ZXJfbWFrZVN0YWNrZWREZWxpbSA9IGZ1bmN0aW9uIG1ha2VTdGFja2VkRGVsaW0oZGVsaW0sIGhlaWdodFRvdGFsLCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgLy8gVGhlcmUgYXJlIGZvdXIgcGFydHMsIHRoZSB0b3AsIGFuIG9wdGlvbmFsIG1pZGRsZSwgYSByZXBlYXRlZCBwYXJ0LCBhbmQgYVxuICAvLyBib3R0b20uXG4gIHZhciB0b3A7XG4gIHZhciBtaWRkbGU7XG4gIHZhciByZXBlYXQ7XG4gIHZhciBib3R0b207XG4gIHRvcCA9IHJlcGVhdCA9IGJvdHRvbSA9IGRlbGltO1xuICBtaWRkbGUgPSBudWxsOyAvLyBBbHNvIGtlZXAgdHJhY2sgb2Ygd2hhdCBmb250IHRoZSBkZWxpbWl0ZXJzIGFyZSBpblxuXG4gIHZhciBmb250ID0gXCJTaXplMS1SZWd1bGFyXCI7IC8vIFdlIHNldCB0aGUgcGFydHMgYW5kIGZvbnQgYmFzZWQgb24gdGhlIHN5bWJvbC4gTm90ZSB0aGF0IHdlIHVzZVxuICAvLyAnXFx1MjNkMCcgaW5zdGVhZCBvZiAnfCcgYW5kICdcXHUyMDE2JyBpbnN0ZWFkIG9mICdcXFxcfCcgZm9yIHRoZVxuICAvLyByZXBlYXRzIG9mIHRoZSBhcnJvd3NcblxuICBpZiAoZGVsaW0gPT09IFwiXFxcXHVwYXJyb3dcIikge1xuICAgIHJlcGVhdCA9IGJvdHRvbSA9IFwiXFx1MjNEMFwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxVcGFycm93XCIpIHtcbiAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIwMTZcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcZG93bmFycm93XCIpIHtcbiAgICB0b3AgPSByZXBlYXQgPSBcIlxcdTIzRDBcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcRG93bmFycm93XCIpIHtcbiAgICB0b3AgPSByZXBlYXQgPSBcIlxcdTIwMTZcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcdXBkb3duYXJyb3dcIikge1xuICAgIHRvcCA9IFwiXFxcXHVwYXJyb3dcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzRDBcIjtcbiAgICBib3R0b20gPSBcIlxcXFxkb3duYXJyb3dcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcVXBkb3duYXJyb3dcIikge1xuICAgIHRvcCA9IFwiXFxcXFVwYXJyb3dcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIwMTZcIjtcbiAgICBib3R0b20gPSBcIlxcXFxEb3duYXJyb3dcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJbXCIgfHwgZGVsaW0gPT09IFwiXFxcXGxicmFja1wiKSB7XG4gICAgdG9wID0gXCJcXHUyM0ExXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0EyXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0EzXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIl1cIiB8fCBkZWxpbSA9PT0gXCJcXFxccmJyYWNrXCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTRcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzQTVcIjtcbiAgICBib3R0b20gPSBcIlxcdTIzQTZcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXGxmbG9vclwiIHx8IGRlbGltID09PSBcIlxcdTIzMEFcIikge1xuICAgIHJlcGVhdCA9IHRvcCA9IFwiXFx1MjNBMlwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBM1wiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcbGNlaWxcIiB8fCBkZWxpbSA9PT0gXCJcXHUyMzA4XCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTFcIjtcbiAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIzQTJcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXHJmbG9vclwiIHx8IGRlbGltID09PSBcIlxcdTIzMEJcIikge1xuICAgIHJlcGVhdCA9IHRvcCA9IFwiXFx1MjNBNVwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBNlwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxccmNlaWxcIiB8fCBkZWxpbSA9PT0gXCJcXHUyMzA5XCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTRcIjtcbiAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIzQTVcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiKFwiIHx8IGRlbGltID09PSBcIlxcXFxscGFyZW5cIikge1xuICAgIHRvcCA9IFwiXFx1MjM5QlwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjM5Q1wiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjM5RFwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCIpXCIgfHwgZGVsaW0gPT09IFwiXFxcXHJwYXJlblwiKSB7XG4gICAgdG9wID0gXCJcXHUyMzlFXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyMzlGXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0EwXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFx7XCIgfHwgZGVsaW0gPT09IFwiXFxcXGxicmFjZVwiKSB7XG4gICAgdG9wID0gXCJcXHUyM0E3XCI7XG4gICAgbWlkZGxlID0gXCJcXHUyM0E4XCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0E5XCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFx9XCIgfHwgZGVsaW0gPT09IFwiXFxcXHJicmFjZVwiKSB7XG4gICAgdG9wID0gXCJcXHUyM0FCXCI7XG4gICAgbWlkZGxlID0gXCJcXHUyM0FDXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0FEXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxsZ3JvdXBcIiB8fCBkZWxpbSA9PT0gXCJcXHUyN0VFXCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTdcIjtcbiAgICBib3R0b20gPSBcIlxcdTIzQTlcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzQUFcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXHJncm91cFwiIHx8IGRlbGltID09PSBcIlxcdTI3RUZcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBQlwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBRFwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcbG1vdXN0YWNoZVwiIHx8IGRlbGltID09PSBcIlxcdTIzQjBcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBN1wiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBRFwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxccm1vdXN0YWNoZVwiIHx8IGRlbGltID09PSBcIlxcdTIzQjFcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBQlwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBOVwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSAvLyBHZXQgdGhlIG1ldHJpY3Mgb2YgdGhlIGZvdXIgc2VjdGlvbnNcblxuXG4gIHZhciB0b3BNZXRyaWNzID0gZGVsaW1pdGVyX2dldE1ldHJpY3ModG9wLCBmb250LCBtb2RlKTtcbiAgdmFyIHRvcEhlaWdodFRvdGFsID0gdG9wTWV0cmljcy5oZWlnaHQgKyB0b3BNZXRyaWNzLmRlcHRoO1xuICB2YXIgcmVwZWF0TWV0cmljcyA9IGRlbGltaXRlcl9nZXRNZXRyaWNzKHJlcGVhdCwgZm9udCwgbW9kZSk7XG4gIHZhciByZXBlYXRIZWlnaHRUb3RhbCA9IHJlcGVhdE1ldHJpY3MuaGVpZ2h0ICsgcmVwZWF0TWV0cmljcy5kZXB0aDtcbiAgdmFyIGJvdHRvbU1ldHJpY3MgPSBkZWxpbWl0ZXJfZ2V0TWV0cmljcyhib3R0b20sIGZvbnQsIG1vZGUpO1xuICB2YXIgYm90dG9tSGVpZ2h0VG90YWwgPSBib3R0b21NZXRyaWNzLmhlaWdodCArIGJvdHRvbU1ldHJpY3MuZGVwdGg7XG4gIHZhciBtaWRkbGVIZWlnaHRUb3RhbCA9IDA7XG4gIHZhciBtaWRkbGVGYWN0b3IgPSAxO1xuXG4gIGlmIChtaWRkbGUgIT09IG51bGwpIHtcbiAgICB2YXIgbWlkZGxlTWV0cmljcyA9IGRlbGltaXRlcl9nZXRNZXRyaWNzKG1pZGRsZSwgZm9udCwgbW9kZSk7XG4gICAgbWlkZGxlSGVpZ2h0VG90YWwgPSBtaWRkbGVNZXRyaWNzLmhlaWdodCArIG1pZGRsZU1ldHJpY3MuZGVwdGg7XG4gICAgbWlkZGxlRmFjdG9yID0gMjsgLy8gcmVwZWF0IHN5bW1ldHJpY2FsbHkgYWJvdmUgYW5kIGJlbG93IG1pZGRsZVxuICB9IC8vIENhbGN1YXRlIHRoZSBtaW5pbWFsIGhlaWdodCB0aGF0IHRoZSBkZWxpbWl0ZXIgY2FuIGhhdmUuXG4gIC8vIEl0IGlzIGF0IGxlYXN0IHRoZSBzaXplIG9mIHRoZSB0b3AsIGJvdHRvbSwgYW5kIG9wdGlvbmFsIG1pZGRsZSBjb21iaW5lZC5cblxuXG4gIHZhciBtaW5IZWlnaHQgPSB0b3BIZWlnaHRUb3RhbCArIGJvdHRvbUhlaWdodFRvdGFsICsgbWlkZGxlSGVpZ2h0VG90YWw7IC8vIENvbXB1dGUgdGhlIG51bWJlciBvZiBjb3BpZXMgb2YgdGhlIHJlcGVhdCBzeW1ib2wgd2Ugd2lsbCBuZWVkXG5cbiAgdmFyIHJlcGVhdENvdW50ID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKChoZWlnaHRUb3RhbCAtIG1pbkhlaWdodCkgLyAobWlkZGxlRmFjdG9yICogcmVwZWF0SGVpZ2h0VG90YWwpKSk7IC8vIENvbXB1dGUgdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgZGVsaW1pdGVyIGluY2x1ZGluZyBhbGwgdGhlIHN5bWJvbHNcblxuICB2YXIgcmVhbEhlaWdodFRvdGFsID0gbWluSGVpZ2h0ICsgcmVwZWF0Q291bnQgKiBtaWRkbGVGYWN0b3IgKiByZXBlYXRIZWlnaHRUb3RhbDsgLy8gVGhlIGNlbnRlciBvZiB0aGUgZGVsaW1pdGVyIGlzIHBsYWNlZCBhdCB0aGUgY2VudGVyIG9mIHRoZSBheGlzLiBOb3RlXG4gIC8vIHRoYXQgaW4gdGhpcyBjb250ZXh0LCBcImNlbnRlclwiIG1lYW5zIHRoYXQgdGhlIGRlbGltaXRlciBzaG91bGQgYmVcbiAgLy8gY2VudGVyZWQgYXJvdW5kIHRoZSBheGlzIGluIHRoZSBjdXJyZW50IHN0eWxlLCB3aGlsZSBub3JtYWxseSBpdCBpc1xuICAvLyBjZW50ZXJlZCBhcm91bmQgdGhlIGF4aXMgaW4gdGV4dHN0eWxlLlxuXG4gIHZhciBheGlzSGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQ7XG5cbiAgaWYgKGNlbnRlcikge1xuICAgIGF4aXNIZWlnaHQgKj0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgfSAvLyBDYWxjdWxhdGUgdGhlIGRlcHRoXG5cblxuICB2YXIgZGVwdGggPSByZWFsSGVpZ2h0VG90YWwgLyAyIC0gYXhpc0hlaWdodDsgLy8gVGhpcyBmdW5jdGlvbiBkaWZmZXJzIGZyb20gdGhlIFRlWCBwcm9jZWR1cmUgaW4gb25lIHdheS5cbiAgLy8gV2Ugc2hpZnQgZWFjaCByZXBlYXQgZWxlbWVudCBkb3dud2FyZHMgYnkgMC4wMDVlbSwgdG8gcHJldmVudCBhIGdhcFxuICAvLyBkdWUgdG8gYnJvd3NlciBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvci5cbiAgLy8gVGhlbiwgYXQgdGhlIGxhc3QgZWxlbWVudC10byBlbGVtZW50IGpvaW50LCB3ZSBhZGQgb25lIGV4dHJhIHJlcGVhdFxuICAvLyBlbGVtZW50IHRvIGNvdmVyIHRoZSBnYXAgY3JlYXRlZCBieSB0aGUgc2hpZnRzLlxuICAvLyBGaW5kIHRoZSBzaGlmdCBuZWVkZWQgdG8gYWxpZ24gdGhlIHVwcGVyIGVuZCBvZiB0aGUgZXh0cmEgZWxlbWVudCBhdCBhIHBvaW50XG4gIC8vIDAuMDA1ZW0gYWJvdmUgdGhlIGxvd2VyIGVuZCBvZiB0aGUgdG9wIGVsZW1lbnQuXG5cbiAgdmFyIHNoaWZ0T2ZFeHRyYUVsZW1lbnQgPSAocmVwZWF0Q291bnQgKyAxKSAqIDAuMDA1IC0gcmVwZWF0SGVpZ2h0VG90YWw7IC8vIE5vdywgd2Ugc3RhcnQgYnVpbGRpbmcgdGhlIHBpZWNlcyB0aGF0IHdpbGwgZ28gaW50byB0aGUgdmxpc3RcbiAgLy8gS2VlcCBhIGxpc3Qgb2YgdGhlIGlubmVyIHBpZWNlc1xuXG4gIHZhciBpbm5lcnMgPSBbXTsgLy8gQWRkIHRoZSBib3R0b20gc3ltYm9sXG5cbiAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihib3R0b20sIGZvbnQsIG1vZGUpKTtcblxuICBpZiAobWlkZGxlID09PSBudWxsKSB7XG4gICAgLy8gQWRkIHRoYXQgbWFueSBzeW1ib2xzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXBlYXRDb3VudDsgaSsrKSB7XG4gICAgICBpbm5lcnMucHVzaChsYXApOyAvLyBvdmVybGFwXG5cbiAgICAgIGlubmVycy5wdXNoKGRlbGltaXRlcl9tYWtlSW5uZXIocmVwZWF0LCBmb250LCBtb2RlKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFdoZW4gdGhlcmUgaXMgYSBtaWRkbGUgYml0LCB3ZSBuZWVkIHRoZSBtaWRkbGUgcGFydCBhbmQgdHdvIHJlcGVhdGVkXG4gICAgLy8gc2VjdGlvbnNcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcmVwZWF0Q291bnQ7IF9pKyspIHtcbiAgICAgIGlubmVycy5wdXNoKGxhcCk7XG4gICAgICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKHJlcGVhdCwgZm9udCwgbW9kZSkpO1xuICAgIH0gLy8gSW5zZXJ0IG9uZSBleHRyYSByZXBlYXQgZWxlbWVudC5cblxuXG4gICAgaW5uZXJzLnB1c2goe1xuICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICBzaXplOiBzaGlmdE9mRXh0cmFFbGVtZW50XG4gICAgfSk7XG4gICAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihyZXBlYXQsIGZvbnQsIG1vZGUpKTtcbiAgICBpbm5lcnMucHVzaChsYXApOyAvLyBOb3cgaW5zZXJ0IHRoZSBtaWRkbGUgb2YgdGhlIGJyYWNlLlxuXG4gICAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihtaWRkbGUsIGZvbnQsIG1vZGUpKTtcblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHJlcGVhdENvdW50OyBfaTIrKykge1xuICAgICAgaW5uZXJzLnB1c2gobGFwKTtcbiAgICAgIGlubmVycy5wdXNoKGRlbGltaXRlcl9tYWtlSW5uZXIocmVwZWF0LCBmb250LCBtb2RlKSk7XG4gICAgfVxuICB9IC8vIFRvIGNvdmVyIHRoZSBnYXAgY3JlYXRlIGJ5IHRoZSBvdmVybGFwcywgaW5zZXJ0IG9uZSBtb3JlIHJlcGVhdCBlbGVtZW50LFxuICAvLyBhdCBhIHBvc2l0aW9uIHRoYXQganV0cyAwLjAwNSBhYm92ZSB0aGUgYm90dG9tIG9mIHRoZSB0b3AgZWxlbWVudC5cblxuXG4gIGlubmVycy5wdXNoKHtcbiAgICB0eXBlOiBcImtlcm5cIixcbiAgICBzaXplOiBzaGlmdE9mRXh0cmFFbGVtZW50XG4gIH0pO1xuICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKHJlcGVhdCwgZm9udCwgbW9kZSkpO1xuICBpbm5lcnMucHVzaChsYXApOyAvLyBBZGQgdGhlIHRvcCBzeW1ib2xcblxuICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKHRvcCwgZm9udCwgbW9kZSkpOyAvLyBGaW5hbGx5LCBidWlsZCB0aGUgdmxpc3RcblxuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKHNyY19TdHlsZS5URVhUKTtcbiAgdmFyIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICBwb3NpdGlvblR5cGU6IFwiYm90dG9tXCIsXG4gICAgcG9zaXRpb25EYXRhOiBkZXB0aCxcbiAgICBjaGlsZHJlbjogaW5uZXJzXG4gIH0sIG5ld09wdGlvbnMpO1xuICByZXR1cm4gZGVsaW1pdGVyX3N0eWxlV3JhcChidWlsZENvbW1vbi5tYWtlU3BhbihbXCJkZWxpbXNpemluZ1wiLCBcIm11bHRcIl0sIFtpbm5lcl0sIG5ld09wdGlvbnMpLCBzcmNfU3R5bGUuVEVYVCwgb3B0aW9ucywgY2xhc3Nlcyk7XG59OyAvLyBBbGwgc3VyZHMgaGF2ZSAwLjA4ZW0gcGFkZGluZyBhYm92ZSB0aGUgdmluaWN1bHVtIGluc2lkZSB0aGUgU1ZHLlxuLy8gVGhhdCBrZWVwcyBicm93c2VyIHNwYW4gaGVpZ2h0IHJvdW5kaW5nIGVycm9yIGZyb20gcGluY2hpbmcgdGhlIGxpbmUuXG5cblxudmFyIHZiUGFkID0gODA7IC8vIHBhZGRpbmcgYWJvdmUgdGhlIHN1cmQsIG1lYXN1cmVkIGluc2lkZSB0aGUgdmlld0JveC5cblxudmFyIGVtUGFkID0gMC4wODsgLy8gcGFkZGluZywgaW4gZW1zLCBtZWFzdXJlZCBpbiB0aGUgZG9jdW1lbnQuXG5cbnZhciBkZWxpbWl0ZXJfc3FydFN2ZyA9IGZ1bmN0aW9uIHNxcnRTdmcoc3FydE5hbWUsIGhlaWdodCwgdmlld0JveEhlaWdodCwgZXh0cmFWaW5pY3VsdW0sIG9wdGlvbnMpIHtcbiAgdmFyIHBhdGggPSBzcXJ0UGF0aChzcXJ0TmFtZSwgZXh0cmFWaW5pY3VsdW0sIHZpZXdCb3hIZWlnaHQpO1xuICB2YXIgcGF0aE5vZGUgPSBuZXcgZG9tVHJlZV9QYXRoTm9kZShzcXJ0TmFtZSwgcGF0aCk7XG4gIHZhciBzdmcgPSBuZXcgU3ZnTm9kZShbcGF0aE5vZGVdLCB7XG4gICAgLy8gTm90ZTogMTAwMDoxIHJhdGlvIG9mIHZpZXdCb3ggdG8gZG9jdW1lbnQgZW0gd2lkdGguXG4gICAgXCJ3aWR0aFwiOiBcIjQwMGVtXCIsXG4gICAgXCJoZWlnaHRcIjogaGVpZ2h0ICsgXCJlbVwiLFxuICAgIFwidmlld0JveFwiOiBcIjAgMCA0MDAwMDAgXCIgKyB2aWV3Qm94SGVpZ2h0LFxuICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBcInhNaW5ZTWluIHNsaWNlXCJcbiAgfSk7XG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3ZnU3BhbihbXCJoaWRlLXRhaWxcIl0sIFtzdmddLCBvcHRpb25zKTtcbn07XG4vKipcbiAqIE1ha2UgYSBzcXJ0IGltYWdlIG9mIHRoZSBnaXZlbiBoZWlnaHQsXG4gKi9cblxuXG52YXIgbWFrZVNxcnRJbWFnZSA9IGZ1bmN0aW9uIG1ha2VTcXJ0SW1hZ2UoaGVpZ2h0LCBvcHRpb25zKSB7XG4gIC8vIERlZmluZSBhIG5ld09wdGlvbnMgdGhhdCByZW1vdmVzIHRoZSBlZmZlY3Qgb2Ygc2l6ZSBjaGFuZ2VzIHN1Y2ggYXMgXFxIdWdlLlxuICAvLyBXZSBkb24ndCBwaWNrIGRpZmZlcmVudCBhIGhlaWdodCBzdXJkIGZvciBcXEh1Z2UuIEZvciBpdCwgd2Ugc2NhbGUgdXAuXG4gIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdCYXNlU2l6aW5nKCk7IC8vIFBpY2sgdGhlIGRlc2lyZWQgc3VyZCBnbHlwaCBmcm9tIGEgc2VxdWVuY2Ugb2Ygc3VyZHMuXG5cbiAgdmFyIGRlbGltID0gdHJhdmVyc2VTZXF1ZW5jZShcIlxcXFxzdXJkXCIsIGhlaWdodCAqIG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIsIHN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZSwgbmV3T3B0aW9ucyk7XG4gIHZhciBzaXplTXVsdGlwbGllciA9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXI7IC8vIGRlZmF1bHRcbiAgLy8gVGhlIHN0YW5kYXJkIHNxcnQgU1ZHcyBlYWNoIGhhdmUgYSAwLjA0ZW0gdGhpY2sgdmluaWN1bHVtLlxuICAvLyBJZiBTZXR0aW5ncy5taW5SdWxlVGhpY2tuZXNzIGlzIGxhcmdlciB0aGFuIHRoYXQsIHdlIGFkZCBleHRyYVZpbmljdWx1bS5cblxuICB2YXIgZXh0cmFWaW5pY3VsdW0gPSBNYXRoLm1heCgwLCBvcHRpb25zLm1pblJ1bGVUaGlja25lc3MgLSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuc3FydFJ1bGVUaGlja25lc3MpOyAvLyBDcmVhdGUgYSBzcGFuIGNvbnRhaW5pbmcgYW4gU1ZHIGltYWdlIG9mIGEgc3FydCBzeW1ib2wuXG5cbiAgdmFyIHNwYW47XG4gIHZhciBzcGFuSGVpZ2h0ID0gMDtcbiAgdmFyIHRleEhlaWdodCA9IDA7XG4gIHZhciB2aWV3Qm94SGVpZ2h0ID0gMDtcbiAgdmFyIGFkdmFuY2VXaWR0aDsgLy8gV2UgY3JlYXRlIHZpZXdCb3hlcyB3aXRoIDgwIHVuaXRzIG9mIFwicGFkZGluZ1wiIGFib3ZlIGVhY2ggc3VyZC5cbiAgLy8gVGhlbiBicm93c2VyIHJvdW5kaW5nIGVycm9yIG9uIHRoZSBwYXJlbnQgc3BhbiBoZWlnaHQgd2lsbCBub3RcbiAgLy8gZW5jcm9hY2ggb24gdGhlIGluayBvZiB0aGUgdmluaWN1bHVtLiBCdXQgdGhhdCBwYWRkaW5nIGlzIG5vdFxuICAvLyBpbmNsdWRlZCBpbiB0aGUgVGVYLWxpa2UgYGhlaWdodGAgdXNlZCBmb3IgY2FsY3VsYXRpb24gb2ZcbiAgLy8gdmVydGljYWwgYWxpZ25tZW50LiBTbyB0ZXhIZWlnaHQgPSBzcGFuLmhlaWdodCA8IHNwYW4uc3R5bGUuaGVpZ2h0LlxuXG4gIGlmIChkZWxpbS50eXBlID09PSBcInNtYWxsXCIpIHtcbiAgICAvLyBHZXQgYW4gU1ZHIHRoYXQgaXMgZGVyaXZlZCBmcm9tIGdseXBoIFUrMjIxQSBpbiBmb250IEthVGVYLU1haW4uXG4gICAgLy8gMTAwMCB1bml0IG5vcm1hbCBnbHlwaCBoZWlnaHQuXG4gICAgdmlld0JveEhlaWdodCA9IDEwMDAgKyAxMDAwICogZXh0cmFWaW5pY3VsdW0gKyB2YlBhZDtcblxuICAgIGlmIChoZWlnaHQgPCAxLjApIHtcbiAgICAgIHNpemVNdWx0aXBsaWVyID0gMS4wOyAvLyBtaW1pYyBhIFxcdGV4dGZvbnQgcmFkaWNhbFxuICAgIH0gZWxzZSBpZiAoaGVpZ2h0IDwgMS40KSB7XG4gICAgICBzaXplTXVsdGlwbGllciA9IDAuNzsgLy8gbWltaWMgYSBcXHNjcmlwdGZvbnQgcmFkaWNhbFxuICAgIH1cblxuICAgIHNwYW5IZWlnaHQgPSAoMS4wICsgZXh0cmFWaW5pY3VsdW0gKyBlbVBhZCkgLyBzaXplTXVsdGlwbGllcjtcbiAgICB0ZXhIZWlnaHQgPSAoMS4wMCArIGV4dHJhVmluaWN1bHVtKSAvIHNpemVNdWx0aXBsaWVyO1xuICAgIHNwYW4gPSBkZWxpbWl0ZXJfc3FydFN2ZyhcInNxcnRNYWluXCIsIHNwYW5IZWlnaHQsIHZpZXdCb3hIZWlnaHQsIGV4dHJhVmluaWN1bHVtLCBvcHRpb25zKTtcbiAgICBzcGFuLnN0eWxlLm1pbldpZHRoID0gXCIwLjg1M2VtXCI7XG4gICAgYWR2YW5jZVdpZHRoID0gMC44MzMgLyBzaXplTXVsdGlwbGllcjsgLy8gZnJvbSB0aGUgZm9udC5cbiAgfSBlbHNlIGlmIChkZWxpbS50eXBlID09PSBcImxhcmdlXCIpIHtcbiAgICAvLyBUaGVzZSBTVkdzIGNvbWUgZnJvbSBmb250czogS2FUZVhfU2l6ZTEsIF9TaXplMiwgZXRjLlxuICAgIHZpZXdCb3hIZWlnaHQgPSAoMTAwMCArIHZiUGFkKSAqIHNpemVUb01heEhlaWdodFtkZWxpbS5zaXplXTtcbiAgICB0ZXhIZWlnaHQgPSAoc2l6ZVRvTWF4SGVpZ2h0W2RlbGltLnNpemVdICsgZXh0cmFWaW5pY3VsdW0pIC8gc2l6ZU11bHRpcGxpZXI7XG4gICAgc3BhbkhlaWdodCA9IChzaXplVG9NYXhIZWlnaHRbZGVsaW0uc2l6ZV0gKyBleHRyYVZpbmljdWx1bSArIGVtUGFkKSAvIHNpemVNdWx0aXBsaWVyO1xuICAgIHNwYW4gPSBkZWxpbWl0ZXJfc3FydFN2ZyhcInNxcnRTaXplXCIgKyBkZWxpbS5zaXplLCBzcGFuSGVpZ2h0LCB2aWV3Qm94SGVpZ2h0LCBleHRyYVZpbmljdWx1bSwgb3B0aW9ucyk7XG4gICAgc3Bhbi5zdHlsZS5taW5XaWR0aCA9IFwiMS4wMmVtXCI7XG4gICAgYWR2YW5jZVdpZHRoID0gMS4wIC8gc2l6ZU11bHRpcGxpZXI7IC8vIDEuMCBmcm9tIHRoZSBmb250LlxuICB9IGVsc2Uge1xuICAgIC8vIFRhbGwgc3FydC4gSW4gVGVYLCB0aGlzIHdvdWxkIGJlIHN0YWNrZWQgdXNpbmcgbXVsdGlwbGUgZ2x5cGhzLlxuICAgIC8vIFdlJ2xsIHVzZSBhIHNpbmdsZSBTVkcgdG8gYWNjb21wbGlzaCB0aGUgc2FtZSB0aGluZy5cbiAgICBzcGFuSGVpZ2h0ID0gaGVpZ2h0ICsgZXh0cmFWaW5pY3VsdW0gKyBlbVBhZDtcbiAgICB0ZXhIZWlnaHQgPSBoZWlnaHQgKyBleHRyYVZpbmljdWx1bTtcbiAgICB2aWV3Qm94SGVpZ2h0ID0gTWF0aC5mbG9vcigxMDAwICogaGVpZ2h0ICsgZXh0cmFWaW5pY3VsdW0pICsgdmJQYWQ7XG4gICAgc3BhbiA9IGRlbGltaXRlcl9zcXJ0U3ZnKFwic3FydFRhbGxcIiwgc3BhbkhlaWdodCwgdmlld0JveEhlaWdodCwgZXh0cmFWaW5pY3VsdW0sIG9wdGlvbnMpO1xuICAgIHNwYW4uc3R5bGUubWluV2lkdGggPSBcIjAuNzQyZW1cIjtcbiAgICBhZHZhbmNlV2lkdGggPSAxLjA1NjtcbiAgfVxuXG4gIHNwYW4uaGVpZ2h0ID0gdGV4SGVpZ2h0O1xuICBzcGFuLnN0eWxlLmhlaWdodCA9IHNwYW5IZWlnaHQgKyBcImVtXCI7XG4gIHJldHVybiB7XG4gICAgc3Bhbjogc3BhbixcbiAgICBhZHZhbmNlV2lkdGg6IGFkdmFuY2VXaWR0aCxcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGFjdHVhbCBsaW5lIHdpZHRoLlxuICAgIC8vIFRoaXMgYWN0dWFsbHkgc2hvdWxkIGRlcGVuZCBvbiB0aGUgY2hvc2VuIGZvbnQgLS0gZS5nLiBcXGJvbGRtYXRoXG4gICAgLy8gc2hvdWxkIHVzZSB0aGUgdGhpY2tlciBzdXJkIHN5bWJvbHMgZnJvbSBlLmcuIEthVGVYX01haW4tQm9sZCwgYW5kXG4gICAgLy8gaGF2ZSB0aGlja2VyIHJ1bGVzLlxuICAgIHJ1bGVXaWR0aDogKG9wdGlvbnMuZm9udE1ldHJpY3MoKS5zcXJ0UnVsZVRoaWNrbmVzcyArIGV4dHJhVmluaWN1bHVtKSAqIHNpemVNdWx0aXBsaWVyXG4gIH07XG59OyAvLyBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgZGVsaW1pdGVycywgZGVsaW1pdGVycyB0aGF0IHN0YWNrIHdoZW4gdGhleSBiZWNvbWVcbi8vIHRvbyBsYXJnZVxuXG5cbnZhciBzdGFja0xhcmdlRGVsaW1pdGVycyA9IFtcIihcIiwgXCJcXFxcbHBhcmVuXCIsIFwiKVwiLCBcIlxcXFxycGFyZW5cIiwgXCJbXCIsIFwiXFxcXGxicmFja1wiLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIsIFwiXFxcXHtcIiwgXCJcXFxcbGJyYWNlXCIsIFwiXFxcXH1cIiwgXCJcXFxccmJyYWNlXCIsIFwiXFxcXGxmbG9vclwiLCBcIlxcXFxyZmxvb3JcIiwgXCJcXHUyMzBBXCIsIFwiXFx1MjMwQlwiLCBcIlxcXFxsY2VpbFwiLCBcIlxcXFxyY2VpbFwiLCBcIlxcdTIzMDhcIiwgXCJcXHUyMzA5XCIsIFwiXFxcXHN1cmRcIl07IC8vIGRlbGltaXRlcnMgdGhhdCBhbHdheXMgc3RhY2tcblxudmFyIHN0YWNrQWx3YXlzRGVsaW1pdGVycyA9IFtcIlxcXFx1cGFycm93XCIsIFwiXFxcXGRvd25hcnJvd1wiLCBcIlxcXFx1cGRvd25hcnJvd1wiLCBcIlxcXFxVcGFycm93XCIsIFwiXFxcXERvd25hcnJvd1wiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCBcInxcIiwgXCJcXFxcfFwiLCBcIlxcXFx2ZXJ0XCIsIFwiXFxcXFZlcnRcIiwgXCJcXFxcbHZlcnRcIiwgXCJcXFxccnZlcnRcIiwgXCJcXFxcbFZlcnRcIiwgXCJcXFxcclZlcnRcIiwgXCJcXFxcbGdyb3VwXCIsIFwiXFxcXHJncm91cFwiLCBcIlxcdTI3RUVcIiwgXCJcXHUyN0VGXCIsIFwiXFxcXGxtb3VzdGFjaGVcIiwgXCJcXFxccm1vdXN0YWNoZVwiLCBcIlxcdTIzQjBcIiwgXCJcXHUyM0IxXCJdOyAvLyBhbmQgZGVsaW1pdGVycyB0aGF0IG5ldmVyIHN0YWNrXG5cbnZhciBzdGFja05ldmVyRGVsaW1pdGVycyA9IFtcIjxcIiwgXCI+XCIsIFwiXFxcXGxhbmdsZVwiLCBcIlxcXFxyYW5nbGVcIiwgXCIvXCIsIFwiXFxcXGJhY2tzbGFzaFwiLCBcIlxcXFxsdFwiLCBcIlxcXFxndFwiXTsgLy8gTWV0cmljcyBvZiB0aGUgZGlmZmVyZW50IHNpemVzLiBGb3VuZCBieSBsb29raW5nIGF0IFRlWCdzIG91dHB1dCBvZlxuLy8gJFxcYmlnbHwgLy8gXFxCaWdsfCBcXGJpZ2dsfCBcXEJpZ2dsfCBcXHNob3dsaXN0cyRcbi8vIFVzZWQgdG8gY3JlYXRlIHN0YWNrZWQgZGVsaW1pdGVycyBvZiBhcHByb3ByaWF0ZSBzaXplcyBpbiBtYWtlU2l6ZWREZWxpbS5cblxudmFyIHNpemVUb01heEhlaWdodCA9IFswLCAxLjIsIDEuOCwgMi40LCAzLjBdO1xuLyoqXG4gKiBVc2VkIHRvIGNyZWF0ZSBhIGRlbGltaXRlciBvZiBhIHNwZWNpZmljIHNpemUsIHdoZXJlIGBzaXplYCBpcyAxLCAyLCAzLCBvciA0LlxuICovXG5cbnZhciBkZWxpbWl0ZXJfbWFrZVNpemVkRGVsaW0gPSBmdW5jdGlvbiBtYWtlU2l6ZWREZWxpbShkZWxpbSwgc2l6ZSwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICAvLyA8IGFuZCA+IHR1cm4gaW50byBcXGxhbmdsZSBhbmQgXFxyYW5nbGUgaW4gZGVsaW1pdGVyc1xuICBpZiAoZGVsaW0gPT09IFwiPFwiIHx8IGRlbGltID09PSBcIlxcXFxsdFwiIHx8IGRlbGltID09PSBcIlxcdTI3RThcIikge1xuICAgIGRlbGltID0gXCJcXFxcbGFuZ2xlXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiPlwiIHx8IGRlbGltID09PSBcIlxcXFxndFwiIHx8IGRlbGltID09PSBcIlxcdTI3RTlcIikge1xuICAgIGRlbGltID0gXCJcXFxccmFuZ2xlXCI7XG4gIH0gLy8gU2l6ZWQgZGVsaW1pdGVycyBhcmUgbmV2ZXIgY2VudGVyZWQuXG5cblxuICBpZiAodXRpbHMuY29udGFpbnMoc3RhY2tMYXJnZURlbGltaXRlcnMsIGRlbGltKSB8fCB1dGlscy5jb250YWlucyhzdGFja05ldmVyRGVsaW1pdGVycywgZGVsaW0pKSB7XG4gICAgcmV0dXJuIGRlbGltaXRlcl9tYWtlTGFyZ2VEZWxpbShkZWxpbSwgc2l6ZSwgZmFsc2UsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xuICB9IGVsc2UgaWYgKHV0aWxzLmNvbnRhaW5zKHN0YWNrQWx3YXlzRGVsaW1pdGVycywgZGVsaW0pKSB7XG4gICAgcmV0dXJuIGRlbGltaXRlcl9tYWtlU3RhY2tlZERlbGltKGRlbGltLCBzaXplVG9NYXhIZWlnaHRbc2l6ZV0sIGZhbHNlLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbGxlZ2FsIGRlbGltaXRlcjogJ1wiICsgZGVsaW0gKyBcIidcIik7XG4gIH1cbn07XG4vKipcbiAqIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgc2VxdWVuY2VzIG9mIGRlbGltaXRlciBzaXplcyB0aGF0IHRoZSBkZWxpbWl0ZXJzXG4gKiBmb2xsb3cgZGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mIGRlbGltaXRlci4gVGhpcyBpcyB1c2VkIHdoZW4gY3JlYXRpbmcgY3VzdG9tXG4gKiBzaXplZCBkZWxpbWl0ZXJzIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGNyZWF0ZSBhIHNtYWxsLCBsYXJnZSwgb3Igc3RhY2tlZFxuICogZGVsaW1pdGVyLlxuICpcbiAqIEluIHJlYWwgVGVYLCB0aGVzZSBzZXF1ZW5jZXMgYXJlbid0IGV4cGxpY2l0bHkgZGVmaW5lZCwgYnV0IGFyZSBpbnN0ZWFkXG4gKiBkZWZpbmVkIGluc2lkZSB0aGUgZm9udCBtZXRyaWNzLiBTaW5jZSB0aGVyZSBhcmUgb25seSB0aHJlZSBzZXF1ZW5jZXMgdGhhdFxuICogYXJlIHBvc3NpYmxlIGZvciB0aGUgZGVsaW1pdGVycyB0aGF0IFRlWCBkZWZpbmVzLCBpdCBpcyBlYXNpZXIgdG8ganVzdCBlbmNvZGVcbiAqIHRoZW0gZXhwbGljaXRseSBoZXJlLlxuICovXG5cblxuLy8gRGVsaW1pdGVycyB0aGF0IG5ldmVyIHN0YWNrIHRyeSBzbWFsbCBkZWxpbWl0ZXJzIGFuZCBsYXJnZSBkZWxpbWl0ZXJzIG9ubHlcbnZhciBzdGFja05ldmVyRGVsaW1pdGVyU2VxdWVuY2UgPSBbe1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUXG59LCB7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlRFWFRcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiAxXG59LCB7XG4gIHR5cGU6IFwibGFyZ2VcIixcbiAgc2l6ZTogMlxufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDNcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiA0XG59XTsgLy8gRGVsaW1pdGVycyB0aGF0IGFsd2F5cyBzdGFjayB0cnkgdGhlIHNtYWxsIGRlbGltaXRlcnMgZmlyc3QsIHRoZW4gc3RhY2tcblxudmFyIHN0YWNrQWx3YXlzRGVsaW1pdGVyU2VxdWVuY2UgPSBbe1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUXG59LCB7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlRFWFRcbn0sIHtcbiAgdHlwZTogXCJzdGFja1wiXG59XTsgLy8gRGVsaW1pdGVycyB0aGF0IHN0YWNrIHdoZW4gbGFyZ2UgdHJ5IHRoZSBzbWFsbCBhbmQgdGhlbiBsYXJnZSBkZWxpbWl0ZXJzLCBhbmRcbi8vIHN0YWNrIGFmdGVyd2FyZHNcblxudmFyIHN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZSA9IFt7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRTQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlNDUklQVFxufSwge1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuVEVYVFxufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDFcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiAyXG59LCB7XG4gIHR5cGU6IFwibGFyZ2VcIixcbiAgc2l6ZTogM1xufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDRcbn0sIHtcbiAgdHlwZTogXCJzdGFja1wiXG59XTtcbi8qKlxuICogR2V0IHRoZSBmb250IHVzZWQgaW4gYSBkZWxpbWl0ZXIgYmFzZWQgb24gd2hhdCBraW5kIG9mIGRlbGltaXRlciBpdCBpcy5cbiAqIFRPRE8oIzk2MykgVXNlIG1vcmUgc3BlY2lmaWMgZm9udCBmYW1pbHkgcmV0dXJuIHR5cGUgb25jZSB0aGF0IGlzIGludHJvZHVjZWQuXG4gKi9cblxudmFyIGRlbGltVHlwZVRvRm9udCA9IGZ1bmN0aW9uIGRlbGltVHlwZVRvRm9udCh0eXBlKSB7XG4gIGlmICh0eXBlLnR5cGUgPT09IFwic21hbGxcIikge1xuICAgIHJldHVybiBcIk1haW4tUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKHR5cGUudHlwZSA9PT0gXCJsYXJnZVwiKSB7XG4gICAgcmV0dXJuIFwiU2l6ZVwiICsgdHlwZS5zaXplICsgXCItUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKHR5cGUudHlwZSA9PT0gXCJzdGFja1wiKSB7XG4gICAgcmV0dXJuIFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkFkZCBzdXBwb3J0IGZvciBkZWxpbSB0eXBlICdcIiArIHR5cGUudHlwZSArIFwiJyBoZXJlLlwiKTtcbiAgfVxufTtcbi8qKlxuICogVHJhdmVyc2UgYSBzZXF1ZW5jZSBvZiB0eXBlcyBvZiBkZWxpbWl0ZXJzIHRvIGRlY2lkZSB3aGF0IGtpbmQgb2YgZGVsaW1pdGVyXG4gKiBzaG91bGQgYmUgdXNlZCB0byBjcmVhdGUgYSBkZWxpbWl0ZXIgb2YgdGhlIGdpdmVuIGhlaWdodCtkZXB0aC5cbiAqL1xuXG5cbnZhciB0cmF2ZXJzZVNlcXVlbmNlID0gZnVuY3Rpb24gdHJhdmVyc2VTZXF1ZW5jZShkZWxpbSwgaGVpZ2h0LCBzZXF1ZW5jZSwgb3B0aW9ucykge1xuICAvLyBIZXJlLCB3ZSBjaG9vc2UgdGhlIGluZGV4IHdlIHNob3VsZCBzdGFydCBhdCBpbiB0aGUgc2VxdWVuY2VzLiBJbiBzbWFsbGVyXG4gIC8vIHNpemVzICh3aGljaCBjb3JyZXNwb25kIHRvIGxhcmdlciBudW1iZXJzIGluIHN0eWxlLnNpemUpIHdlIHN0YXJ0IGVhcmxpZXJcbiAgLy8gaW4gdGhlIHNlcXVlbmNlLiBUaHVzLCBzY3JpcHRzY3JpcHQgc3RhcnRzIGF0IGluZGV4IDMtMz0wLCBzY3JpcHQgc3RhcnRzXG4gIC8vIGF0IGluZGV4IDMtMj0xLCB0ZXh0IHN0YXJ0cyBhdCAzLTE9MiwgYW5kIGRpc3BsYXkgc3RhcnRzIGF0IG1pbigyLDMtMCk9MlxuICB2YXIgc3RhcnQgPSBNYXRoLm1pbigyLCAzIC0gb3B0aW9ucy5zdHlsZS5zaXplKTtcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBzZXF1ZW5jZS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzZXF1ZW5jZVtpXS50eXBlID09PSBcInN0YWNrXCIpIHtcbiAgICAgIC8vIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IGRlbGltaXRlciwgc28gd2UganVzdCBicmVhayB0aGUgbG9vcCBub3cuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICB2YXIgbWV0cmljcyA9IGRlbGltaXRlcl9nZXRNZXRyaWNzKGRlbGltLCBkZWxpbVR5cGVUb0ZvbnQoc2VxdWVuY2VbaV0pLCBcIm1hdGhcIik7XG4gICAgdmFyIGhlaWdodERlcHRoID0gbWV0cmljcy5oZWlnaHQgKyBtZXRyaWNzLmRlcHRoOyAvLyBTbWFsbCBkZWxpbWl0ZXJzIGFyZSBzY2FsZWQgZG93biB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBmb250LCBzbyB3ZVxuICAgIC8vIGFjY291bnQgZm9yIHRoZSBzdHlsZSBjaGFuZ2Ugc2l6ZS5cblxuICAgIGlmIChzZXF1ZW5jZVtpXS50eXBlID09PSBcInNtYWxsXCIpIHtcbiAgICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUoc2VxdWVuY2VbaV0uc3R5bGUpO1xuICAgICAgaGVpZ2h0RGVwdGggKj0gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICB9IC8vIENoZWNrIGlmIHRoZSBkZWxpbWl0ZXIgYXQgdGhpcyBzaXplIHdvcmtzIGZvciB0aGUgZ2l2ZW4gaGVpZ2h0LlxuXG5cbiAgICBpZiAoaGVpZ2h0RGVwdGggPiBoZWlnaHQpIHtcbiAgICAgIHJldHVybiBzZXF1ZW5jZVtpXTtcbiAgICB9XG4gIH0gLy8gSWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSwgcmV0dXJuIHRoZSBsYXN0IHNlcXVlbmNlIGVsZW1lbnQuXG5cblxuICByZXR1cm4gc2VxdWVuY2Vbc2VxdWVuY2UubGVuZ3RoIC0gMV07XG59O1xuLyoqXG4gKiBNYWtlIGEgZGVsaW1pdGVyIG9mIGEgZ2l2ZW4gaGVpZ2h0K2RlcHRoLCB3aXRoIG9wdGlvbmFsIGNlbnRlcmluZy4gSGVyZSwgd2VcbiAqIHRyYXZlcnNlIHRoZSBzZXF1ZW5jZXMsIGFuZCBjcmVhdGUgYSBkZWxpbWl0ZXIgdGhhdCB0aGUgc2VxdWVuY2UgdGVsbHMgdXMgdG8uXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21ha2VDdXN0b21TaXplZERlbGltID0gZnVuY3Rpb24gbWFrZUN1c3RvbVNpemVkRGVsaW0oZGVsaW0sIGhlaWdodCwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKSB7XG4gIGlmIChkZWxpbSA9PT0gXCI8XCIgfHwgZGVsaW0gPT09IFwiXFxcXGx0XCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFOFwiKSB7XG4gICAgZGVsaW0gPSBcIlxcXFxsYW5nbGVcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCI+XCIgfHwgZGVsaW0gPT09IFwiXFxcXGd0XCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFOVwiKSB7XG4gICAgZGVsaW0gPSBcIlxcXFxyYW5nbGVcIjtcbiAgfSAvLyBEZWNpZGUgd2hhdCBzZXF1ZW5jZSB0byB1c2VcblxuXG4gIHZhciBzZXF1ZW5jZTtcblxuICBpZiAodXRpbHMuY29udGFpbnMoc3RhY2tOZXZlckRlbGltaXRlcnMsIGRlbGltKSkge1xuICAgIHNlcXVlbmNlID0gc3RhY2tOZXZlckRlbGltaXRlclNlcXVlbmNlO1xuICB9IGVsc2UgaWYgKHV0aWxzLmNvbnRhaW5zKHN0YWNrTGFyZ2VEZWxpbWl0ZXJzLCBkZWxpbSkpIHtcbiAgICBzZXF1ZW5jZSA9IHN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZTtcbiAgfSBlbHNlIHtcbiAgICBzZXF1ZW5jZSA9IHN0YWNrQWx3YXlzRGVsaW1pdGVyU2VxdWVuY2U7XG4gIH0gLy8gTG9vayB0aHJvdWdoIHRoZSBzZXF1ZW5jZVxuXG5cbiAgdmFyIGRlbGltVHlwZSA9IHRyYXZlcnNlU2VxdWVuY2UoZGVsaW0sIGhlaWdodCwgc2VxdWVuY2UsIG9wdGlvbnMpOyAvLyBHZXQgdGhlIGRlbGltaXRlciBmcm9tIGZvbnQgZ2x5cGhzLlxuICAvLyBEZXBlbmRpbmcgb24gdGhlIHNlcXVlbmNlIGVsZW1lbnQgd2UgZGVjaWRlZCBvbiwgY2FsbCB0aGVcbiAgLy8gYXBwcm9wcmlhdGUgZnVuY3Rpb24uXG5cbiAgaWYgKGRlbGltVHlwZS50eXBlID09PSBcInNtYWxsXCIpIHtcbiAgICByZXR1cm4gZGVsaW1pdGVyX21ha2VTbWFsbERlbGltKGRlbGltLCBkZWxpbVR5cGUuc3R5bGUsIGNlbnRlciwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcyk7XG4gIH0gZWxzZSBpZiAoZGVsaW1UeXBlLnR5cGUgPT09IFwibGFyZ2VcIikge1xuICAgIHJldHVybiBkZWxpbWl0ZXJfbWFrZUxhcmdlRGVsaW0oZGVsaW0sIGRlbGltVHlwZS5zaXplLCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xuICB9IGVsc2VcbiAgICAvKiBpZiAoZGVsaW1UeXBlLnR5cGUgPT09IFwic3RhY2tcIikgKi9cbiAgICB7XG4gICAgICByZXR1cm4gZGVsaW1pdGVyX21ha2VTdGFja2VkRGVsaW0oZGVsaW0sIGhlaWdodCwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKTtcbiAgICB9XG59O1xuLyoqXG4gKiBNYWtlIGEgZGVsaW1pdGVyIGZvciB1c2Ugd2l0aCBgXFxsZWZ0YCBhbmQgYFxccmlnaHRgLCBnaXZlbiBhIGhlaWdodCBhbmQgZGVwdGhcbiAqIG9mIGFuIGV4cHJlc3Npb24gdGhhdCB0aGUgZGVsaW1pdGVycyBzdXJyb3VuZC5cbiAqL1xuXG5cbnZhciBtYWtlTGVmdFJpZ2h0RGVsaW0gPSBmdW5jdGlvbiBtYWtlTGVmdFJpZ2h0RGVsaW0oZGVsaW0sIGhlaWdodCwgZGVwdGgsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgLy8gV2UgYWx3YXlzIGNlbnRlciBcXGxlZnQvXFxyaWdodCBkZWxpbWl0ZXJzLCBzbyB0aGUgYXhpcyBpcyBhbHdheXMgc2hpZnRlZFxuICB2YXIgYXhpc0hlaWdodCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0ICogb3B0aW9ucy5zaXplTXVsdGlwbGllcjsgLy8gVGFrZW4gZnJvbSBUZVggc291cmNlLCB0ZXgud2ViLCBmdW5jdGlvbiBtYWtlX2xlZnRfcmlnaHRcblxuICB2YXIgZGVsaW1pdGVyRmFjdG9yID0gOTAxO1xuICB2YXIgZGVsaW1pdGVyRXh0ZW5kID0gNS4wIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG4gIHZhciBtYXhEaXN0RnJvbUF4aXMgPSBNYXRoLm1heChoZWlnaHQgLSBheGlzSGVpZ2h0LCBkZXB0aCArIGF4aXNIZWlnaHQpO1xuICB2YXIgdG90YWxIZWlnaHQgPSBNYXRoLm1heCggLy8gSW4gcmVhbCBUZVgsIGNhbGN1bGF0aW9ucyBhcmUgZG9uZSB1c2luZyBpbnRlZ3JhbCB2YWx1ZXMgd2hpY2ggYXJlXG4gIC8vIDY1NTM2IHBlciBwdCwgb3IgNjU1MzYwIHBlciBlbS4gU28sIHRoZSBkaXZpc2lvbiBoZXJlIHRydW5jYXRlcyBpblxuICAvLyBUZVggYnV0IGRvZXNuJ3QgaGVyZSwgcHJvZHVjaW5nIGRpZmZlcmVudCByZXN1bHRzLiBJZiB3ZSB3YW50ZWQgdG9cbiAgLy8gZXhhY3RseSBtYXRjaCBUZVgncyBjYWxjdWxhdGlvbiwgd2UgY291bGQgZG9cbiAgLy8gICBNYXRoLmZsb29yKDY1NTM2MCAqIG1heERpc3RGcm9tQXhpcyAvIDUwMCkgKlxuICAvLyAgICBkZWxpbWl0ZXJGYWN0b3IgLyA2NTUzNjBcbiAgLy8gKFRvIHNlZSB0aGUgZGlmZmVyZW5jZSwgY29tcGFyZVxuICAvLyAgICB4Xnt4XntcXGxlZnQoXFxydWxlezAuMWVtfXswLjY4ZW19XFxyaWdodCl9fVxuICAvLyBpbiBUZVggYW5kIEthVGVYKVxuICBtYXhEaXN0RnJvbUF4aXMgLyA1MDAgKiBkZWxpbWl0ZXJGYWN0b3IsIDIgKiBtYXhEaXN0RnJvbUF4aXMgLSBkZWxpbWl0ZXJFeHRlbmQpOyAvLyBGaW5hbGx5LCB3ZSBkZWZlciB0byBgbWFrZUN1c3RvbVNpemVkRGVsaW1gIHdpdGggb3VyIGNhbGN1bGF0ZWQgdG90YWxcbiAgLy8gaGVpZ2h0XG5cbiAgcmV0dXJuIGRlbGltaXRlcl9tYWtlQ3VzdG9tU2l6ZWREZWxpbShkZWxpbSwgdG90YWxIZWlnaHQsIHRydWUsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZGVsaW1pdGVyID0gKHtcbiAgc3FydEltYWdlOiBtYWtlU3FydEltYWdlLFxuICBzaXplZERlbGltOiBkZWxpbWl0ZXJfbWFrZVNpemVkRGVsaW0sXG4gIGN1c3RvbVNpemVkRGVsaW06IGRlbGltaXRlcl9tYWtlQ3VzdG9tU2l6ZWREZWxpbSxcbiAgbGVmdFJpZ2h0RGVsaW06IG1ha2VMZWZ0UmlnaHREZWxpbVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvZGVsaW1zaXppbmcuanNcblxuXG5cblxuXG5cblxuXG5cbi8vIEV4dHJhIGRhdGEgbmVlZGVkIGZvciB0aGUgZGVsaW1pdGVyIGhhbmRsZXIgZG93biBiZWxvd1xudmFyIGRlbGltaXRlclNpemVzID0ge1xuICBcIlxcXFxiaWdsXCI6IHtcbiAgICBtY2xhc3M6IFwibW9wZW5cIixcbiAgICBzaXplOiAxXG4gIH0sXG4gIFwiXFxcXEJpZ2xcIjoge1xuICAgIG1jbGFzczogXCJtb3BlblwiLFxuICAgIHNpemU6IDJcbiAgfSxcbiAgXCJcXFxcYmlnZ2xcIjoge1xuICAgIG1jbGFzczogXCJtb3BlblwiLFxuICAgIHNpemU6IDNcbiAgfSxcbiAgXCJcXFxcQmlnZ2xcIjoge1xuICAgIG1jbGFzczogXCJtb3BlblwiLFxuICAgIHNpemU6IDRcbiAgfSxcbiAgXCJcXFxcYmlnclwiOiB7XG4gICAgbWNsYXNzOiBcIm1jbG9zZVwiLFxuICAgIHNpemU6IDFcbiAgfSxcbiAgXCJcXFxcQmlnclwiOiB7XG4gICAgbWNsYXNzOiBcIm1jbG9zZVwiLFxuICAgIHNpemU6IDJcbiAgfSxcbiAgXCJcXFxcYmlnZ3JcIjoge1xuICAgIG1jbGFzczogXCJtY2xvc2VcIixcbiAgICBzaXplOiAzXG4gIH0sXG4gIFwiXFxcXEJpZ2dyXCI6IHtcbiAgICBtY2xhc3M6IFwibWNsb3NlXCIsXG4gICAgc2l6ZTogNFxuICB9LFxuICBcIlxcXFxiaWdtXCI6IHtcbiAgICBtY2xhc3M6IFwibXJlbFwiLFxuICAgIHNpemU6IDFcbiAgfSxcbiAgXCJcXFxcQmlnbVwiOiB7XG4gICAgbWNsYXNzOiBcIm1yZWxcIixcbiAgICBzaXplOiAyXG4gIH0sXG4gIFwiXFxcXGJpZ2dtXCI6IHtcbiAgICBtY2xhc3M6IFwibXJlbFwiLFxuICAgIHNpemU6IDNcbiAgfSxcbiAgXCJcXFxcQmlnZ21cIjoge1xuICAgIG1jbGFzczogXCJtcmVsXCIsXG4gICAgc2l6ZTogNFxuICB9LFxuICBcIlxcXFxiaWdcIjoge1xuICAgIG1jbGFzczogXCJtb3JkXCIsXG4gICAgc2l6ZTogMVxuICB9LFxuICBcIlxcXFxCaWdcIjoge1xuICAgIG1jbGFzczogXCJtb3JkXCIsXG4gICAgc2l6ZTogMlxuICB9LFxuICBcIlxcXFxiaWdnXCI6IHtcbiAgICBtY2xhc3M6IFwibW9yZFwiLFxuICAgIHNpemU6IDNcbiAgfSxcbiAgXCJcXFxcQmlnZ1wiOiB7XG4gICAgbWNsYXNzOiBcIm1vcmRcIixcbiAgICBzaXplOiA0XG4gIH1cbn07XG52YXIgZGVsaW1pdGVycyA9IFtcIihcIiwgXCJcXFxcbHBhcmVuXCIsIFwiKVwiLCBcIlxcXFxycGFyZW5cIiwgXCJbXCIsIFwiXFxcXGxicmFja1wiLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIsIFwiXFxcXHtcIiwgXCJcXFxcbGJyYWNlXCIsIFwiXFxcXH1cIiwgXCJcXFxccmJyYWNlXCIsIFwiXFxcXGxmbG9vclwiLCBcIlxcXFxyZmxvb3JcIiwgXCJcXHUyMzBBXCIsIFwiXFx1MjMwQlwiLCBcIlxcXFxsY2VpbFwiLCBcIlxcXFxyY2VpbFwiLCBcIlxcdTIzMDhcIiwgXCJcXHUyMzA5XCIsIFwiPFwiLCBcIj5cIiwgXCJcXFxcbGFuZ2xlXCIsIFwiXFx1MjdFOFwiLCBcIlxcXFxyYW5nbGVcIiwgXCJcXHUyN0U5XCIsIFwiXFxcXGx0XCIsIFwiXFxcXGd0XCIsIFwiXFxcXGx2ZXJ0XCIsIFwiXFxcXHJ2ZXJ0XCIsIFwiXFxcXGxWZXJ0XCIsIFwiXFxcXHJWZXJ0XCIsIFwiXFxcXGxncm91cFwiLCBcIlxcXFxyZ3JvdXBcIiwgXCJcXHUyN0VFXCIsIFwiXFx1MjdFRlwiLCBcIlxcXFxsbW91c3RhY2hlXCIsIFwiXFxcXHJtb3VzdGFjaGVcIiwgXCJcXHUyM0IwXCIsIFwiXFx1MjNCMVwiLCBcIi9cIiwgXCJcXFxcYmFja3NsYXNoXCIsIFwifFwiLCBcIlxcXFx2ZXJ0XCIsIFwiXFxcXHxcIiwgXCJcXFxcVmVydFwiLCBcIlxcXFx1cGFycm93XCIsIFwiXFxcXFVwYXJyb3dcIiwgXCJcXFxcZG93bmFycm93XCIsIFwiXFxcXERvd25hcnJvd1wiLCBcIlxcXFx1cGRvd25hcnJvd1wiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCBcIi5cIl07XG5cbi8vIERlbGltaXRlciBmdW5jdGlvbnNcbmZ1bmN0aW9uIGNoZWNrRGVsaW1pdGVyKGRlbGltLCBjb250ZXh0KSB7XG4gIHZhciBzeW1EZWxpbSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUoZGVsaW0pO1xuXG4gIGlmIChzeW1EZWxpbSAmJiB1dGlscy5jb250YWlucyhkZWxpbWl0ZXJzLCBzeW1EZWxpbS50ZXh0KSkge1xuICAgIHJldHVybiBzeW1EZWxpbTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGRlbGltaXRlcjogJ1wiICsgKHN5bURlbGltID8gc3ltRGVsaW0udGV4dCA6IEpTT04uc3RyaW5naWZ5KGRlbGltKSkgKyBcIicgYWZ0ZXIgJ1wiICsgY29udGV4dC5mdW5jTmFtZSArIFwiJ1wiLCBkZWxpbSk7XG4gIH1cbn1cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImRlbGltc2l6aW5nXCIsXG4gIG5hbWVzOiBbXCJcXFxcYmlnbFwiLCBcIlxcXFxCaWdsXCIsIFwiXFxcXGJpZ2dsXCIsIFwiXFxcXEJpZ2dsXCIsIFwiXFxcXGJpZ3JcIiwgXCJcXFxcQmlnclwiLCBcIlxcXFxiaWdnclwiLCBcIlxcXFxCaWdnclwiLCBcIlxcXFxiaWdtXCIsIFwiXFxcXEJpZ21cIiwgXCJcXFxcYmlnZ21cIiwgXCJcXFxcQmlnZ21cIiwgXCJcXFxcYmlnXCIsIFwiXFxcXEJpZ1wiLCBcIlxcXFxiaWdnXCIsIFwiXFxcXEJpZ2dcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB2YXIgZGVsaW0gPSBjaGVja0RlbGltaXRlcihhcmdzWzBdLCBjb250ZXh0KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJkZWxpbXNpemluZ1wiLFxuICAgICAgbW9kZTogY29udGV4dC5wYXJzZXIubW9kZSxcbiAgICAgIHNpemU6IGRlbGltaXRlclNpemVzW2NvbnRleHQuZnVuY05hbWVdLnNpemUsXG4gICAgICBtY2xhc3M6IGRlbGltaXRlclNpemVzW2NvbnRleHQuZnVuY05hbWVdLm1jbGFzcyxcbiAgICAgIGRlbGltOiBkZWxpbS50ZXh0XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgaWYgKGdyb3VwLmRlbGltID09PSBcIi5cIikge1xuICAgICAgLy8gRW1wdHkgZGVsaW1pdGVycyBzdGlsbCBjb3VudCBhcyBlbGVtZW50cywgZXZlbiB0aG91Z2ggdGhleSBkb24ndFxuICAgICAgLy8gc2hvdyBhbnl0aGluZy5cbiAgICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbZ3JvdXAubWNsYXNzXSk7XG4gICAgfSAvLyBVc2UgZGVsaW1pdGVyLnNpemVkRGVsaW0gdG8gZ2VuZXJhdGUgdGhlIGRlbGltaXRlci5cblxuXG4gICAgcmV0dXJuIGRlbGltaXRlci5zaXplZERlbGltKGdyb3VwLmRlbGltLCBncm91cC5zaXplLCBvcHRpb25zLCBncm91cC5tb2RlLCBbZ3JvdXAubWNsYXNzXSk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXApIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBbXTtcblxuICAgIGlmIChncm91cC5kZWxpbSAhPT0gXCIuXCIpIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAuZGVsaW0sIGdyb3VwLm1vZGUpKTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgY2hpbGRyZW4pO1xuXG4gICAgaWYgKGdyb3VwLm1jbGFzcyA9PT0gXCJtb3BlblwiIHx8IGdyb3VwLm1jbGFzcyA9PT0gXCJtY2xvc2VcIikge1xuICAgICAgLy8gT25seSBzb21lIG9mIHRoZSBkZWxpbXNpemluZyBmdW5jdGlvbnMgYWN0IGFzIGZlbmNlcywgYW5kIHRoZXlcbiAgICAgIC8vIHJldHVybiBcIm1vcGVuXCIgb3IgXCJtY2xvc2VcIiBtY2xhc3MuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRXhwbGljaXRseSBkaXNhYmxlIGZlbmNpbmcgaWYgaXQncyBub3QgYSBmZW5jZSwgdG8gb3ZlcnJpZGUgdGhlXG4gICAgICAvLyBkZWZhdWx0cy5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmVuY2VcIiwgXCJmYWxzZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGFzc2VydFBhcnNlZChncm91cCkge1xuICBpZiAoIWdyb3VwLmJvZHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCdWc6IFRoZSBsZWZ0cmlnaHQgUGFyc2VOb2RlIHdhc24ndCBmdWxseSBwYXJzZWQuXCIpO1xuICB9XG59XG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJsZWZ0cmlnaHQtcmlnaHRcIixcbiAgbmFtZXM6IFtcIlxcXFxyaWdodFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIC8vIFxcbGVmdCBjYXNlIGJlbG93IHRyaWdnZXJzIHBhcnNpbmcgb2YgXFxyaWdodCBpblxuICAgIC8vICAgYGNvbnN0IHJpZ2h0ID0gcGFyc2VyLnBhcnNlRnVuY3Rpb24oKTtgXG4gICAgLy8gdXNlcyB0aGlzIHJldHVybiB2YWx1ZS5cbiAgICB2YXIgY29sb3IgPSBjb250ZXh0LnBhcnNlci5ndWxsZXQubWFjcm9zLmdldChcIlxcXFxjdXJyZW50QGNvbG9yXCIpO1xuXG4gICAgaWYgKGNvbG9yICYmIHR5cGVvZiBjb2xvciAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXGN1cnJlbnRAY29sb3Igc2V0IHRvIG5vbi1zdHJpbmcgaW4gXFxcXHJpZ2h0XCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImxlZnRyaWdodC1yaWdodFwiLFxuICAgICAgbW9kZTogY29udGV4dC5wYXJzZXIubW9kZSxcbiAgICAgIGRlbGltOiBjaGVja0RlbGltaXRlcihhcmdzWzBdLCBjb250ZXh0KS50ZXh0LFxuICAgICAgY29sb3I6IGNvbG9yIC8vIHVuZGVmaW5lZCBpZiBub3Qgc2V0IHZpYSBcXGNvbG9yXG5cbiAgICB9O1xuICB9XG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJsZWZ0cmlnaHRcIixcbiAgbmFtZXM6IFtcIlxcXFxsZWZ0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIGRlbGltID0gY2hlY2tEZWxpbWl0ZXIoYXJnc1swXSwgY29udGV4dCk7XG4gICAgdmFyIHBhcnNlciA9IGNvbnRleHQucGFyc2VyOyAvLyBQYXJzZSBvdXQgdGhlIGltcGxpY2l0IGJvZHlcblxuICAgICsrcGFyc2VyLmxlZnRyaWdodERlcHRoOyAvLyBwYXJzZUV4cHJlc3Npb24gc3RvcHMgYmVmb3JlICdcXFxccmlnaHQnXG5cbiAgICB2YXIgYm9keSA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24oZmFsc2UpO1xuICAgIC0tcGFyc2VyLmxlZnRyaWdodERlcHRoOyAvLyBDaGVjayB0aGUgbmV4dCB0b2tlblxuXG4gICAgcGFyc2VyLmV4cGVjdChcIlxcXFxyaWdodFwiLCBmYWxzZSk7XG4gICAgdmFyIHJpZ2h0ID0gYXNzZXJ0Tm9kZVR5cGUocGFyc2VyLnBhcnNlRnVuY3Rpb24oKSwgXCJsZWZ0cmlnaHQtcmlnaHRcIik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibGVmdHJpZ2h0XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGJvZHksXG4gICAgICBsZWZ0OiBkZWxpbS50ZXh0LFxuICAgICAgcmlnaHQ6IHJpZ2h0LmRlbGltLFxuICAgICAgcmlnaHRDb2xvcjogcmlnaHQuY29sb3JcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBhc3NlcnRQYXJzZWQoZ3JvdXApOyAvLyBCdWlsZCB0aGUgaW5uZXIgZXhwcmVzc2lvblxuXG4gICAgdmFyIGlubmVyID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlLCBbXCJtb3BlblwiLCBcIm1jbG9zZVwiXSk7XG4gICAgdmFyIGlubmVySGVpZ2h0ID0gMDtcbiAgICB2YXIgaW5uZXJEZXB0aCA9IDA7XG4gICAgdmFyIGhhZE1pZGRsZSA9IGZhbHNlOyAvLyBDYWxjdWxhdGUgaXRzIGhlaWdodCBhbmQgZGVwdGhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIFByb3BlcnR5IGBpc01pZGRsZWAgbm90IGRlZmluZWQgb24gYHNwYW5gLiBTZWUgY29tbWVudCBpblxuICAgICAgLy8gXCJtaWRkbGVcIidzIGh0bWxCdWlsZGVyLlxuICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgaWYgKGlubmVyW2ldLmlzTWlkZGxlKSB7XG4gICAgICAgIGhhZE1pZGRsZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbm5lckhlaWdodCA9IE1hdGgubWF4KGlubmVyW2ldLmhlaWdodCwgaW5uZXJIZWlnaHQpO1xuICAgICAgICBpbm5lckRlcHRoID0gTWF0aC5tYXgoaW5uZXJbaV0uZGVwdGgsIGlubmVyRGVwdGgpO1xuICAgICAgfVxuICAgIH0gLy8gVGhlIHNpemUgb2YgZGVsaW1pdGVycyBpcyB0aGUgc2FtZSwgcmVnYXJkbGVzcyBvZiB3aGF0IHN0eWxlIHdlIGFyZVxuICAgIC8vIGluLiBUaHVzLCB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIHRoZSBzaXplIG9mIGRlbGltaXRlciB3ZSBuZWVkIGFyb3VuZFxuICAgIC8vIGEgZ3JvdXAsIHdlIHNjYWxlIGRvd24gdGhlIGlubmVyIHNpemUgYmFzZWQgb24gdGhlIHNpemUuXG5cblxuICAgIGlubmVySGVpZ2h0ICo9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgaW5uZXJEZXB0aCAqPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIHZhciBsZWZ0RGVsaW07XG5cbiAgICBpZiAoZ3JvdXAubGVmdCA9PT0gXCIuXCIpIHtcbiAgICAgIC8vIEVtcHR5IGRlbGltaXRlcnMgaW4gXFxsZWZ0IGFuZCBcXHJpZ2h0IG1ha2UgbnVsbCBkZWxpbWl0ZXIgc3BhY2VzLlxuICAgICAgbGVmdERlbGltID0gbWFrZU51bGxEZWxpbWl0ZXIob3B0aW9ucywgW1wibW9wZW5cIl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIHVzZSBsZWZ0UmlnaHREZWxpbSB0byBnZW5lcmF0ZSB0aGUgY29ycmVjdCBzaXplZFxuICAgICAgLy8gZGVsaW1pdGVyLlxuICAgICAgbGVmdERlbGltID0gZGVsaW1pdGVyLmxlZnRSaWdodERlbGltKGdyb3VwLmxlZnQsIGlubmVySGVpZ2h0LCBpbm5lckRlcHRoLCBvcHRpb25zLCBncm91cC5tb2RlLCBbXCJtb3BlblwiXSk7XG4gICAgfSAvLyBBZGQgaXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZXhwcmVzc2lvblxuXG5cbiAgICBpbm5lci51bnNoaWZ0KGxlZnREZWxpbSk7IC8vIEhhbmRsZSBtaWRkbGUgZGVsaW1pdGVyc1xuXG4gICAgaWYgKGhhZE1pZGRsZSkge1xuICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGlubmVyLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgbWlkZGxlRGVsaW0gPSBpbm5lcltfaV07IC8vIFByb3BlcnR5IGBpc01pZGRsZWAgbm90IGRlZmluZWQgb24gYHNwYW5gLiBTZWUgY29tbWVudCBpblxuICAgICAgICAvLyBcIm1pZGRsZVwiJ3MgaHRtbEJ1aWxkZXIuXG4gICAgICAgIC8vICRGbG93Rml4TWVcblxuICAgICAgICB2YXIgaXNNaWRkbGUgPSBtaWRkbGVEZWxpbS5pc01pZGRsZTtcblxuICAgICAgICBpZiAoaXNNaWRkbGUpIHtcbiAgICAgICAgICAvLyBBcHBseSB0aGUgb3B0aW9ucyB0aGF0IHdlcmUgYWN0aXZlIHdoZW4gXFxtaWRkbGUgd2FzIGNhbGxlZFxuICAgICAgICAgIGlubmVyW19pXSA9IGRlbGltaXRlci5sZWZ0UmlnaHREZWxpbShpc01pZGRsZS5kZWxpbSwgaW5uZXJIZWlnaHQsIGlubmVyRGVwdGgsIGlzTWlkZGxlLm9wdGlvbnMsIGdyb3VwLm1vZGUsIFtdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByaWdodERlbGltOyAvLyBTYW1lIGZvciB0aGUgcmlnaHQgZGVsaW1pdGVyLCBidXQgdXNpbmcgY29sb3Igc3BlY2lmaWVkIGJ5IFxcY29sb3JcblxuICAgIGlmIChncm91cC5yaWdodCA9PT0gXCIuXCIpIHtcbiAgICAgIHJpZ2h0RGVsaW0gPSBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBbXCJtY2xvc2VcIl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29sb3JPcHRpb25zID0gZ3JvdXAucmlnaHRDb2xvciA/IG9wdGlvbnMud2l0aENvbG9yKGdyb3VwLnJpZ2h0Q29sb3IpIDogb3B0aW9ucztcbiAgICAgIHJpZ2h0RGVsaW0gPSBkZWxpbWl0ZXIubGVmdFJpZ2h0RGVsaW0oZ3JvdXAucmlnaHQsIGlubmVySGVpZ2h0LCBpbm5lckRlcHRoLCBjb2xvck9wdGlvbnMsIGdyb3VwLm1vZGUsIFtcIm1jbG9zZVwiXSk7XG4gICAgfSAvLyBBZGQgaXQgdG8gdGhlIGVuZCBvZiB0aGUgZXhwcmVzc2lvbi5cblxuXG4gICAgaW5uZXIucHVzaChyaWdodERlbGltKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibWlubmVyXCJdLCBpbm5lciwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBhc3NlcnRQYXJzZWQoZ3JvdXApO1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zKTtcblxuICAgIGlmIChncm91cC5sZWZ0ICE9PSBcIi5cIikge1xuICAgICAgdmFyIGxlZnROb2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAubGVmdCwgZ3JvdXAubW9kZSldKTtcbiAgICAgIGxlZnROb2RlLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICAgIGlubmVyLnVuc2hpZnQobGVmdE5vZGUpO1xuICAgIH1cblxuICAgIGlmIChncm91cC5yaWdodCAhPT0gXCIuXCIpIHtcbiAgICAgIHZhciByaWdodE5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC5yaWdodCwgZ3JvdXAubW9kZSldKTtcbiAgICAgIHJpZ2h0Tm9kZS5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcInRydWVcIik7XG5cbiAgICAgIGlmIChncm91cC5yaWdodENvbG9yKSB7XG4gICAgICAgIHJpZ2h0Tm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRoY29sb3JcIiwgZ3JvdXAucmlnaHRDb2xvcik7XG4gICAgICB9XG5cbiAgICAgIGlubmVyLnB1c2gocmlnaHROb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRNYXRoTUxfbWFrZVJvdyhpbm5lcik7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1pZGRsZVwiLFxuICBuYW1lczogW1wiXFxcXG1pZGRsZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIHZhciBkZWxpbSA9IGNoZWNrRGVsaW1pdGVyKGFyZ3NbMF0sIGNvbnRleHQpO1xuXG4gICAgaWYgKCFjb250ZXh0LnBhcnNlci5sZWZ0cmlnaHREZXB0aCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXG1pZGRsZSB3aXRob3V0IHByZWNlZGluZyBcXFxcbGVmdFwiLCBkZWxpbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibWlkZGxlXCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgZGVsaW06IGRlbGltLnRleHRcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbWlkZGxlRGVsaW07XG5cbiAgICBpZiAoZ3JvdXAuZGVsaW0gPT09IFwiLlwiKSB7XG4gICAgICBtaWRkbGVEZWxpbSA9IG1ha2VOdWxsRGVsaW1pdGVyKG9wdGlvbnMsIFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWlkZGxlRGVsaW0gPSBkZWxpbWl0ZXIuc2l6ZWREZWxpbShncm91cC5kZWxpbSwgMSwgb3B0aW9ucywgZ3JvdXAubW9kZSwgW10pO1xuICAgICAgdmFyIGlzTWlkZGxlID0ge1xuICAgICAgICBkZWxpbTogZ3JvdXAuZGVsaW0sXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgIH07IC8vIFByb3BlcnR5IGBpc01pZGRsZWAgbm90IGRlZmluZWQgb24gYHNwYW5gLiBJdCBpcyBvbmx5IHVzZWQgaW5cbiAgICAgIC8vIHRoaXMgZmlsZSBhYm92ZS5cbiAgICAgIC8vIFRPRE86IEZpeCB0aGlzIHZpb2xhdGlvbiBvZiB0aGUgYHNwYW5gIHR5cGUgYW5kIHBvc3NpYmx5IHJlbmFtZVxuICAgICAgLy8gdGhpbmdzIHNpbmNlIGBpc01pZGRsZWAgc291bmRzIGxpa2UgYSBib29sZWFuLCBidXQgaXMgYSBzdHJ1Y3QuXG4gICAgICAvLyAkRmxvd0ZpeE1lXG5cbiAgICAgIG1pZGRsZURlbGltLmlzTWlkZGxlID0gaXNNaWRkbGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pZGRsZURlbGltO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gQSBGaXJlZm94IFxcbWlkZGxlIHdpbGwgc3RyZWNoIGEgY2hhcmFjdGVyIHZlcnRpY2FsbHkgb25seSBpZiBpdFxuICAgIC8vIGlzIGluIHRoZSBmZW5jZSBwYXJ0IG9mIHRoZSBvcGVyYXRvciBkaWN0aW9uYXJ5IGF0OlxuICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9NYXRoTUwzL2FwcGVuZGl4Yy5odG1sLlxuICAgIC8vIFNvIHdlIG5lZWQgdG8gYXZvaWQgVSsyMjIzIGFuZCB1c2UgcGxhaW4gXCJ8XCIgaW5zdGVhZC5cbiAgICB2YXIgdGV4dE5vZGUgPSBncm91cC5kZWxpbSA9PT0gXCJcXFxcdmVydFwiIHx8IGdyb3VwLmRlbGltID09PSBcInxcIiA/IGJ1aWxkTWF0aE1MX21ha2VUZXh0KFwifFwiLCBcInRleHRcIikgOiBidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC5kZWxpbSwgZ3JvdXAubW9kZSk7XG4gICAgdmFyIG1pZGRsZU5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFt0ZXh0Tm9kZV0pO1xuICAgIG1pZGRsZU5vZGUuc2V0QXR0cmlidXRlKFwiZmVuY2VcIiwgXCJ0cnVlXCIpOyAvLyBNYXRoTUwgZ2l2ZXMgNS8xOGVtIHNwYWNpbmcgdG8gZWFjaCA8bW8+IGVsZW1lbnQuXG4gICAgLy8gXFxtaWRkbGUgc2hvdWxkIGdldCBkZWxpbWl0ZXIgc3BhY2luZyBpbnN0ZWFkLlxuXG4gICAgbWlkZGxlTm9kZS5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgXCIwLjA1ZW1cIik7XG4gICAgbWlkZGxlTm9kZS5zZXRBdHRyaWJ1dGUoXCJyc3BhY2VcIiwgXCIwLjA1ZW1cIik7XG4gICAgcmV0dXJuIG1pZGRsZU5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2VuY2xvc2UuanNcblxuXG5cblxuXG5cblxuXG5cbnZhciBlbmNsb3NlX2h0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgLy8gXFxjYW5jZWwsIFxcYmNhbmNlbCwgXFx4Y2FuY2VsLCBcXHNvdXQsIFxcZmJveCwgXFxjb2xvcmJveCwgXFxmY29sb3Jib3hcbiAgLy8gU29tZSBncm91cHMgY2FuIHJldHVybiBkb2N1bWVudCBmcmFnbWVudHMuICBIYW5kbGUgdGhvc2UgYnkgd3JhcHBpbmdcbiAgLy8gdGhlbSBpbiBhIHNwYW4uXG4gIHZhciBpbm5lciA9IGJ1aWxkQ29tbW9uLndyYXBGcmFnbWVudChidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gIHZhciBsYWJlbCA9IGdyb3VwLmxhYmVsLnN1YnN0cigxKTtcbiAgdmFyIHNjYWxlID0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgdmFyIGltZztcbiAgdmFyIGltZ1NoaWZ0ID0gMDsgLy8gSW4gdGhlIExhVGVYIGNhbmNlbCBwYWNrYWdlLCBsaW5lIGdlb21ldHJ5IGlzIHNsaWdodGx5IGRpZmZlcmVudFxuICAvLyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgc3ViamVjdCBpcyB3aWRlciB0aGFuIGl0IGlzIHRhbGwsIG9yIHZpY2UgdmVyc2EuXG4gIC8vIFdlIGRvbid0IGtub3cgdGhlIHdpZHRoIG9mIGEgZ3JvdXAsIHNvIGFzIGEgcHJveHksIHdlIHRlc3QgaWZcbiAgLy8gdGhlIHN1YmplY3QgaXMgYSBzaW5nbGUgY2hhcmFjdGVyLiBUaGlzIGNhcHR1cmVzIG1vc3Qgb2YgdGhlXG4gIC8vIHN1YmplY3RzIHRoYXQgc2hvdWxkIGdldCB0aGUgXCJ0YWxsXCIgdHJlYXRtZW50LlxuXG4gIHZhciBpc1NpbmdsZUNoYXIgPSB1dGlscy5pc0NoYXJhY3RlckJveChncm91cC5ib2R5KTtcblxuICBpZiAobGFiZWwgPT09IFwic291dFwiKSB7XG4gICAgaW1nID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wic3RyZXRjaHlcIiwgXCJzb3V0XCJdKTtcbiAgICBpbWcuaGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRlZmF1bHRSdWxlVGhpY2tuZXNzIC8gc2NhbGU7XG4gICAgaW1nU2hpZnQgPSAtMC41ICogb3B0aW9ucy5mb250TWV0cmljcygpLnhIZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgLy8gQWRkIGhvcml6b250YWwgcGFkZGluZ1xuICAgIGlmICgvY2FuY2VsLy50ZXN0KGxhYmVsKSkge1xuICAgICAgaWYgKCFpc1NpbmdsZUNoYXIpIHtcbiAgICAgICAgaW5uZXIuY2xhc3Nlcy5wdXNoKFwiY2FuY2VsLXBhZFwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5uZXIuY2xhc3Nlcy5wdXNoKFwiYm94cGFkXCIpO1xuICAgIH0gLy8gQWRkIHZlcnRpY2FsIHBhZGRpbmdcblxuXG4gICAgdmFyIHZlcnRQYWQgPSAwO1xuICAgIHZhciBydWxlVGhpY2tuZXNzID0gMDsgLy8gcmVmOiBjYW5jZWwgcGFja2FnZTogXFxhZHZhbmNlXFx0b3RhbGhlaWdodDJcXHBAICUgXCIrMlwiXG5cbiAgICBpZiAoL2JveC8udGVzdChsYWJlbCkpIHtcbiAgICAgIHJ1bGVUaGlja25lc3MgPSBNYXRoLm1heChvcHRpb25zLmZvbnRNZXRyaWNzKCkuZmJveHJ1bGUsIC8vIGRlZmF1bHRcbiAgICAgIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyAvLyBVc2VyIG92ZXJyaWRlLlxuICAgICAgKTtcbiAgICAgIHZlcnRQYWQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZmJveHNlcCArIChsYWJlbCA9PT0gXCJjb2xvcmJveFwiID8gMCA6IHJ1bGVUaGlja25lc3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2ZXJ0UGFkID0gaXNTaW5nbGVDaGFyID8gMC4yIDogMDtcbiAgICB9XG5cbiAgICBpbWcgPSBzdHJldGNoeS5lbmNsb3NlU3Bhbihpbm5lciwgbGFiZWwsIHZlcnRQYWQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKC9mYm94fGJveGVkfGZjb2xvcmJveC8udGVzdChsYWJlbCkpIHtcbiAgICAgIGltZy5zdHlsZS5ib3JkZXJTdHlsZSA9IFwic29saWRcIjtcbiAgICAgIGltZy5zdHlsZS5ib3JkZXJXaWR0aCA9IHJ1bGVUaGlja25lc3MgKyBcImVtXCI7XG4gICAgfVxuXG4gICAgaW1nU2hpZnQgPSBpbm5lci5kZXB0aCArIHZlcnRQYWQ7XG5cbiAgICBpZiAoZ3JvdXAuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBpbWcuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gZ3JvdXAuYmFja2dyb3VuZENvbG9yO1xuXG4gICAgICBpZiAoZ3JvdXAuYm9yZGVyQ29sb3IpIHtcbiAgICAgICAgaW1nLnN0eWxlLmJvcmRlckNvbG9yID0gZ3JvdXAuYm9yZGVyQ29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIHZsaXN0O1xuXG4gIGlmIChncm91cC5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICBjaGlsZHJlbjogWy8vIFB1dCB0aGUgY29sb3IgYmFja2dyb3VuZCBiZWhpbmQgaW5uZXI7XG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbWcsXG4gICAgICAgIHNoaWZ0OiBpbWdTaGlmdFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW5uZXIsXG4gICAgICAgIHNoaWZ0OiAwXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiBbLy8gV3JpdGUgdGhlIFxcY2FuY2VsIHN0cm9rZSBvbiB0b3Agb2YgaW5uZXIuXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lcixcbiAgICAgICAgc2hpZnQ6IDBcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGltZyxcbiAgICAgICAgc2hpZnQ6IGltZ1NoaWZ0LFxuICAgICAgICB3cmFwcGVyQ2xhc3NlczogL2NhbmNlbC8udGVzdChsYWJlbCkgPyBbXCJzdmctYWxpZ25cIl0gOiBbXVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfVxuXG4gIGlmICgvY2FuY2VsLy50ZXN0KGxhYmVsKSkge1xuICAgIC8vIFRoZSBjYW5jZWwgcGFja2FnZSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBjYW5jZWwgbGluZXMgYWRkIHRoZWlyIGhlaWdodFxuICAgIC8vIHRvIHRoZSBleHByZXNzaW9uLCBidXQgdGVzdHMgc2hvdyB0aGF0IGlzbid0IGhvdyBpdCBhY3R1YWxseSB3b3Jrcy5cbiAgICB2bGlzdC5oZWlnaHQgPSBpbm5lci5oZWlnaHQ7XG4gICAgdmxpc3QuZGVwdGggPSBpbm5lci5kZXB0aDtcbiAgfVxuXG4gIGlmICgvY2FuY2VsLy50ZXN0KGxhYmVsKSAmJiAhaXNTaW5nbGVDaGFyKSB7XG4gICAgLy8gY2FuY2VsIGRvZXMgbm90IGNyZWF0ZSBob3JpeiBzcGFjZSBmb3IgaXRzIGxpbmUgZXh0ZW5zaW9uLlxuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwiY2FuY2VsLWxhcFwiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICB9XG59O1xuXG52YXIgZW5jbG9zZV9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgZmJveHNlcCA9IDA7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoZ3JvdXAubGFiZWwuaW5kZXhPZihcImNvbG9yYm94XCIpID4gLTEgPyBcIm1wYWRkZWRcIiA6IFwibWVuY2xvc2VcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICBzd2l0Y2ggKGdyb3VwLmxhYmVsKSB7XG4gICAgY2FzZSBcIlxcXFxjYW5jZWxcIjpcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJ1cGRpYWdvbmFsc3RyaWtlXCIpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwiXFxcXGJjYW5jZWxcIjpcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJkb3duZGlhZ29uYWxzdHJpa2VcIik7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJcXFxcc291dFwiOlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcImhvcml6b250YWxzdHJpa2VcIik7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJcXFxcZmJveFwiOlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcImJveFwiKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcIlxcXFxmY29sb3Jib3hcIjpcbiAgICBjYXNlIFwiXFxcXGNvbG9yYm94XCI6XG4gICAgICAvLyA8bWVuY2xvc2U+IGRvZXNuJ3QgaGF2ZSBhIGdvb2Qgbm90YXRpb24gb3B0aW9uLiBTbyB1c2UgPG1wYWRkZWQ+XG4gICAgICAvLyBpbnN0ZWFkLiBTZXQgc29tZSBhdHRyaWJ1dGVzIHRoYXQgY29tZSBpbmNsdWRlZCB3aXRoIDxtZW5jbG9zZT4uXG4gICAgICBmYm94c2VwID0gb3B0aW9ucy5mb250TWV0cmljcygpLmZib3hzZXAgKiBvcHRpb25zLmZvbnRNZXRyaWNzKCkucHRQZXJFbTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgXCIrXCIgKyAyICogZmJveHNlcCArIFwicHRcIik7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBcIitcIiArIDIgKiBmYm94c2VwICsgXCJwdFwiKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibHNwYWNlXCIsIGZib3hzZXAgKyBcInB0XCIpOyAvL1xuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcInZvZmZzZXRcIiwgZmJveHNlcCArIFwicHRcIik7XG5cbiAgICAgIGlmIChncm91cC5sYWJlbCA9PT0gXCJcXFxcZmNvbG9yYm94XCIpIHtcbiAgICAgICAgdmFyIHRoayA9IE1hdGgubWF4KG9wdGlvbnMuZm9udE1ldHJpY3MoKS5mYm94cnVsZSwgLy8gZGVmYXVsdFxuICAgICAgICBvcHRpb25zLm1pblJ1bGVUaGlja25lc3MgLy8gdXNlciBvdmVycmlkZVxuICAgICAgICApO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsIFwiYm9yZGVyOiBcIiArIHRoayArIFwiZW0gc29saWQgXCIgKyBTdHJpbmcoZ3JvdXAuYm9yZGVyQ29sb3IpKTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwiXFxcXHhjYW5jZWxcIjpcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJ1cGRpYWdvbmFsc3RyaWtlIGRvd25kaWFnb25hbHN0cmlrZVwiKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGdyb3VwLmJhY2tncm91bmRDb2xvcikge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aGJhY2tncm91bmRcIiwgZ3JvdXAuYmFja2dyb3VuZENvbG9yKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImVuY2xvc2VcIixcbiAgbmFtZXM6IFtcIlxcXFxjb2xvcmJveFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgZ3JlZWRpbmVzczogMyxcbiAgICBhcmdUeXBlczogW1wiY29sb3JcIiwgXCJ0ZXh0XCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBjb2xvciA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwiY29sb3ItdG9rZW5cIikuY29sb3I7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzFdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVuY2xvc2VcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGZ1bmNOYW1lLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcixcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZW5jbG9zZV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogZW5jbG9zZV9tYXRobWxCdWlsZGVyXG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJlbmNsb3NlXCIsXG4gIG5hbWVzOiBbXCJcXFxcZmNvbG9yYm94XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDMsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBncmVlZGluZXNzOiAzLFxuICAgIGFyZ1R5cGVzOiBbXCJjb2xvclwiLCBcImNvbG9yXCIsIFwidGV4dFwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmMi5mdW5jTmFtZTtcbiAgICB2YXIgYm9yZGVyQ29sb3IgPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcImNvbG9yLXRva2VuXCIpLmNvbG9yO1xuICAgIHZhciBiYWNrZ3JvdW5kQ29sb3IgPSBhc3NlcnROb2RlVHlwZShhcmdzWzFdLCBcImNvbG9yLXRva2VuXCIpLmNvbG9yO1xuICAgIHZhciBib2R5ID0gYXJnc1syXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlbmNsb3NlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLFxuICAgICAgYm9yZGVyQ29sb3I6IGJvcmRlckNvbG9yLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBlbmNsb3NlX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBlbmNsb3NlX21hdGhtbEJ1aWxkZXJcbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImVuY2xvc2VcIixcbiAgbmFtZXM6IFtcIlxcXFxmYm94XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcImhib3hcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYzLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYzLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlbmNsb3NlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBcIlxcXFxmYm94XCIsXG4gICAgICBib2R5OiBhcmdzWzBdXG4gICAgfTtcbiAgfVxufSk7XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZW5jbG9zZVwiLFxuICBuYW1lczogW1wiXFxcXGNhbmNlbFwiLCBcIlxcXFxiY2FuY2VsXCIsIFwiXFxcXHhjYW5jZWxcIiwgXCJcXFxcc291dFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjQsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjQucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWY0LmZ1bmNOYW1lO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlbmNsb3NlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZW5jbG9zZV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogZW5jbG9zZV9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RlZmluZUVudmlyb25tZW50LmpzXG5cblxuLyoqXG4gKiBBbGwgcmVnaXN0ZXJlZCBlbnZpcm9ubWVudHMuXG4gKiBgZW52aXJvbm1lbnRzLmpzYCBleHBvcnRzIHRoaXMgc2FtZSBkaWN0aW9uYXJ5IGFnYWluIGFuZCBtYWtlcyBpdCBwdWJsaWMuXG4gKiBgUGFyc2VyLmpzYCByZXF1aXJlcyB0aGlzIGRpY3Rpb25hcnkgdmlhIGBlbnZpcm9ubWVudHMuanNgLlxuICovXG52YXIgX2Vudmlyb25tZW50cyA9IHt9O1xuZnVuY3Rpb24gZGVmaW5lRW52aXJvbm1lbnQoX3JlZikge1xuICB2YXIgdHlwZSA9IF9yZWYudHlwZSxcbiAgICAgIG5hbWVzID0gX3JlZi5uYW1lcyxcbiAgICAgIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgIGhhbmRsZXIgPSBfcmVmLmhhbmRsZXIsXG4gICAgICBodG1sQnVpbGRlciA9IF9yZWYuaHRtbEJ1aWxkZXIsXG4gICAgICBtYXRobWxCdWlsZGVyID0gX3JlZi5tYXRobWxCdWlsZGVyO1xuICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXMgb2YgZW52aXJvbm1lbnRzLlxuICB2YXIgZGF0YSA9IHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIG51bUFyZ3M6IHByb3BzLm51bUFyZ3MgfHwgMCxcbiAgICBncmVlZGluZXNzOiAxLFxuICAgIGFsbG93ZWRJblRleHQ6IGZhbHNlLFxuICAgIG51bU9wdGlvbmFsQXJnczogMCxcbiAgICBoYW5kbGVyOiBoYW5kbGVyXG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuICAgIC8vIFRPRE86IFRoZSB2YWx1ZSB0eXBlIG9mIF9lbnZpcm9ubWVudHMgc2hvdWxkIGJlIGEgdHlwZSB1bmlvbiBvZiBhbGxcbiAgICAvLyBwb3NzaWJsZSBgRW52U3BlYzw+YCBwb3NzaWJpbGl0aWVzIGluc3RlYWQgb2YgYEVudlNwZWM8Kj5gLCB3aGljaCBpc1xuICAgIC8vIGFuIGV4aXN0ZW50aWFsIHR5cGUuXG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIF9lbnZpcm9ubWVudHNbbmFtZXNbaV1dID0gZGF0YTtcbiAgfVxuXG4gIGlmIChodG1sQnVpbGRlcikge1xuICAgIF9odG1sR3JvdXBCdWlsZGVyc1t0eXBlXSA9IGh0bWxCdWlsZGVyO1xuICB9XG5cbiAgaWYgKG1hdGhtbEJ1aWxkZXIpIHtcbiAgICBfbWF0aG1sR3JvdXBCdWlsZGVyc1t0eXBlXSA9IG1hdGhtbEJ1aWxkZXI7XG4gIH1cbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Vudmlyb25tZW50cy9hcnJheS5qc1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5mdW5jdGlvbiBnZXRITGluZXMocGFyc2VyKSB7XG4gIC8vIFJldHVybiBhbiBhcnJheS4gVGhlIGFycmF5IGxlbmd0aCA9IG51bWJlciBvZiBobGluZXMuXG4gIC8vIEVhY2ggZWxlbWVudCBpbiB0aGUgYXJyYXkgdGVsbHMgaWYgdGhlIGxpbmUgaXMgZGFzaGVkLlxuICB2YXIgaGxpbmVJbmZvID0gW107XG4gIHBhcnNlci5jb25zdW1lU3BhY2VzKCk7XG4gIHZhciBueHQgPSBwYXJzZXIuZmV0Y2goKS50ZXh0O1xuXG4gIHdoaWxlIChueHQgPT09IFwiXFxcXGhsaW5lXCIgfHwgbnh0ID09PSBcIlxcXFxoZGFzaGxpbmVcIikge1xuICAgIHBhcnNlci5jb25zdW1lKCk7XG4gICAgaGxpbmVJbmZvLnB1c2gobnh0ID09PSBcIlxcXFxoZGFzaGxpbmVcIik7XG4gICAgcGFyc2VyLmNvbnN1bWVTcGFjZXMoKTtcbiAgICBueHQgPSBwYXJzZXIuZmV0Y2goKS50ZXh0O1xuICB9XG5cbiAgcmV0dXJuIGhsaW5lSW5mbztcbn1cbi8qKlxuICogUGFyc2UgdGhlIGJvZHkgb2YgdGhlIGVudmlyb25tZW50LCB3aXRoIHJvd3MgZGVsaW1pdGVkIGJ5IFxcXFwgYW5kXG4gKiBjb2x1bW5zIGRlbGltaXRlZCBieSAmLCBhbmQgY3JlYXRlIGEgbmVzdGVkIGxpc3QgaW4gcm93LW1ham9yIG9yZGVyXG4gKiB3aXRoIG9uZSBncm91cCBwZXIgY2VsbC4gIElmIGdpdmVuIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHN0eWxlXG4gKiAoXCJ0ZXh0XCIsIFwiZGlzcGxheVwiLCBldGMuKSwgdGhlbiBlYWNoIGNlbGwgaXMgY2FzdCBpbnRvIHRoYXQgc3R5bGUuXG4gKi9cblxuXG5mdW5jdGlvbiBwYXJzZUFycmF5KHBhcnNlciwgX3JlZiwgc3R5bGUpIHtcbiAgdmFyIGhza2lwQmVmb3JlQW5kQWZ0ZXIgPSBfcmVmLmhza2lwQmVmb3JlQW5kQWZ0ZXIsXG4gICAgICBhZGRKb3QgPSBfcmVmLmFkZEpvdCxcbiAgICAgIGNvbHMgPSBfcmVmLmNvbHMsXG4gICAgICBhcnJheXN0cmV0Y2ggPSBfcmVmLmFycmF5c3RyZXRjaCxcbiAgICAgIGNvbFNlcGFyYXRpb25UeXBlID0gX3JlZi5jb2xTZXBhcmF0aW9uVHlwZTtcbiAgLy8gUGFyc2UgYm9keSBvZiBhcnJheSB3aXRoIFxcXFwgdGVtcG9yYXJpbHkgbWFwcGVkIHRvIFxcY3JcbiAgcGFyc2VyLmd1bGxldC5iZWdpbkdyb3VwKCk7XG4gIHBhcnNlci5ndWxsZXQubWFjcm9zLnNldChcIlxcXFxcXFxcXCIsIFwiXFxcXGNyXCIpOyAvLyBHZXQgY3VycmVudCBhcnJheXN0cmV0Y2ggaWYgaXQncyBub3Qgc2V0IGJ5IHRoZSBlbnZpcm9ubWVudFxuXG4gIGlmICghYXJyYXlzdHJldGNoKSB7XG4gICAgdmFyIHN0cmV0Y2ggPSBwYXJzZXIuZ3VsbGV0LmV4cGFuZE1hY3JvQXNUZXh0KFwiXFxcXGFycmF5c3RyZXRjaFwiKTtcblxuICAgIGlmIChzdHJldGNoID09IG51bGwpIHtcbiAgICAgIC8vIERlZmF1bHQgXFxhcnJheXN0cmV0Y2ggZnJvbSBsdHRhYi5kdHhcbiAgICAgIGFycmF5c3RyZXRjaCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFycmF5c3RyZXRjaCA9IHBhcnNlRmxvYXQoc3RyZXRjaCk7XG5cbiAgICAgIGlmICghYXJyYXlzdHJldGNoIHx8IGFycmF5c3RyZXRjaCA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBcXFxcYXJyYXlzdHJldGNoOiBcIiArIHN0cmV0Y2gpO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBTdGFydCBncm91cCBmb3IgZmlyc3QgY2VsbFxuXG5cbiAgcGFyc2VyLmd1bGxldC5iZWdpbkdyb3VwKCk7XG4gIHZhciByb3cgPSBbXTtcbiAgdmFyIGJvZHkgPSBbcm93XTtcbiAgdmFyIHJvd0dhcHMgPSBbXTtcbiAgdmFyIGhMaW5lc0JlZm9yZVJvdyA9IFtdOyAvLyBUZXN0IGZvciBcXGhsaW5lIGF0IHRoZSB0b3Agb2YgdGhlIGFycmF5LlxuXG4gIGhMaW5lc0JlZm9yZVJvdy5wdXNoKGdldEhMaW5lcyhwYXJzZXIpKTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgLy8gUGFyc2UgZWFjaCBjZWxsIGluIGl0cyBvd24gZ3JvdXAgKG5hbWVzcGFjZSlcbiAgICB2YXIgY2VsbCA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24oZmFsc2UsIFwiXFxcXGNyXCIpO1xuICAgIHBhcnNlci5ndWxsZXQuZW5kR3JvdXAoKTtcbiAgICBwYXJzZXIuZ3VsbGV0LmJlZ2luR3JvdXAoKTtcbiAgICBjZWxsID0ge1xuICAgICAgdHlwZTogXCJvcmRncm91cFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBjZWxsXG4gICAgfTtcblxuICAgIGlmIChzdHlsZSkge1xuICAgICAgY2VsbCA9IHtcbiAgICAgICAgdHlwZTogXCJzdHlsaW5nXCIsXG4gICAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIGJvZHk6IFtjZWxsXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByb3cucHVzaChjZWxsKTtcbiAgICB2YXIgbmV4dCA9IHBhcnNlci5mZXRjaCgpLnRleHQ7XG5cbiAgICBpZiAobmV4dCA9PT0gXCImXCIpIHtcbiAgICAgIHBhcnNlci5jb25zdW1lKCk7XG4gICAgfSBlbHNlIGlmIChuZXh0ID09PSBcIlxcXFxlbmRcIikge1xuICAgICAgLy8gQXJyYXlzIHRlcm1pbmF0ZSBuZXdsaW5lcyB3aXRoIGBcXGNyY3JgIHdoaWNoIGNvbnN1bWVzIGEgYFxcY3JgIGlmXG4gICAgICAvLyB0aGUgbGFzdCBsaW5lIGlzIGVtcHR5LlxuICAgICAgLy8gTk9URTogQ3VycmVudGx5LCBgY2VsbGAgaXMgdGhlIGxhc3QgaXRlbSBhZGRlZCBpbnRvIGByb3dgLlxuICAgICAgaWYgKHJvdy5sZW5ndGggPT09IDEgJiYgY2VsbC50eXBlID09PSBcInN0eWxpbmdcIiAmJiBjZWxsLmJvZHlbMF0uYm9keS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgYm9keS5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhMaW5lc0JlZm9yZVJvdy5sZW5ndGggPCBib2R5Lmxlbmd0aCArIDEpIHtcbiAgICAgICAgaExpbmVzQmVmb3JlUm93LnB1c2goW10pO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKG5leHQgPT09IFwiXFxcXGNyXCIpIHtcbiAgICAgIHZhciBjciA9IGFzc2VydE5vZGVUeXBlKHBhcnNlci5wYXJzZUZ1bmN0aW9uKCksIFwiY3JcIik7XG4gICAgICByb3dHYXBzLnB1c2goY3Iuc2l6ZSk7IC8vIGNoZWNrIGZvciBcXGhsaW5lKHMpIGZvbGxvd2luZyB0aGUgcm93IHNlcGFyYXRvclxuXG4gICAgICBoTGluZXNCZWZvcmVSb3cucHVzaChnZXRITGluZXMocGFyc2VyKSk7XG4gICAgICByb3cgPSBbXTtcbiAgICAgIGJvZHkucHVzaChyb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJFeHBlY3RlZCAmIG9yIFxcXFxcXFxcIG9yIFxcXFxjciBvciBcXFxcZW5kXCIsIHBhcnNlci5uZXh0VG9rZW4pO1xuICAgIH1cbiAgfSAvLyBFbmQgY2VsbCBncm91cFxuXG5cbiAgcGFyc2VyLmd1bGxldC5lbmRHcm91cCgpOyAvLyBFbmQgYXJyYXkgZ3JvdXAgZGVmaW5pbmcgXFxcXFxuXG4gIHBhcnNlci5ndWxsZXQuZW5kR3JvdXAoKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgYWRkSm90OiBhZGRKb3QsXG4gICAgYXJyYXlzdHJldGNoOiBhcnJheXN0cmV0Y2gsXG4gICAgYm9keTogYm9keSxcbiAgICBjb2xzOiBjb2xzLFxuICAgIHJvd0dhcHM6IHJvd0dhcHMsXG4gICAgaHNraXBCZWZvcmVBbmRBZnRlcjogaHNraXBCZWZvcmVBbmRBZnRlcixcbiAgICBoTGluZXNCZWZvcmVSb3c6IGhMaW5lc0JlZm9yZVJvdyxcbiAgICBjb2xTZXBhcmF0aW9uVHlwZTogY29sU2VwYXJhdGlvblR5cGVcbiAgfTtcbn0gLy8gRGVjaWRlcyBvbiBhIHN0eWxlIGZvciBjZWxscyBpbiBhbiBhcnJheSBhY2NvcmRpbmcgdG8gd2hldGhlciB0aGUgZ2l2ZW5cbi8vIGVudmlyb25tZW50IG5hbWUgc3RhcnRzIHdpdGggdGhlIGxldHRlciAnZCcuXG5cblxuZnVuY3Rpb24gZENlbGxTdHlsZShlbnZOYW1lKSB7XG4gIGlmIChlbnZOYW1lLnN1YnN0cigwLCAxKSA9PT0gXCJkXCIpIHtcbiAgICByZXR1cm4gXCJkaXNwbGF5XCI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwidGV4dFwiO1xuICB9XG59XG5cbnZhciBhcnJheV9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciByO1xuICB2YXIgYztcbiAgdmFyIG5yID0gZ3JvdXAuYm9keS5sZW5ndGg7XG4gIHZhciBoTGluZXNCZWZvcmVSb3cgPSBncm91cC5oTGluZXNCZWZvcmVSb3c7XG4gIHZhciBuYyA9IDA7XG4gIHZhciBib2R5ID0gbmV3IEFycmF5KG5yKTtcbiAgdmFyIGhsaW5lcyA9IFtdO1xuICB2YXIgcnVsZVRoaWNrbmVzcyA9IE1hdGgubWF4KCAvLyBGcm9tIExhVGVYIFxcc2hvd3RoZVxcYXJyYXlydWxld2lkdGguIEVxdWFscyAwLjA0IGVtLlxuICBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXJyYXlSdWxlV2lkdGgsIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyAvLyBVc2VyIG92ZXJyaWRlLlxuICApOyAvLyBIb3Jpem9udGFsIHNwYWNpbmdcblxuICB2YXIgcHQgPSAxIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG4gIHZhciBhcnJheWNvbHNlcCA9IDUgKiBwdDsgLy8gZGVmYXVsdCB2YWx1ZSwgaS5lLiBcXGFycmF5Y29sc2VwIGluIGFydGljbGUuY2xzXG5cbiAgaWYgKGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlICYmIGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlID09PSBcInNtYWxsXCIpIHtcbiAgICAvLyBXZSdyZSBpbiBhIHtzbWFsbG1hdHJpeH0uIERlZmF1bHQgY29sdW1uIHNwYWNlIGlzIFxcdGhpY2tzcGFjZSxcbiAgICAvLyBpLmUuIDUvMThlbSA9IDAuMjc3OGVtLCBwZXIgYW1zbWF0aC5kdHggZm9yIHtzbWFsbG1hdHJpeH0uXG4gICAgLy8gQnV0IHRoYXQgbmVlZHMgYWRqdXN0bWVudCBiZWNhdXNlIExhVGVYIGFwcGxpZXMgXFxzY3JpcHRzdHlsZSB0byB0aGVcbiAgICAvLyBlbnRpcmUgYXJyYXksIGluY2x1ZGluZyB0aGUgY29sc3BhY2UsIGJ1dCB0aGlzIGZ1bmN0aW9uIGFwcGxpZXNcbiAgICAvLyBcXHNjcmlwdHN0eWxlIG9ubHkgaW5zaWRlIGVhY2ggZWxlbWVudC5cbiAgICB2YXIgbG9jYWxNdWx0aXBsaWVyID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzcmNfU3R5bGUuU0NSSVBUKS5zaXplTXVsdGlwbGllcjtcbiAgICBhcnJheWNvbHNlcCA9IDAuMjc3OCAqIChsb2NhbE11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyKTtcbiAgfSAvLyBWZXJ0aWNhbCBzcGFjaW5nXG5cblxuICB2YXIgYmFzZWxpbmVza2lwID0gMTIgKiBwdDsgLy8gc2VlIHNpemUxMC5jbG9cbiAgLy8gRGVmYXVsdCBcXGpvdCBmcm9tIGx0bWF0aC5kdHhcbiAgLy8gVE9ETyhlZGVtYWluZSk6IGFsbG93IG92ZXJyaWRpbmcgXFxqb3QgdmlhIFxcc2V0bGVuZ3RoICgjNjg3KVxuXG4gIHZhciBqb3QgPSAzICogcHQ7XG4gIHZhciBhcnJheXNraXAgPSBncm91cC5hcnJheXN0cmV0Y2ggKiBiYXNlbGluZXNraXA7XG4gIHZhciBhcnN0cnV0SGVpZ2h0ID0gMC43ICogYXJyYXlza2lwOyAvLyBcXHN0cnV0Ym94IGluIGx0ZnNzdHJjLmR0eCBhbmRcblxuICB2YXIgYXJzdHJ1dERlcHRoID0gMC4zICogYXJyYXlza2lwOyAvLyBcXEBhcnN0cnV0Ym94IGluIGx0dGFiLmR0eFxuXG4gIHZhciB0b3RhbEhlaWdodCA9IDA7IC8vIFNldCBhIHBvc2l0aW9uIGZvciBcXGhsaW5lKHMpIGF0IHRoZSB0b3Agb2YgdGhlIGFycmF5LCBpZiBhbnkuXG5cbiAgZnVuY3Rpb24gc2V0SExpbmVQb3MoaGxpbmVzSW5HYXApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhsaW5lc0luR2FwLmxlbmd0aDsgKytpKSB7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgdG90YWxIZWlnaHQgKz0gMC4yNTtcbiAgICAgIH1cblxuICAgICAgaGxpbmVzLnB1c2goe1xuICAgICAgICBwb3M6IHRvdGFsSGVpZ2h0LFxuICAgICAgICBpc0Rhc2hlZDogaGxpbmVzSW5HYXBbaV1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldEhMaW5lUG9zKGhMaW5lc0JlZm9yZVJvd1swXSk7XG5cbiAgZm9yIChyID0gMDsgciA8IGdyb3VwLmJvZHkubGVuZ3RoOyArK3IpIHtcbiAgICB2YXIgaW5yb3cgPSBncm91cC5ib2R5W3JdO1xuICAgIHZhciBoZWlnaHQgPSBhcnN0cnV0SGVpZ2h0OyAvLyBcXEBhcnJheSBhZGRzIGFuIFxcQGFyc3RydXRcblxuICAgIHZhciBkZXB0aCA9IGFyc3RydXREZXB0aDsgLy8gdG8gZWFjaCB0b3cgKHZpYSB0aGUgdGVtcGxhdGUpXG5cbiAgICBpZiAobmMgPCBpbnJvdy5sZW5ndGgpIHtcbiAgICAgIG5jID0gaW5yb3cubGVuZ3RoO1xuICAgIH1cblxuICAgIHZhciBvdXRyb3cgPSBuZXcgQXJyYXkoaW5yb3cubGVuZ3RoKTtcblxuICAgIGZvciAoYyA9IDA7IGMgPCBpbnJvdy5sZW5ndGg7ICsrYykge1xuICAgICAgdmFyIGVsdCA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGlucm93W2NdLCBvcHRpb25zKTtcblxuICAgICAgaWYgKGRlcHRoIDwgZWx0LmRlcHRoKSB7XG4gICAgICAgIGRlcHRoID0gZWx0LmRlcHRoO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGVpZ2h0IDwgZWx0LmhlaWdodCkge1xuICAgICAgICBoZWlnaHQgPSBlbHQuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBvdXRyb3dbY10gPSBlbHQ7XG4gICAgfVxuXG4gICAgdmFyIHJvd0dhcCA9IGdyb3VwLnJvd0dhcHNbcl07XG4gICAgdmFyIGdhcCA9IDA7XG5cbiAgICBpZiAocm93R2FwKSB7XG4gICAgICBnYXAgPSB1bml0c19jYWxjdWxhdGVTaXplKHJvd0dhcCwgb3B0aW9ucyk7XG5cbiAgICAgIGlmIChnYXAgPiAwKSB7XG4gICAgICAgIC8vIFxcQGFyZ2FycmF5Y3JcbiAgICAgICAgZ2FwICs9IGFyc3RydXREZXB0aDtcblxuICAgICAgICBpZiAoZGVwdGggPCBnYXApIHtcbiAgICAgICAgICBkZXB0aCA9IGdhcDsgLy8gXFxAeGFyZ2FycmF5Y3JcbiAgICAgICAgfVxuXG4gICAgICAgIGdhcCA9IDA7XG4gICAgICB9XG4gICAgfSAvLyBJbiBBTVMgbXVsdGlsaW5lIGVudmlyb25tZW50cyBzdWNoIGFzIGFsaWduZWQgYW5kIGdhdGhlcmVkLCByb3dzXG4gICAgLy8gY29ycmVzcG9uZCB0byBsaW5lcyB0aGF0IGhhdmUgYWRkaXRpb25hbCBcXGpvdCBhZGRlZCB0byB0aGVcbiAgICAvLyBcXGJhc2VsaW5lc2tpcCB2aWEgXFxvcGVudXAuXG5cblxuICAgIGlmIChncm91cC5hZGRKb3QpIHtcbiAgICAgIGRlcHRoICs9IGpvdDtcbiAgICB9XG5cbiAgICBvdXRyb3cuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIG91dHJvdy5kZXB0aCA9IGRlcHRoO1xuICAgIHRvdGFsSGVpZ2h0ICs9IGhlaWdodDtcbiAgICBvdXRyb3cucG9zID0gdG90YWxIZWlnaHQ7XG4gICAgdG90YWxIZWlnaHQgKz0gZGVwdGggKyBnYXA7IC8vIFxcQHlhcmdhcnJheWNyXG5cbiAgICBib2R5W3JdID0gb3V0cm93OyAvLyBTZXQgYSBwb3NpdGlvbiBmb3IgXFxobGluZShzKSwgaWYgYW55LlxuXG4gICAgc2V0SExpbmVQb3MoaExpbmVzQmVmb3JlUm93W3IgKyAxXSk7XG4gIH1cblxuICB2YXIgb2Zmc2V0ID0gdG90YWxIZWlnaHQgLyAyICsgb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQ7XG4gIHZhciBjb2xEZXNjcmlwdGlvbnMgPSBncm91cC5jb2xzIHx8IFtdO1xuICB2YXIgY29scyA9IFtdO1xuICB2YXIgY29sU2VwO1xuICB2YXIgY29sRGVzY3JOdW07XG5cbiAgZm9yIChjID0gMCwgY29sRGVzY3JOdW0gPSAwOyAvLyBDb250aW51ZSB3aGlsZSBlaXRoZXIgdGhlcmUgYXJlIG1vcmUgY29sdW1ucyBvciBtb3JlIGNvbHVtblxuICAvLyBkZXNjcmlwdGlvbnMsIHNvIHRyYWlsaW5nIHNlcGFyYXRvcnMgZG9uJ3QgZ2V0IGxvc3QuXG4gIGMgPCBuYyB8fCBjb2xEZXNjck51bSA8IGNvbERlc2NyaXB0aW9ucy5sZW5ndGg7ICsrYywgKytjb2xEZXNjck51bSkge1xuICAgIHZhciBjb2xEZXNjciA9IGNvbERlc2NyaXB0aW9uc1tjb2xEZXNjck51bV0gfHwge307XG4gICAgdmFyIGZpcnN0U2VwYXJhdG9yID0gdHJ1ZTtcblxuICAgIHdoaWxlIChjb2xEZXNjci50eXBlID09PSBcInNlcGFyYXRvclwiKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHNlcGFyYXRvciBpbiBhIHJvdywgYWRkIGEgc3BhY2VcbiAgICAgIC8vIGJldHdlZW4gdGhlbS5cbiAgICAgIGlmICghZmlyc3RTZXBhcmF0b3IpIHtcbiAgICAgICAgY29sU2VwID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiYXJyYXljb2xzZXBcIl0sIFtdKTtcbiAgICAgICAgY29sU2VwLnN0eWxlLndpZHRoID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRvdWJsZVJ1bGVTZXAgKyBcImVtXCI7XG4gICAgICAgIGNvbHMucHVzaChjb2xTZXApO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29sRGVzY3Iuc2VwYXJhdG9yID09PSBcInxcIiB8fCBjb2xEZXNjci5zZXBhcmF0b3IgPT09IFwiOlwiKSB7XG4gICAgICAgIHZhciBsaW5lVHlwZSA9IGNvbERlc2NyLnNlcGFyYXRvciA9PT0gXCJ8XCIgPyBcInNvbGlkXCIgOiBcImRhc2hlZFwiO1xuICAgICAgICB2YXIgc2VwYXJhdG9yID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1widmVydGljYWwtc2VwYXJhdG9yXCJdLCBbXSwgb3B0aW9ucyk7XG4gICAgICAgIHNlcGFyYXRvci5zdHlsZS5oZWlnaHQgPSB0b3RhbEhlaWdodCArIFwiZW1cIjtcbiAgICAgICAgc2VwYXJhdG9yLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGggPSBydWxlVGhpY2tuZXNzICsgXCJlbVwiO1xuICAgICAgICBzZXBhcmF0b3Iuc3R5bGUuYm9yZGVyUmlnaHRTdHlsZSA9IGxpbmVUeXBlO1xuICAgICAgICBzZXBhcmF0b3Iuc3R5bGUubWFyZ2luID0gXCIwIC1cIiArIHJ1bGVUaGlja25lc3MgLyAyICsgXCJlbVwiO1xuICAgICAgICBzZXBhcmF0b3Iuc3R5bGUudmVydGljYWxBbGlnbiA9IC0odG90YWxIZWlnaHQgLSBvZmZzZXQpICsgXCJlbVwiO1xuICAgICAgICBjb2xzLnB1c2goc2VwYXJhdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgc2VwYXJhdG9yIHR5cGU6IFwiICsgY29sRGVzY3Iuc2VwYXJhdG9yKTtcbiAgICAgIH1cblxuICAgICAgY29sRGVzY3JOdW0rKztcbiAgICAgIGNvbERlc2NyID0gY29sRGVzY3JpcHRpb25zW2NvbERlc2NyTnVtXSB8fCB7fTtcbiAgICAgIGZpcnN0U2VwYXJhdG9yID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGMgPj0gbmMpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBzZXB3aWR0aCA9IHZvaWQgMDtcblxuICAgIGlmIChjID4gMCB8fCBncm91cC5oc2tpcEJlZm9yZUFuZEFmdGVyKSB7XG4gICAgICBzZXB3aWR0aCA9IHV0aWxzLmRlZmx0KGNvbERlc2NyLnByZWdhcCwgYXJyYXljb2xzZXApO1xuXG4gICAgICBpZiAoc2Vwd2lkdGggIT09IDApIHtcbiAgICAgICAgY29sU2VwID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiYXJyYXljb2xzZXBcIl0sIFtdKTtcbiAgICAgICAgY29sU2VwLnN0eWxlLndpZHRoID0gc2Vwd2lkdGggKyBcImVtXCI7XG4gICAgICAgIGNvbHMucHVzaChjb2xTZXApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb2wgPSBbXTtcblxuICAgIGZvciAociA9IDA7IHIgPCBucjsgKytyKSB7XG4gICAgICB2YXIgcm93ID0gYm9keVtyXTtcbiAgICAgIHZhciBlbGVtID0gcm93W2NdO1xuXG4gICAgICBpZiAoIWVsZW0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBzaGlmdCA9IHJvdy5wb3MgLSBvZmZzZXQ7XG4gICAgICBlbGVtLmRlcHRoID0gcm93LmRlcHRoO1xuICAgICAgZWxlbS5oZWlnaHQgPSByb3cuaGVpZ2h0O1xuICAgICAgY29sLnB1c2goe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogZWxlbSxcbiAgICAgICAgc2hpZnQ6IHNoaWZ0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb2wgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgY2hpbGRyZW46IGNvbFxuICAgIH0sIG9wdGlvbnMpO1xuICAgIGNvbCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImNvbC1hbGlnbi1cIiArIChjb2xEZXNjci5hbGlnbiB8fCBcImNcIildLCBbY29sXSk7XG4gICAgY29scy5wdXNoKGNvbCk7XG5cbiAgICBpZiAoYyA8IG5jIC0gMSB8fCBncm91cC5oc2tpcEJlZm9yZUFuZEFmdGVyKSB7XG4gICAgICBzZXB3aWR0aCA9IHV0aWxzLmRlZmx0KGNvbERlc2NyLnBvc3RnYXAsIGFycmF5Y29sc2VwKTtcblxuICAgICAgaWYgKHNlcHdpZHRoICE9PSAwKSB7XG4gICAgICAgIGNvbFNlcCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImFycmF5Y29sc2VwXCJdLCBbXSk7XG4gICAgICAgIGNvbFNlcC5zdHlsZS53aWR0aCA9IHNlcHdpZHRoICsgXCJlbVwiO1xuICAgICAgICBjb2xzLnB1c2goY29sU2VwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBib2R5ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXRhYmxlXCJdLCBjb2xzKTsgLy8gQWRkIFxcaGxpbmUocyksIGlmIGFueS5cblxuICBpZiAoaGxpbmVzLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgbGluZSA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcImhsaW5lXCIsIG9wdGlvbnMsIHJ1bGVUaGlja25lc3MpO1xuICAgIHZhciBkYXNoZXMgPSBidWlsZENvbW1vbi5tYWtlTGluZVNwYW4oXCJoZGFzaGxpbmVcIiwgb3B0aW9ucywgcnVsZVRoaWNrbmVzcyk7XG4gICAgdmFyIHZMaXN0RWxlbXMgPSBbe1xuICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICBlbGVtOiBib2R5LFxuICAgICAgc2hpZnQ6IDBcbiAgICB9XTtcblxuICAgIHdoaWxlIChobGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGhsaW5lID0gaGxpbmVzLnBvcCgpO1xuICAgICAgdmFyIGxpbmVTaGlmdCA9IGhsaW5lLnBvcyAtIG9mZnNldDtcblxuICAgICAgaWYgKGhsaW5lLmlzRGFzaGVkKSB7XG4gICAgICAgIHZMaXN0RWxlbXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogZGFzaGVzLFxuICAgICAgICAgIHNoaWZ0OiBsaW5lU2hpZnRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2TGlzdEVsZW1zLnB1c2goe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IGxpbmUsXG4gICAgICAgICAgc2hpZnQ6IGxpbmVTaGlmdFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBib2R5ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiB2TGlzdEVsZW1zXG4gICAgfSwgb3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXSwgW2JvZHldLCBvcHRpb25zKTtcbn07XG5cbnZhciBhbGlnbk1hcCA9IHtcbiAgYzogXCJjZW50ZXIgXCIsXG4gIGw6IFwibGVmdCBcIixcbiAgcjogXCJyaWdodCBcIlxufTtcblxudmFyIGFycmF5X21hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciB0YWJsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRhYmxlXCIsIGdyb3VwLmJvZHkubWFwKGZ1bmN0aW9uIChyb3cpIHtcbiAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdHJcIiwgcm93Lm1hcChmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRkXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGNlbGwsIG9wdGlvbnMpXSk7XG4gICAgfSkpO1xuICB9KSk7IC8vIFNldCBjb2x1bW4gYWxpZ25tZW50LCByb3cgc3BhY2luZywgY29sdW1uIHNwYWNpbmcsIGFuZFxuICAvLyBhcnJheSBsaW5lcyBieSBzZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhlIHRhYmxlIGVsZW1lbnQuXG4gIC8vIFNldCB0aGUgcm93IHNwYWNpbmcuIEluIE1hdGhNTCwgd2Ugc3BlY2lmeSBhIGdhcCBkaXN0YW5jZS5cbiAgLy8gV2UgZG8gbm90IHVzZSByb3dHYXBbXSBiZWNhdXNlIE1hdGhNTCBhdXRvbWF0aWNhbGx5IGluY3JlYXNlc1xuICAvLyBjZWxsIGhlaWdodCB3aXRoIHRoZSBoZWlnaHQvZGVwdGggb2YgdGhlIGVsZW1lbnQgY29udGVudC5cbiAgLy8gTGFUZVggXFxhcnJheXN0cmV0Y2ggbXVsdGlwbGllcyB0aGUgcm93IGJhc2VsaW5lLXRvLWJhc2VsaW5lIGRpc3RhbmNlLlxuICAvLyBXZSBzaW11bGF0ZSB0aGlzIGJ5IGFkZGluZyAoYXJyYXlzdHJldGNoIC0gMSllbSB0byB0aGUgZ2FwLiBUaGlzXG4gIC8vIGRvZXMgYSByZWFzb25hYmxlIGpvYiBvZiBhZGp1c3RpbmcgYXJyYXlzIGNvbnRhaW5pbmcgMSBlbSB0YWxsIGNvbnRlbnQuXG4gIC8vIFRoZSAwLjE2IGFuZCAwLjA5IHZhbHVlcyBhcmUgZm91bmQgZW1wcmljYWxseS4gVGhleSBwcm9kdWNlIGFuIGFycmF5XG4gIC8vIHNpbWlsYXIgdG8gTGFUZVggYW5kIGluIHdoaWNoIGNvbnRlbnQgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggXFxoaW5lcy5cblxuICB2YXIgZ2FwID0gZ3JvdXAuYXJyYXlzdHJldGNoID09PSAwLjUgPyAwLjEgLy8ge3NtYWxsbWF0cml4fSwge3N1YmFycmF5fVxuICA6IDAuMTYgKyBncm91cC5hcnJheXN0cmV0Y2ggLSAxICsgKGdyb3VwLmFkZEpvdCA/IDAuMDkgOiAwKTtcbiAgdGFibGUuc2V0QXR0cmlidXRlKFwicm93c3BhY2luZ1wiLCBnYXAgKyBcImVtXCIpOyAvLyBNYXRoTUwgdGFibGUgbGluZXMgZ28gb25seSBiZXR3ZWVuIGNlbGxzLlxuICAvLyBUbyBwbGFjZSBhIGxpbmUgb24gYW4gZWRnZSB3ZSdsbCB1c2UgPG1lbmNsb3NlPiwgaWYgbmVjZXNzYXJ5LlxuXG4gIHZhciBtZW5jbG9zZSA9IFwiXCI7XG4gIHZhciBhbGlnbiA9IFwiXCI7XG5cbiAgaWYgKGdyb3VwLmNvbHMpIHtcbiAgICAvLyBGaW5kIGNvbHVtbiBhbGlnbm1lbnQsIGNvbHVtbiBzcGFjaW5nLCBhbmQgIHZlcnRpY2FsIGxpbmVzLlxuICAgIHZhciBjb2xzID0gZ3JvdXAuY29scztcbiAgICB2YXIgY29sdW1uTGluZXMgPSBcIlwiO1xuICAgIHZhciBwcmV2VHlwZVdhc0FsaWduID0gZmFsc2U7XG4gICAgdmFyIGlTdGFydCA9IDA7XG4gICAgdmFyIGlFbmQgPSBjb2xzLmxlbmd0aDtcblxuICAgIGlmIChjb2xzWzBdLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgIG1lbmNsb3NlICs9IFwidG9wIFwiO1xuICAgICAgaVN0YXJ0ID0gMTtcbiAgICB9XG5cbiAgICBpZiAoY29sc1tjb2xzLmxlbmd0aCAtIDFdLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgIG1lbmNsb3NlICs9IFwiYm90dG9tIFwiO1xuICAgICAgaUVuZCAtPSAxO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSBpU3RhcnQ7IGkgPCBpRW5kOyBpKyspIHtcbiAgICAgIGlmIChjb2xzW2ldLnR5cGUgPT09IFwiYWxpZ25cIikge1xuICAgICAgICBhbGlnbiArPSBhbGlnbk1hcFtjb2xzW2ldLmFsaWduXTtcblxuICAgICAgICBpZiAocHJldlR5cGVXYXNBbGlnbikge1xuICAgICAgICAgIGNvbHVtbkxpbmVzICs9IFwibm9uZSBcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZUeXBlV2FzQWxpZ24gPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChjb2xzW2ldLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgICAgLy8gTWF0aE1MIGFjY2VwdHMgb25seSBzaW5nbGUgbGluZXMgYmV0d2VlbiBjZWxscy5cbiAgICAgICAgLy8gU28gd2UgcmVhZCBvbmx5IHRoZSBmaXJzdCBvZiBjb25zZWN1dGl2ZSBzZXBhcmF0b3JzLlxuICAgICAgICBpZiAocHJldlR5cGVXYXNBbGlnbikge1xuICAgICAgICAgIGNvbHVtbkxpbmVzICs9IGNvbHNbaV0uc2VwYXJhdG9yID09PSBcInxcIiA/IFwic29saWQgXCIgOiBcImRhc2hlZCBcIjtcbiAgICAgICAgICBwcmV2VHlwZVdhc0FsaWduID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJjb2x1bW5hbGlnblwiLCBhbGlnbi50cmltKCkpO1xuXG4gICAgaWYgKC9bc2RdLy50ZXN0KGNvbHVtbkxpbmVzKSkge1xuICAgICAgdGFibGUuc2V0QXR0cmlidXRlKFwiY29sdW1ubGluZXNcIiwgY29sdW1uTGluZXMudHJpbSgpKTtcbiAgICB9XG4gIH0gLy8gU2V0IGNvbHVtbiBzcGFjaW5nLlxuXG5cbiAgaWYgKGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlID09PSBcImFsaWduXCIpIHtcbiAgICB2YXIgX2NvbHMgPSBncm91cC5jb2xzIHx8IFtdO1xuXG4gICAgdmFyIHNwYWNpbmcgPSBcIlwiO1xuXG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IF9jb2xzLmxlbmd0aDsgX2krKykge1xuICAgICAgc3BhY2luZyArPSBfaSAlIDIgPyBcIjBlbSBcIiA6IFwiMWVtIFwiO1xuICAgIH1cblxuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbnNwYWNpbmdcIiwgc3BhY2luZy50cmltKCkpO1xuICB9IGVsc2UgaWYgKGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlID09PSBcImFsaWduYXRcIikge1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbnNwYWNpbmdcIiwgXCIwZW1cIik7XG4gIH0gZWxzZSBpZiAoZ3JvdXAuY29sU2VwYXJhdGlvblR5cGUgPT09IFwic21hbGxcIikge1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbnNwYWNpbmdcIiwgXCIwLjI3NzhlbVwiKTtcbiAgfSBlbHNlIHtcbiAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJjb2x1bW5zcGFjaW5nXCIsIFwiMWVtXCIpO1xuICB9IC8vIEFkZHJlc3MgXFxobGluZSBhbmQgXFxoZGFzaGxpbmVcblxuXG4gIHZhciByb3dMaW5lcyA9IFwiXCI7XG4gIHZhciBobGluZXMgPSBncm91cC5oTGluZXNCZWZvcmVSb3c7XG4gIG1lbmNsb3NlICs9IGhsaW5lc1swXS5sZW5ndGggPiAwID8gXCJsZWZ0IFwiIDogXCJcIjtcbiAgbWVuY2xvc2UgKz0gaGxpbmVzW2hsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggPiAwID8gXCJyaWdodCBcIiA6IFwiXCI7XG5cbiAgZm9yICh2YXIgX2kyID0gMTsgX2kyIDwgaGxpbmVzLmxlbmd0aCAtIDE7IF9pMisrKSB7XG4gICAgcm93TGluZXMgKz0gaGxpbmVzW19pMl0ubGVuZ3RoID09PSAwID8gXCJub25lIFwiIC8vIE1hdGhNTCBhY2NlcHRzIG9ubHkgYSBzaW5nbGUgbGluZSBiZXR3ZWVuIHJvd3MuIFJlYWQgb25lIGVsZW1lbnQuXG4gICAgOiBobGluZXNbX2kyXVswXSA/IFwiZGFzaGVkIFwiIDogXCJzb2xpZCBcIjtcbiAgfVxuXG4gIGlmICgvW3NkXS8udGVzdChyb3dMaW5lcykpIHtcbiAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJyb3dsaW5lc1wiLCByb3dMaW5lcy50cmltKCkpO1xuICB9XG5cbiAgaWYgKG1lbmNsb3NlICE9PSBcIlwiKSB7XG4gICAgdGFibGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1lbmNsb3NlXCIsIFt0YWJsZV0pO1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcIm5vdGF0aW9uXCIsIG1lbmNsb3NlLnRyaW0oKSk7XG4gIH1cblxuICBpZiAoZ3JvdXAuYXJyYXlzdHJldGNoICYmIGdyb3VwLmFycmF5c3RyZXRjaCA8IDEpIHtcbiAgICAvLyBBIHNtYWxsIGFycmF5LiBXcmFwIGluIHNjcmlwdHN0eWxlIHNvIHJvdyBnYXAgaXMgbm90IHRvbyBsYXJnZS5cbiAgICB0YWJsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXN0eWxlXCIsIFt0YWJsZV0pO1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcInNjcmlwdGxldmVsXCIsIFwiMVwiKTtcbiAgfVxuXG4gIHJldHVybiB0YWJsZTtcbn07IC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBhbGlnbmVkIGFuZCBhbGlnbmVkYXQgZW52aXJvbm1lbnRzLlxuXG5cbnZhciBhcnJheV9hbGlnbmVkSGFuZGxlciA9IGZ1bmN0aW9uIGFsaWduZWRIYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgdmFyIGNvbHMgPSBbXTtcbiAgdmFyIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHtcbiAgICBjb2xzOiBjb2xzLFxuICAgIGFkZEpvdDogdHJ1ZVxuICB9LCBcImRpc3BsYXlcIik7IC8vIERldGVybWluaW5nIG51bWJlciBvZiBjb2x1bW5zLlxuICAvLyAxLiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgZ2l2ZW4sIHdlIHVzZSBpdCBhcyBhIG51bWJlciBvZiBjb2x1bW5zLFxuICAvLyAgICBhbmQgbWFrZXMgc3VyZSB0aGF0IGVhY2ggcm93IGRvZXNuJ3QgZXhjZWVkIHRoYXQgbnVtYmVyLlxuICAvLyAyLiBPdGhlcndpc2UsIGp1c3QgY291bnQgbnVtYmVyIG9mIGNvbHVtbnMgPSBtYXhpbXVtIG51bWJlclxuICAvLyAgICBvZiBjZWxscyBpbiBlYWNoIHJvdyAoXCJhbGlnbmVkXCIgbW9kZSAtLSBpc0FsaWduZWQgd2lsbCBiZSB0cnVlKS5cbiAgLy9cbiAgLy8gQXQgdGhlIHNhbWUgdGltZSwgcHJlcGVuZCBlbXB0eSBncm91cCB7fSBhdCBiZWdpbm5pbmcgb2YgZXZlcnkgc2Vjb25kXG4gIC8vIGNlbGwgaW4gZWFjaCByb3cgKHN0YXJ0aW5nIHdpdGggc2Vjb25kIGNlbGwpIHNvIHRoYXQgb3BlcmF0b3JzIGJlY29tZVxuICAvLyBiaW5hcnkuICBUaGlzIGJlaGF2aW9yIGlzIGltcGxlbWVudGVkIGluIGFtc21hdGgncyBcXHN0YXJ0QGFsaWduZWQuXG5cbiAgdmFyIG51bU1hdGhzO1xuICB2YXIgbnVtQ29scyA9IDA7XG4gIHZhciBlbXB0eUdyb3VwID0ge1xuICAgIHR5cGU6IFwib3JkZ3JvdXBcIixcbiAgICBtb2RlOiBjb250ZXh0Lm1vZGUsXG4gICAgYm9keTogW11cbiAgfTtcbiAgdmFyIG9yZGdyb3VwID0gY2hlY2tOb2RlVHlwZShhcmdzWzBdLCBcIm9yZGdyb3VwXCIpO1xuXG4gIGlmIChvcmRncm91cCkge1xuICAgIHZhciBhcmcwID0gXCJcIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZ3JvdXAuYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRleHRvcmQgPSBhc3NlcnROb2RlVHlwZShvcmRncm91cC5ib2R5W2ldLCBcInRleHRvcmRcIik7XG4gICAgICBhcmcwICs9IHRleHRvcmQudGV4dDtcbiAgICB9XG5cbiAgICBudW1NYXRocyA9IE51bWJlcihhcmcwKTtcbiAgICBudW1Db2xzID0gbnVtTWF0aHMgKiAyO1xuICB9XG5cbiAgdmFyIGlzQWxpZ25lZCA9ICFudW1Db2xzO1xuICByZXMuYm9keS5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICBmb3IgKHZhciBfaTMgPSAxOyBfaTMgPCByb3cubGVuZ3RoOyBfaTMgKz0gMikge1xuICAgICAgLy8gTW9kaWZ5IG9yZGdyb3VwIG5vZGUgd2l0aGluIHN0eWxpbmcgbm9kZVxuICAgICAgdmFyIHN0eWxpbmcgPSBhc3NlcnROb2RlVHlwZShyb3dbX2kzXSwgXCJzdHlsaW5nXCIpO1xuXG4gICAgICB2YXIgX29yZGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoc3R5bGluZy5ib2R5WzBdLCBcIm9yZGdyb3VwXCIpO1xuXG4gICAgICBfb3JkZ3JvdXAuYm9keS51bnNoaWZ0KGVtcHR5R3JvdXApO1xuICAgIH1cblxuICAgIGlmICghaXNBbGlnbmVkKSB7XG4gICAgICAvLyBDYXNlIDFcbiAgICAgIHZhciBjdXJNYXRocyA9IHJvdy5sZW5ndGggLyAyO1xuXG4gICAgICBpZiAobnVtTWF0aHMgPCBjdXJNYXRocykge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJUb28gbWFueSBtYXRoIGluIGEgcm93OiBcIiArIChcImV4cGVjdGVkIFwiICsgbnVtTWF0aHMgKyBcIiwgYnV0IGdvdCBcIiArIGN1ck1hdGhzKSwgcm93WzBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG51bUNvbHMgPCByb3cubGVuZ3RoKSB7XG4gICAgICAvLyBDYXNlIDJcbiAgICAgIG51bUNvbHMgPSByb3cubGVuZ3RoO1xuICAgIH1cbiAgfSk7IC8vIEFkanVzdGluZyBhbGlnbm1lbnQuXG4gIC8vIEluIGFsaWduZWQgbW9kZSwgd2UgYWRkIG9uZSBcXHFxdWFkIGJldHdlZW4gY29sdW1ucztcbiAgLy8gb3RoZXJ3aXNlIHdlIGFkZCBub3RoaW5nLlxuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG51bUNvbHM7ICsrX2k0KSB7XG4gICAgdmFyIGFsaWduID0gXCJyXCI7XG4gICAgdmFyIHByZWdhcCA9IDA7XG5cbiAgICBpZiAoX2k0ICUgMiA9PT0gMSkge1xuICAgICAgYWxpZ24gPSBcImxcIjtcbiAgICB9IGVsc2UgaWYgKF9pNCA+IDAgJiYgaXNBbGlnbmVkKSB7XG4gICAgICAvLyBcImFsaWduZWRcIiBtb2RlLlxuICAgICAgcHJlZ2FwID0gMTsgLy8gYWRkIG9uZSBcXHF1YWRcbiAgICB9XG5cbiAgICBjb2xzW19pNF0gPSB7XG4gICAgICB0eXBlOiBcImFsaWduXCIsXG4gICAgICBhbGlnbjogYWxpZ24sXG4gICAgICBwcmVnYXA6IHByZWdhcCxcbiAgICAgIHBvc3RnYXA6IDBcbiAgICB9O1xuICB9XG5cbiAgcmVzLmNvbFNlcGFyYXRpb25UeXBlID0gaXNBbGlnbmVkID8gXCJhbGlnblwiIDogXCJhbGlnbmF0XCI7XG4gIHJldHVybiByZXM7XG59OyAvLyBBcnJheXMgYXJlIHBhcnQgb2YgTGFUZVgsIGRlZmluZWQgaW4gbHR0YWIuZHR4IHNvIGl0cyBkb2N1bWVudGF0aW9uXG4vLyBpcyBwYXJ0IG9mIHRoZSBzb3VyY2UyZS5wZGYgZmlsZSBvZiBMYVRlWDJlIHNvdXJjZSBkb2N1bWVudGF0aW9uLlxuLy8ge2RhcnJheX0gaXMgYW4ge2FycmF5fSBlbnZpcm9ubWVudCB3aGVyZSBjZWxscyBhcmUgc2V0IGluIFxcZGlzcGxheXN0eWxlLFxuLy8gYXMgZGVmaW5lZCBpbiBuY2NtYXRoLnN0eS5cblxuXG5kZWZpbmVFbnZpcm9ubWVudCh7XG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgbmFtZXM6IFtcImFycmF5XCIsIFwiZGFycmF5XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgLy8gU2luY2Ugbm8gdHlwZXMgYXJlIHNwZWNpZmllZCBhYm92ZSwgdGhlIHR3byBwb3NzaWJpbGl0aWVzIGFyZVxuICAgIC8vIC0gVGhlIGFyZ3VtZW50IGlzIHdyYXBwZWQgaW4ge30gb3IgW10sIGluIHdoaWNoIGNhc2UgUGFyc2VyJ3NcbiAgICAvLyAgIHBhcnNlR3JvdXAoKSByZXR1cm5zIGFuIFwib3JkZ3JvdXBcIiB3cmFwcGluZyBzb21lIHN5bWJvbCBub2RlLlxuICAgIC8vIC0gVGhlIGFyZ3VtZW50IGlzIGEgYmFyZSBzeW1ib2wgbm9kZS5cbiAgICB2YXIgc3ltTm9kZSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUoYXJnc1swXSk7XG4gICAgdmFyIGNvbGFsaWduID0gc3ltTm9kZSA/IFthcmdzWzBdXSA6IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwib3JkZ3JvdXBcIikuYm9keTtcbiAgICB2YXIgY29scyA9IGNvbGFsaWduLm1hcChmdW5jdGlvbiAobmRlKSB7XG4gICAgICB2YXIgbm9kZSA9IGFzc2VydFN5bWJvbE5vZGVUeXBlKG5kZSk7XG4gICAgICB2YXIgY2EgPSBub2RlLnRleHQ7XG5cbiAgICAgIGlmIChcImxjclwiLmluZGV4T2YoY2EpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiYWxpZ25cIixcbiAgICAgICAgICBhbGlnbjogY2FcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoY2EgPT09IFwifFwiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJzZXBhcmF0b3JcIixcbiAgICAgICAgICBzZXBhcmF0b3I6IFwifFwiXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGNhID09PSBcIjpcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgICAgc2VwYXJhdG9yOiBcIjpcIlxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmtub3duIGNvbHVtbiBhbGlnbm1lbnQ6IFwiICsgY2EsIG5kZSk7XG4gICAgfSk7XG4gICAgdmFyIHJlcyA9IHtcbiAgICAgIGNvbHM6IGNvbHMsXG4gICAgICBoc2tpcEJlZm9yZUFuZEFmdGVyOiB0cnVlIC8vIFxcQHByZWFtYmxlIGluIGx0dGFiLmR0eFxuXG4gICAgfTtcbiAgICByZXR1cm4gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBkQ2VsbFN0eWxlKGNvbnRleHQuZW52TmFtZSkpO1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBUaGUgbWF0cml4IGVudmlyb25tZW50cyBvZiBhbXNtYXRoIGJ1aWxkcyBvbiB0aGUgYXJyYXkgZW52aXJvbm1lbnRcbi8vIG9mIExhVGVYLCB3aGljaCBpcyBkaXNjdXNzZWQgYWJvdmUuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wibWF0cml4XCIsIFwicG1hdHJpeFwiLCBcImJtYXRyaXhcIiwgXCJCbWF0cml4XCIsIFwidm1hdHJpeFwiLCBcIlZtYXRyaXhcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQpIHtcbiAgICB2YXIgZGVsaW1pdGVycyA9IHtcbiAgICAgIFwibWF0cml4XCI6IG51bGwsXG4gICAgICBcInBtYXRyaXhcIjogW1wiKFwiLCBcIilcIl0sXG4gICAgICBcImJtYXRyaXhcIjogW1wiW1wiLCBcIl1cIl0sXG4gICAgICBcIkJtYXRyaXhcIjogW1wiXFxcXHtcIiwgXCJcXFxcfVwiXSxcbiAgICAgIFwidm1hdHJpeFwiOiBbXCJ8XCIsIFwifFwiXSxcbiAgICAgIFwiVm1hdHJpeFwiOiBbXCJcXFxcVmVydFwiLCBcIlxcXFxWZXJ0XCJdXG4gICAgfVtjb250ZXh0LmVudk5hbWVdOyAvLyBcXGhza2lwIC1cXGFycmF5Y29sc2VwIGluIGFtc21hdGhcblxuICAgIHZhciBwYXlsb2FkID0ge1xuICAgICAgaHNraXBCZWZvcmVBbmRBZnRlcjogZmFsc2VcbiAgICB9O1xuICAgIHZhciByZXMgPSBwYXJzZUFycmF5KGNvbnRleHQucGFyc2VyLCBwYXlsb2FkLCBkQ2VsbFN0eWxlKGNvbnRleHQuZW52TmFtZSkpO1xuICAgIHJldHVybiBkZWxpbWl0ZXJzID8ge1xuICAgICAgdHlwZTogXCJsZWZ0cmlnaHRcIixcbiAgICAgIG1vZGU6IGNvbnRleHQubW9kZSxcbiAgICAgIGJvZHk6IFtyZXNdLFxuICAgICAgbGVmdDogZGVsaW1pdGVyc1swXSxcbiAgICAgIHJpZ2h0OiBkZWxpbWl0ZXJzWzFdLFxuICAgICAgcmlnaHRDb2xvcjogdW5kZWZpbmVkIC8vIFxccmlnaHQgdW5pbmZsdWVuY2VkIGJ5IFxcY29sb3IgaW4gYXJyYXlcblxuICAgIH0gOiByZXM7XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7XG5kZWZpbmVFbnZpcm9ubWVudCh7XG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgbmFtZXM6IFtcInNtYWxsbWF0cml4XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0KSB7XG4gICAgdmFyIHBheWxvYWQgPSB7XG4gICAgICBhcnJheXN0cmV0Y2g6IDAuNVxuICAgIH07XG4gICAgdmFyIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHBheWxvYWQsIFwic2NyaXB0XCIpO1xuICAgIHJlcy5jb2xTZXBhcmF0aW9uVHlwZSA9IFwic21hbGxcIjtcbiAgICByZXR1cm4gcmVzO1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pO1xuZGVmaW5lRW52aXJvbm1lbnQoe1xuICB0eXBlOiBcImFycmF5XCIsXG4gIG5hbWVzOiBbXCJzdWJhcnJheVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIC8vIFBhcnNpbmcgb2Yge3N1YmFycmF5fSBpcyBzaW1pbGFyIHRvIHthcnJheX1cbiAgICB2YXIgc3ltTm9kZSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUoYXJnc1swXSk7XG4gICAgdmFyIGNvbGFsaWduID0gc3ltTm9kZSA/IFthcmdzWzBdXSA6IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwib3JkZ3JvdXBcIikuYm9keTtcbiAgICB2YXIgY29scyA9IGNvbGFsaWduLm1hcChmdW5jdGlvbiAobmRlKSB7XG4gICAgICB2YXIgbm9kZSA9IGFzc2VydFN5bWJvbE5vZGVUeXBlKG5kZSk7XG4gICAgICB2YXIgY2EgPSBub2RlLnRleHQ7IC8vIHtzdWJhcnJheX0gb25seSByZWNvZ25pemVzIFwibFwiICYgXCJjXCJcblxuICAgICAgaWYgKFwibGNcIi5pbmRleE9mKGNhKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcImFsaWduXCIsXG4gICAgICAgICAgYWxpZ246IGNhXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVua25vd24gY29sdW1uIGFsaWdubWVudDogXCIgKyBjYSwgbmRlKTtcbiAgICB9KTtcblxuICAgIGlmIChjb2xzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIntzdWJhcnJheX0gY2FuIGNvbnRhaW4gb25seSBvbmUgY29sdW1uXCIpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB7XG4gICAgICBjb2xzOiBjb2xzLFxuICAgICAgaHNraXBCZWZvcmVBbmRBZnRlcjogZmFsc2UsXG4gICAgICBhcnJheXN0cmV0Y2g6IDAuNVxuICAgIH07XG4gICAgcmVzID0gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBcInNjcmlwdFwiKTtcblxuICAgIGlmIChyZXMuYm9keVswXS5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJ7c3ViYXJyYXl9IGNhbiBjb250YWluIG9ubHkgb25lIGNvbHVtblwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBBIGNhc2VzIGVudmlyb25tZW50IChpbiBhbXNtYXRoLnN0eSkgaXMgYWxtb3N0IGVxdWl2YWxlbnQgdG9cbi8vIFxcZGVmXFxhcnJheXN0cmV0Y2h7MS4yfSVcbi8vIFxcbGVmdFxce1xcYmVnaW57YXJyYXl9e0B7fWxAe1xccXVhZH1sQHt9fSDigKYgXFxlbmR7YXJyYXl9XFxyaWdodC5cbi8vIHtkY2FzZXN9IGlzIGEge2Nhc2VzfSBlbnZpcm9ubWVudCB3aGVyZSBjZWxscyBhcmUgc2V0IGluIFxcZGlzcGxheXN0eWxlLFxuLy8gYXMgZGVmaW5lZCBpbiBtYXRodG9vbHMuc3R5LlxuXG5kZWZpbmVFbnZpcm9ubWVudCh7XG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgbmFtZXM6IFtcImNhc2VzXCIsIFwiZGNhc2VzXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0KSB7XG4gICAgdmFyIHBheWxvYWQgPSB7XG4gICAgICBhcnJheXN0cmV0Y2g6IDEuMixcbiAgICAgIGNvbHM6IFt7XG4gICAgICAgIHR5cGU6IFwiYWxpZ25cIixcbiAgICAgICAgYWxpZ246IFwibFwiLFxuICAgICAgICBwcmVnYXA6IDAsXG4gICAgICAgIC8vIFRPRE8oa2V2aW5iKSBnZXQgdGhlIGN1cnJlbnQgc3R5bGUuXG4gICAgICAgIC8vIEZvciBub3cgd2UgdXNlIHRoZSBtZXRyaWNzIGZvciBURVhUIHN0eWxlIHdoaWNoIGlzIHdoYXQgd2Ugd2VyZVxuICAgICAgICAvLyBkb2luZyBiZWZvcmUuICBCZWZvcmUgYXR0ZW1wdGluZyB0byBnZXQgdGhlIGN1cnJlbnQgc3R5bGUgd2VcbiAgICAgICAgLy8gc2hvdWxkIGxvb2sgYXQgVGVYJ3MgYmVoYXZpb3IgZXNwZWNpYWxseSBmb3IgXFxvdmVyIGFuZCBtYXRyaWNlcy5cbiAgICAgICAgcG9zdGdhcDogMS4wXG4gICAgICAgIC8qIDFlbSBxdWFkICovXG5cbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICBhbGlnbjogXCJsXCIsXG4gICAgICAgIHByZWdhcDogMCxcbiAgICAgICAgcG9zdGdhcDogMFxuICAgICAgfV1cbiAgICB9O1xuICAgIHZhciByZXMgPSBwYXJzZUFycmF5KGNvbnRleHQucGFyc2VyLCBwYXlsb2FkLCBkQ2VsbFN0eWxlKGNvbnRleHQuZW52TmFtZSkpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImxlZnRyaWdodFwiLFxuICAgICAgbW9kZTogY29udGV4dC5tb2RlLFxuICAgICAgYm9keTogW3Jlc10sXG4gICAgICBsZWZ0OiBcIlxcXFx7XCIsXG4gICAgICByaWdodDogXCIuXCIsXG4gICAgICByaWdodENvbG9yOiB1bmRlZmluZWRcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBBbiBhbGlnbmVkIGVudmlyb25tZW50IGlzIGxpa2UgdGhlIGFsaWduKiBlbnZpcm9ubWVudFxuLy8gZXhjZXB0IGl0IG9wZXJhdGVzIHdpdGhpbiBtYXRoIG1vZGUuXG4vLyBOb3RlIHRoYXQgd2UgYXNzdW1lIFxcbm9tYWxsaW5lc2tpcGxpbWl0IHRvIGJlIHplcm8sXG4vLyBzbyB0aGF0IFxcc3RydXRAIGlzIHRoZSBzYW1lIGFzIFxcc3RydXQuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiYWxpZ25lZFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwXG4gIH0sXG4gIGhhbmRsZXI6IGFycmF5X2FsaWduZWRIYW5kbGVyLFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBBIGdhdGhlcmVkIGVudmlyb25tZW50IGlzIGxpa2UgYW4gYXJyYXkgZW52aXJvbm1lbnQgd2l0aCBvbmUgY2VudGVyZWRcbi8vIGNvbHVtbiwgYnV0IHdoZXJlIHJvd3MgYXJlIGNvbnNpZGVyZWQgbGluZXMgc28gZ2V0IFxcam90IGxpbmUgc3BhY2luZ1xuLy8gYW5kIGNvbnRlbnRzIGFyZSBzZXQgaW4gXFxkaXNwbGF5c3R5bGUuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiZ2F0aGVyZWRcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQpIHtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgY29sczogW3tcbiAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICBhbGlnbjogXCJjXCJcbiAgICAgIH1dLFxuICAgICAgYWRkSm90OiB0cnVlXG4gICAgfTtcbiAgICByZXR1cm4gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBcImRpc3BsYXlcIik7XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7IC8vIGFsaWduYXQgZW52aXJvbm1lbnQgaXMgbGlrZSBhbiBhbGlnbiBlbnZpcm9ubWVudCwgYnV0IG9uZSBtdXN0IGV4cGxpY2l0bHlcbi8vIHNwZWNpZnkgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyBpbiBlYWNoIHJvdywgYW5kIGNhbiBhZGp1c3Qgc3BhY2luZyBiZXR3ZWVuXG4vLyBlYWNoIGNvbHVtbnMuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiYWxpZ25lZGF0XCJdLFxuICAvLyBPbmUgZm9yIG51bWJlcmVkIGFuZCBmb3IgdW5udW1iZXJlZDtcbiAgLy8gYnV0LCBLYVRlWCBkb2Vzbid0IHN1cHBvcnRzIG1hdGggbnVtYmVyaW5nIHlldCxcbiAgLy8gdGhleSBtYWtlIG5vIGRpZmZlcmVuY2UgZm9yIG5vdy5cbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGFycmF5X2FsaWduZWRIYW5kbGVyLFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBDYXRjaCBcXGhsaW5lIG91dHNpZGUgYXJyYXkgZW52aXJvbm1lbnRcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInRleHRcIixcbiAgLy8gRG9lc24ndCBtYXR0ZXIgd2hhdCB0aGlzIGlzLlxuICBuYW1lczogW1wiXFxcXGhsaW5lXCIsIFwiXFxcXGhkYXNobGluZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgYWxsb3dlZEluTWF0aDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoY29udGV4dC5mdW5jTmFtZSArIFwiIHZhbGlkIG9ubHkgd2l0aGluIGFycmF5IGVudmlyb25tZW50XCIpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Vudmlyb25tZW50cy5qc1xuXG52YXIgZW52aXJvbm1lbnRzID0gX2Vudmlyb25tZW50cztcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19lbnZpcm9ubWVudHMgPSAoZW52aXJvbm1lbnRzKTsgLy8gQWxsIGVudmlyb25tZW50IGRlZmluaXRpb25zIHNob3VsZCBiZSBpbXBvcnRlZCBiZWxvd1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9lbnZpcm9ubWVudC5qc1xuXG5cblxuIC8vIEVudmlyb25tZW50IGRlbGltaXRlcnMuIEhUTUwvTWF0aE1MIHJlbmRlcmluZyBpcyBkZWZpbmVkIGluIHRoZSBjb3JyZXNwb25kaW5nXG4vLyBkZWZpbmVFbnZpcm9ubWVudCBkZWZpbml0aW9ucy5cbi8vICRGbG93Rml4TWUsIFwiZW52aXJvbm1lbnRcIiBoYW5kbGVyIHJldHVybnMgYW4gZW52aXJvbm1lbnQgUGFyc2VOb2RlXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJlbnZpcm9ubWVudFwiLFxuICBuYW1lczogW1wiXFxcXGJlZ2luXCIsIFwiXFxcXGVuZFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIGFyZ1R5cGVzOiBbXCJ0ZXh0XCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBuYW1lR3JvdXAgPSBhcmdzWzBdO1xuXG4gICAgaWYgKG5hbWVHcm91cC50eXBlICE9PSBcIm9yZGdyb3VwXCIpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgZW52aXJvbm1lbnQgbmFtZVwiLCBuYW1lR3JvdXApO1xuICAgIH1cblxuICAgIHZhciBlbnZOYW1lID0gXCJcIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZUdyb3VwLmJvZHkubGVuZ3RoOyArK2kpIHtcbiAgICAgIGVudk5hbWUgKz0gYXNzZXJ0Tm9kZVR5cGUobmFtZUdyb3VwLmJvZHlbaV0sIFwidGV4dG9yZFwiKS50ZXh0O1xuICAgIH1cblxuICAgIGlmIChmdW5jTmFtZSA9PT0gXCJcXFxcYmVnaW5cIikge1xuICAgICAgLy8gYmVnaW4uLi5lbmQgaXMgc2ltaWxhciB0byBsZWZ0Li4ucmlnaHRcbiAgICAgIGlmICghc3JjX2Vudmlyb25tZW50cy5oYXNPd25Qcm9wZXJ0eShlbnZOYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJObyBzdWNoIGVudmlyb25tZW50OiBcIiArIGVudk5hbWUsIG5hbWVHcm91cCk7XG4gICAgICB9IC8vIEJ1aWxkIHRoZSBlbnZpcm9ubWVudCBvYmplY3QuIEFyZ3VtZW50cyBhbmQgb3RoZXIgaW5mb3JtYXRpb24gd2lsbFxuICAgICAgLy8gYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGJlZ2luIGFuZCBlbmQgbWV0aG9kcyB1c2luZyBwcm9wZXJ0aWVzLlxuXG5cbiAgICAgIHZhciBlbnYgPSBzcmNfZW52aXJvbm1lbnRzW2Vudk5hbWVdO1xuXG4gICAgICB2YXIgX3BhcnNlciRwYXJzZUFyZ3VtZW50ID0gcGFyc2VyLnBhcnNlQXJndW1lbnRzKFwiXFxcXGJlZ2lue1wiICsgZW52TmFtZSArIFwifVwiLCBlbnYpLFxuICAgICAgICAgIF9hcmdzID0gX3BhcnNlciRwYXJzZUFyZ3VtZW50LmFyZ3MsXG4gICAgICAgICAgb3B0QXJncyA9IF9wYXJzZXIkcGFyc2VBcmd1bWVudC5vcHRBcmdzO1xuXG4gICAgICB2YXIgY29udGV4dCA9IHtcbiAgICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICAgIGVudk5hbWU6IGVudk5hbWUsXG4gICAgICAgIHBhcnNlcjogcGFyc2VyXG4gICAgICB9O1xuICAgICAgdmFyIHJlc3VsdCA9IGVudi5oYW5kbGVyKGNvbnRleHQsIF9hcmdzLCBvcHRBcmdzKTtcbiAgICAgIHBhcnNlci5leHBlY3QoXCJcXFxcZW5kXCIsIGZhbHNlKTtcbiAgICAgIHZhciBlbmROYW1lVG9rZW4gPSBwYXJzZXIubmV4dFRva2VuO1xuICAgICAgdmFyIGVuZCA9IGFzc2VydE5vZGVUeXBlKHBhcnNlci5wYXJzZUZ1bmN0aW9uKCksIFwiZW52aXJvbm1lbnRcIik7XG5cbiAgICAgIGlmIChlbmQubmFtZSAhPT0gZW52TmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJNaXNtYXRjaDogXFxcXGJlZ2lue1wiICsgZW52TmFtZSArIFwifSBtYXRjaGVkIGJ5IFxcXFxlbmR7XCIgKyBlbmQubmFtZSArIFwifVwiLCBlbmROYW1lVG9rZW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVudmlyb25tZW50XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG5hbWU6IGVudk5hbWUsXG4gICAgICBuYW1lR3JvdXA6IG5hbWVHcm91cFxuICAgIH07XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL21jbGFzcy5qc1xuXG5cblxuXG5cblxudmFyIG1jbGFzc19tYWtlU3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuO1xuXG5mdW5jdGlvbiBtY2xhc3NfaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnRzID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlKTtcbiAgcmV0dXJuIG1jbGFzc19tYWtlU3BhbihbZ3JvdXAubWNsYXNzXSwgZWxlbWVudHMsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBtY2xhc3NfbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgbm9kZTtcbiAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMpO1xuXG4gIGlmIChncm91cC5tY2xhc3MgPT09IFwibWlubmVyXCIpIHtcbiAgICByZXR1cm4gbWF0aE1MVHJlZS5uZXdEb2N1bWVudEZyYWdtZW50KGlubmVyKTtcbiAgfSBlbHNlIGlmIChncm91cC5tY2xhc3MgPT09IFwibW9yZFwiKSB7XG4gICAgaWYgKGdyb3VwLmlzQ2hhcmFjdGVyQm94KSB7XG4gICAgICBub2RlID0gaW5uZXJbMF07XG4gICAgICBub2RlLnR5cGUgPSBcIm1pXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1pXCIsIGlubmVyKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGdyb3VwLmlzQ2hhcmFjdGVyQm94KSB7XG4gICAgICBub2RlID0gaW5uZXJbMF07XG4gICAgICBub2RlLnR5cGUgPSBcIm1vXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIGlubmVyKTtcbiAgICB9IC8vIFNldCBzcGFjaW5nIGJhc2VkIG9uIHdoYXQgaXMgdGhlIG1vc3QgbGlrZWx5IGFkamFjZW50IGF0b20gdHlwZS5cbiAgICAvLyBTZWUgVGVYYm9vayBwMTcwLlxuXG5cbiAgICBpZiAoZ3JvdXAubWNsYXNzID09PSBcIm1iaW5cIikge1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzLmxzcGFjZSA9IFwiMC4yMmVtXCI7IC8vIG1lZGl1bSBzcGFjZVxuXG4gICAgICBub2RlLmF0dHJpYnV0ZXMucnNwYWNlID0gXCIwLjIyZW1cIjtcbiAgICB9IGVsc2UgaWYgKGdyb3VwLm1jbGFzcyA9PT0gXCJtcHVuY3RcIikge1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzLmxzcGFjZSA9IFwiMGVtXCI7XG4gICAgICBub2RlLmF0dHJpYnV0ZXMucnNwYWNlID0gXCIwLjE3ZW1cIjsgLy8gdGhpbnNwYWNlXG4gICAgfSBlbHNlIGlmIChncm91cC5tY2xhc3MgPT09IFwibW9wZW5cIiB8fCBncm91cC5tY2xhc3MgPT09IFwibWNsb3NlXCIpIHtcbiAgICAgIG5vZGUuYXR0cmlidXRlcy5sc3BhY2UgPSBcIjBlbVwiO1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzLnJzcGFjZSA9IFwiMGVtXCI7XG4gICAgfSAvLyBNYXRoTUwgPG1vPiBkZWZhdWx0IHNwYWNlIGlzIDUvMTggZW0sIHNvIDxtcmVsPiBuZWVkcyBubyBhY3Rpb24uXG4gICAgLy8gUmVmOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9NYXRoTUwvRWxlbWVudC9tb1xuXG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0gLy8gTWF0aCBjbGFzcyBjb21tYW5kcyBleGNlcHQgXFxtYXRob3BcblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwibWNsYXNzXCIsXG4gIG5hbWVzOiBbXCJcXFxcbWF0aG9yZFwiLCBcIlxcXFxtYXRoYmluXCIsIFwiXFxcXG1hdGhyZWxcIiwgXCJcXFxcbWF0aG9wZW5cIiwgXCJcXFxcbWF0aGNsb3NlXCIsIFwiXFxcXG1hdGhwdW5jdFwiLCBcIlxcXFxtYXRoaW5uZXJcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibWNsYXNzXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG1jbGFzczogXCJtXCIgKyBmdW5jTmFtZS5zdWJzdHIoNSksXG4gICAgICAvLyBUT0RPKGtldmluYik6IGRvbid0IHByZWZpeCB3aXRoICdtJ1xuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSksXG4gICAgICBpc0NoYXJhY3RlckJveDogdXRpbHMuaXNDaGFyYWN0ZXJCb3goYm9keSlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogbWNsYXNzX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBtY2xhc3NfbWF0aG1sQnVpbGRlclxufSk7XG52YXIgYmlucmVsQ2xhc3MgPSBmdW5jdGlvbiBiaW5yZWxDbGFzcyhhcmcpIHtcbiAgLy8gXFxiaW5yZWxAIHNwYWNpbmcgdmFyaWVzIHdpdGggKGJpbnxyZWx8b3JkKSBvZiB0aGUgYXRvbSBpbiB0aGUgYXJndW1lbnQuXG4gIC8vIChieSByZW5kZXJpbmcgc2VwYXJhdGVseSBhbmQgd2l0aCB7fXMgYmVmb3JlIGFuZCBhZnRlciwgYW5kIG1lYXN1cmluZ1xuICAvLyB0aGUgY2hhbmdlIGluIHNwYWNpbmcpLiAgV2UnbGwgZG8gcm91Z2hseSB0aGUgc2FtZSBieSBkZXRlY3RpbmcgdGhlXG4gIC8vIGF0b20gdHlwZSBkaXJlY3RseS5cbiAgdmFyIGF0b20gPSBhcmcudHlwZSA9PT0gXCJvcmRncm91cFwiICYmIGFyZy5ib2R5Lmxlbmd0aCA/IGFyZy5ib2R5WzBdIDogYXJnO1xuXG4gIGlmIChhdG9tLnR5cGUgPT09IFwiYXRvbVwiICYmIChhdG9tLmZhbWlseSA9PT0gXCJiaW5cIiB8fCBhdG9tLmZhbWlseSA9PT0gXCJyZWxcIikpIHtcbiAgICByZXR1cm4gXCJtXCIgKyBhdG9tLmZhbWlseTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJtb3JkXCI7XG4gIH1cbn07IC8vIFxcQGJpbnJlbHt4fXt5fSByZW5kZXJzIGxpa2UgeSBidXQgYXMgbWJpbi9tcmVsL21vcmQgaWYgeCBpcyBtYmluL21yZWwvbW9yZC5cbi8vIFRoaXMgaXMgZXF1aXZhbGVudCB0byBcXGJpbnJlbEB7eH1cXGJpbnJlbEBAe3l9IGluIEFNU1RlWC5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1jbGFzc1wiLFxuICBuYW1lczogW1wiXFxcXEBiaW5yZWxcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMlxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJtY2xhc3NcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbWNsYXNzOiBiaW5yZWxDbGFzcyhhcmdzWzBdKSxcbiAgICAgIGJvZHk6IFthcmdzWzFdXSxcbiAgICAgIGlzQ2hhcmFjdGVyQm94OiB1dGlscy5pc0NoYXJhY3RlckJveChhcmdzWzFdKVxuICAgIH07XG4gIH1cbn0pOyAvLyBCdWlsZCBhIHJlbGF0aW9uIG9yIHN0YWNrZWQgb3AgYnkgcGxhY2luZyBvbmUgc3ltYm9sIG9uIHRvcCBvZiBhbm90aGVyXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJtY2xhc3NcIixcbiAgbmFtZXM6IFtcIlxcXFxzdGFja3JlbFwiLCBcIlxcXFxvdmVyc2V0XCIsIFwiXFxcXHVuZGVyc2V0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDJcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMywgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMy5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjMuZnVuY05hbWU7XG4gICAgdmFyIGJhc2VBcmcgPSBhcmdzWzFdO1xuICAgIHZhciBzaGlmdGVkQXJnID0gYXJnc1swXTtcbiAgICB2YXIgbWNsYXNzO1xuXG4gICAgaWYgKGZ1bmNOYW1lICE9PSBcIlxcXFxzdGFja3JlbFwiKSB7XG4gICAgICAvLyBMYVRlWCBhcHBsaWVzIFxcYmlucmVsIHNwYWNpbmcgdG8gXFxvdmVyc2V0IGFuZCBcXHVuZGVyc2V0LlxuICAgICAgbWNsYXNzID0gYmlucmVsQ2xhc3MoYmFzZUFyZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1jbGFzcyA9IFwibXJlbFwiOyAvLyBmb3IgXFxzdGFja3JlbFxuICAgIH1cblxuICAgIHZhciBiYXNlT3AgPSB7XG4gICAgICB0eXBlOiBcIm9wXCIsXG4gICAgICBtb2RlOiBiYXNlQXJnLm1vZGUsXG4gICAgICBsaW1pdHM6IHRydWUsXG4gICAgICBhbHdheXNIYW5kbGVTdXBTdWI6IHRydWUsXG4gICAgICBwYXJlbnRJc1N1cFN1YjogZmFsc2UsXG4gICAgICBzeW1ib2w6IGZhbHNlLFxuICAgICAgc3VwcHJlc3NCYXNlU2hpZnQ6IGZ1bmNOYW1lICE9PSBcIlxcXFxzdGFja3JlbFwiLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYmFzZUFyZylcbiAgICB9O1xuICAgIHZhciBzdXBzdWIgPSB7XG4gICAgICB0eXBlOiBcInN1cHN1YlwiLFxuICAgICAgbW9kZTogc2hpZnRlZEFyZy5tb2RlLFxuICAgICAgYmFzZTogYmFzZU9wLFxuICAgICAgc3VwOiBmdW5jTmFtZSA9PT0gXCJcXFxcdW5kZXJzZXRcIiA/IG51bGwgOiBzaGlmdGVkQXJnLFxuICAgICAgc3ViOiBmdW5jTmFtZSA9PT0gXCJcXFxcdW5kZXJzZXRcIiA/IHNoaWZ0ZWRBcmcgOiBudWxsXG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJtY2xhc3NcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbWNsYXNzOiBtY2xhc3MsXG4gICAgICBib2R5OiBbc3Vwc3ViXSxcbiAgICAgIGlzQ2hhcmFjdGVyQm94OiB1dGlscy5pc0NoYXJhY3RlckJveChzdXBzdWIpXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IG1jbGFzc19odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogbWNsYXNzX21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2ZvbnQuanNcbi8vIFRPRE8oa2V2aW5iKTogaW1wbGVtZW50IFxcXFxzbCBhbmQgXFxcXHNjXG5cblxuXG5cblxuXG52YXIgZm9udF9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBmb250ID0gZ3JvdXAuZm9udDtcbiAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLndpdGhGb250KGZvbnQpO1xuICByZXR1cm4gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgbmV3T3B0aW9ucyk7XG59O1xuXG52YXIgZm9udF9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgZm9udCA9IGdyb3VwLmZvbnQ7XG4gIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy53aXRoRm9udChmb250KTtcbiAgcmV0dXJuIGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgbmV3T3B0aW9ucyk7XG59O1xuXG52YXIgZm9udEFsaWFzZXMgPSB7XG4gIFwiXFxcXEJiYlwiOiBcIlxcXFxtYXRoYmJcIixcbiAgXCJcXFxcYm9sZFwiOiBcIlxcXFxtYXRoYmZcIixcbiAgXCJcXFxcZnJha1wiOiBcIlxcXFxtYXRoZnJha1wiLFxuICBcIlxcXFxibVwiOiBcIlxcXFxib2xkc3ltYm9sXCJcbn07XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZm9udFwiLFxuICBuYW1lczogWy8vIHN0eWxlcywgZXhjZXB0IFxcYm9sZHN5bWJvbCBkZWZpbmVkIGJlbG93XG4gIFwiXFxcXG1hdGhybVwiLCBcIlxcXFxtYXRoaXRcIiwgXCJcXFxcbWF0aGJmXCIsIFwiXFxcXG1hdGhub3JtYWxcIiwgLy8gZmFtaWxpZXNcbiAgXCJcXFxcbWF0aGJiXCIsIFwiXFxcXG1hdGhjYWxcIiwgXCJcXFxcbWF0aGZyYWtcIiwgXCJcXFxcbWF0aHNjclwiLCBcIlxcXFxtYXRoc2ZcIiwgXCJcXFxcbWF0aHR0XCIsIC8vIGFsaWFzZXMsIGV4Y2VwdCBcXGJtIGRlZmluZWQgYmVsb3dcbiAgXCJcXFxcQmJiXCIsIFwiXFxcXGJvbGRcIiwgXCJcXFxcZnJha1wiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIGdyZWVkaW5lc3M6IDJcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHZhciBmdW5jID0gZnVuY05hbWU7XG5cbiAgICBpZiAoZnVuYyBpbiBmb250QWxpYXNlcykge1xuICAgICAgZnVuYyA9IGZvbnRBbGlhc2VzW2Z1bmNdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImZvbnRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZm9udDogZnVuYy5zbGljZSgxKSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZm9udF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogZm9udF9tYXRobWxCdWlsZGVyXG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJtY2xhc3NcIixcbiAgbmFtZXM6IFtcIlxcXFxib2xkc3ltYm9sXCIsIFwiXFxcXGJtXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgZ3JlZWRpbmVzczogMlxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgdmFyIGlzQ2hhcmFjdGVyQm94ID0gdXRpbHMuaXNDaGFyYWN0ZXJCb3goYm9keSk7IC8vIGFtc2JzeS5zdHkncyBcXGJvbGRzeW1ib2wgdXNlcyBcXGJpbnJlbCBzcGFjaW5nIHRvIGluaGVyaXQgdGhlXG4gICAgLy8gYXJndW1lbnQncyBiaW58cmVsfG9yZCBzdGF0dXNcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm1jbGFzc1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBtY2xhc3M6IGJpbnJlbENsYXNzKGJvZHkpLFxuICAgICAgYm9keTogW3tcbiAgICAgICAgdHlwZTogXCJmb250XCIsXG4gICAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgICBmb250OiBcImJvbGRzeW1ib2xcIixcbiAgICAgICAgYm9keTogYm9keVxuICAgICAgfV0sXG4gICAgICBpc0NoYXJhY3RlckJveDogaXNDaGFyYWN0ZXJCb3hcbiAgICB9O1xuICB9XG59KTsgLy8gT2xkIGZvbnQgY2hhbmdpbmcgZnVuY3Rpb25zXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJmb250XCIsXG4gIG5hbWVzOiBbXCJcXFxccm1cIiwgXCJcXFxcc2ZcIiwgXCJcXFxcdHRcIiwgXCJcXFxcYmZcIiwgXCJcXFxcaXRcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjMsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjMucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYzLmZ1bmNOYW1lLFxuICAgICAgICBicmVha09uVG9rZW5UZXh0ID0gX3JlZjMuYnJlYWtPblRva2VuVGV4dDtcbiAgICB2YXIgbW9kZSA9IHBhcnNlci5tb2RlO1xuICAgIHZhciBib2R5ID0gcGFyc2VyLnBhcnNlRXhwcmVzc2lvbih0cnVlLCBicmVha09uVG9rZW5UZXh0KTtcbiAgICB2YXIgc3R5bGUgPSBcIm1hdGhcIiArIGZ1bmNOYW1lLnNsaWNlKDEpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImZvbnRcIixcbiAgICAgIG1vZGU6IG1vZGUsXG4gICAgICBmb250OiBzdHlsZSxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgdHlwZTogXCJvcmRncm91cFwiLFxuICAgICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgICAgYm9keTogYm9keVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmb250X2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBmb250X21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2dlbmZyYWMuanNcblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgZ2VuZnJhY19hZGp1c3RTdHlsZSA9IGZ1bmN0aW9uIGFkanVzdFN0eWxlKHNpemUsIG9yaWdpbmFsU3R5bGUpIHtcbiAgLy8gRmlndXJlIG91dCB3aGF0IHN0eWxlIHRoaXMgZnJhY3Rpb24gc2hvdWxkIGJlIGluIGJhc2VkIG9uIHRoZVxuICAvLyBmdW5jdGlvbiB1c2VkXG4gIHZhciBzdHlsZSA9IG9yaWdpbmFsU3R5bGU7XG5cbiAgaWYgKHNpemUgPT09IFwiZGlzcGxheVwiKSB7XG4gICAgLy8gR2V0IGRpc3BsYXkgc3R5bGUgYXMgYSBkZWZhdWx0LlxuICAgIC8vIElmIGluY29taW5nIHN0eWxlIGlzIHN1Yi9zdXAsIHVzZSBzdHlsZS50ZXh0KCkgdG8gZ2V0IGNvcnJlY3Qgc2l6ZS5cbiAgICBzdHlsZSA9IHN0eWxlLmlkID49IHNyY19TdHlsZS5TQ1JJUFQuaWQgPyBzdHlsZS50ZXh0KCkgOiBzcmNfU3R5bGUuRElTUExBWTtcbiAgfSBlbHNlIGlmIChzaXplID09PSBcInRleHRcIiAmJiBzdHlsZS5zaXplID09PSBzcmNfU3R5bGUuRElTUExBWS5zaXplKSB7XG4gICAgLy8gV2UncmUgaW4gYSBcXHRmcmFjIGJ1dCBpbmNvbWluZyBzdHlsZSBpcyBkaXNwbGF5c3R5bGUsIHNvOlxuICAgIHN0eWxlID0gc3JjX1N0eWxlLlRFWFQ7XG4gIH0gZWxzZSBpZiAoc2l6ZSA9PT0gXCJzY3JpcHRcIikge1xuICAgIHN0eWxlID0gc3JjX1N0eWxlLlNDUklQVDtcbiAgfSBlbHNlIGlmIChzaXplID09PSBcInNjcmlwdHNjcmlwdFwiKSB7XG4gICAgc3R5bGUgPSBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufTtcblxudmFyIGdlbmZyYWNfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAvLyBGcmFjdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgb24gcGFnZXMgNDQ0LTQ0NSwgcnVsZXMgMTUoYS1lKS5cbiAgdmFyIHN0eWxlID0gZ2VuZnJhY19hZGp1c3RTdHlsZShncm91cC5zaXplLCBvcHRpb25zLnN0eWxlKTtcbiAgdmFyIG5zdHlsZSA9IHN0eWxlLmZyYWNOdW0oKTtcbiAgdmFyIGRzdHlsZSA9IHN0eWxlLmZyYWNEZW4oKTtcbiAgdmFyIG5ld09wdGlvbnM7XG4gIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG5zdHlsZSk7XG4gIHZhciBudW1lcm0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5udW1lciwgbmV3T3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgaWYgKGdyb3VwLmNvbnRpbnVlZCkge1xuICAgIC8vIFxcY2ZyYWMgaW5zZXJ0cyBhIFxcc3RydXQgaW50byB0aGUgbnVtZXJhdG9yLlxuICAgIC8vIEdldCBcXHN0cnV0IGRpbWVuc2lvbnMgZnJvbSBUZVhib29rIHBhZ2UgMzUzLlxuICAgIHZhciBoU3RydXQgPSA4LjUgLyBvcHRpb25zLmZvbnRNZXRyaWNzKCkucHRQZXJFbTtcbiAgICB2YXIgZFN0cnV0ID0gMy41IC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG4gICAgbnVtZXJtLmhlaWdodCA9IG51bWVybS5oZWlnaHQgPCBoU3RydXQgPyBoU3RydXQgOiBudW1lcm0uaGVpZ2h0O1xuICAgIG51bWVybS5kZXB0aCA9IG51bWVybS5kZXB0aCA8IGRTdHJ1dCA/IGRTdHJ1dCA6IG51bWVybS5kZXB0aDtcbiAgfVxuXG4gIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKGRzdHlsZSk7XG4gIHZhciBkZW5vbW0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5kZW5vbSwgbmV3T3B0aW9ucywgb3B0aW9ucyk7XG4gIHZhciBydWxlO1xuICB2YXIgcnVsZVdpZHRoO1xuICB2YXIgcnVsZVNwYWNpbmc7XG5cbiAgaWYgKGdyb3VwLmhhc0JhckxpbmUpIHtcbiAgICBpZiAoZ3JvdXAuYmFyU2l6ZSkge1xuICAgICAgcnVsZVdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5iYXJTaXplLCBvcHRpb25zKTtcbiAgICAgIHJ1bGUgPSBidWlsZENvbW1vbi5tYWtlTGluZVNwYW4oXCJmcmFjLWxpbmVcIiwgb3B0aW9ucywgcnVsZVdpZHRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcnVsZSA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcImZyYWMtbGluZVwiLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBydWxlV2lkdGggPSBydWxlLmhlaWdodDtcbiAgICBydWxlU3BhY2luZyA9IHJ1bGUuaGVpZ2h0O1xuICB9IGVsc2Uge1xuICAgIHJ1bGUgPSBudWxsO1xuICAgIHJ1bGVXaWR0aCA9IDA7XG4gICAgcnVsZVNwYWNpbmcgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVmYXVsdFJ1bGVUaGlja25lc3M7XG4gIH0gLy8gUnVsZSAxNWJcblxuXG4gIHZhciBudW1TaGlmdDtcbiAgdmFyIGNsZWFyYW5jZTtcbiAgdmFyIGRlbm9tU2hpZnQ7XG5cbiAgaWYgKHN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUgfHwgZ3JvdXAuc2l6ZSA9PT0gXCJkaXNwbGF5XCIpIHtcbiAgICBudW1TaGlmdCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5udW0xO1xuXG4gICAgaWYgKHJ1bGVXaWR0aCA+IDApIHtcbiAgICAgIGNsZWFyYW5jZSA9IDMgKiBydWxlU3BhY2luZztcbiAgICB9IGVsc2Uge1xuICAgICAgY2xlYXJhbmNlID0gNyAqIHJ1bGVTcGFjaW5nO1xuICAgIH1cblxuICAgIGRlbm9tU2hpZnQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVub20xO1xuICB9IGVsc2Uge1xuICAgIGlmIChydWxlV2lkdGggPiAwKSB7XG4gICAgICBudW1TaGlmdCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5udW0yO1xuICAgICAgY2xlYXJhbmNlID0gcnVsZVNwYWNpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG51bVNoaWZ0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLm51bTM7XG4gICAgICBjbGVhcmFuY2UgPSAzICogcnVsZVNwYWNpbmc7XG4gICAgfVxuXG4gICAgZGVub21TaGlmdCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZW5vbTI7XG4gIH1cblxuICB2YXIgZnJhYztcblxuICBpZiAoIXJ1bGUpIHtcbiAgICAvLyBSdWxlIDE1Y1xuICAgIHZhciBjYW5kaWRhdGVDbGVhcmFuY2UgPSBudW1TaGlmdCAtIG51bWVybS5kZXB0aCAtIChkZW5vbW0uaGVpZ2h0IC0gZGVub21TaGlmdCk7XG5cbiAgICBpZiAoY2FuZGlkYXRlQ2xlYXJhbmNlIDwgY2xlYXJhbmNlKSB7XG4gICAgICBudW1TaGlmdCArPSAwLjUgKiAoY2xlYXJhbmNlIC0gY2FuZGlkYXRlQ2xlYXJhbmNlKTtcbiAgICAgIGRlbm9tU2hpZnQgKz0gMC41ICogKGNsZWFyYW5jZSAtIGNhbmRpZGF0ZUNsZWFyYW5jZSk7XG4gICAgfVxuXG4gICAgZnJhYyA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGRlbm9tbSxcbiAgICAgICAgc2hpZnQ6IGRlbm9tU2hpZnRcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IG51bWVybSxcbiAgICAgICAgc2hpZnQ6IC1udW1TaGlmdFxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBSdWxlIDE1ZFxuICAgIHZhciBheGlzSGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQ7XG5cbiAgICBpZiAobnVtU2hpZnQgLSBudW1lcm0uZGVwdGggLSAoYXhpc0hlaWdodCArIDAuNSAqIHJ1bGVXaWR0aCkgPCBjbGVhcmFuY2UpIHtcbiAgICAgIG51bVNoaWZ0ICs9IGNsZWFyYW5jZSAtIChudW1TaGlmdCAtIG51bWVybS5kZXB0aCAtIChheGlzSGVpZ2h0ICsgMC41ICogcnVsZVdpZHRoKSk7XG4gICAgfVxuXG4gICAgaWYgKGF4aXNIZWlnaHQgLSAwLjUgKiBydWxlV2lkdGggLSAoZGVub21tLmhlaWdodCAtIGRlbm9tU2hpZnQpIDwgY2xlYXJhbmNlKSB7XG4gICAgICBkZW5vbVNoaWZ0ICs9IGNsZWFyYW5jZSAtIChheGlzSGVpZ2h0IC0gMC41ICogcnVsZVdpZHRoIC0gKGRlbm9tbS5oZWlnaHQgLSBkZW5vbVNoaWZ0KSk7XG4gICAgfVxuXG4gICAgdmFyIG1pZFNoaWZ0ID0gLShheGlzSGVpZ2h0IC0gMC41ICogcnVsZVdpZHRoKTtcbiAgICBmcmFjID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogZGVub21tLFxuICAgICAgICBzaGlmdDogZGVub21TaGlmdFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogcnVsZSxcbiAgICAgICAgc2hpZnQ6IG1pZFNoaWZ0XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBudW1lcm0sXG4gICAgICAgIHNoaWZ0OiAtbnVtU2hpZnRcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gLy8gU2luY2Ugd2UgbWFudWFsbHkgY2hhbmdlIHRoZSBzdHlsZSBzb21ldGltZXMgKHdpdGggXFxkZnJhYyBvciBcXHRmcmFjKSxcbiAgLy8gYWNjb3VudCBmb3IgdGhlIHBvc3NpYmxlIHNpemUgY2hhbmdlIGhlcmUuXG5cblxuICBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZSk7XG4gIGZyYWMuaGVpZ2h0ICo9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICBmcmFjLmRlcHRoICo9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyOyAvLyBSdWxlIDE1ZVxuXG4gIHZhciBkZWxpbVNpemU7XG5cbiAgaWYgKHN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUpIHtcbiAgICBkZWxpbVNpemUgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVsaW0xO1xuICB9IGVsc2Uge1xuICAgIGRlbGltU2l6ZSA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWxpbTI7XG4gIH1cblxuICB2YXIgbGVmdERlbGltO1xuICB2YXIgcmlnaHREZWxpbTtcblxuICBpZiAoZ3JvdXAubGVmdERlbGltID09IG51bGwpIHtcbiAgICBsZWZ0RGVsaW0gPSBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBbXCJtb3BlblwiXSk7XG4gIH0gZWxzZSB7XG4gICAgbGVmdERlbGltID0gZGVsaW1pdGVyLmN1c3RvbVNpemVkRGVsaW0oZ3JvdXAubGVmdERlbGltLCBkZWxpbVNpemUsIHRydWUsIG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUpLCBncm91cC5tb2RlLCBbXCJtb3BlblwiXSk7XG4gIH1cblxuICBpZiAoZ3JvdXAuY29udGludWVkKSB7XG4gICAgcmlnaHREZWxpbSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtdKTsgLy8gemVybyB3aWR0aCBmb3IgXFxjZnJhY1xuICB9IGVsc2UgaWYgKGdyb3VwLnJpZ2h0RGVsaW0gPT0gbnVsbCkge1xuICAgIHJpZ2h0RGVsaW0gPSBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBbXCJtY2xvc2VcIl0pO1xuICB9IGVsc2Uge1xuICAgIHJpZ2h0RGVsaW0gPSBkZWxpbWl0ZXIuY3VzdG9tU2l6ZWREZWxpbShncm91cC5yaWdodERlbGltLCBkZWxpbVNpemUsIHRydWUsIG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUpLCBncm91cC5tb2RlLCBbXCJtY2xvc2VcIl0pO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0uY29uY2F0KG5ld09wdGlvbnMuc2l6aW5nQ2xhc3NlcyhvcHRpb25zKSksIFtsZWZ0RGVsaW0sIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1mcmFjXCJdLCBbZnJhY10pLCByaWdodERlbGltXSwgb3B0aW9ucyk7XG59O1xuXG52YXIgZ2VuZnJhY19tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibWZyYWNcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAubnVtZXIsIG9wdGlvbnMpLCBidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmRlbm9tLCBvcHRpb25zKV0pO1xuXG4gIGlmICghZ3JvdXAuaGFzQmFyTGluZSkge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibGluZXRoaWNrbmVzc1wiLCBcIjBweFwiKTtcbiAgfSBlbHNlIGlmIChncm91cC5iYXJTaXplKSB7XG4gICAgdmFyIHJ1bGVXaWR0aCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuYmFyU2l6ZSwgb3B0aW9ucyk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsaW5ldGhpY2tuZXNzXCIsIHJ1bGVXaWR0aCArIFwiZW1cIik7XG4gIH1cblxuICB2YXIgc3R5bGUgPSBnZW5mcmFjX2FkanVzdFN0eWxlKGdyb3VwLnNpemUsIG9wdGlvbnMuc3R5bGUpO1xuXG4gIGlmIChzdHlsZS5zaXplICE9PSBvcHRpb25zLnN0eWxlLnNpemUpIHtcbiAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3R5bGVcIiwgW25vZGVdKTtcbiAgICB2YXIgaXNEaXNwbGF5ID0gc3R5bGUuc2l6ZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkuc2l6ZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZGlzcGxheXN0eWxlXCIsIGlzRGlzcGxheSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzY3JpcHRsZXZlbFwiLCBcIjBcIik7XG4gIH1cblxuICBpZiAoZ3JvdXAubGVmdERlbGltICE9IG51bGwgfHwgZ3JvdXAucmlnaHREZWxpbSAhPSBudWxsKSB7XG4gICAgdmFyIHdpdGhEZWxpbXMgPSBbXTtcblxuICAgIGlmIChncm91cC5sZWZ0RGVsaW0gIT0gbnVsbCkge1xuICAgICAgdmFyIGxlZnRPcCA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKGdyb3VwLmxlZnREZWxpbS5yZXBsYWNlKFwiXFxcXFwiLCBcIlwiKSldKTtcbiAgICAgIGxlZnRPcC5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcInRydWVcIik7XG4gICAgICB3aXRoRGVsaW1zLnB1c2gobGVmdE9wKTtcbiAgICB9XG5cbiAgICB3aXRoRGVsaW1zLnB1c2gobm9kZSk7XG5cbiAgICBpZiAoZ3JvdXAucmlnaHREZWxpbSAhPSBudWxsKSB7XG4gICAgICB2YXIgcmlnaHRPcCA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKGdyb3VwLnJpZ2h0RGVsaW0ucmVwbGFjZShcIlxcXFxcIiwgXCJcIikpXSk7XG4gICAgICByaWdodE9wLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICAgIHdpdGhEZWxpbXMucHVzaChyaWdodE9wKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRNYXRoTUxfbWFrZVJvdyh3aXRoRGVsaW1zKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImdlbmZyYWNcIixcbiAgbmFtZXM6IFtcIlxcXFxjZnJhY1wiLCBcIlxcXFxkZnJhY1wiLCBcIlxcXFxmcmFjXCIsIFwiXFxcXHRmcmFjXCIsIFwiXFxcXGRiaW5vbVwiLCBcIlxcXFxiaW5vbVwiLCBcIlxcXFx0Ymlub21cIiwgXCJcXFxcXFxcXGF0b3BmcmFjXCIsIC8vIGNhbuKAmXQgYmUgZW50ZXJlZCBkaXJlY3RseVxuICBcIlxcXFxcXFxcYnJhY2VmcmFjXCIsIFwiXFxcXFxcXFxicmFja2ZyYWNcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBncmVlZGluZXNzOiAyXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBudW1lciA9IGFyZ3NbMF07XG4gICAgdmFyIGRlbm9tID0gYXJnc1sxXTtcbiAgICB2YXIgaGFzQmFyTGluZTtcbiAgICB2YXIgbGVmdERlbGltID0gbnVsbDtcbiAgICB2YXIgcmlnaHREZWxpbSA9IG51bGw7XG4gICAgdmFyIHNpemUgPSBcImF1dG9cIjtcblxuICAgIHN3aXRjaCAoZnVuY05hbWUpIHtcbiAgICAgIGNhc2UgXCJcXFxcY2ZyYWNcIjpcbiAgICAgIGNhc2UgXCJcXFxcZGZyYWNcIjpcbiAgICAgIGNhc2UgXCJcXFxcZnJhY1wiOlxuICAgICAgY2FzZSBcIlxcXFx0ZnJhY1wiOlxuICAgICAgICBoYXNCYXJMaW5lID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJcXFxcXFxcXGF0b3BmcmFjXCI6XG4gICAgICAgIGhhc0JhckxpbmUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJcXFxcZGJpbm9tXCI6XG4gICAgICBjYXNlIFwiXFxcXGJpbm9tXCI6XG4gICAgICBjYXNlIFwiXFxcXHRiaW5vbVwiOlxuICAgICAgICBoYXNCYXJMaW5lID0gZmFsc2U7XG4gICAgICAgIGxlZnREZWxpbSA9IFwiKFwiO1xuICAgICAgICByaWdodERlbGltID0gXCIpXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXFxcXFxicmFjZWZyYWNcIjpcbiAgICAgICAgaGFzQmFyTGluZSA9IGZhbHNlO1xuICAgICAgICBsZWZ0RGVsaW0gPSBcIlxcXFx7XCI7XG4gICAgICAgIHJpZ2h0RGVsaW0gPSBcIlxcXFx9XCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXFxcXFxicmFja2ZyYWNcIjpcbiAgICAgICAgaGFzQmFyTGluZSA9IGZhbHNlO1xuICAgICAgICBsZWZ0RGVsaW0gPSBcIltcIjtcbiAgICAgICAgcmlnaHREZWxpbSA9IFwiXVwiO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIGdlbmZyYWMgY29tbWFuZFwiKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZ1bmNOYW1lKSB7XG4gICAgICBjYXNlIFwiXFxcXGNmcmFjXCI6XG4gICAgICBjYXNlIFwiXFxcXGRmcmFjXCI6XG4gICAgICBjYXNlIFwiXFxcXGRiaW5vbVwiOlxuICAgICAgICBzaXplID0gXCJkaXNwbGF5XCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXHRmcmFjXCI6XG4gICAgICBjYXNlIFwiXFxcXHRiaW5vbVwiOlxuICAgICAgICBzaXplID0gXCJ0ZXh0XCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImdlbmZyYWNcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgY29udGludWVkOiBmdW5jTmFtZSA9PT0gXCJcXFxcY2ZyYWNcIixcbiAgICAgIG51bWVyOiBudW1lcixcbiAgICAgIGRlbm9tOiBkZW5vbSxcbiAgICAgIGhhc0JhckxpbmU6IGhhc0JhckxpbmUsXG4gICAgICBsZWZ0RGVsaW06IGxlZnREZWxpbSxcbiAgICAgIHJpZ2h0RGVsaW06IHJpZ2h0RGVsaW0sXG4gICAgICBzaXplOiBzaXplLFxuICAgICAgYmFyU2l6ZTogbnVsbFxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBnZW5mcmFjX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBnZW5mcmFjX21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBJbmZpeCBnZW5lcmFsaXplZCBmcmFjdGlvbnMgLS0gdGhlc2UgYXJlIG5vdCByZW5kZXJlZCBkaXJlY3RseSwgYnV0IHJlcGxhY2VkXG4vLyBpbW1lZGlhdGVseSBieSBvbmUgb2YgdGhlIHZhcmlhbnRzIGFib3ZlLlxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiaW5maXhcIixcbiAgbmFtZXM6IFtcIlxcXFxvdmVyXCIsIFwiXFxcXGNob29zZVwiLCBcIlxcXFxhdG9wXCIsIFwiXFxcXGJyYWNlXCIsIFwiXFxcXGJyYWNrXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDAsXG4gICAgaW5maXg6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMikge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjIuZnVuY05hbWUsXG4gICAgICAgIHRva2VuID0gX3JlZjIudG9rZW47XG4gICAgdmFyIHJlcGxhY2VXaXRoO1xuXG4gICAgc3dpdGNoIChmdW5jTmFtZSkge1xuICAgICAgY2FzZSBcIlxcXFxvdmVyXCI6XG4gICAgICAgIHJlcGxhY2VXaXRoID0gXCJcXFxcZnJhY1wiO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxjaG9vc2VcIjpcbiAgICAgICAgcmVwbGFjZVdpdGggPSBcIlxcXFxiaW5vbVwiO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxhdG9wXCI6XG4gICAgICAgIHJlcGxhY2VXaXRoID0gXCJcXFxcXFxcXGF0b3BmcmFjXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXGJyYWNlXCI6XG4gICAgICAgIHJlcGxhY2VXaXRoID0gXCJcXFxcXFxcXGJyYWNlZnJhY1wiO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxicmFja1wiOlxuICAgICAgICByZXBsYWNlV2l0aCA9IFwiXFxcXFxcXFxicmFja2ZyYWNcIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCBpbmZpeCBnZW5mcmFjIGNvbW1hbmRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaW5maXhcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgcmVwbGFjZVdpdGg6IHJlcGxhY2VXaXRoLFxuICAgICAgdG9rZW46IHRva2VuXG4gICAgfTtcbiAgfVxufSk7XG52YXIgc3R5bEFycmF5ID0gW1wiZGlzcGxheVwiLCBcInRleHRcIiwgXCJzY3JpcHRcIiwgXCJzY3JpcHRzY3JpcHRcIl07XG5cbnZhciBkZWxpbUZyb21WYWx1ZSA9IGZ1bmN0aW9uIGRlbGltRnJvbVZhbHVlKGRlbGltU3RyaW5nKSB7XG4gIHZhciBkZWxpbSA9IG51bGw7XG5cbiAgaWYgKGRlbGltU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICBkZWxpbSA9IGRlbGltU3RyaW5nO1xuICAgIGRlbGltID0gZGVsaW0gPT09IFwiLlwiID8gbnVsbCA6IGRlbGltO1xuICB9XG5cbiAgcmV0dXJuIGRlbGltO1xufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImdlbmZyYWNcIixcbiAgbmFtZXM6IFtcIlxcXFxnZW5mcmFjXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDYsXG4gICAgZ3JlZWRpbmVzczogNixcbiAgICBhcmdUeXBlczogW1wibWF0aFwiLCBcIm1hdGhcIiwgXCJzaXplXCIsIFwidGV4dFwiLCBcIm1hdGhcIiwgXCJtYXRoXCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjMsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjMucGFyc2VyO1xuICAgIHZhciBudW1lciA9IGFyZ3NbNF07XG4gICAgdmFyIGRlbm9tID0gYXJnc1s1XTsgLy8gTG9vayBpbnRvIHRoZSBwYXJzZSBub2RlcyB0byBnZXQgdGhlIGRlc2lyZWQgZGVsaW1pdGVycy5cblxuICAgIHZhciBsZWZ0Tm9kZSA9IGNoZWNrTm9kZVR5cGUoYXJnc1swXSwgXCJhdG9tXCIpO1xuXG4gICAgaWYgKGxlZnROb2RlKSB7XG4gICAgICBsZWZ0Tm9kZSA9IGFzc2VydEF0b21GYW1pbHkoYXJnc1swXSwgXCJvcGVuXCIpO1xuICAgIH1cblxuICAgIHZhciBsZWZ0RGVsaW0gPSBsZWZ0Tm9kZSA/IGRlbGltRnJvbVZhbHVlKGxlZnROb2RlLnRleHQpIDogbnVsbDtcbiAgICB2YXIgcmlnaHROb2RlID0gY2hlY2tOb2RlVHlwZShhcmdzWzFdLCBcImF0b21cIik7XG5cbiAgICBpZiAocmlnaHROb2RlKSB7XG4gICAgICByaWdodE5vZGUgPSBhc3NlcnRBdG9tRmFtaWx5KGFyZ3NbMV0sIFwiY2xvc2VcIik7XG4gICAgfVxuXG4gICAgdmFyIHJpZ2h0RGVsaW0gPSByaWdodE5vZGUgPyBkZWxpbUZyb21WYWx1ZShyaWdodE5vZGUudGV4dCkgOiBudWxsO1xuICAgIHZhciBiYXJOb2RlID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1syXSwgXCJzaXplXCIpO1xuICAgIHZhciBoYXNCYXJMaW5lO1xuICAgIHZhciBiYXJTaXplID0gbnVsbDtcblxuICAgIGlmIChiYXJOb2RlLmlzQmxhbmspIHtcbiAgICAgIC8vIFxcZ2VuZnJhYyBhY3RzIGRpZmZlcmVudGx5IHRoYW4gXFxhYm92ZS5cbiAgICAgIC8vIFxcZ2VuZnJhYyB0cmVhdHMgYW4gZW1wdHkgc2l6ZSBncm91cCBhcyBhIHNpZ25hbCB0byB1c2UgYVxuICAgICAgLy8gc3RhbmRhcmQgYmFyIHNpemUuIFxcYWJvdmUgd291bGQgc2VlIHNpemUgPSAwIGFuZCBvbWl0IHRoZSBiYXIuXG4gICAgICBoYXNCYXJMaW5lID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmFyU2l6ZSA9IGJhck5vZGUudmFsdWU7XG4gICAgICBoYXNCYXJMaW5lID0gYmFyU2l6ZS5udW1iZXIgPiAwO1xuICAgIH0gLy8gRmluZCBvdXQgaWYgd2Ugd2FudCBkaXNwbGF5c3R5bGUsIHRleHRzdHlsZSwgZXRjLlxuXG5cbiAgICB2YXIgc2l6ZSA9IFwiYXV0b1wiO1xuICAgIHZhciBzdHlsID0gY2hlY2tOb2RlVHlwZShhcmdzWzNdLCBcIm9yZGdyb3VwXCIpO1xuXG4gICAgaWYgKHN0eWwpIHtcbiAgICAgIGlmIChzdHlsLmJvZHkubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgdGV4dE9yZCA9IGFzc2VydE5vZGVUeXBlKHN0eWwuYm9keVswXSwgXCJ0ZXh0b3JkXCIpO1xuICAgICAgICBzaXplID0gc3R5bEFycmF5W051bWJlcih0ZXh0T3JkLnRleHQpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bCA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbM10sIFwidGV4dG9yZFwiKTtcbiAgICAgIHNpemUgPSBzdHlsQXJyYXlbTnVtYmVyKHN0eWwudGV4dCldO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImdlbmZyYWNcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbnVtZXI6IG51bWVyLFxuICAgICAgZGVub206IGRlbm9tLFxuICAgICAgY29udGludWVkOiBmYWxzZSxcbiAgICAgIGhhc0JhckxpbmU6IGhhc0JhckxpbmUsXG4gICAgICBiYXJTaXplOiBiYXJTaXplLFxuICAgICAgbGVmdERlbGltOiBsZWZ0RGVsaW0sXG4gICAgICByaWdodERlbGltOiByaWdodERlbGltLFxuICAgICAgc2l6ZTogc2l6ZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBnZW5mcmFjX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBnZW5mcmFjX21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBcXGFib3ZlIGlzIGFuIGluZml4IGZyYWN0aW9uIHRoYXQgYWxzbyBkZWZpbmVzIGEgZnJhY3Rpb24gYmFyIHNpemUuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJpbmZpeFwiLFxuICBuYW1lczogW1wiXFxcXGFib3ZlXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIl0sXG4gICAgaW5maXg6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmNCwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmNC5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjQuZnVuY05hbWUsXG4gICAgICAgIHRva2VuID0gX3JlZjQudG9rZW47XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaW5maXhcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgcmVwbGFjZVdpdGg6IFwiXFxcXFxcXFxhYm92ZWZyYWNcIixcbiAgICAgIHNpemU6IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwic2l6ZVwiKS52YWx1ZSxcbiAgICAgIHRva2VuOiB0b2tlblxuICAgIH07XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImdlbmZyYWNcIixcbiAgbmFtZXM6IFtcIlxcXFxcXFxcYWJvdmVmcmFjXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDMsXG4gICAgYXJnVHlwZXM6IFtcIm1hdGhcIiwgXCJzaXplXCIsIFwibWF0aFwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWY1LCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWY1LnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmNS5mdW5jTmFtZTtcbiAgICB2YXIgbnVtZXIgPSBhcmdzWzBdO1xuICAgIHZhciBiYXJTaXplID0gYXNzZXJ0KGFzc2VydE5vZGVUeXBlKGFyZ3NbMV0sIFwiaW5maXhcIikuc2l6ZSk7XG4gICAgdmFyIGRlbm9tID0gYXJnc1syXTtcbiAgICB2YXIgaGFzQmFyTGluZSA9IGJhclNpemUubnVtYmVyID4gMDtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJnZW5mcmFjXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG51bWVyOiBudW1lcixcbiAgICAgIGRlbm9tOiBkZW5vbSxcbiAgICAgIGNvbnRpbnVlZDogZmFsc2UsXG4gICAgICBoYXNCYXJMaW5lOiBoYXNCYXJMaW5lLFxuICAgICAgYmFyU2l6ZTogYmFyU2l6ZSxcbiAgICAgIGxlZnREZWxpbTogbnVsbCxcbiAgICAgIHJpZ2h0RGVsaW06IG51bGwsXG4gICAgICBzaXplOiBcImF1dG9cIlxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBnZW5mcmFjX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBnZW5mcmFjX21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2hvcml6QnJhY2UuanNcblxuXG5cblxuXG5cblxuXG4vLyBOT1RFOiBVbmxpa2UgbW9zdCBgaHRtbEJ1aWxkZXJgcywgdGhpcyBvbmUgaGFuZGxlcyBub3Qgb25seSBcImhvcml6QnJhY2VcIiwgYnV0XG52YXIgaG9yaXpCcmFjZV9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdycCwgb3B0aW9ucykge1xuICB2YXIgc3R5bGUgPSBvcHRpb25zLnN0eWxlOyAvLyBQdWxsIG91dCB0aGUgYFBhcnNlTm9kZTxcImhvcml6QnJhY2VcIj5gIGlmIGBncnBgIGlzIGEgXCJzdXBzdWJcIiBub2RlLlxuXG4gIHZhciBzdXBTdWJHcm91cDtcbiAgdmFyIGdyb3VwO1xuICB2YXIgc3VwU3ViID0gY2hlY2tOb2RlVHlwZShncnAsIFwic3Vwc3ViXCIpO1xuXG4gIGlmIChzdXBTdWIpIHtcbiAgICAvLyBSZWY6IExhVGVYIHNvdXJjZTJlOiB9fX19XFxsaW1pdHN9XG4gICAgLy8gaS5lLiBMYVRlWCB0cmVhdHMgdGhlIGJyYWNlIHNpbWlsYXIgdG8gYW4gb3AgYW5kIHBhc3NlcyBpdFxuICAgIC8vIHdpdGggXFxsaW1pdHMsIHNvIHdlIG5lZWQgdG8gYXNzaWduIHN1cHN1YiBzdHlsZS5cbiAgICBzdXBTdWJHcm91cCA9IHN1cFN1Yi5zdXAgPyBidWlsZEhUTUxfYnVpbGRHcm91cChzdXBTdWIuc3VwLCBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1cCgpKSwgb3B0aW9ucykgOiBidWlsZEhUTUxfYnVpbGRHcm91cChzdXBTdWIuc3ViLCBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1YigpKSwgb3B0aW9ucyk7XG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShzdXBTdWIuYmFzZSwgXCJob3JpekJyYWNlXCIpO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcImhvcml6QnJhY2VcIik7XG4gIH0gLy8gQnVpbGQgdGhlIGJhc2UgZ3JvdXBcblxuXG4gIHZhciBib2R5ID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYmFzZSwgb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUoc3JjX1N0eWxlLkRJU1BMQVkpKTsgLy8gQ3JlYXRlIHRoZSBzdHJldGNoeSBlbGVtZW50XG5cbiAgdmFyIGJyYWNlQm9keSA9IHN0cmV0Y2h5LnN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpOyAvLyBHZW5lcmF0ZSB0aGUgdmxpc3QsIHdpdGggdGhlIGFwcHJvcHJpYXRlIGtlcm5zICAgICAgICDilI/ilIHilIHilIHilIHilIHilIHilIHilIHilJNcbiAgLy8gVGhpcyBmaXJzdCB2bGlzdCBjb250YWlucyB0aGUgY29udGVudCBhbmQgdGhlIGJyYWNlOiAgIGVxdWF0aW9uXG5cbiAgdmFyIHZsaXN0O1xuXG4gIGlmIChncm91cC5pc092ZXIpIHtcbiAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBib2R5XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiAwLjFcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJyYWNlQm9keVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTsgLy8gJEZsb3dGaXhNZTogUmVwbGFjZSB0aGlzIHdpdGggcGFzc2luZyBcInN2Zy1hbGlnblwiIGludG8gbWFrZVZMaXN0LlxuXG4gICAgdmxpc3QuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uY2xhc3Nlcy5wdXNoKFwic3ZnLWFsaWduXCIpO1xuICB9IGVsc2Uge1xuICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgIHBvc2l0aW9uRGF0YTogYm9keS5kZXB0aCArIDAuMSArIGJyYWNlQm9keS5oZWlnaHQsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJyYWNlQm9keVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogMC4xXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBib2R5XG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyAkRmxvd0ZpeE1lOiBSZXBsYWNlIHRoaXMgd2l0aCBwYXNzaW5nIFwic3ZnLWFsaWduXCIgaW50byBtYWtlVkxpc3QuXG5cbiAgICB2bGlzdC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5jaGlsZHJlblswXS5jbGFzc2VzLnB1c2goXCJzdmctYWxpZ25cIik7XG4gIH1cblxuICBpZiAoc3VwU3ViR3JvdXApIHtcbiAgICAvLyBUbyB3cml0ZSB0aGUgc3Vwc3ViLCB3cmFwIHRoZSBmaXJzdCB2bGlzdCBpbiBhbm90aGVyIHZsaXN0OlxuICAgIC8vIFRoZXkgY2FuJ3QgYWxsIGdvIGluIHRoZSBzYW1lIHZsaXN0LCBiZWNhdXNlIHRoZSBub3RlIG1pZ2h0IGJlXG4gICAgLy8gd2lkZXIgdGhhbiB0aGUgZXF1YXRpb24uIFdlIHdhbnQgdGhlIGVxdWF0aW9uIHRvIGNvbnRyb2wgdGhlXG4gICAgLy8gYnJhY2Ugd2lkdGguXG4gICAgLy8gICAgICBub3RlICAgICAgICAgIGxvbmcgbm90ZSAgICAgICAgICAgbG9uZyBub3RlXG4gICAgLy8gICDilI/ilIHilIHilIHilIHilIHilIHilIHilIHilJMgICBvciAgICDilI/ilIHilIHilIHilJMgICAgIG5vdCAgICDilI/ilIHilIHilIHilIHilIHilIHilIHilIHilIHilJNcbiAgICAvLyAgICBlcXVhdGlvbiAgICAgICAgICAgZXFuICAgICAgICAgICAgICAgICBlcW5cbiAgICB2YXIgdlNwYW4gPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIGdyb3VwLmlzT3ZlciA/IFwibW92ZXJcIiA6IFwibXVuZGVyXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcblxuICAgIGlmIChncm91cC5pc092ZXIpIHtcbiAgICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogdlNwYW5cbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICAgIHNpemU6IDAuMlxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogc3VwU3ViR3JvdXBcbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiB2U3Bhbi5kZXB0aCArIDAuMiArIHN1cFN1Ykdyb3VwLmhlaWdodCArIHN1cFN1Ykdyb3VwLmRlcHRoLFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiBzdXBTdWJHcm91cFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgICAgc2l6ZTogMC4yXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiB2U3BhblxuICAgICAgICB9XVxuICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgZ3JvdXAuaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xufTtcblxudmFyIGhvcml6QnJhY2VfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIGFjY2VudE5vZGUgPSBzdHJldGNoeS5tYXRoTUxub2RlKGdyb3VwLmxhYmVsKTtcbiAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKGdyb3VwLmlzT3ZlciA/IFwibW92ZXJcIiA6IFwibXVuZGVyXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpLCBhY2NlbnROb2RlXSk7XG59OyAvLyBIb3Jpem9udGFsIHN0cmV0Y2h5IGJyYWNlc1xuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJob3JpekJyYWNlXCIsXG4gIG5hbWVzOiBbXCJcXFxcb3ZlcmJyYWNlXCIsIFwiXFxcXHVuZGVyYnJhY2VcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJob3JpekJyYWNlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGlzT3ZlcjogL15cXFxcb3Zlci8udGVzdChmdW5jTmFtZSksXG4gICAgICBiYXNlOiBhcmdzWzBdXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGhvcml6QnJhY2VfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGhvcml6QnJhY2VfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvaHJlZi5qc1xuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImhyZWZcIixcbiAgbmFtZXM6IFtcIlxcXFxocmVmXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDIsXG4gICAgYXJnVHlwZXM6IFtcInVybFwiLCBcIm9yaWdpbmFsXCJdLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1sxXTtcbiAgICB2YXIgaHJlZiA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwidXJsXCIpLnVybDtcblxuICAgIGlmICghcGFyc2VyLnNldHRpbmdzLmlzVHJ1c3RlZCh7XG4gICAgICBjb21tYW5kOiBcIlxcXFxocmVmXCIsXG4gICAgICB1cmw6IGhyZWZcbiAgICB9KSkge1xuICAgICAgcmV0dXJuIHBhcnNlci5mb3JtYXRVbnN1cHBvcnRlZENtZChcIlxcXFxocmVmXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImhyZWZcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgaHJlZjogaHJlZixcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGVsZW1lbnRzID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCBmYWxzZSk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VBbmNob3IoZ3JvdXAuaHJlZiwgW10sIGVsZW1lbnRzLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBtYXRoID0gYnVpbGRFeHByZXNzaW9uUm93KGdyb3VwLmJvZHksIG9wdGlvbnMpO1xuXG4gICAgaWYgKCEobWF0aCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfTWF0aE5vZGUpKSB7XG4gICAgICBtYXRoID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtcm93XCIsIFttYXRoXSk7XG4gICAgfVxuXG4gICAgbWF0aC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGdyb3VwLmhyZWYpO1xuICAgIHJldHVybiBtYXRoO1xuICB9XG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJocmVmXCIsXG4gIG5hbWVzOiBbXCJcXFxcdXJsXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInVybFwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyO1xuICAgIHZhciBocmVmID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJ1cmxcIikudXJsO1xuXG4gICAgaWYgKCFwYXJzZXIuc2V0dGluZ3MuaXNUcnVzdGVkKHtcbiAgICAgIGNvbW1hbmQ6IFwiXFxcXHVybFwiLFxuICAgICAgdXJsOiBocmVmXG4gICAgfSkpIHtcbiAgICAgIHJldHVybiBwYXJzZXIuZm9ybWF0VW5zdXBwb3J0ZWRDbWQoXCJcXFxcdXJsXCIpO1xuICAgIH1cblxuICAgIHZhciBjaGFycyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBocmVmLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IGhyZWZbaV07XG5cbiAgICAgIGlmIChjID09PSBcIn5cIikge1xuICAgICAgICBjID0gXCJcXFxcdGV4dGFzY2lpdGlsZGVcIjtcbiAgICAgIH1cblxuICAgICAgY2hhcnMucHVzaCh7XG4gICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICBtb2RlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogY1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGJvZHkgPSB7XG4gICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZm9udDogXCJcXFxcdGV4dHR0XCIsXG4gICAgICBib2R5OiBjaGFyc1xuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaHJlZlwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBocmVmOiBocmVmLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSlcbiAgICB9O1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9odG1sbWF0aG1sLmpzXG5cblxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJodG1sbWF0aG1sXCIsXG4gIG5hbWVzOiBbXCJcXFxcaHRtbEBtYXRobWxcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJodG1sbWF0aG1sXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGh0bWw6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGFyZ3NbMF0pLFxuICAgICAgbWF0aG1sOiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChhcmdzWzFdKVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBlbGVtZW50cyA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuaHRtbCwgb3B0aW9ucywgZmFsc2UpO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlRnJhZ21lbnQoZWxlbWVudHMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkRXhwcmVzc2lvblJvdyhncm91cC5tYXRobWwsIG9wdGlvbnMpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9pbmNsdWRlZ3JhcGhpY3MuanNcblxuXG5cblxuXG5cblxudmFyIGluY2x1ZGVncmFwaGljc19zaXplRGF0YSA9IGZ1bmN0aW9uIHNpemVEYXRhKHN0cikge1xuICBpZiAoL15bLStdPyAqKFxcZCsoXFwuXFxkKik/fFxcLlxcZCspJC8udGVzdChzdHIpKSB7XG4gICAgLy8gc3RyIGlzIGEgbnVtYmVyIHdpdGggbm8gdW5pdCBzcGVjaWZpZWQuXG4gICAgLy8gZGVmYXVsdCB1bml0IGlzIGJwLCBwZXIgZ3JhcGhpeCBwYWNrYWdlLlxuICAgIHJldHVybiB7XG4gICAgICBudW1iZXI6ICtzdHIsXG4gICAgICB1bml0OiBcImJwXCJcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHZhciBtYXRjaCA9IC8oWy0rXT8pICooXFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSAqKFthLXpdezJ9KS8uZXhlYyhzdHIpO1xuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBzaXplOiAnXCIgKyBzdHIgKyBcIicgaW4gXFxcXGluY2x1ZGVncmFwaGljc1wiKTtcbiAgICB9XG5cbiAgICB2YXIgZGF0YSA9IHtcbiAgICAgIG51bWJlcjogKyhtYXRjaFsxXSArIG1hdGNoWzJdKSxcbiAgICAgIC8vIHNpZ24gKyBtYWduaXR1ZGUsIGNhc3QgdG8gbnVtYmVyXG4gICAgICB1bml0OiBtYXRjaFszXVxuICAgIH07XG5cbiAgICBpZiAoIXZhbGlkVW5pdChkYXRhKSkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCB1bml0OiAnXCIgKyBkYXRhLnVuaXQgKyBcIicgaW4gXFxcXGluY2x1ZGVncmFwaGljcy5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbn07XG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJpbmNsdWRlZ3JhcGhpY3NcIixcbiAgbmFtZXM6IFtcIlxcXFxpbmNsdWRlZ3JhcGhpY3NcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInJhd1wiLCBcInVybFwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiBmYWxzZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIHdpZHRoID0ge1xuICAgICAgbnVtYmVyOiAwLFxuICAgICAgdW5pdDogXCJlbVwiXG4gICAgfTtcbiAgICB2YXIgaGVpZ2h0ID0ge1xuICAgICAgbnVtYmVyOiAwLjksXG4gICAgICB1bml0OiBcImVtXCJcbiAgICB9OyAvLyBzb3J0YSBjaGFyYWN0ZXIgc2l6ZWQuXG5cbiAgICB2YXIgdG90YWxoZWlnaHQgPSB7XG4gICAgICBudW1iZXI6IDAsXG4gICAgICB1bml0OiBcImVtXCJcbiAgICB9O1xuICAgIHZhciBhbHQgPSBcIlwiO1xuXG4gICAgaWYgKG9wdEFyZ3NbMF0pIHtcbiAgICAgIHZhciBhdHRyaWJ1dGVTdHIgPSBhc3NlcnROb2RlVHlwZShvcHRBcmdzWzBdLCBcInJhd1wiKS5zdHJpbmc7IC8vIFBhcnNlci5qcyBkb2VzIG5vdCBwYXJzZSBrZXkvdmFsdWUgcGFpcnMuIFdlIGdldCBhIHN0cmluZy5cblxuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTdHIuc3BsaXQoXCIsXCIpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGtleVZhbCA9IGF0dHJpYnV0ZXNbaV0uc3BsaXQoXCI9XCIpO1xuXG4gICAgICAgIGlmIChrZXlWYWwubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgdmFyIHN0ciA9IGtleVZhbFsxXS50cmltKCk7XG5cbiAgICAgICAgICBzd2l0Y2ggKGtleVZhbFswXS50cmltKCkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJhbHRcIjpcbiAgICAgICAgICAgICAgYWx0ID0gc3RyO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcIndpZHRoXCI6XG4gICAgICAgICAgICAgIHdpZHRoID0gaW5jbHVkZWdyYXBoaWNzX3NpemVEYXRhKHN0cik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFwiaGVpZ2h0XCI6XG4gICAgICAgICAgICAgIGhlaWdodCA9IGluY2x1ZGVncmFwaGljc19zaXplRGF0YShzdHIpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcInRvdGFsaGVpZ2h0XCI6XG4gICAgICAgICAgICAgIHRvdGFsaGVpZ2h0ID0gaW5jbHVkZWdyYXBoaWNzX3NpemVEYXRhKHN0cik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGtleTogJ1wiICsga2V5VmFsWzBdICsgXCInIGluIFxcXFxpbmNsdWRlZ3JhcGhpY3MuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzcmMgPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcInVybFwiKS51cmw7XG5cbiAgICBpZiAoYWx0ID09PSBcIlwiKSB7XG4gICAgICAvLyBObyBhbHQgZ2l2ZW4uIFVzZSB0aGUgZmlsZSBuYW1lLiBTdHJpcCBhd2F5IHRoZSBwYXRoLlxuICAgICAgYWx0ID0gc3JjO1xuICAgICAgYWx0ID0gYWx0LnJlcGxhY2UoL14uKltcXFxcL10vLCAnJyk7XG4gICAgICBhbHQgPSBhbHQuc3Vic3RyaW5nKDAsIGFsdC5sYXN0SW5kZXhPZignLicpKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhcnNlci5zZXR0aW5ncy5pc1RydXN0ZWQoe1xuICAgICAgY29tbWFuZDogXCJcXFxcaW5jbHVkZWdyYXBoaWNzXCIsXG4gICAgICB1cmw6IHNyY1xuICAgIH0pKSB7XG4gICAgICByZXR1cm4gcGFyc2VyLmZvcm1hdFVuc3VwcG9ydGVkQ21kKFwiXFxcXGluY2x1ZGVncmFwaGljc1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJpbmNsdWRlZ3JhcGhpY3NcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYWx0OiBhbHQsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHRvdGFsaGVpZ2h0OiB0b3RhbGhlaWdodCxcbiAgICAgIHNyYzogc3JjXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGhlaWdodCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuaGVpZ2h0LCBvcHRpb25zKTtcbiAgICB2YXIgZGVwdGggPSAwO1xuXG4gICAgaWYgKGdyb3VwLnRvdGFsaGVpZ2h0Lm51bWJlciA+IDApIHtcbiAgICAgIGRlcHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC50b3RhbGhlaWdodCwgb3B0aW9ucykgLSBoZWlnaHQ7XG4gICAgICBkZXB0aCA9IE51bWJlcihkZXB0aC50b0ZpeGVkKDIpKTtcbiAgICB9XG5cbiAgICB2YXIgd2lkdGggPSAwO1xuXG4gICAgaWYgKGdyb3VwLndpZHRoLm51bWJlciA+IDApIHtcbiAgICAgIHdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC53aWR0aCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlID0ge1xuICAgICAgaGVpZ2h0OiBoZWlnaHQgKyBkZXB0aCArIFwiZW1cIlxuICAgIH07XG5cbiAgICBpZiAod2lkdGggPiAwKSB7XG4gICAgICBzdHlsZS53aWR0aCA9IHdpZHRoICsgXCJlbVwiO1xuICAgIH1cblxuICAgIGlmIChkZXB0aCA+IDApIHtcbiAgICAgIHN0eWxlLnZlcnRpY2FsQWxpZ24gPSAtZGVwdGggKyBcImVtXCI7XG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSBuZXcgZG9tVHJlZV9JbWcoZ3JvdXAuc3JjLCBncm91cC5hbHQsIHN0eWxlKTtcbiAgICBub2RlLmhlaWdodCA9IGhlaWdodDtcbiAgICBub2RlLmRlcHRoID0gZGVwdGg7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibWdseXBoXCIsIFtdKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImFsdFwiLCBncm91cC5hbHQpO1xuICAgIHZhciBoZWlnaHQgPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLmhlaWdodCwgb3B0aW9ucyk7XG4gICAgdmFyIGRlcHRoID0gMDtcblxuICAgIGlmIChncm91cC50b3RhbGhlaWdodC5udW1iZXIgPiAwKSB7XG4gICAgICBkZXB0aCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAudG90YWxoZWlnaHQsIG9wdGlvbnMpIC0gaGVpZ2h0O1xuICAgICAgZGVwdGggPSBkZXB0aC50b0ZpeGVkKDIpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ2YWxpZ25cIiwgXCItXCIgKyBkZXB0aCArIFwiZW1cIik7XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgaGVpZ2h0ICsgZGVwdGggKyBcImVtXCIpO1xuXG4gICAgaWYgKGdyb3VwLndpZHRoLm51bWJlciA+IDApIHtcbiAgICAgIHZhciB3aWR0aCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAud2lkdGgsIG9wdGlvbnMpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCB3aWR0aCArIFwiZW1cIik7XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgZ3JvdXAuc3JjKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMva2Vybi5qc1xuLy8gSG9yaXpvbnRhbCBzcGFjaW5nIGNvbW1hbmRzXG5cblxuXG5cbiAvLyBUT0RPOiBcXGhza2lwIGFuZCBcXG1za2lwIHNob3VsZCBzdXBwb3J0IHBsdXMgYW5kIG1pbnVzIGluIGxlbmd0aHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImtlcm5cIixcbiAgbmFtZXM6IFtcIlxcXFxrZXJuXCIsIFwiXFxcXG1rZXJuXCIsIFwiXFxcXGhza2lwXCIsIFwiXFxcXG1za2lwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgc2l6ZSA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwic2l6ZVwiKTtcblxuICAgIGlmIChwYXJzZXIuc2V0dGluZ3Muc3RyaWN0KSB7XG4gICAgICB2YXIgbWF0aEZ1bmN0aW9uID0gZnVuY05hbWVbMV0gPT09ICdtJzsgLy8gXFxta2VybiwgXFxtc2tpcFxuXG4gICAgICB2YXIgbXVVbml0ID0gc2l6ZS52YWx1ZS51bml0ID09PSAnbXUnO1xuXG4gICAgICBpZiAobWF0aEZ1bmN0aW9uKSB7XG4gICAgICAgIGlmICghbXVVbml0KSB7XG4gICAgICAgICAgcGFyc2VyLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcIm1hdGhWc1RleHRVbml0c1wiLCBcIkxhVGVYJ3MgXCIgKyBmdW5jTmFtZSArIFwiIHN1cHBvcnRzIG9ubHkgbXUgdW5pdHMsIFwiICsgKFwibm90IFwiICsgc2l6ZS52YWx1ZS51bml0ICsgXCIgdW5pdHNcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcnNlci5tb2RlICE9PSBcIm1hdGhcIikge1xuICAgICAgICAgIHBhcnNlci5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJtYXRoVnNUZXh0VW5pdHNcIiwgXCJMYVRlWCdzIFwiICsgZnVuY05hbWUgKyBcIiB3b3JrcyBvbmx5IGluIG1hdGggbW9kZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gIW1hdGhGdW5jdGlvblxuICAgICAgICBpZiAobXVVbml0KSB7XG4gICAgICAgICAgcGFyc2VyLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcIm1hdGhWc1RleHRVbml0c1wiLCBcIkxhVGVYJ3MgXCIgKyBmdW5jTmFtZSArIFwiIGRvZXNuJ3Qgc3VwcG9ydCBtdSB1bml0c1wiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZGltZW5zaW9uOiBzaXplLnZhbHVlXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VHbHVlKGdyb3VwLmRpbWVuc2lvbiwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgZGltZW5zaW9uID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5kaW1lbnNpb24sIG9wdGlvbnMpO1xuICAgIHJldHVybiBuZXcgbWF0aE1MVHJlZS5TcGFjZU5vZGUoZGltZW5zaW9uKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvbGFwLmpzXG4vLyBIb3Jpem9udGFsIG92ZXJsYXAgZnVuY3Rpb25zXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImxhcFwiLFxuICBuYW1lczogW1wiXFxcXG1hdGhsbGFwXCIsIFwiXFxcXG1hdGhybGFwXCIsIFwiXFxcXG1hdGhjbGFwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibGFwXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGFsaWdubWVudDogZnVuY05hbWUuc2xpY2UoNSksXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gbWF0aGxsYXAsIG1hdGhybGFwLCBtYXRoY2xhcFxuICAgIHZhciBpbm5lcjtcblxuICAgIGlmIChncm91cC5hbGlnbm1lbnQgPT09IFwiY2xhcFwiKSB7XG4gICAgICAvLyByZWY6IGh0dHBzOi8vd3d3Lm1hdGgubHN1LmVkdS9+YXBlcmxpcy9wdWJsaWNhdGlvbnMvbWF0aGNsYXAvXG4gICAgICBpbm5lciA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtdLCBbYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTsgLy8gd3JhcCwgc2luY2UgQ1NTIHdpbGwgY2VudGVyIGEgLmNsYXAgPiAuaW5uZXIgPiBzcGFuXG5cbiAgICAgIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiaW5uZXJcIl0sIFtpbm5lcl0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbm5lciA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImlubmVyXCJdLCBbYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcbiAgICB9XG5cbiAgICB2YXIgZml4ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiZml4XCJdLCBbXSk7XG4gICAgdmFyIG5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbZ3JvdXAuYWxpZ25tZW50XSwgW2lubmVyLCBmaXhdLCBvcHRpb25zKTsgLy8gQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBjb3JyZWN0bHkgc2V0IGhvcml6b250YWwgYWxpZ25tZW50IG9mIHRoZVxuICAgIC8vIHR3byBpdGVtcyBpbnZvbHZlZCBpbiB0aGUgbGFwLlxuICAgIC8vIE5leHQsIHVzZSBhIHN0cnV0IHRvIHNldCB0aGUgaGVpZ2h0IG9mIHRoZSBIVE1MIGJvdW5kaW5nIGJveC5cbiAgICAvLyBPdGhlcndpc2UsIGEgdGFsbCBhcmd1bWVudCBtYXkgYmUgbWlzcGxhY2VkLlxuXG4gICAgdmFyIHN0cnV0ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wic3RydXRcIl0pO1xuICAgIHN0cnV0LnN0eWxlLmhlaWdodCA9IG5vZGUuaGVpZ2h0ICsgbm9kZS5kZXB0aCArIFwiZW1cIjtcbiAgICBzdHJ1dC5zdHlsZS52ZXJ0aWNhbEFsaWduID0gLW5vZGUuZGVwdGggKyBcImVtXCI7XG4gICAgbm9kZS5jaGlsZHJlbi51bnNoaWZ0KHN0cnV0KTsgLy8gTmV4dCwgcHJldmVudCB2ZXJ0aWNhbCBtaXNwbGFjZW1lbnQgd2hlbiBuZXh0IHRvIHNvbWV0aGluZyB0YWxsLlxuXG4gICAgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBub2RlXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyBHZXQgdGhlIGhvcml6b250YWwgc3BhY2luZyBjb3JyZWN0IHJlbGF0aXZlIHRvIGFkamFjZW50IGl0ZW1zLlxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFtub2RlXSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBtYXRobGxhcCwgbWF0aHJsYXAsIG1hdGhjbGFwXG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICAgIGlmIChncm91cC5hbGlnbm1lbnQgIT09IFwicmxhcFwiKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gZ3JvdXAuYWxpZ25tZW50ID09PSBcImxsYXBcIiA/IFwiLTFcIiA6IFwiLTAuNVwiO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgb2Zmc2V0ICsgXCJ3aWR0aFwiKTtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiMHB4XCIpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9tYXRoLmpzXG5cbiAvLyBTd2l0Y2hpbmcgZnJvbSB0ZXh0IG1vZGUgYmFjayB0byBtYXRoIG1vZGVcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInN0eWxpbmdcIixcbiAgbmFtZXM6IFtcIlxcXFwoXCIsIFwiJFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgYWxsb3dlZEluTWF0aDogZmFsc2VcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZSxcbiAgICAgICAgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIG91dGVyTW9kZSA9IHBhcnNlci5tb2RlO1xuICAgIHBhcnNlci5zd2l0Y2hNb2RlKFwibWF0aFwiKTtcbiAgICB2YXIgY2xvc2UgPSBmdW5jTmFtZSA9PT0gXCJcXFxcKFwiID8gXCJcXFxcKVwiIDogXCIkXCI7XG4gICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKGZhbHNlLCBjbG9zZSk7XG4gICAgcGFyc2VyLmV4cGVjdChjbG9zZSk7XG4gICAgcGFyc2VyLnN3aXRjaE1vZGUob3V0ZXJNb2RlKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzdHlsaW5nXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIHN0eWxlOiBcInRleHRcIixcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9XG59KTsgLy8gQ2hlY2sgZm9yIGV4dHJhIGNsb3NpbmcgbWF0aCBkZWxpbWl0ZXJzXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ0ZXh0XCIsXG4gIC8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhpcyBpcy5cbiAgbmFtZXM6IFtcIlxcXFwpXCIsIFwiXFxcXF1cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgIGFsbG93ZWRJbk1hdGg6IGZhbHNlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIk1pc21hdGNoZWQgXCIgKyBjb250ZXh0LmZ1bmNOYW1lKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvbWF0aGNob2ljZS5qc1xuXG5cblxuXG5cblxudmFyIG1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlID0gZnVuY3Rpb24gY2hvb3NlTWF0aFN0eWxlKGdyb3VwLCBvcHRpb25zKSB7XG4gIHN3aXRjaCAob3B0aW9ucy5zdHlsZS5zaXplKSB7XG4gICAgY2FzZSBzcmNfU3R5bGUuRElTUExBWS5zaXplOlxuICAgICAgcmV0dXJuIGdyb3VwLmRpc3BsYXk7XG5cbiAgICBjYXNlIHNyY19TdHlsZS5URVhULnNpemU6XG4gICAgICByZXR1cm4gZ3JvdXAudGV4dDtcblxuICAgIGNhc2Ugc3JjX1N0eWxlLlNDUklQVC5zaXplOlxuICAgICAgcmV0dXJuIGdyb3VwLnNjcmlwdDtcblxuICAgIGNhc2Ugc3JjX1N0eWxlLlNDUklQVFNDUklQVC5zaXplOlxuICAgICAgcmV0dXJuIGdyb3VwLnNjcmlwdHNjcmlwdDtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZ3JvdXAudGV4dDtcbiAgfVxufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1hdGhjaG9pY2VcIixcbiAgbmFtZXM6IFtcIlxcXFxtYXRoY2hvaWNlXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDRcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm1hdGhjaG9pY2VcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZGlzcGxheTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYXJnc1swXSksXG4gICAgICB0ZXh0OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChhcmdzWzFdKSxcbiAgICAgIHNjcmlwdDogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYXJnc1syXSksXG4gICAgICBzY3JpcHRzY3JpcHQ6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGFyZ3NbM10pXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGJvZHkgPSBtYXRoY2hvaWNlX2Nob29zZU1hdGhTdHlsZShncm91cCwgb3B0aW9ucyk7XG4gICAgdmFyIGVsZW1lbnRzID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihib2R5LCBvcHRpb25zLCBmYWxzZSk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VGcmFnbWVudChlbGVtZW50cyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgYm9keSA9IG1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlKGdyb3VwLCBvcHRpb25zKTtcbiAgICByZXR1cm4gYnVpbGRFeHByZXNzaW9uUm93KGJvZHksIG9wdGlvbnMpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy91dGlscy9hc3NlbWJsZVN1cFN1Yi5qc1xuXG5cbi8vIEZvciBhbiBvcGVyYXRvciB3aXRoIGxpbWl0cywgYXNzZW1ibGUgdGhlIGJhc2UsIHN1cCwgYW5kIHN1YiBpbnRvIGEgc3Bhbi5cbnZhciBhc3NlbWJsZVN1cFN1Yl9hc3NlbWJsZVN1cFN1YiA9IGZ1bmN0aW9uIGFzc2VtYmxlU3VwU3ViKGJhc2UsIHN1cEdyb3VwLCBzdWJHcm91cCwgb3B0aW9ucywgc3R5bGUsIHNsYW50LCBiYXNlU2hpZnQpIHtcbiAgLy8gSUUgOCBjbGlwcyBcXGludCBpZiBpdCBpcyBpbiBhIGRpc3BsYXk6IGlubGluZS1ibG9jay4gV2Ugd3JhcCBpdFxuICAvLyBpbiBhIG5ldyBzcGFuIHNvIGl0IGlzIGFuIGlubGluZSwgYW5kIHdvcmtzLlxuICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW10sIFtiYXNlXSk7XG4gIHZhciBzdWI7XG4gIHZhciBzdXA7IC8vIFdlIG1hbnVhbGx5IGhhdmUgdG8gaGFuZGxlIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMuIFRoaXMsXG4gIC8vIGFzaWRlIGZyb20gdGhlIGtlcm4gY2FsY3VsYXRpb25zLCBpcyBjb3BpZWQgZnJvbSBzdXBzdWIuXG5cbiAgaWYgKHN1cEdyb3VwKSB7XG4gICAgdmFyIGVsZW0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChzdXBHcm91cCwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdXAoKSksIG9wdGlvbnMpO1xuICAgIHN1cCA9IHtcbiAgICAgIGVsZW06IGVsZW0sXG4gICAgICBrZXJuOiBNYXRoLm1heChvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nMSwgb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzMgLSBlbGVtLmRlcHRoKVxuICAgIH07XG4gIH1cblxuICBpZiAoc3ViR3JvdXApIHtcbiAgICB2YXIgX2VsZW0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChzdWJHcm91cCwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdWIoKSksIG9wdGlvbnMpO1xuXG4gICAgc3ViID0ge1xuICAgICAgZWxlbTogX2VsZW0sXG4gICAgICBrZXJuOiBNYXRoLm1heChvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nMiwgb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzQgLSBfZWxlbS5oZWlnaHQpXG4gICAgfTtcbiAgfSAvLyBCdWlsZCB0aGUgZmluYWwgZ3JvdXAgYXMgYSB2bGlzdCBvZiB0aGUgcG9zc2libGUgc3Vic2NyaXB0LCBiYXNlLFxuICAvLyBhbmQgcG9zc2libGUgc3VwZXJzY3JpcHQuXG5cblxuICB2YXIgZmluYWxHcm91cDtcblxuICBpZiAoc3VwICYmIHN1Yikge1xuICAgIHZhciBib3R0b20gPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nNSArIHN1Yi5lbGVtLmhlaWdodCArIHN1Yi5lbGVtLmRlcHRoICsgc3ViLmtlcm4gKyBiYXNlLmRlcHRoICsgYmFzZVNoaWZ0O1xuICAgIGZpbmFsR3JvdXAgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBib3R0b20sXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5iaWdPcFNwYWNpbmc1XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBzdWIuZWxlbSxcbiAgICAgICAgbWFyZ2luTGVmdDogLXNsYW50ICsgXCJlbVwiXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBzdWIua2VyblxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYmFzZVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogc3VwLmtlcm5cbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1cC5lbGVtLFxuICAgICAgICBtYXJnaW5MZWZ0OiBzbGFudCArIFwiZW1cIlxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzVcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3ViKSB7XG4gICAgdmFyIHRvcCA9IGJhc2UuaGVpZ2h0IC0gYmFzZVNoaWZ0OyAvLyBTaGlmdCB0aGUgbGltaXRzIGJ5IHRoZSBzbGFudCBvZiB0aGUgc3ltYm9sLiBOb3RlXG4gICAgLy8gdGhhdCB3ZSBhcmUgc3VwcG9zZWQgdG8gc2hpZnQgdGhlIGxpbWl0cyBieSAxLzIgb2YgdGhlIHNsYW50LFxuICAgIC8vIGJ1dCBzaW5jZSB3ZSBhcmUgY2VudGVyaW5nIHRoZSBsaW1pdHMgYWRkaW5nIGEgZnVsbCBzbGFudCBvZlxuICAgIC8vIG1hcmdpbiB3aWxsIHNoaWZ0IGJ5IDEvMiB0aGF0LlxuXG4gICAgZmluYWxHcm91cCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwidG9wXCIsXG4gICAgICBwb3NpdGlvbkRhdGE6IHRvcCxcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzVcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1Yi5lbGVtLFxuICAgICAgICBtYXJnaW5MZWZ0OiAtc2xhbnQgKyBcImVtXCJcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IHN1Yi5rZXJuXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBiYXNlXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKHN1cCkge1xuICAgIHZhciBfYm90dG9tID0gYmFzZS5kZXB0aCArIGJhc2VTaGlmdDtcblxuICAgIGZpbmFsR3JvdXAgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBfYm90dG9tLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBiYXNlXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBzdXAua2VyblxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogc3VwLmVsZW0sXG4gICAgICAgIG1hcmdpbkxlZnQ6IHNsYW50ICsgXCJlbVwiXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nNVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIGNhc2UgcHJvYmFibHkgc2hvdWxkbid0IG9jY3VyICh0aGlzIHdvdWxkIG1lYW4gdGhlXG4gICAgLy8gc3Vwc3ViIHdhcyBzZW5kaW5nIHVzIGEgZ3JvdXAgd2l0aCBubyBzdXBlcnNjcmlwdCBvclxuICAgIC8vIHN1YnNjcmlwdCkgYnV0IGJlIHNhZmUuXG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCIsIFwib3AtbGltaXRzXCJdLCBbZmluYWxHcm91cF0sIG9wdGlvbnMpO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9vcC5qc1xuLy8gTGltaXRzLCBzeW1ib2xzXG5cblxuXG5cblxuXG5cblxuXG5cbi8vIE1vc3Qgb3BlcmF0b3JzIGhhdmUgYSBsYXJnZSBzdWNjZXNzb3Igc3ltYm9sLCBidXQgdGhlc2UgZG9uJ3QuXG52YXIgbm9TdWNjZXNzb3IgPSBbXCJcXFxcc21hbGxpbnRcIl07IC8vIE5PVEU6IFVubGlrZSBtb3N0IGBodG1sQnVpbGRlcmBzLCB0aGlzIG9uZSBoYW5kbGVzIG5vdCBvbmx5IFwib3BcIiwgYnV0IGFsc29cbi8vIFwic3Vwc3ViXCIgc2luY2Ugc29tZSBvZiB0aGVtIChsaWtlIFxcaW50KSBjYW4gYWZmZWN0IHN1cGVyL3N1YnNjcmlwdGluZy5cblxudmFyIG9wX2h0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JwLCBvcHRpb25zKSB7XG4gIC8vIE9wZXJhdG9ycyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZy4gNDQzLTQ0NCwgcnVsZSAxMyhhKS5cbiAgdmFyIHN1cEdyb3VwO1xuICB2YXIgc3ViR3JvdXA7XG4gIHZhciBoYXNMaW1pdHMgPSBmYWxzZTtcbiAgdmFyIGdyb3VwO1xuICB2YXIgc3VwU3ViID0gY2hlY2tOb2RlVHlwZShncnAsIFwic3Vwc3ViXCIpO1xuXG4gIGlmIChzdXBTdWIpIHtcbiAgICAvLyBJZiB3ZSBoYXZlIGxpbWl0cywgc3Vwc3ViIHdpbGwgcGFzcyB1cyBpdHMgZ3JvdXAgdG8gaGFuZGxlLiBQdWxsXG4gICAgLy8gb3V0IHRoZSBzdXBlcnNjcmlwdCBhbmQgc3Vic2NyaXB0IGFuZCBzZXQgdGhlIGdyb3VwIHRvIHRoZSBvcCBpblxuICAgIC8vIGl0cyBiYXNlLlxuICAgIHN1cEdyb3VwID0gc3VwU3ViLnN1cDtcbiAgICBzdWJHcm91cCA9IHN1cFN1Yi5zdWI7XG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShzdXBTdWIuYmFzZSwgXCJvcFwiKTtcbiAgICBoYXNMaW1pdHMgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcIm9wXCIpO1xuICB9XG5cbiAgdmFyIHN0eWxlID0gb3B0aW9ucy5zdHlsZTtcbiAgdmFyIGxhcmdlID0gZmFsc2U7XG5cbiAgaWYgKHN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUgJiYgZ3JvdXAuc3ltYm9sICYmICF1dGlscy5jb250YWlucyhub1N1Y2Nlc3NvciwgZ3JvdXAubmFtZSkpIHtcbiAgICAvLyBNb3N0IHN5bWJvbCBvcGVyYXRvcnMgZ2V0IGxhcmdlciBpbiBkaXNwbGF5c3R5bGUgKHJ1bGUgMTMpXG4gICAgbGFyZ2UgPSB0cnVlO1xuICB9XG5cbiAgdmFyIGJhc2U7XG5cbiAgaWYgKGdyb3VwLnN5bWJvbCkge1xuICAgIC8vIElmIHRoaXMgaXMgYSBzeW1ib2wsIGNyZWF0ZSB0aGUgc3ltYm9sLlxuICAgIHZhciBmb250TmFtZSA9IGxhcmdlID8gXCJTaXplMi1SZWd1bGFyXCIgOiBcIlNpemUxLVJlZ3VsYXJcIjtcbiAgICB2YXIgc3Rhc2ggPSBcIlwiO1xuXG4gICAgaWYgKGdyb3VwLm5hbWUgPT09IFwiXFxcXG9paW50XCIgfHwgZ3JvdXAubmFtZSA9PT0gXCJcXFxcb2lpaW50XCIpIHtcbiAgICAgIC8vIE5vIGZvbnQgZ2x5cGhzIHlldCwgc28gdXNlIGEgZ2x5cGggdy9vIHRoZSBvdmFsLlxuICAgICAgLy8gVE9ETzogV2hlbiBmb250IGdseXBocyBhcmUgYXZhaWxhYmxlLCBkZWxldGUgdGhpcyBjb2RlLlxuICAgICAgc3Rhc2ggPSBncm91cC5uYW1lLnN1YnN0cigxKTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgICBncm91cC5uYW1lID0gc3Rhc2ggPT09IFwib2lpbnRcIiA/IFwiXFxcXGlpbnRcIiA6IFwiXFxcXGlpaW50XCI7XG4gICAgfVxuXG4gICAgYmFzZSA9IGJ1aWxkQ29tbW9uLm1ha2VTeW1ib2woZ3JvdXAubmFtZSwgZm9udE5hbWUsIFwibWF0aFwiLCBvcHRpb25zLCBbXCJtb3BcIiwgXCJvcC1zeW1ib2xcIiwgbGFyZ2UgPyBcImxhcmdlLW9wXCIgOiBcInNtYWxsLW9wXCJdKTtcblxuICAgIGlmIChzdGFzaC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBXZSdyZSBpbiBcXG9paW50IG9yIFxcb2lpaW50LiBPdmVybGF5IHRoZSBvdmFsLlxuICAgICAgLy8gVE9ETzogV2hlbiBmb250IGdseXBocyBhcmUgYXZhaWxhYmxlLCBkZWxldGUgdGhpcyBjb2RlLlxuICAgICAgdmFyIGl0YWxpYyA9IGJhc2UuaXRhbGljO1xuICAgICAgdmFyIG92YWwgPSBidWlsZENvbW1vbi5zdGF0aWNTdmcoc3Rhc2ggKyBcIlNpemVcIiArIChsYXJnZSA/IFwiMlwiIDogXCIxXCIpLCBvcHRpb25zKTtcbiAgICAgIGJhc2UgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IGJhc2UsXG4gICAgICAgICAgc2hpZnQ6IDBcbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IG92YWwsXG4gICAgICAgICAgc2hpZnQ6IGxhcmdlID8gMC4wOCA6IDBcbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpOyAvLyAkRmxvd0ZpeE1lXG5cbiAgICAgIGdyb3VwLm5hbWUgPSBcIlxcXFxcIiArIHN0YXNoO1xuICAgICAgYmFzZS5jbGFzc2VzLnVuc2hpZnQoXCJtb3BcIik7IC8vICRGbG93Rml4TWVcblxuICAgICAgYmFzZS5pdGFsaWMgPSBpdGFsaWM7XG4gICAgfVxuICB9IGVsc2UgaWYgKGdyb3VwLmJvZHkpIHtcbiAgICAvLyBJZiB0aGlzIGlzIGEgbGlzdCwgY29tcG9zZSB0aGF0IGxpc3QuXG4gICAgdmFyIGlubmVyID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlKTtcblxuICAgIGlmIChpbm5lci5sZW5ndGggPT09IDEgJiYgaW5uZXJbMF0gaW5zdGFuY2VvZiBkb21UcmVlX1N5bWJvbE5vZGUpIHtcbiAgICAgIGJhc2UgPSBpbm5lclswXTtcbiAgICAgIGJhc2UuY2xhc3Nlc1swXSA9IFwibW9wXCI7IC8vIHJlcGxhY2Ugb2xkIG1jbGFzc1xuICAgIH0gZWxzZSB7XG4gICAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCJdLCBidWlsZENvbW1vbi50cnlDb21iaW5lQ2hhcnMoaW5uZXIpLCBvcHRpb25zKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCB0aGlzIGlzIGEgdGV4dCBvcGVyYXRvci4gQnVpbGQgdGhlIHRleHQgZnJvbSB0aGVcbiAgICAvLyBvcGVyYXRvcidzIG5hbWUuXG4gICAgLy8gVE9ETyhlbWlseSk6IEFkZCBhIHNwYWNlIGluIHRoZSBtaWRkbGUgb2Ygc29tZSBvZiB0aGVzZVxuICAgIC8vIG9wZXJhdG9ycywgbGlrZSBcXGxpbXN1cFxuICAgIHZhciBvdXRwdXQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZ3JvdXAubmFtZS5sZW5ndGg7IGkrKykge1xuICAgICAgb3V0cHV0LnB1c2goYnVpbGRDb21tb24ubWF0aHN5bShncm91cC5uYW1lW2ldLCBncm91cC5tb2RlLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgYmFzZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcFwiXSwgb3V0cHV0LCBvcHRpb25zKTtcbiAgfSAvLyBJZiBjb250ZW50IG9mIG9wIGlzIGEgc2luZ2xlIHN5bWJvbCwgc2hpZnQgaXQgdmVydGljYWxseS5cblxuXG4gIHZhciBiYXNlU2hpZnQgPSAwO1xuICB2YXIgc2xhbnQgPSAwO1xuXG4gIGlmICgoYmFzZSBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSB8fCBncm91cC5uYW1lID09PSBcIlxcXFxvaWludFwiIHx8IGdyb3VwLm5hbWUgPT09IFwiXFxcXG9paWludFwiKSAmJiAhZ3JvdXAuc3VwcHJlc3NCYXNlU2hpZnQpIHtcbiAgICAvLyBXZSBzdXBwcmVzcyB0aGUgc2hpZnQgb2YgdGhlIGJhc2Ugb2YgXFxvdmVyc2V0IGFuZCBcXHVuZGVyc2V0LiBPdGhlcndpc2UsXG4gICAgLy8gc2hpZnQgdGhlIHN5bWJvbCBzbyBpdHMgY2VudGVyIGxpZXMgb24gdGhlIGF4aXMgKHJ1bGUgMTMpLiBJdFxuICAgIC8vIGFwcGVhcnMgdGhhdCBvdXIgZm9udHMgaGF2ZSB0aGUgY2VudGVycyBvZiB0aGUgc3ltYm9scyBhbHJlYWR5XG4gICAgLy8gYWxtb3N0IG9uIHRoZSBheGlzLCBzbyB0aGVzZSBudW1iZXJzIGFyZSB2ZXJ5IHNtYWxsLiBOb3RlIHdlXG4gICAgLy8gZG9uJ3QgYWN0dWFsbHkgYXBwbHkgdGhpcyBoZXJlLCBidXQgaW5zdGVhZCBpdCBpcyB1c2VkIGVpdGhlciBpblxuICAgIC8vIHRoZSB2bGlzdCBjcmVhdGlvbiBvciBzZXBhcmF0ZWx5IHdoZW4gdGhlcmUgYXJlIG5vIGxpbWl0cy5cbiAgICBiYXNlU2hpZnQgPSAoYmFzZS5oZWlnaHQgLSBiYXNlLmRlcHRoKSAvIDIgLSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDsgLy8gVGhlIHNsYW50IG9mIHRoZSBzeW1ib2wgaXMganVzdCBpdHMgaXRhbGljIGNvcnJlY3Rpb24uXG4gICAgLy8gJEZsb3dGaXhNZVxuXG4gICAgc2xhbnQgPSBiYXNlLml0YWxpYztcbiAgfVxuXG4gIGlmIChoYXNMaW1pdHMpIHtcbiAgICByZXR1cm4gYXNzZW1ibGVTdXBTdWJfYXNzZW1ibGVTdXBTdWIoYmFzZSwgc3VwR3JvdXAsIHN1Ykdyb3VwLCBvcHRpb25zLCBzdHlsZSwgc2xhbnQsIGJhc2VTaGlmdCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJhc2VTaGlmdCkge1xuICAgICAgYmFzZS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcbiAgICAgIGJhc2Uuc3R5bGUudG9wID0gYmFzZVNoaWZ0ICsgXCJlbVwiO1xuICAgIH1cblxuICAgIHJldHVybiBiYXNlO1xuICB9XG59O1xuXG52YXIgb3BfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIG5vZGU7XG5cbiAgaWYgKGdyb3VwLnN5bWJvbCkge1xuICAgIC8vIFRoaXMgaXMgYSBzeW1ib2wuIEp1c3QgYWRkIHRoZSBzeW1ib2wuXG4gICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlX01hdGhOb2RlKFwibW9cIiwgW2J1aWxkTWF0aE1MX21ha2VUZXh0KGdyb3VwLm5hbWUsIGdyb3VwLm1vZGUpXSk7XG5cbiAgICBpZiAodXRpbHMuY29udGFpbnMobm9TdWNjZXNzb3IsIGdyb3VwLm5hbWUpKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImxhcmdlb3BcIiwgXCJmYWxzZVwiKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZ3JvdXAuYm9keSkge1xuICAgIC8vIFRoaXMgaXMgYW4gb3BlcmF0b3Igd2l0aCBjaGlsZHJlbi4gQWRkIHRoZW0uXG4gICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlX01hdGhOb2RlKFwibW9cIiwgYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMpKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIGlzIGEgdGV4dCBvcGVyYXRvci4gQWRkIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBmcm9tIHRoZVxuICAgIC8vIG9wZXJhdG9yJ3MgbmFtZS5cbiAgICBub2RlID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtaVwiLCBbbmV3IG1hdGhNTFRyZWVfVGV4dE5vZGUoZ3JvdXAubmFtZS5zbGljZSgxKSldKTsgLy8gQXBwZW5kIGFuIDxtbz4mQXBwbHlGdW5jdGlvbjs8L21vPi5cbiAgICAvLyByZWY6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9SRUMtTWF0aE1ML2NoYXAzXzIuaHRtbCNzZWMzLjIuNFxuXG4gICAgdmFyIG9wZXJhdG9yID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoXCJcXHUyMDYxXCIsIFwidGV4dFwiKV0pO1xuXG4gICAgaWYgKGdyb3VwLnBhcmVudElzU3VwU3ViKSB7XG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtb1wiLCBbbm9kZSwgb3BlcmF0b3JdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IG5ld0RvY3VtZW50RnJhZ21lbnQoW25vZGUsIG9wZXJhdG9yXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG52YXIgc2luZ2xlQ2hhckJpZ09wcyA9IHtcbiAgXCJcXHUyMjBGXCI6IFwiXFxcXHByb2RcIixcbiAgXCJcXHUyMjEwXCI6IFwiXFxcXGNvcHJvZFwiLFxuICBcIlxcdTIyMTFcIjogXCJcXFxcc3VtXCIsXG4gIFwiXFx1MjJDMFwiOiBcIlxcXFxiaWd3ZWRnZVwiLFxuICBcIlxcdTIyQzFcIjogXCJcXFxcYmlndmVlXCIsXG4gIFwiXFx1MjJDMlwiOiBcIlxcXFxiaWdjYXBcIixcbiAgXCJcXHUyMkMzXCI6IFwiXFxcXGJpZ2N1cFwiLFxuICBcIlxcdTJBMDBcIjogXCJcXFxcYmlnb2RvdFwiLFxuICBcIlxcdTJBMDFcIjogXCJcXFxcYmlnb3BsdXNcIixcbiAgXCJcXHUyQTAyXCI6IFwiXFxcXGJpZ290aW1lc1wiLFxuICBcIlxcdTJBMDRcIjogXCJcXFxcYmlndXBsdXNcIixcbiAgXCJcXHUyQTA2XCI6IFwiXFxcXGJpZ3NxY3VwXCJcbn07XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BcIixcbiAgbmFtZXM6IFtcIlxcXFxjb3Byb2RcIiwgXCJcXFxcYmlndmVlXCIsIFwiXFxcXGJpZ3dlZGdlXCIsIFwiXFxcXGJpZ3VwbHVzXCIsIFwiXFxcXGJpZ2NhcFwiLCBcIlxcXFxiaWdjdXBcIiwgXCJcXFxcaW50b3BcIiwgXCJcXFxccHJvZFwiLCBcIlxcXFxzdW1cIiwgXCJcXFxcYmlnb3RpbWVzXCIsIFwiXFxcXGJpZ29wbHVzXCIsIFwiXFxcXGJpZ29kb3RcIiwgXCJcXFxcYmlnc3FjdXBcIiwgXCJcXFxcc21hbGxpbnRcIiwgXCJcXHUyMjBGXCIsIFwiXFx1MjIxMFwiLCBcIlxcdTIyMTFcIiwgXCJcXHUyMkMwXCIsIFwiXFx1MjJDMVwiLCBcIlxcdTIyQzJcIiwgXCJcXHUyMkMzXCIsIFwiXFx1MkEwMFwiLCBcIlxcdTJBMDFcIiwgXCJcXHUyQTAyXCIsIFwiXFx1MkEwNFwiLCBcIlxcdTJBMDZcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgZk5hbWUgPSBmdW5jTmFtZTtcblxuICAgIGlmIChmTmFtZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGZOYW1lID0gc2luZ2xlQ2hhckJpZ09wc1tmTmFtZV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiB0cnVlLFxuICAgICAgcGFyZW50SXNTdXBTdWI6IGZhbHNlLFxuICAgICAgc3ltYm9sOiB0cnVlLFxuICAgICAgbmFtZTogZk5hbWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogb3BfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IG9wX21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBOb3RlOiBjYWxsaW5nIGRlZmluZUZ1bmN0aW9uIHdpdGggYSB0eXBlIHRoYXQncyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBvbmx5XG4vLyB3b3JrcyBiZWNhdXNlIHRoZSBzYW1lIGh0bWxCdWlsZGVyIGFuZCBtYXRobWxCdWlsZGVyIGFyZSBiZWluZyB1c2VkLlxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BcIixcbiAgbmFtZXM6IFtcIlxcXFxtYXRob3BcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZSxcbiAgICAgIHN5bWJvbDogZmFsc2UsXG4gICAgICBib2R5OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChib2R5KVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BfbWF0aG1sQnVpbGRlclxufSk7IC8vIFRoZXJlIGFyZSAyIGZsYWdzIGZvciBvcGVyYXRvcnM7IHdoZXRoZXIgdGhleSBwcm9kdWNlIGxpbWl0cyBpblxuLy8gZGlzcGxheXN0eWxlLCBhbmQgd2hldGhlciB0aGV5IGFyZSBzeW1ib2xzIGFuZCBzaG91bGQgZ3JvdyBpblxuLy8gZGlzcGxheXN0eWxlLiBUaGVzZSBmb3VyIGdyb3VwcyBjb3ZlciB0aGUgZm91ciBwb3NzaWJsZSBjaG9pY2VzLlxuXG52YXIgc2luZ2xlQ2hhckludGVncmFscyA9IHtcbiAgXCJcXHUyMjJCXCI6IFwiXFxcXGludFwiLFxuICBcIlxcdTIyMkNcIjogXCJcXFxcaWludFwiLFxuICBcIlxcdTIyMkRcIjogXCJcXFxcaWlpbnRcIixcbiAgXCJcXHUyMjJFXCI6IFwiXFxcXG9pbnRcIixcbiAgXCJcXHUyMjJGXCI6IFwiXFxcXG9paW50XCIsXG4gIFwiXFx1MjIzMFwiOiBcIlxcXFxvaWlpbnRcIlxufTsgLy8gTm8gbGltaXRzLCBub3Qgc3ltYm9sc1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BcIixcbiAgbmFtZXM6IFtcIlxcXFxhcmNzaW5cIiwgXCJcXFxcYXJjY29zXCIsIFwiXFxcXGFyY3RhblwiLCBcIlxcXFxhcmN0Z1wiLCBcIlxcXFxhcmNjdGdcIiwgXCJcXFxcYXJnXCIsIFwiXFxcXGNoXCIsIFwiXFxcXGNvc1wiLCBcIlxcXFxjb3NlY1wiLCBcIlxcXFxjb3NoXCIsIFwiXFxcXGNvdFwiLCBcIlxcXFxjb3RnXCIsIFwiXFxcXGNvdGhcIiwgXCJcXFxcY3NjXCIsIFwiXFxcXGN0Z1wiLCBcIlxcXFxjdGhcIiwgXCJcXFxcZGVnXCIsIFwiXFxcXGRpbVwiLCBcIlxcXFxleHBcIiwgXCJcXFxcaG9tXCIsIFwiXFxcXGtlclwiLCBcIlxcXFxsZ1wiLCBcIlxcXFxsblwiLCBcIlxcXFxsb2dcIiwgXCJcXFxcc2VjXCIsIFwiXFxcXHNpblwiLCBcIlxcXFxzaW5oXCIsIFwiXFxcXHNoXCIsIFwiXFxcXHRhblwiLCBcIlxcXFx0YW5oXCIsIFwiXFxcXHRnXCIsIFwiXFxcXHRoXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMy5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjMuZnVuY05hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZSxcbiAgICAgIHN5bWJvbDogZmFsc2UsXG4gICAgICBuYW1lOiBmdW5jTmFtZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BfbWF0aG1sQnVpbGRlclxufSk7IC8vIExpbWl0cywgbm90IHN5bWJvbHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm9wXCIsXG4gIG5hbWVzOiBbXCJcXFxcZGV0XCIsIFwiXFxcXGdjZFwiLCBcIlxcXFxpbmZcIiwgXCJcXFxcbGltXCIsIFwiXFxcXG1heFwiLCBcIlxcXFxtaW5cIiwgXCJcXFxcUHJcIiwgXCJcXFxcc3VwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmNCkge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmNC5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjQuZnVuY05hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiB0cnVlLFxuICAgICAgcGFyZW50SXNTdXBTdWI6IGZhbHNlLFxuICAgICAgc3ltYm9sOiBmYWxzZSxcbiAgICAgIG5hbWU6IGZ1bmNOYW1lXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IG9wX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBvcF9tYXRobWxCdWlsZGVyXG59KTsgLy8gTm8gbGltaXRzLCBzeW1ib2xzXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJvcFwiLFxuICBuYW1lczogW1wiXFxcXGludFwiLCBcIlxcXFxpaW50XCIsIFwiXFxcXGlpaW50XCIsIFwiXFxcXG9pbnRcIiwgXCJcXFxcb2lpbnRcIiwgXCJcXFxcb2lpaW50XCIsIFwiXFx1MjIyQlwiLCBcIlxcdTIyMkNcIiwgXCJcXHUyMjJEXCIsIFwiXFx1MjIyRVwiLCBcIlxcdTIyMkZcIiwgXCJcXHUyMjMwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmNSkge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmNS5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjUuZnVuY05hbWU7XG4gICAgdmFyIGZOYW1lID0gZnVuY05hbWU7XG5cbiAgICBpZiAoZk5hbWUubGVuZ3RoID09PSAxKSB7XG4gICAgICBmTmFtZSA9IHNpbmdsZUNoYXJJbnRlZ3JhbHNbZk5hbWVdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm9wXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxpbWl0czogZmFsc2UsXG4gICAgICBwYXJlbnRJc1N1cFN1YjogZmFsc2UsXG4gICAgICBzeW1ib2w6IHRydWUsXG4gICAgICBuYW1lOiBmTmFtZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvb3BlcmF0b3JuYW1lLmpzXG5cblxuXG5cblxuXG5cblxuLy8gTk9URTogVW5saWtlIG1vc3QgYGh0bWxCdWlsZGVyYHMsIHRoaXMgb25lIGhhbmRsZXMgbm90IG9ubHlcbi8vIFwib3BlcmF0b3JuYW1lXCIsIGJ1dCBhbHNvICBcInN1cHN1YlwiIHNpbmNlIFxcb3BlcmF0b3JuYW1lKiBjYW5cbnZhciBvcGVyYXRvcm5hbWVfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncnAsIG9wdGlvbnMpIHtcbiAgLy8gT3BlcmF0b3JzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIHBnLiA0NDMtNDQ0LCBydWxlIDEzKGEpLlxuICB2YXIgc3VwR3JvdXA7XG4gIHZhciBzdWJHcm91cDtcbiAgdmFyIGhhc0xpbWl0cyA9IGZhbHNlO1xuICB2YXIgZ3JvdXA7XG4gIHZhciBzdXBTdWIgPSBjaGVja05vZGVUeXBlKGdycCwgXCJzdXBzdWJcIik7XG5cbiAgaWYgKHN1cFN1Yikge1xuICAgIC8vIElmIHdlIGhhdmUgbGltaXRzLCBzdXBzdWIgd2lsbCBwYXNzIHVzIGl0cyBncm91cCB0byBoYW5kbGUuIFB1bGxcbiAgICAvLyBvdXQgdGhlIHN1cGVyc2NyaXB0IGFuZCBzdWJzY3JpcHQgYW5kIHNldCB0aGUgZ3JvdXAgdG8gdGhlIG9wIGluXG4gICAgLy8gaXRzIGJhc2UuXG4gICAgc3VwR3JvdXAgPSBzdXBTdWIuc3VwO1xuICAgIHN1Ykdyb3VwID0gc3VwU3ViLnN1YjtcbiAgICBncm91cCA9IGFzc2VydE5vZGVUeXBlKHN1cFN1Yi5iYXNlLCBcIm9wZXJhdG9ybmFtZVwiKTtcbiAgICBoYXNMaW1pdHMgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcIm9wZXJhdG9ybmFtZVwiKTtcbiAgfVxuXG4gIHZhciBiYXNlO1xuXG4gIGlmIChncm91cC5ib2R5Lmxlbmd0aCA+IDApIHtcbiAgICB2YXIgYm9keSA9IGdyb3VwLmJvZHkubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgLy8gJEZsb3dGaXhNZTogQ2hlY2sgaWYgdGhlIG5vZGUgaGFzIGEgc3RyaW5nIGB0ZXh0YCBwcm9wZXJ0eS5cbiAgICAgIHZhciBjaGlsZFRleHQgPSBjaGlsZC50ZXh0O1xuXG4gICAgICBpZiAodHlwZW9mIGNoaWxkVGV4dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICAgIG1vZGU6IGNoaWxkLm1vZGUsXG4gICAgICAgICAgdGV4dDogY2hpbGRUZXh0XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICB9XG4gICAgfSk7IC8vIENvbnNvbGlkYXRlIGZ1bmN0aW9uIG5hbWVzIGludG8gc3ltYm9sIGNoYXJhY3RlcnMuXG5cbiAgICB2YXIgZXhwcmVzc2lvbiA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oYm9keSwgb3B0aW9ucy53aXRoRm9udChcIm1hdGhybVwiKSwgdHJ1ZSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb24ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IGV4cHJlc3Npb25baV07XG5cbiAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSkge1xuICAgICAgICAvLyBQZXIgYW1zb3BuIHBhY2thZ2UsXG4gICAgICAgIC8vIGNoYW5nZSBtaW51cyB0byBoeXBoZW4gYW5kIFxcYXN0IHRvIGFzdGVyaXNrXG4gICAgICAgIGNoaWxkLnRleHQgPSBjaGlsZC50ZXh0LnJlcGxhY2UoL1xcdTIyMTIvLCBcIi1cIikucmVwbGFjZSgvXFx1MjIxNy8sIFwiKlwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCJdLCBleHByZXNzaW9uLCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCJdLCBbXSwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAoaGFzTGltaXRzKSB7XG4gICAgcmV0dXJuIGFzc2VtYmxlU3VwU3ViX2Fzc2VtYmxlU3VwU3ViKGJhc2UsIHN1cEdyb3VwLCBzdWJHcm91cCwgb3B0aW9ucywgb3B0aW9ucy5zdHlsZSwgMCwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cbn07XG5cbnZhciBvcGVyYXRvcm5hbWVfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgLy8gVGhlIHN0ZXBzIHRha2VuIGhlcmUgYXJlIHNpbWlsYXIgdG8gdGhlIGh0bWwgdmVyc2lvbi5cbiAgdmFyIGV4cHJlc3Npb24gPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucy53aXRoRm9udChcIm1hdGhybVwiKSk7IC8vIElzIGV4cHJlc3Npb24gYSBzdHJpbmcgb3IgaGFzIGl0IHNvbWV0aGluZyBsaWtlIGEgZnJhY3Rpb24/XG5cbiAgdmFyIGlzQWxsU3RyaW5nID0gdHJ1ZTsgLy8gZGVmYXVsdFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlID0gZXhwcmVzc2lvbltpXTtcblxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgbWF0aE1MVHJlZS5TcGFjZU5vZGUpIHsvLyBEbyBub3RoaW5nXG4gICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgbWF0aE1MVHJlZS5NYXRoTm9kZSkge1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIm1pXCI6XG4gICAgICAgIGNhc2UgXCJtblwiOlxuICAgICAgICBjYXNlIFwibXNcIjpcbiAgICAgICAgY2FzZSBcIm1zcGFjZVwiOlxuICAgICAgICBjYXNlIFwibXRleHRcIjpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gRG8gbm90aGluZyB5ZXQuXG5cbiAgICAgICAgY2FzZSBcIm1vXCI6XG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gbm9kZS5jaGlsZHJlblswXTtcblxuICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGNoaWxkIGluc3RhbmNlb2YgbWF0aE1MVHJlZS5UZXh0Tm9kZSkge1xuICAgICAgICAgICAgICBjaGlsZC50ZXh0ID0gY2hpbGQudGV4dC5yZXBsYWNlKC9cXHUyMjEyLywgXCItXCIpLnJlcGxhY2UoL1xcdTIyMTcvLCBcIipcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpc0FsbFN0cmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpc0FsbFN0cmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpc0FsbFN0cmluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc0FsbFN0cmluZykge1xuICAgIC8vIFdyaXRlIGEgc2luZ2xlIFRleHROb2RlIGluc3RlYWQgb2YgbXVsdGlwbGUgbmVzdGVkIHRhZ3MuXG4gICAgdmFyIHdvcmQgPSBleHByZXNzaW9uLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudG9UZXh0KCk7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgICBleHByZXNzaW9uID0gW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKHdvcmQpXTtcbiAgfVxuXG4gIHZhciBpZGVudGlmaWVyID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtaVwiLCBleHByZXNzaW9uKTtcbiAgaWRlbnRpZmllci5zZXRBdHRyaWJ1dGUoXCJtYXRodmFyaWFudFwiLCBcIm5vcm1hbFwiKTsgLy8gXFx1MjA2MSBpcyB0aGUgc2FtZSBhcyAmQXBwbHlGdW5jdGlvbjtcbiAgLy8gcmVmOiBodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2NoYXJzZXRzL3JlZl9odG1sX2VudGl0aWVzX2EuYXNwXG5cbiAgdmFyIG9wZXJhdG9yID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoXCJcXHUyMDYxXCIsIFwidGV4dFwiKV0pO1xuXG4gIGlmIChncm91cC5wYXJlbnRJc1N1cFN1Yikge1xuICAgIHJldHVybiBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtpZGVudGlmaWVyLCBvcGVyYXRvcl0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBtYXRoTUxUcmVlLm5ld0RvY3VtZW50RnJhZ21lbnQoW2lkZW50aWZpZXIsIG9wZXJhdG9yXSk7XG4gIH1cbn07IC8vIFxcb3BlcmF0b3JuYW1lXG4vLyBhbXNvcG4uZHR4OiBcXG1hdGhvcHsjMVxca2VyblxcekBcXG9wZXJhdG9yQGZvbnQjM31cXG5ld21jb2Rlc0BcblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BlcmF0b3JuYW1lXCIsXG4gIG5hbWVzOiBbXCJcXFxcb3BlcmF0b3JuYW1lXCIsIFwiXFxcXG9wZXJhdG9ybmFtZSpcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BlcmF0b3JuYW1lXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpLFxuICAgICAgYWx3YXlzSGFuZGxlU3VwU3ViOiBmdW5jTmFtZSA9PT0gXCJcXFxcb3BlcmF0b3JuYW1lKlwiLFxuICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcGVyYXRvcm5hbWVfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IG9wZXJhdG9ybmFtZV9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9vcmRncm91cC5qc1xuXG5cblxuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJvcmRncm91cFwiLFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBpZiAoZ3JvdXAuc2VtaXNpbXBsZSkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VGcmFnbWVudChidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMsIGZhbHNlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucywgdHJ1ZSksIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkRXhwcmVzc2lvblJvdyhncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvb3ZlcmxpbmUuanNcblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3ZlcmxpbmVcIixcbiAgbmFtZXM6IFtcIlxcXFxvdmVybGluZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3ZlcmxpbmVcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIE92ZXJsaW5lcyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZyA0NDMsIFJ1bGUgOS5cbiAgICAvLyBCdWlsZCB0aGUgaW5uZXIgZ3JvdXAgaW4gdGhlIGNyYW1wZWQgc3R5bGUuXG4gICAgdmFyIGlubmVyR3JvdXAgPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zLmhhdmluZ0NyYW1wZWRTdHlsZSgpKTsgLy8gQ3JlYXRlIHRoZSBsaW5lIGFib3ZlIHRoZSBib2R5XG5cbiAgICB2YXIgbGluZSA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcIm92ZXJsaW5lLWxpbmVcIiwgb3B0aW9ucyk7IC8vIEdlbmVyYXRlIHRoZSB2bGlzdCwgd2l0aCB0aGUgYXBwcm9wcmlhdGUga2VybnNcblxuICAgIHZhciBkZWZhdWx0UnVsZVRoaWNrbmVzcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWZhdWx0UnVsZVRoaWNrbmVzcztcbiAgICB2YXIgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW5uZXJHcm91cFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogMyAqIGRlZmF1bHRSdWxlVGhpY2tuZXNzXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBsaW5lXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBkZWZhdWx0UnVsZVRoaWNrbmVzc1xuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcIm92ZXJsaW5lXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBvcGVyYXRvciA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKFwiXFx1MjAzRVwiKV0pO1xuICAgIG9wZXJhdG9yLnNldEF0dHJpYnV0ZShcInN0cmV0Y2h5XCIsIFwidHJ1ZVwiKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW92ZXJcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyksIG9wZXJhdG9yXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhY2NlbnRcIiwgXCJ0cnVlXCIpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9waGFudG9tLmpzXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInBoYW50b21cIixcbiAgbmFtZXM6IFtcIlxcXFxwaGFudG9tXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInBoYW50b21cIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgZWxlbWVudHMgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMud2l0aFBoYW50b20oKSwgZmFsc2UpOyAvLyBcXHBoYW50b20gaXNuJ3Qgc3VwcG9zZWQgdG8gYWZmZWN0IHRoZSBlbGVtZW50cyBpdCBjb250YWlucy5cbiAgICAvLyBTZWUgXCJjb2xvclwiIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUZyYWdtZW50KGVsZW1lbnRzKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGhhbnRvbVwiLCBpbm5lcik7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImhwaGFudG9tXCIsXG4gIG5hbWVzOiBbXCJcXFxcaHBoYW50b21cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJocGhhbnRvbVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXSwgW2J1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMud2l0aFBoYW50b20oKSldKTtcbiAgICBub2RlLmhlaWdodCA9IDA7XG4gICAgbm9kZS5kZXB0aCA9IDA7XG5cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG5vZGUuY2hpbGRyZW5baV0uaGVpZ2h0ID0gMDtcbiAgICAgICAgbm9kZS5jaGlsZHJlbltpXS5kZXB0aCA9IDA7XG4gICAgICB9XG4gICAgfSAvLyBTZWUgc21hc2ggZm9yIGNvbW1lbnQgcmU6IHVzZSBvZiBtYWtlVkxpc3RcblxuXG4gICAgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBub2RlXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyBGb3Igc3BhY2luZywgVGVYIHRyZWF0cyBcXHNtYXNoIGFzIGEgbWF0aCBncm91cCAoc2FtZSBzcGFjaW5nIGFzIG9yZCkuXG5cbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXSwgW25vZGVdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChncm91cC5ib2R5KSwgb3B0aW9ucyk7XG4gICAgdmFyIHBoYW50b20gPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1waGFudG9tXCIsIGlubmVyKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBhZGRlZFwiLCBbcGhhbnRvbV0pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIFwiMHB4XCIpO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZGVwdGhcIiwgXCIwcHhcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInZwaGFudG9tXCIsXG4gIG5hbWVzOiBbXCJcXFxcdnBoYW50b21cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjMsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjMucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ2cGhhbnRvbVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiaW5uZXJcIl0sIFtidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zLndpdGhQaGFudG9tKCkpXSk7XG4gICAgdmFyIGZpeCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImZpeFwiXSwgW10pO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwicmxhcFwiXSwgW2lubmVyLCBmaXhdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChncm91cC5ib2R5KSwgb3B0aW9ucyk7XG4gICAgdmFyIHBoYW50b20gPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1waGFudG9tXCIsIGlubmVyKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBhZGRlZFwiLCBbcGhhbnRvbV0pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgXCIwcHhcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3JhaXNlYm94LmpzXG5cblxuXG5cblxuXG4gLy8gQm94IG1hbmlwdWxhdGlvblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwicmFpc2Vib3hcIixcbiAgbmFtZXM6IFtcIlxcXFxyYWlzZWJveFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyLFxuICAgIGFyZ1R5cGVzOiBbXCJzaXplXCIsIFwiaGJveFwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYW1vdW50ID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJzaXplXCIpLnZhbHVlO1xuICAgIHZhciBib2R5ID0gYXJnc1sxXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJyYWlzZWJveFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBkeTogYW1vdW50LFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBib2R5ID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyk7XG4gICAgdmFyIGR5ID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5keSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgIHBvc2l0aW9uRGF0YTogLWR5LFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBib2R5XG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcbiAgICB2YXIgZHkgPSBncm91cC5keS5udW1iZXIgKyBncm91cC5keS51bml0O1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwidm9mZnNldFwiLCBkeSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3J1bGUuanNcblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwicnVsZVwiLFxuICBuYW1lczogW1wiXFxcXHJ1bGVcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIiwgXCJzaXplXCIsIFwic2l6ZVwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIHNoaWZ0ID0gb3B0QXJnc1swXTtcbiAgICB2YXIgd2lkdGggPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcInNpemVcIik7XG4gICAgdmFyIGhlaWdodCA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMV0sIFwic2l6ZVwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJydWxlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIHNoaWZ0OiBzaGlmdCAmJiBhc3NlcnROb2RlVHlwZShzaGlmdCwgXCJzaXplXCIpLnZhbHVlLFxuICAgICAgd2lkdGg6IHdpZHRoLnZhbHVlLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQudmFsdWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBNYWtlIGFuIGVtcHR5IHNwYW4gZm9yIHRoZSBydWxlXG4gICAgdmFyIHJ1bGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwicnVsZVwiXSwgW10sIG9wdGlvbnMpOyAvLyBDYWxjdWxhdGUgdGhlIHNoaWZ0LCB3aWR0aCwgYW5kIGhlaWdodCBvZiB0aGUgcnVsZSwgYW5kIGFjY291bnQgZm9yIHVuaXRzXG5cbiAgICB2YXIgd2lkdGggPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLndpZHRoLCBvcHRpb25zKTtcbiAgICB2YXIgaGVpZ2h0ID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5oZWlnaHQsIG9wdGlvbnMpO1xuICAgIHZhciBzaGlmdCA9IGdyb3VwLnNoaWZ0ID8gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5zaGlmdCwgb3B0aW9ucykgOiAwOyAvLyBTdHlsZSB0aGUgcnVsZSB0byB0aGUgcmlnaHQgc2l6ZVxuXG4gICAgcnVsZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoID0gd2lkdGggKyBcImVtXCI7XG4gICAgcnVsZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCA9IGhlaWdodCArIFwiZW1cIjtcbiAgICBydWxlLnN0eWxlLmJvdHRvbSA9IHNoaWZ0ICsgXCJlbVwiOyAvLyBSZWNvcmQgdGhlIGhlaWdodCBhbmQgd2lkdGhcblxuICAgIHJ1bGUud2lkdGggPSB3aWR0aDtcbiAgICBydWxlLmhlaWdodCA9IGhlaWdodCArIHNoaWZ0O1xuICAgIHJ1bGUuZGVwdGggPSAtc2hpZnQ7IC8vIEZvbnQgc2l6ZSBpcyB0aGUgbnVtYmVyIGxhcmdlIGVub3VnaCB0aGF0IHRoZSBicm93c2VyIHdpbGxcbiAgICAvLyByZXNlcnZlIGF0IGxlYXN0IGBhYnNIZWlnaHRgIHNwYWNlIGFib3ZlIHRoZSBiYXNlbGluZS5cbiAgICAvLyBUaGUgMS4xMjUgZmFjdG9yIHdhcyBlbXBpcmljYWxseSBkZXRlcm1pbmVkXG5cbiAgICBydWxlLm1heEZvbnRTaXplID0gaGVpZ2h0ICogMS4xMjUgKiBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIHJldHVybiBydWxlO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC53aWR0aCwgb3B0aW9ucyk7XG4gICAgdmFyIGhlaWdodCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuaGVpZ2h0LCBvcHRpb25zKTtcbiAgICB2YXIgc2hpZnQgPSBncm91cC5zaGlmdCA/IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuc2hpZnQsIG9wdGlvbnMpIDogMDtcbiAgICB2YXIgY29sb3IgPSBvcHRpb25zLmNvbG9yICYmIG9wdGlvbnMuZ2V0Q29sb3IoKSB8fCBcImJsYWNrXCI7XG4gICAgdmFyIHJ1bGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1zcGFjZVwiKTtcbiAgICBydWxlLnNldEF0dHJpYnV0ZShcIm1hdGhiYWNrZ3JvdW5kXCIsIGNvbG9yKTtcbiAgICBydWxlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIHdpZHRoICsgXCJlbVwiKTtcbiAgICBydWxlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBoZWlnaHQgKyBcImVtXCIpO1xuICAgIHZhciB3cmFwcGVyID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGFkZGVkXCIsIFtydWxlXSk7XG5cbiAgICBpZiAoc2hpZnQgPj0gMCkge1xuICAgICAgd3JhcHBlci5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgXCIrXCIgKyBzaGlmdCArIFwiZW1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIHNoaWZ0ICsgXCJlbVwiKTtcbiAgICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKFwiZGVwdGhcIiwgXCIrXCIgKyAtc2hpZnQgKyBcImVtXCIpO1xuICAgIH1cblxuICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKFwidm9mZnNldFwiLCBzaGlmdCArIFwiZW1cIik7XG4gICAgcmV0dXJuIHdyYXBwZXI7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3NpemluZy5qc1xuXG5cblxuXG5cbmZ1bmN0aW9uIHNpemluZ0dyb3VwKHZhbHVlLCBvcHRpb25zLCBiYXNlT3B0aW9ucykge1xuICB2YXIgaW5uZXIgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKHZhbHVlLCBvcHRpb25zLCBmYWxzZSk7XG4gIHZhciBtdWx0aXBsaWVyID0gb3B0aW9ucy5zaXplTXVsdGlwbGllciAvIGJhc2VPcHRpb25zLnNpemVNdWx0aXBsaWVyOyAvLyBBZGQgc2l6ZS1yZXNldHRpbmcgY2xhc3NlcyB0byB0aGUgaW5uZXIgbGlzdCBhbmQgc2V0IG1heEZvbnRTaXplXG4gIC8vIG1hbnVhbGx5LiBIYW5kbGUgbmVzdGVkIHNpemUgY2hhbmdlcy5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGlubmVyLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBvcyA9IGlubmVyW2ldLmNsYXNzZXMuaW5kZXhPZihcInNpemluZ1wiKTtcblxuICAgIGlmIChwb3MgPCAwKSB7XG4gICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShpbm5lcltpXS5jbGFzc2VzLCBvcHRpb25zLnNpemluZ0NsYXNzZXMoYmFzZU9wdGlvbnMpKTtcbiAgICB9IGVsc2UgaWYgKGlubmVyW2ldLmNsYXNzZXNbcG9zICsgMV0gPT09IFwicmVzZXQtc2l6ZVwiICsgb3B0aW9ucy5zaXplKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgbmVzdGVkIHNpemUgY2hhbmdlOiBlLmcuLCBpbm5lcltpXSBpcyB0aGUgXCJiXCIgaW5cbiAgICAgIC8vIGBcXEh1Z2UgYSBcXHNtYWxsIGJgLiBPdmVycmlkZSB0aGUgb2xkIHNpemUgKHRoZSBgcmVzZXQtYCBjbGFzcylcbiAgICAgIC8vIGJ1dCBub3QgdGhlIG5ldyBzaXplLlxuICAgICAgaW5uZXJbaV0uY2xhc3Nlc1twb3MgKyAxXSA9IFwicmVzZXQtc2l6ZVwiICsgYmFzZU9wdGlvbnMuc2l6ZTtcbiAgICB9XG5cbiAgICBpbm5lcltpXS5oZWlnaHQgKj0gbXVsdGlwbGllcjtcbiAgICBpbm5lcltpXS5kZXB0aCAqPSBtdWx0aXBsaWVyO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VGcmFnbWVudChpbm5lcik7XG59XG52YXIgc2l6ZUZ1bmNzID0gW1wiXFxcXHRpbnlcIiwgXCJcXFxcc2l4cHRzaXplXCIsIFwiXFxcXHNjcmlwdHNpemVcIiwgXCJcXFxcZm9vdG5vdGVzaXplXCIsIFwiXFxcXHNtYWxsXCIsIFwiXFxcXG5vcm1hbHNpemVcIiwgXCJcXFxcbGFyZ2VcIiwgXCJcXFxcTGFyZ2VcIiwgXCJcXFxcTEFSR0VcIiwgXCJcXFxcaHVnZVwiLCBcIlxcXFxIdWdlXCJdO1xudmFyIHNpemluZ19odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIC8vIEhhbmRsZSBzaXppbmcgb3BlcmF0b3JzIGxpa2UgXFxIdWdlLiBSZWFsIFRlWCBkb2Vzbid0IGFjdHVhbGx5IGFsbG93XG4gIC8vIHRoZXNlIGZ1bmN0aW9ucyBpbnNpZGUgb2YgbWF0aCBleHByZXNzaW9ucywgc28gd2UgZG8gc29tZSBzcGVjaWFsXG4gIC8vIGhhbmRsaW5nLlxuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU2l6ZShncm91cC5zaXplKTtcbiAgcmV0dXJuIHNpemluZ0dyb3VwKGdyb3VwLmJvZHksIG5ld09wdGlvbnMsIG9wdGlvbnMpO1xufTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJzaXppbmdcIixcbiAgbmFtZXM6IHNpemVGdW5jcyxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIGJyZWFrT25Ub2tlblRleHQgPSBfcmVmLmJyZWFrT25Ub2tlblRleHQsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZSxcbiAgICAgICAgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKGZhbHNlLCBicmVha09uVG9rZW5UZXh0KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzaXppbmdcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHNpemUgdG8gdXNlIGJhc2VkIG9uIHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyBhYm92ZVxuICAgICAgc2l6ZTogc2l6ZUZ1bmNzLmluZGV4T2YoZnVuY05hbWUpICsgMSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogc2l6aW5nX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1NpemUoZ3JvdXAuc2l6ZSk7XG4gICAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG5ld09wdGlvbnMpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3R5bGVcIiwgaW5uZXIpOyAvLyBUT0RPKGVtaWx5KTogVGhpcyBkb2Vzbid0IHByb2R1Y2UgdGhlIGNvcnJlY3Qgc2l6ZSBmb3IgbmVzdGVkIHNpemVcbiAgICAvLyBjaGFuZ2VzLCBiZWNhdXNlIHdlIGRvbid0IGtlZXAgc3RhdGUgb2Ygd2hhdCBzdHlsZSB3ZSdyZSBjdXJyZW50bHlcbiAgICAvLyBpbiwgc28gd2UgY2FuJ3QgcmVzZXQgdGhlIHNpemUgdG8gbm9ybWFsIGJlZm9yZSBjaGFuZ2luZyBpdC4gIE5vd1xuICAgIC8vIHRoYXQgd2UncmUgcGFzc2luZyBhbiBvcHRpb25zIHBhcmFtZXRlciB3ZSBzaG91bGQgYmUgYWJsZSB0byBmaXhcbiAgICAvLyB0aGlzLlxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRoc2l6ZVwiLCBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyICsgXCJlbVwiKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvc21hc2guanNcbi8vIHNtYXNoLCB3aXRoIG9wdGlvbmFsIFt0Yl0sIGFzIGluIEFNU1xuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInNtYXNoXCIsXG4gIG5hbWVzOiBbXCJcXFxcc21hc2hcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIHNtYXNoSGVpZ2h0ID0gZmFsc2U7XG4gICAgdmFyIHNtYXNoRGVwdGggPSBmYWxzZTtcbiAgICB2YXIgdGJBcmcgPSBvcHRBcmdzWzBdICYmIGFzc2VydE5vZGVUeXBlKG9wdEFyZ3NbMF0sIFwib3JkZ3JvdXBcIik7XG5cbiAgICBpZiAodGJBcmcpIHtcbiAgICAgIC8vIE9wdGlvbmFsIFt0Yl0gYXJndW1lbnQgaXMgZW5nYWdlZC5cbiAgICAgIC8vIHJlZjogYW1zbWF0aDogXFxyZW5ld2NvbW1hbmR7XFxzbWFzaH1bMV1bdGJdeyVcbiAgICAgIC8vICAgICAgICAgICAgICAgZGVmXFxtYkB0e1xcaHR9XFxkZWZcXG1iQGJ7XFxkcH1cXGRlZlxcbWJAdGJ7XFxodFxcekBcXHpAXFxkcH0lXG4gICAgICB2YXIgbGV0dGVyID0gXCJcIjtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YkFyZy5ib2R5Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBub2RlID0gdGJBcmcuYm9keVtpXTsgLy8gJEZsb3dGaXhNZTogTm90IGV2ZXJ5IG5vZGUgdHlwZSBoYXMgYSBgdGV4dGAgcHJvcGVydHkuXG5cbiAgICAgICAgbGV0dGVyID0gbm9kZS50ZXh0O1xuXG4gICAgICAgIGlmIChsZXR0ZXIgPT09IFwidFwiKSB7XG4gICAgICAgICAgc21hc2hIZWlnaHQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGxldHRlciA9PT0gXCJiXCIpIHtcbiAgICAgICAgICBzbWFzaERlcHRoID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzbWFzaEhlaWdodCA9IGZhbHNlO1xuICAgICAgICAgIHNtYXNoRGVwdGggPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzbWFzaEhlaWdodCA9IHRydWU7XG4gICAgICBzbWFzaERlcHRoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwic21hc2hcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYm9keSxcbiAgICAgIHNtYXNoSGVpZ2h0OiBzbWFzaEhlaWdodCxcbiAgICAgIHNtYXNoRGVwdGg6IHNtYXNoRGVwdGhcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtdLCBbYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICAgIGlmICghZ3JvdXAuc21hc2hIZWlnaHQgJiYgIWdyb3VwLnNtYXNoRGVwdGgpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIGlmIChncm91cC5zbWFzaEhlaWdodCkge1xuICAgICAgbm9kZS5oZWlnaHQgPSAwOyAvLyBJbiBvcmRlciB0byBpbmZsdWVuY2UgbWFrZVZMaXN0LCB3ZSBoYXZlIHRvIHJlc2V0IHRoZSBjaGlsZHJlbi5cblxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbltpXS5oZWlnaHQgPSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnNtYXNoRGVwdGgpIHtcbiAgICAgIG5vZGUuZGVwdGggPSAwO1xuXG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICBub2RlLmNoaWxkcmVuW19pXS5kZXB0aCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIEF0IHRoaXMgcG9pbnQsIHdlJ3ZlIHJlc2V0IHRoZSBUZVgtbGlrZSBoZWlnaHQgYW5kIGRlcHRoIHZhbHVlcy5cbiAgICAvLyBCdXQgdGhlIHNwYW4gc3RpbGwgaGFzIGFuIEhUTUwgbGluZSBoZWlnaHQuXG4gICAgLy8gbWFrZVZMaXN0IGFwcGxpZXMgXCJkaXNwbGF5OiB0YWJsZS1jZWxsXCIsIHdoaWNoIHByZXZlbnRzIHRoZSBicm93c2VyXG4gICAgLy8gZnJvbSBhY3Rpbmcgb24gdGhhdCBsaW5lIGhlaWdodC4gU28gd2UnbGwgY2FsbCBtYWtlVkxpc3Qgbm93LlxuXG5cbiAgICB2YXIgc21hc2hlZE5vZGUgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogbm9kZVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTsgLy8gRm9yIHNwYWNpbmcsIFRlWCB0cmVhdHMgXFxocGhhbnRvbSBhcyBhIG1hdGggZ3JvdXAgKHNhbWUgc3BhY2luZyBhcyBvcmQpLlxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFtzbWFzaGVkTm9kZV0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICAgIGlmIChncm91cC5zbWFzaEhlaWdodCkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgXCIwcHhcIik7XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnNtYXNoRGVwdGgpIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZGVwdGhcIiwgXCIwcHhcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3NxcnQuanNcblxuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInNxcnRcIixcbiAgbmFtZXM6IFtcIlxcXFxzcXJ0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgbnVtT3B0aW9uYWxBcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgaW5kZXggPSBvcHRBcmdzWzBdO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzcXJ0XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGJvZHksXG4gICAgICBpbmRleDogaW5kZXhcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBTcXVhcmUgcm9vdHMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgcGcuIDQ0MywgUnVsZSAxMS5cbiAgICAvLyBGaXJzdCwgd2UgZG8gdGhlIHNhbWUgc3RlcHMgYXMgaW4gb3ZlcmxpbmUgdG8gYnVpbGQgdGhlIGlubmVyIGdyb3VwXG4gICAgLy8gYW5kIGxpbmVcbiAgICB2YXIgaW5uZXIgPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zLmhhdmluZ0NyYW1wZWRTdHlsZSgpKTtcblxuICAgIGlmIChpbm5lci5oZWlnaHQgPT09IDApIHtcbiAgICAgIC8vIFJlbmRlciBhIHNtYWxsIHN1cmQuXG4gICAgICBpbm5lci5oZWlnaHQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodDtcbiAgICB9IC8vIFNvbWUgZ3JvdXBzIGNhbiByZXR1cm4gZG9jdW1lbnQgZnJhZ21lbnRzLiAgSGFuZGxlIHRob3NlIGJ5IHdyYXBwaW5nXG4gICAgLy8gdGhlbSBpbiBhIHNwYW4uXG5cblxuICAgIGlubmVyID0gYnVpbGRDb21tb24ud3JhcEZyYWdtZW50KGlubmVyLCBvcHRpb25zKTsgLy8gQ2FsY3VsYXRlIHRoZSBtaW5pbXVtIHNpemUgZm9yIHRoZSBcXHN1cmQgZGVsaW1pdGVyXG5cbiAgICB2YXIgbWV0cmljcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKTtcbiAgICB2YXIgdGhldGEgPSBtZXRyaWNzLmRlZmF1bHRSdWxlVGhpY2tuZXNzO1xuICAgIHZhciBwaGkgPSB0aGV0YTtcblxuICAgIGlmIChvcHRpb25zLnN0eWxlLmlkIDwgc3JjX1N0eWxlLlRFWFQuaWQpIHtcbiAgICAgIHBoaSA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS54SGVpZ2h0O1xuICAgIH0gLy8gQ2FsY3VsYXRlIHRoZSBjbGVhcmFuY2UgYmV0d2VlbiB0aGUgYm9keSBhbmQgbGluZVxuXG5cbiAgICB2YXIgbGluZUNsZWFyYW5jZSA9IHRoZXRhICsgcGhpIC8gNDtcbiAgICB2YXIgbWluRGVsaW1pdGVySGVpZ2h0ID0gaW5uZXIuaGVpZ2h0ICsgaW5uZXIuZGVwdGggKyBsaW5lQ2xlYXJhbmNlICsgdGhldGE7IC8vIENyZWF0ZSBhIHNxcnQgU1ZHIG9mIHRoZSByZXF1aXJlZCBtaW5pbXVtIHNpemVcblxuICAgIHZhciBfZGVsaW1pdGVyJHNxcnRJbWFnZSA9IGRlbGltaXRlci5zcXJ0SW1hZ2UobWluRGVsaW1pdGVySGVpZ2h0LCBvcHRpb25zKSxcbiAgICAgICAgaW1nID0gX2RlbGltaXRlciRzcXJ0SW1hZ2Uuc3BhbixcbiAgICAgICAgcnVsZVdpZHRoID0gX2RlbGltaXRlciRzcXJ0SW1hZ2UucnVsZVdpZHRoLFxuICAgICAgICBhZHZhbmNlV2lkdGggPSBfZGVsaW1pdGVyJHNxcnRJbWFnZS5hZHZhbmNlV2lkdGg7XG5cbiAgICB2YXIgZGVsaW1EZXB0aCA9IGltZy5oZWlnaHQgLSBydWxlV2lkdGg7IC8vIEFkanVzdCB0aGUgY2xlYXJhbmNlIGJhc2VkIG9uIHRoZSBkZWxpbWl0ZXIgc2l6ZVxuXG4gICAgaWYgKGRlbGltRGVwdGggPiBpbm5lci5oZWlnaHQgKyBpbm5lci5kZXB0aCArIGxpbmVDbGVhcmFuY2UpIHtcbiAgICAgIGxpbmVDbGVhcmFuY2UgPSAobGluZUNsZWFyYW5jZSArIGRlbGltRGVwdGggLSBpbm5lci5oZWlnaHQgLSBpbm5lci5kZXB0aCkgLyAyO1xuICAgIH0gLy8gU2hpZnQgdGhlIHNxcnQgaW1hZ2VcblxuXG4gICAgdmFyIGltZ1NoaWZ0ID0gaW1nLmhlaWdodCAtIGlubmVyLmhlaWdodCAtIGxpbmVDbGVhcmFuY2UgLSBydWxlV2lkdGg7XG4gICAgaW5uZXIuc3R5bGUucGFkZGluZ0xlZnQgPSBhZHZhbmNlV2lkdGggKyBcImVtXCI7IC8vIE92ZXJsYXkgdGhlIGltYWdlIGFuZCB0aGUgYXJndW1lbnQuXG5cbiAgICB2YXIgYm9keSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lcixcbiAgICAgICAgd3JhcHBlckNsYXNzZXM6IFtcInN2Zy1hbGlnblwiXVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogLShpbm5lci5oZWlnaHQgKyBpbWdTaGlmdClcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGltZ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogcnVsZVdpZHRoXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFncm91cC5pbmRleCkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJzcXJ0XCJdLCBbYm9keV0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgdGhlIG9wdGlvbmFsIHJvb3QgaW5kZXhcbiAgICAgIC8vIFRoZSBpbmRleCBpcyBhbHdheXMgaW4gc2NyaXB0c2NyaXB0IHN0eWxlXG4gICAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoc3JjX1N0eWxlLlNDUklQVFNDUklQVCk7XG4gICAgICB2YXIgcm9vdG0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5pbmRleCwgbmV3T3B0aW9ucywgb3B0aW9ucyk7IC8vIFRoZSBhbW91bnQgdGhlIGluZGV4IGlzIHNoaWZ0ZWQgYnkuIFRoaXMgaXMgdGFrZW4gZnJvbSB0aGUgVGVYXG4gICAgICAvLyBzb3VyY2UsIGluIHRoZSBkZWZpbml0aW9uIG9mIGBcXHJAQHRgLlxuXG4gICAgICB2YXIgdG9TaGlmdCA9IDAuNiAqIChib2R5LmhlaWdodCAtIGJvZHkuZGVwdGgpOyAvLyBCdWlsZCBhIFZMaXN0IHdpdGggdGhlIHN1cGVyc2NyaXB0IHNoaWZ0ZWQgdXAgY29ycmVjdGx5XG5cbiAgICAgIHZhciByb290Vkxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiAtdG9TaGlmdCxcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogcm9vdG1cbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpOyAvLyBBZGQgYSBjbGFzcyBzdXJyb3VuZGluZyBpdCBzbyB3ZSBjYW4gYWRkIG9uIHRoZSBhcHByb3ByaWF0ZVxuICAgICAgLy8ga2VybmluZ1xuXG4gICAgICB2YXIgcm9vdFZMaXN0V3JhcCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcInJvb3RcIl0sIFtyb290Vkxpc3RdKTtcbiAgICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwic3FydFwiXSwgW3Jvb3RWTGlzdFdyYXAsIGJvZHldLCBvcHRpb25zKTtcbiAgICB9XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgYm9keSA9IGdyb3VwLmJvZHksXG4gICAgICAgIGluZGV4ID0gZ3JvdXAuaW5kZXg7XG4gICAgcmV0dXJuIGluZGV4ID8gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcm9vdFwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChib2R5LCBvcHRpb25zKSwgYnVpbGRNYXRoTUxfYnVpbGRHcm91cChpbmRleCwgb3B0aW9ucyldKSA6IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXNxcnRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoYm9keSwgb3B0aW9ucyldKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvc3R5bGluZy5qc1xuXG5cblxuXG5cbnZhciBzdHlsaW5nX3N0eWxlTWFwID0ge1xuICBcImRpc3BsYXlcIjogc3JjX1N0eWxlLkRJU1BMQVksXG4gIFwidGV4dFwiOiBzcmNfU3R5bGUuVEVYVCxcbiAgXCJzY3JpcHRcIjogc3JjX1N0eWxlLlNDUklQVCxcbiAgXCJzY3JpcHRzY3JpcHRcIjogc3JjX1N0eWxlLlNDUklQVFNDUklQVFxufTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJzdHlsaW5nXCIsXG4gIG5hbWVzOiBbXCJcXFxcZGlzcGxheXN0eWxlXCIsIFwiXFxcXHRleHRzdHlsZVwiLCBcIlxcXFxzY3JpcHRzdHlsZVwiLCBcIlxcXFxzY3JpcHRzY3JpcHRzdHlsZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIGJyZWFrT25Ub2tlblRleHQgPSBfcmVmLmJyZWFrT25Ub2tlblRleHQsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZSxcbiAgICAgICAgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgLy8gcGFyc2Ugb3V0IHRoZSBpbXBsaWNpdCBib2R5XG4gICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKHRydWUsIGJyZWFrT25Ub2tlblRleHQpOyAvLyBUT0RPOiBSZWZhY3RvciB0byBhdm9pZCBkdXBsaWNhdGluZyBzdHlsZU1hcCBpbiBtdWx0aXBsZSBwbGFjZXMgKGUuZy5cbiAgICAvLyBoZXJlIGFuZCBpbiBidWlsZEhUTUwgYW5kIGRlLWR1cGUgdGhlIGVudW1lcmF0aW9uIG9mIGFsbCB0aGUgc3R5bGVzKS5cbiAgICAvLyAkRmxvd0ZpeE1lOiBUaGUgbmFtZXMgYWJvdmUgZXhhY3RseSBtYXRjaCB0aGUgc3R5bGVzLlxuXG4gICAgdmFyIHN0eWxlID0gZnVuY05hbWUuc2xpY2UoMSwgZnVuY05hbWUubGVuZ3RoIC0gNSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwic3R5bGluZ1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgc3R5bGUgdG8gdXNlIGJ5IHB1bGxpbmcgb3V0IHRoZSBzdHlsZSBmcm9tXG4gICAgICAvLyB0aGUgZnVuY3Rpb24gbmFtZVxuICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIFN0eWxlIGNoYW5nZXMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgb24gcGcuIDQ0MiwgUnVsZSAzLlxuICAgIHZhciBuZXdTdHlsZSA9IHN0eWxpbmdfc3R5bGVNYXBbZ3JvdXAuc3R5bGVdO1xuICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShuZXdTdHlsZSkud2l0aEZvbnQoJycpO1xuICAgIHJldHVybiBzaXppbmdHcm91cChncm91cC5ib2R5LCBuZXdPcHRpb25zLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBzdHlsZSB3ZSdyZSBjaGFuZ2luZyB0by5cbiAgICB2YXIgbmV3U3R5bGUgPSBzdHlsaW5nX3N0eWxlTWFwW2dyb3VwLnN0eWxlXTtcbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUobmV3U3R5bGUpO1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBuZXdPcHRpb25zKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXN0eWxlXCIsIGlubmVyKTtcbiAgICB2YXIgc3R5bGVBdHRyaWJ1dGVzID0ge1xuICAgICAgXCJkaXNwbGF5XCI6IFtcIjBcIiwgXCJ0cnVlXCJdLFxuICAgICAgXCJ0ZXh0XCI6IFtcIjBcIiwgXCJmYWxzZVwiXSxcbiAgICAgIFwic2NyaXB0XCI6IFtcIjFcIiwgXCJmYWxzZVwiXSxcbiAgICAgIFwic2NyaXB0c2NyaXB0XCI6IFtcIjJcIiwgXCJmYWxzZVwiXVxuICAgIH07XG4gICAgdmFyIGF0dHIgPSBzdHlsZUF0dHJpYnV0ZXNbZ3JvdXAuc3R5bGVdO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic2NyaXB0bGV2ZWxcIiwgYXR0clswXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkaXNwbGF5c3R5bGVcIiwgYXR0clsxXSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3N1cHN1Yi5qc1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogU29tZXRpbWVzLCBncm91cHMgcGVyZm9ybSBzcGVjaWFsIHJ1bGVzIHdoZW4gdGhleSBoYXZlIHN1cGVyc2NyaXB0cyBvclxuICogc3Vic2NyaXB0cyBhdHRhY2hlZCB0byB0aGVtLiBUaGlzIGZ1bmN0aW9uIGxldHMgdGhlIGBzdXBzdWJgIGdyb3VwIGtub3cgdGhhdFxuICogU29tZXRpbWVzLCBncm91cHMgcGVyZm9ybSBzcGVjaWFsIHJ1bGVzIHdoZW4gdGhleSBoYXZlIHN1cGVyc2NyaXB0cyBvclxuICogaXRzIGlubmVyIGVsZW1lbnQgc2hvdWxkIGhhbmRsZSB0aGUgc3VwZXJzY3JpcHRzIGFuZCBzdWJzY3JpcHRzIGluc3RlYWQgb2ZcbiAqIGhhbmRsaW5nIHRoZW0gaXRzZWxmLlxuICovXG52YXIgc3Vwc3ViX2h0bWxCdWlsZGVyRGVsZWdhdGUgPSBmdW5jdGlvbiBodG1sQnVpbGRlckRlbGVnYXRlKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBiYXNlID0gZ3JvdXAuYmFzZTtcblxuICBpZiAoIWJhc2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmIChiYXNlLnR5cGUgPT09IFwib3BcIikge1xuICAgIC8vIE9wZXJhdG9ycyBoYW5kbGUgc3Vwc3VicyBkaWZmZXJlbnRseSB3aGVuIHRoZXkgaGF2ZSBsaW1pdHNcbiAgICAvLyAoZS5nLiBgXFxkaXNwbGF5c3R5bGVcXHN1bV8yXjNgKVxuICAgIHZhciBkZWxlZ2F0ZSA9IGJhc2UubGltaXRzICYmIChvcHRpb25zLnN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUgfHwgYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIpO1xuICAgIHJldHVybiBkZWxlZ2F0ZSA/IG9wX2h0bWxCdWlsZGVyIDogbnVsbDtcbiAgfSBlbHNlIGlmIChiYXNlLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIpIHtcbiAgICB2YXIgX2RlbGVnYXRlID0gYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIgJiYgKG9wdGlvbnMuc3R5bGUuc2l6ZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkuc2l6ZSB8fCBiYXNlLmxpbWl0cyk7XG5cbiAgICByZXR1cm4gX2RlbGVnYXRlID8gb3BlcmF0b3JuYW1lX2h0bWxCdWlsZGVyIDogbnVsbDtcbiAgfSBlbHNlIGlmIChiYXNlLnR5cGUgPT09IFwiYWNjZW50XCIpIHtcbiAgICByZXR1cm4gdXRpbHMuaXNDaGFyYWN0ZXJCb3goYmFzZS5iYXNlKSA/IGFjY2VudF9odG1sQnVpbGRlciA6IG51bGw7XG4gIH0gZWxzZSBpZiAoYmFzZS50eXBlID09PSBcImhvcml6QnJhY2VcIikge1xuICAgIHZhciBpc1N1cCA9ICFncm91cC5zdWI7XG4gICAgcmV0dXJuIGlzU3VwID09PSBiYXNlLmlzT3ZlciA/IGhvcml6QnJhY2VfaHRtbEJ1aWxkZXIgOiBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59OyAvLyBTdXBlciBzY3JpcHRzIGFuZCBzdWJzY3JpcHRzLCB3aG9zZSBwcmVjaXNlIHBsYWNlbWVudCBjYW4gZGVwZW5kIG9uIG90aGVyXG4vLyBmdW5jdGlvbnMgdGhhdCBwcmVjZWRlIHRoZW0uXG5cblxuZGVmaW5lRnVuY3Rpb25CdWlsZGVycyh7XG4gIHR5cGU6IFwic3Vwc3ViXCIsXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIFN1cGVyc2NyaXB0IGFuZCBzdWJzY3JpcHRzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIG9uIHBhZ2VcbiAgICAvLyA0NDUtNDQ2LCBydWxlcyAxOChhLWYpLlxuICAgIC8vIEhlcmUgaXMgd2hlcmUgd2UgZGVmZXIgdG8gdGhlIGlubmVyIGdyb3VwIGlmIGl0IHNob3VsZCBoYW5kbGVcbiAgICAvLyBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgaXRzZWxmLlxuICAgIHZhciBidWlsZGVyRGVsZWdhdGUgPSBzdXBzdWJfaHRtbEJ1aWxkZXJEZWxlZ2F0ZShncm91cCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoYnVpbGRlckRlbGVnYXRlKSB7XG4gICAgICByZXR1cm4gYnVpbGRlckRlbGVnYXRlKGdyb3VwLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVCYXNlID0gZ3JvdXAuYmFzZSxcbiAgICAgICAgdmFsdWVTdXAgPSBncm91cC5zdXAsXG4gICAgICAgIHZhbHVlU3ViID0gZ3JvdXAuc3ViO1xuICAgIHZhciBiYXNlID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAodmFsdWVCYXNlLCBvcHRpb25zKTtcbiAgICB2YXIgc3VwbTtcbiAgICB2YXIgc3VibTtcbiAgICB2YXIgbWV0cmljcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKTsgLy8gUnVsZSAxOGFcblxuICAgIHZhciBzdXBTaGlmdCA9IDA7XG4gICAgdmFyIHN1YlNoaWZ0ID0gMDtcbiAgICB2YXIgaXNDaGFyYWN0ZXJCb3ggPSB2YWx1ZUJhc2UgJiYgdXRpbHMuaXNDaGFyYWN0ZXJCb3godmFsdWVCYXNlKTtcblxuICAgIGlmICh2YWx1ZVN1cCkge1xuICAgICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG9wdGlvbnMuc3R5bGUuc3VwKCkpO1xuICAgICAgc3VwbSA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKHZhbHVlU3VwLCBuZXdPcHRpb25zLCBvcHRpb25zKTtcblxuICAgICAgaWYgKCFpc0NoYXJhY3RlckJveCkge1xuICAgICAgICBzdXBTaGlmdCA9IGJhc2UuaGVpZ2h0IC0gbmV3T3B0aW9ucy5mb250TWV0cmljcygpLnN1cERyb3AgKiBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWVTdWIpIHtcbiAgICAgIHZhciBfbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUob3B0aW9ucy5zdHlsZS5zdWIoKSk7XG5cbiAgICAgIHN1Ym0gPSBidWlsZEhUTUxfYnVpbGRHcm91cCh2YWx1ZVN1YiwgX25ld09wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAoIWlzQ2hhcmFjdGVyQm94KSB7XG4gICAgICAgIHN1YlNoaWZ0ID0gYmFzZS5kZXB0aCArIF9uZXdPcHRpb25zLmZvbnRNZXRyaWNzKCkuc3ViRHJvcCAqIF9uZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICAgIH1cbiAgICB9IC8vIFJ1bGUgMThjXG5cblxuICAgIHZhciBtaW5TdXBTaGlmdDtcblxuICAgIGlmIChvcHRpb25zLnN0eWxlID09PSBzcmNfU3R5bGUuRElTUExBWSkge1xuICAgICAgbWluU3VwU2hpZnQgPSBtZXRyaWNzLnN1cDE7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLnN0eWxlLmNyYW1wZWQpIHtcbiAgICAgIG1pblN1cFNoaWZ0ID0gbWV0cmljcy5zdXAzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtaW5TdXBTaGlmdCA9IG1ldHJpY3Muc3VwMjtcbiAgICB9IC8vIHNjcmlwdHNwYWNlIGlzIGEgZm9udC1zaXplLWluZGVwZW5kZW50IHNpemUsIHNvIHNjYWxlIGl0XG4gICAgLy8gYXBwcm9wcmlhdGVseSBmb3IgdXNlIGFzIHRoZSBtYXJnaW5SaWdodC5cblxuXG4gICAgdmFyIG11bHRpcGxpZXIgPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIHZhciBtYXJnaW5SaWdodCA9IDAuNSAvIG1ldHJpY3MucHRQZXJFbSAvIG11bHRpcGxpZXIgKyBcImVtXCI7XG4gICAgdmFyIG1hcmdpbkxlZnQgPSBudWxsO1xuXG4gICAgaWYgKHN1Ym0pIHtcbiAgICAgIC8vIFN1YnNjcmlwdHMgc2hvdWxkbid0IGJlIHNoaWZ0ZWQgYnkgdGhlIGJhc2UncyBpdGFsaWMgY29ycmVjdGlvbi5cbiAgICAgIC8vIEFjY291bnQgZm9yIHRoYXQgYnkgc2hpZnRpbmcgdGhlIHN1YnNjcmlwdCBiYWNrIHRoZSBhcHByb3ByaWF0ZVxuICAgICAgLy8gYW1vdW50LiBOb3RlIHdlIG9ubHkgZG8gdGhpcyB3aGVuIHRoZSBiYXNlIGlzIGEgc2luZ2xlIHN5bWJvbC5cbiAgICAgIHZhciBpc09paW50ID0gZ3JvdXAuYmFzZSAmJiBncm91cC5iYXNlLnR5cGUgPT09IFwib3BcIiAmJiBncm91cC5iYXNlLm5hbWUgJiYgKGdyb3VwLmJhc2UubmFtZSA9PT0gXCJcXFxcb2lpbnRcIiB8fCBncm91cC5iYXNlLm5hbWUgPT09IFwiXFxcXG9paWludFwiKTtcblxuICAgICAgaWYgKGJhc2UgaW5zdGFuY2VvZiBkb21UcmVlX1N5bWJvbE5vZGUgfHwgaXNPaWludCkge1xuICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgIG1hcmdpbkxlZnQgPSAtYmFzZS5pdGFsaWMgKyBcImVtXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHN1cHN1YjtcblxuICAgIGlmIChzdXBtICYmIHN1Ym0pIHtcbiAgICAgIHN1cFNoaWZ0ID0gTWF0aC5tYXgoc3VwU2hpZnQsIG1pblN1cFNoaWZ0LCBzdXBtLmRlcHRoICsgMC4yNSAqIG1ldHJpY3MueEhlaWdodCk7XG4gICAgICBzdWJTaGlmdCA9IE1hdGgubWF4KHN1YlNoaWZ0LCBtZXRyaWNzLnN1YjIpO1xuICAgICAgdmFyIHJ1bGVXaWR0aCA9IG1ldHJpY3MuZGVmYXVsdFJ1bGVUaGlja25lc3M7IC8vIFJ1bGUgMThlXG5cbiAgICAgIHZhciBtYXhXaWR0aCA9IDQgKiBydWxlV2lkdGg7XG5cbiAgICAgIGlmIChzdXBTaGlmdCAtIHN1cG0uZGVwdGggLSAoc3VibS5oZWlnaHQgLSBzdWJTaGlmdCkgPCBtYXhXaWR0aCkge1xuICAgICAgICBzdWJTaGlmdCA9IG1heFdpZHRoIC0gKHN1cFNoaWZ0IC0gc3VwbS5kZXB0aCkgKyBzdWJtLmhlaWdodDtcbiAgICAgICAgdmFyIHBzaSA9IDAuOCAqIG1ldHJpY3MueEhlaWdodCAtIChzdXBTaGlmdCAtIHN1cG0uZGVwdGgpO1xuXG4gICAgICAgIGlmIChwc2kgPiAwKSB7XG4gICAgICAgICAgc3VwU2hpZnQgKz0gcHNpO1xuICAgICAgICAgIHN1YlNoaWZ0IC09IHBzaTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgdmxpc3RFbGVtID0gW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1Ym0sXG4gICAgICAgIHNoaWZ0OiBzdWJTaGlmdCxcbiAgICAgICAgbWFyZ2luUmlnaHQ6IG1hcmdpblJpZ2h0LFxuICAgICAgICBtYXJnaW5MZWZ0OiBtYXJnaW5MZWZ0XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBzdXBtLFxuICAgICAgICBzaGlmdDogLXN1cFNoaWZ0LFxuICAgICAgICBtYXJnaW5SaWdodDogbWFyZ2luUmlnaHRcbiAgICAgIH1dO1xuICAgICAgc3Vwc3ViID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgICBjaGlsZHJlbjogdmxpc3RFbGVtXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHN1Ym0pIHtcbiAgICAgIC8vIFJ1bGUgMThiXG4gICAgICBzdWJTaGlmdCA9IE1hdGgubWF4KHN1YlNoaWZ0LCBtZXRyaWNzLnN1YjEsIHN1Ym0uaGVpZ2h0IC0gMC44ICogbWV0cmljcy54SGVpZ2h0KTtcbiAgICAgIHZhciBfdmxpc3RFbGVtID0gW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1Ym0sXG4gICAgICAgIG1hcmdpbkxlZnQ6IG1hcmdpbkxlZnQsXG4gICAgICAgIG1hcmdpblJpZ2h0OiBtYXJnaW5SaWdodFxuICAgICAgfV07XG4gICAgICBzdXBzdWIgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiBzdWJTaGlmdCxcbiAgICAgICAgY2hpbGRyZW46IF92bGlzdEVsZW1cbiAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAoc3VwbSkge1xuICAgICAgLy8gUnVsZSAxOGMsIGRcbiAgICAgIHN1cFNoaWZ0ID0gTWF0aC5tYXgoc3VwU2hpZnQsIG1pblN1cFNoaWZ0LCBzdXBtLmRlcHRoICsgMC4yNSAqIG1ldHJpY3MueEhlaWdodCk7XG4gICAgICBzdXBzdWIgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiAtc3VwU2hpZnQsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IHN1cG0sXG4gICAgICAgICAgbWFyZ2luUmlnaHQ6IG1hcmdpblJpZ2h0XG4gICAgICAgIH1dXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3Vwc3ViIG11c3QgaGF2ZSBlaXRoZXIgc3VwIG9yIHN1Yi5cIik7XG4gICAgfSAvLyBXcmFwIHRoZSBzdXBzdWIgdmxpc3QgaW4gYSBzcGFuLm1zdXBzdWIgdG8gcmVzZXQgdGV4dC1hbGlnbi5cblxuXG4gICAgdmFyIG1jbGFzcyA9IGdldFR5cGVPZkRvbVRyZWUoYmFzZSwgXCJyaWdodFwiKSB8fCBcIm1vcmRcIjtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW21jbGFzc10sIFtiYXNlLCBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtc3Vwc3ViXCJdLCBbc3Vwc3ViXSldLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIElzIHRoZSBpbm5lciBncm91cCBhIHJlbGV2YW50IGhvcml6b25hbCBicmFjZT9cbiAgICB2YXIgaXNCcmFjZSA9IGZhbHNlO1xuICAgIHZhciBpc092ZXI7XG4gICAgdmFyIGlzU3VwO1xuICAgIHZhciBob3JpekJyYWNlID0gY2hlY2tOb2RlVHlwZShncm91cC5iYXNlLCBcImhvcml6QnJhY2VcIik7XG5cbiAgICBpZiAoaG9yaXpCcmFjZSkge1xuICAgICAgaXNTdXAgPSAhIWdyb3VwLnN1cDtcblxuICAgICAgaWYgKGlzU3VwID09PSBob3JpekJyYWNlLmlzT3Zlcikge1xuICAgICAgICBpc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgaXNPdmVyID0gaG9yaXpCcmFjZS5pc092ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLmJhc2UgJiYgKGdyb3VwLmJhc2UudHlwZSA9PT0gXCJvcFwiIHx8IGdyb3VwLmJhc2UudHlwZSA9PT0gXCJvcGVyYXRvcm5hbWVcIikpIHtcbiAgICAgIGdyb3VwLmJhc2UucGFyZW50SXNTdXBTdWIgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpXTtcblxuICAgIGlmIChncm91cC5zdWIpIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5zdWIsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAuc3VwKSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuc3VwLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgdmFyIG5vZGVUeXBlO1xuXG4gICAgaWYgKGlzQnJhY2UpIHtcbiAgICAgIG5vZGVUeXBlID0gaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIjtcbiAgICB9IGVsc2UgaWYgKCFncm91cC5zdWIpIHtcbiAgICAgIHZhciBiYXNlID0gZ3JvdXAuYmFzZTtcblxuICAgICAgaWYgKGJhc2UgJiYgYmFzZS50eXBlID09PSBcIm9wXCIgJiYgYmFzZS5saW1pdHMgJiYgKG9wdGlvbnMuc3R5bGUgPT09IHNyY19TdHlsZS5ESVNQTEFZIHx8IGJhc2UuYWx3YXlzSGFuZGxlU3VwU3ViKSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibW92ZXJcIjtcbiAgICAgIH0gZWxzZSBpZiAoYmFzZSAmJiBiYXNlLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIgJiYgYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIgJiYgKGJhc2UubGltaXRzIHx8IG9wdGlvbnMuc3R5bGUgPT09IHNyY19TdHlsZS5ESVNQTEFZKSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibW92ZXJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtc3VwXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghZ3JvdXAuc3VwKSB7XG4gICAgICB2YXIgX2Jhc2UgPSBncm91cC5iYXNlO1xuXG4gICAgICBpZiAoX2Jhc2UgJiYgX2Jhc2UudHlwZSA9PT0gXCJvcFwiICYmIF9iYXNlLmxpbWl0cyAmJiAob3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkgfHwgX2Jhc2UuYWx3YXlzSGFuZGxlU3VwU3ViKSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibXVuZGVyXCI7XG4gICAgICB9IGVsc2UgaWYgKF9iYXNlICYmIF9iYXNlLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIgJiYgX2Jhc2UuYWx3YXlzSGFuZGxlU3VwU3ViICYmIChfYmFzZS5saW1pdHMgfHwgb3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkpKSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtdW5kZXJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtc3ViXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfYmFzZTIgPSBncm91cC5iYXNlO1xuXG4gICAgICBpZiAoX2Jhc2UyICYmIF9iYXNlMi50eXBlID09PSBcIm9wXCIgJiYgX2Jhc2UyLmxpbWl0cyAmJiBvcHRpb25zLnN0eWxlID09PSBzcmNfU3R5bGUuRElTUExBWSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibXVuZGVyb3ZlclwiO1xuICAgICAgfSBlbHNlIGlmIChfYmFzZTIgJiYgX2Jhc2UyLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIgJiYgX2Jhc2UyLmFsd2F5c0hhbmRsZVN1cFN1YiAmJiAob3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkgfHwgX2Jhc2UyLmxpbWl0cykpIHtcbiAgICAgICAgbm9kZVR5cGUgPSBcIm11bmRlcm92ZXJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtc3Vic3VwXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShub2RlVHlwZSwgY2hpbGRyZW4pO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zeW1ib2xzT3AuanNcblxuXG5cbiAvLyBPcGVyYXRvciBQYXJzZU5vZGVzIGNyZWF0ZWQgaW4gUGFyc2VyLmpzIGZyb20gc3ltYm9sIEdyb3VwcyBpbiBzcmMvc3ltYm9scy5qcy5cblxuZGVmaW5lRnVuY3Rpb25CdWlsZGVycyh7XG4gIHR5cGU6IFwiYXRvbVwiLFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWF0aHN5bShncm91cC50ZXh0LCBncm91cC5tb2RlLCBvcHRpb25zLCBbXCJtXCIgKyBncm91cC5mYW1pbHldKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAudGV4dCwgZ3JvdXAubW9kZSldKTtcblxuICAgIGlmIChncm91cC5mYW1pbHkgPT09IFwiYmluXCIpIHtcbiAgICAgIHZhciB2YXJpYW50ID0gYnVpbGRNYXRoTUxfZ2V0VmFyaWFudChncm91cCwgb3B0aW9ucyk7XG5cbiAgICAgIGlmICh2YXJpYW50ID09PSBcImJvbGQtaXRhbGljXCIpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRodmFyaWFudFwiLCB2YXJpYW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGdyb3VwLmZhbWlseSA9PT0gXCJwdW5jdFwiKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcInNlcGFyYXRvclwiLCBcInRydWVcIik7XG4gICAgfSBlbHNlIGlmIChncm91cC5mYW1pbHkgPT09IFwib3BlblwiIHx8IGdyb3VwLmZhbWlseSA9PT0gXCJjbG9zZVwiKSB7XG4gICAgICAvLyBEZWxpbXMgYnVpbHQgaGVyZSBzaG91bGQgbm90IHN0cmV0Y2ggdmVydGljYWxseS5cbiAgICAgIC8vIFNlZSBkZWxpbXNpemluZy5qcyBmb3Igc3RyZXRjaHkgZGVsaW1zLlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcImZhbHNlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zeW1ib2xzT3JkLmpzXG5cblxuXG5cbi8vIFwibWF0aG9yZFwiIGFuZCBcInRleHRvcmRcIiBQYXJzZU5vZGVzIGNyZWF0ZWQgaW4gUGFyc2VyLmpzIGZyb20gc3ltYm9sIEdyb3VwcyBpblxudmFyIGRlZmF1bHRWYXJpYW50ID0ge1xuICBcIm1pXCI6IFwiaXRhbGljXCIsXG4gIFwibW5cIjogXCJub3JtYWxcIixcbiAgXCJtdGV4dFwiOiBcIm5vcm1hbFwiXG59O1xuZGVmaW5lRnVuY3Rpb25CdWlsZGVycyh7XG4gIHR5cGU6IFwibWF0aG9yZFwiLFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZU9yZChncm91cCwgb3B0aW9ucywgXCJtYXRob3JkXCIpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1pXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC50ZXh0LCBncm91cC5tb2RlLCBvcHRpb25zKV0pO1xuICAgIHZhciB2YXJpYW50ID0gYnVpbGRNYXRoTUxfZ2V0VmFyaWFudChncm91cCwgb3B0aW9ucykgfHwgXCJpdGFsaWNcIjtcblxuICAgIGlmICh2YXJpYW50ICE9PSBkZWZhdWx0VmFyaWFudFtub2RlLnR5cGVdKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm1hdGh2YXJpYW50XCIsIHZhcmlhbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbmRlZmluZUZ1bmN0aW9uQnVpbGRlcnMoe1xuICB0eXBlOiBcInRleHRvcmRcIixcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VPcmQoZ3JvdXAsIG9wdGlvbnMsIFwidGV4dG9yZFwiKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciB0ZXh0ID0gYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAudGV4dCwgZ3JvdXAubW9kZSwgb3B0aW9ucyk7XG4gICAgdmFyIHZhcmlhbnQgPSBidWlsZE1hdGhNTF9nZXRWYXJpYW50KGdyb3VwLCBvcHRpb25zKSB8fCBcIm5vcm1hbFwiO1xuICAgIHZhciBub2RlO1xuXG4gICAgaWYgKGdyb3VwLm1vZGUgPT09ICd0ZXh0Jykge1xuICAgICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRleHRcIiwgW3RleHRdKTtcbiAgICB9IGVsc2UgaWYgKC9bMC05XS8udGVzdChncm91cC50ZXh0KSkge1xuICAgICAgLy8gVE9ETyhrZXZpbmIpIG1lcmdlIGFkamFjZW50IDxtbj4gbm9kZXNcbiAgICAgIC8vIGRvIGl0IGFzIGEgcG9zdCBwcm9jZXNzaW5nIHN0ZXBcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1uXCIsIFt0ZXh0XSk7XG4gICAgfSBlbHNlIGlmIChncm91cC50ZXh0ID09PSBcIlxcXFxwcmltZVwiKSB7XG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbdGV4dF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtaVwiLCBbdGV4dF0pO1xuICAgIH1cblxuICAgIGlmICh2YXJpYW50ICE9PSBkZWZhdWx0VmFyaWFudFtub2RlLnR5cGVdKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm1hdGh2YXJpYW50XCIsIHZhcmlhbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zeW1ib2xzU3BhY2luZy5qc1xuXG5cblxuIC8vIEEgbWFwIG9mIENTUy1iYXNlZCBzcGFjaW5nIGZ1bmN0aW9ucyB0byB0aGVpciBDU1MgY2xhc3MuXG5cbnZhciBjc3NTcGFjZSA9IHtcbiAgXCJcXFxcbm9icmVha1wiOiBcIm5vYnJlYWtcIixcbiAgXCJcXFxcYWxsb3dicmVha1wiOiBcImFsbG93YnJlYWtcIlxufTsgLy8gQSBsb29rdXAgdGFibGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzcGFjaW5nIGZ1bmN0aW9uL3N5bWJvbCBzaG91bGQgYmVcbi8vIHRyZWF0ZWQgbGlrZSBhIHJlZ3VsYXIgc3BhY2UgY2hhcmFjdGVyLiAgSWYgYSBzeW1ib2wgb3IgY29tbWFuZCBpcyBhIGtleVxuLy8gaW4gdGhpcyB0YWJsZSwgdGhlbiBpdCBzaG91bGQgYmUgYSByZWd1bGFyIHNwYWNlIGNoYXJhY3Rlci4gIEZ1cnRoZXJtb3JlLFxuLy8gdGhlIGFzc29jaWF0ZWQgdmFsdWUgbWF5IGhhdmUgYSBgY2xhc3NOYW1lYCBzcGVjaWZ5aW5nIGFuIGV4dHJhIENTUyBjbGFzc1xuLy8gdG8gYWRkIHRvIHRoZSBjcmVhdGVkIGBzcGFuYC5cblxudmFyIHJlZ3VsYXJTcGFjZSA9IHtcbiAgXCIgXCI6IHt9LFxuICBcIlxcXFwgXCI6IHt9LFxuICBcIn5cIjoge1xuICAgIGNsYXNzTmFtZTogXCJub2JyZWFrXCJcbiAgfSxcbiAgXCJcXFxcc3BhY2VcIjoge30sXG4gIFwiXFxcXG5vYnJlYWtzcGFjZVwiOiB7XG4gICAgY2xhc3NOYW1lOiBcIm5vYnJlYWtcIlxuICB9XG59OyAvLyBQYXJzZU5vZGU8XCJzcGFjaW5nXCI+IGNyZWF0ZWQgaW4gUGFyc2VyLmpzIGZyb20gdGhlIFwic3BhY2luZ1wiIHN5bWJvbCBHcm91cHMgaW5cbi8vIHNyYy9zeW1ib2xzLmpzLlxuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJzcGFjaW5nXCIsXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIGlmIChyZWd1bGFyU3BhY2UuaGFzT3duUHJvcGVydHkoZ3JvdXAudGV4dCkpIHtcbiAgICAgIHZhciBjbGFzc05hbWUgPSByZWd1bGFyU3BhY2VbZ3JvdXAudGV4dF0uY2xhc3NOYW1lIHx8IFwiXCI7IC8vIFNwYWNlcyBhcmUgZ2VuZXJhdGVkIGJ5IGFkZGluZyBhbiBhY3R1YWwgc3BhY2UuIEVhY2ggb2YgdGhlc2VcbiAgICAgIC8vIHRoaW5ncyBoYXMgYW4gZW50cnkgaW4gdGhlIHN5bWJvbHMgdGFibGUsIHNvIHRoZXNlIHdpbGwgYmUgdHVybmVkXG4gICAgICAvLyBpbnRvIGFwcHJvcHJpYXRlIG91dHB1dHMuXG5cbiAgICAgIGlmIChncm91cC5tb2RlID09PSBcInRleHRcIikge1xuICAgICAgICB2YXIgb3JkID0gYnVpbGRDb21tb24ubWFrZU9yZChncm91cCwgb3B0aW9ucywgXCJ0ZXh0b3JkXCIpO1xuICAgICAgICBvcmQuY2xhc3Nlcy5wdXNoKGNsYXNzTmFtZSk7XG4gICAgICAgIHJldHVybiBvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXNwYWNlXCIsIGNsYXNzTmFtZV0sIFtidWlsZENvbW1vbi5tYXRoc3ltKGdyb3VwLnRleHQsIGdyb3VwLm1vZGUsIG9wdGlvbnMpXSwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjc3NTcGFjZS5oYXNPd25Qcm9wZXJ0eShncm91cC50ZXh0KSkge1xuICAgICAgLy8gU3BhY2VzIGJhc2VkIG9uIGp1c3QgYSBDU1MgY2xhc3MuXG4gICAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXNwYWNlXCIsIGNzc1NwYWNlW2dyb3VwLnRleHRdXSwgW10sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmtub3duIHR5cGUgb2Ygc3BhY2UgXFxcIlwiICsgZ3JvdXAudGV4dCArIFwiXFxcIlwiKTtcbiAgICB9XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZTtcblxuICAgIGlmIChyZWd1bGFyU3BhY2UuaGFzT3duUHJvcGVydHkoZ3JvdXAudGV4dCkpIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10ZXh0XCIsIFtuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZShcIlxceEEwXCIpXSk7XG4gICAgfSBlbHNlIGlmIChjc3NTcGFjZS5oYXNPd25Qcm9wZXJ0eShncm91cC50ZXh0KSkge1xuICAgICAgLy8gQ1NTLWJhc2VkIE1hdGhNTCBzcGFjZXMgKFxcbm9icmVhaywgXFxhbGxvd2JyZWFrKSBhcmUgaWdub3JlZFxuICAgICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXNwYWNlXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmtub3duIHR5cGUgb2Ygc3BhY2UgXFxcIlwiICsgZ3JvdXAudGV4dCArIFwiXFxcIlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdGFnLmpzXG5cblxuXG5cbnZhciB0YWdfcGFkID0gZnVuY3Rpb24gcGFkKCkge1xuICB2YXIgcGFkTm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRkXCIsIFtdKTtcbiAgcGFkTm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIjUwJVwiKTtcbiAgcmV0dXJuIHBhZE5vZGU7XG59O1xuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJ0YWdcIixcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciB0YWJsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRhYmxlXCIsIFtuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10clwiLCBbdGFnX3BhZCgpLCBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10ZFwiLCBbYnVpbGRFeHByZXNzaW9uUm93KGdyb3VwLmJvZHksIG9wdGlvbnMpXSksIHRhZ19wYWQoKSwgbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGRcIiwgW2J1aWxkRXhwcmVzc2lvblJvdyhncm91cC50YWcsIG9wdGlvbnMpXSldKV0pO1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICByZXR1cm4gdGFibGU7IC8vIFRPRE86IExlZnQtYWxpZ25lZCB0YWdzLlxuICAgIC8vIEN1cnJlbnRseSwgdGhlIGdyb3VwIGFuZCBvcHRpb25zIHBhc3NlZCBoZXJlIGRvIG5vdCBjb250YWluXG4gICAgLy8gZW5vdWdoIGluZm8gdG8gc2V0IHRhZyBhbGlnbm1lbnQuIGBsZXFub2AgaXMgaW4gU2V0dGluZ3MgYnV0IGl0IGlzXG4gICAgLy8gbm90IHBhc3NlZCB0byBPcHRpb25zLiBPbiB0aGUgSFRNTCBzaWRlLCBsZXFubyBpc1xuICAgIC8vIHNldCBieSBhIENTUyBjbGFzcyBhcHBsaWVkIGluIGJ1aWxkVHJlZS5qcy4gVGhhdCB3b3VsZCBoYXZlIHdvcmtlZFxuICAgIC8vIGluIE1hdGhNTCBpZiBicm93c2VycyBzdXBwb3J0ZWQgPG1sYWJlbGVkdHI+LiBTaW5jZSB0aGV5IGRvbid0LCB3ZVxuICAgIC8vIG5lZWQgdG8gcmV3cml0ZSB0aGUgd2F5IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLlxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy90ZXh0LmpzXG5cblxuXG4gLy8gTm9uLW1hdGh5IHRleHQsIHBvc3NpYmx5IGluIGEgZm9udFxuXG52YXIgdGV4dEZvbnRGYW1pbGllcyA9IHtcbiAgXCJcXFxcdGV4dFwiOiB1bmRlZmluZWQsXG4gIFwiXFxcXHRleHRybVwiOiBcInRleHRybVwiLFxuICBcIlxcXFx0ZXh0c2ZcIjogXCJ0ZXh0c2ZcIixcbiAgXCJcXFxcdGV4dHR0XCI6IFwidGV4dHR0XCIsXG4gIFwiXFxcXHRleHRub3JtYWxcIjogXCJ0ZXh0cm1cIlxufTtcbnZhciB0ZXh0Rm9udFdlaWdodHMgPSB7XG4gIFwiXFxcXHRleHRiZlwiOiBcInRleHRiZlwiLFxuICBcIlxcXFx0ZXh0bWRcIjogXCJ0ZXh0bWRcIlxufTtcbnZhciB0ZXh0Rm9udFNoYXBlcyA9IHtcbiAgXCJcXFxcdGV4dGl0XCI6IFwidGV4dGl0XCIsXG4gIFwiXFxcXHRleHR1cFwiOiBcInRleHR1cFwiXG59O1xuXG52YXIgb3B0aW9uc1dpdGhGb250ID0gZnVuY3Rpb24gb3B0aW9uc1dpdGhGb250KGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBmb250ID0gZ3JvdXAuZm9udDsgLy8gQ2hlY2tzIGlmIHRoZSBhcmd1bWVudCBpcyBhIGZvbnQgZmFtaWx5IG9yIGEgZm9udCBzdHlsZS5cblxuICBpZiAoIWZvbnQpIHtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfSBlbHNlIGlmICh0ZXh0Rm9udEZhbWlsaWVzW2ZvbnRdKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMud2l0aFRleHRGb250RmFtaWx5KHRleHRGb250RmFtaWxpZXNbZm9udF0pO1xuICB9IGVsc2UgaWYgKHRleHRGb250V2VpZ2h0c1tmb250XSkge1xuICAgIHJldHVybiBvcHRpb25zLndpdGhUZXh0Rm9udFdlaWdodCh0ZXh0Rm9udFdlaWdodHNbZm9udF0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvcHRpb25zLndpdGhUZXh0Rm9udFNoYXBlKHRleHRGb250U2hhcGVzW2ZvbnRdKTtcbiAgfVxufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInRleHRcIixcbiAgbmFtZXM6IFsvLyBGb250IGZhbWlsaWVzXG4gIFwiXFxcXHRleHRcIiwgXCJcXFxcdGV4dHJtXCIsIFwiXFxcXHRleHRzZlwiLCBcIlxcXFx0ZXh0dHRcIiwgXCJcXFxcdGV4dG5vcm1hbFwiLCAvLyBGb250IHdlaWdodHNcbiAgXCJcXFxcdGV4dGJmXCIsIFwiXFxcXHRleHRtZFwiLCAvLyBGb250IFNoYXBlc1xuICBcIlxcXFx0ZXh0aXRcIiwgXCJcXFxcdGV4dHVwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInRleHRcIl0sXG4gICAgZ3JlZWRpbmVzczogMixcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpLFxuICAgICAgZm9udDogZnVuY05hbWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnNXaXRoRm9udChncm91cCwgb3B0aW9ucyk7XG4gICAgdmFyIGlubmVyID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBuZXdPcHRpb25zLCB0cnVlKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcInRleHRcIl0sIGJ1aWxkQ29tbW9uLnRyeUNvbWJpbmVDaGFycyhpbm5lciksIG5ld09wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zV2l0aEZvbnQoZ3JvdXAsIG9wdGlvbnMpO1xuICAgIHJldHVybiBidWlsZEV4cHJlc3Npb25Sb3coZ3JvdXAuYm9keSwgbmV3T3B0aW9ucyk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3VuZGVybGluZS5qc1xuXG5cblxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ1bmRlcmxpbmVcIixcbiAgbmFtZXM6IFtcIlxcXFx1bmRlcmxpbmVcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ1bmRlcmxpbmVcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYXJnc1swXVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIFVuZGVybGluZXMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgcGcgNDQzLCBSdWxlIDEwLlxuICAgIC8vIEJ1aWxkIHRoZSBpbm5lciBncm91cC5cbiAgICB2YXIgaW5uZXJHcm91cCA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMpOyAvLyBDcmVhdGUgdGhlIGxpbmUgdG8gZ28gYmVsb3cgdGhlIGJvZHlcblxuICAgIHZhciBsaW5lID0gYnVpbGRDb21tb24ubWFrZUxpbmVTcGFuKFwidW5kZXJsaW5lLWxpbmVcIiwgb3B0aW9ucyk7IC8vIEdlbmVyYXRlIHRoZSB2bGlzdCwgd2l0aCB0aGUgYXBwcm9wcmlhdGUga2VybnNcblxuICAgIHZhciBkZWZhdWx0UnVsZVRoaWNrbmVzcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWZhdWx0UnVsZVRoaWNrbmVzcztcbiAgICB2YXIgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcInRvcFwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBpbm5lckdyb3VwLmhlaWdodCxcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogZGVmYXVsdFJ1bGVUaGlja25lc3NcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGxpbmVcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IDMgKiBkZWZhdWx0UnVsZVRoaWNrbmVzc1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW5uZXJHcm91cFxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcInVuZGVybGluZVwiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3BlcmF0b3IgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZShcIlxcdTIwM0VcIildKTtcbiAgICBvcGVyYXRvci5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcInRydWVcIik7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm11bmRlclwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKSwgb3BlcmF0b3JdKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImFjY2VudHVuZGVyXCIsIFwidHJ1ZVwiKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdmVyYi5qc1xuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwidmVyYlwiLFxuICBuYW1lczogW1wiXFxcXHZlcmJcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncykge1xuICAgIC8vIFxcdmVyYiBhbmQgXFx2ZXJiKiBhcmUgZGVhbHQgd2l0aCBkaXJlY3RseSBpbiBQYXJzZXIuanMuXG4gICAgLy8gSWYgd2UgZW5kIHVwIGhlcmUsIGl0J3MgYmVjYXVzZSBvZiBhIGZhaWx1cmUgdG8gbWF0Y2ggdGhlIHR3byBkZWxpbWl0ZXJzXG4gICAgLy8gaW4gdGhlIHJlZ2V4IGluIExleGVyLmpzLiAgTGFUZVggcmFpc2VzIHRoZSBmb2xsb3dpbmcgZXJyb3Igd2hlbiBcXHZlcmIgaXNcbiAgICAvLyB0ZXJtaW5hdGVkIGJ5IGVuZCBvZiBsaW5lIChvciBmaWxlKS5cbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcdmVyYiBlbmRlZCBieSBlbmQgb2YgbGluZSBpbnN0ZWFkIG9mIG1hdGNoaW5nIGRlbGltaXRlclwiKTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHRleHQgPSBtYWtlVmVyYihncm91cCk7XG4gICAgdmFyIGJvZHkgPSBbXTsgLy8gXFx2ZXJiIGVudGVycyB0ZXh0IG1vZGUgYW5kIHRoZXJlZm9yZSBpcyBzaXplZCBsaWtlIFxcdGV4dHN0eWxlXG5cbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUob3B0aW9ucy5zdHlsZS50ZXh0KCkpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHRleHRbaV07XG5cbiAgICAgIGlmIChjID09PSAnficpIHtcbiAgICAgICAgYyA9ICdcXFxcdGV4dGFzY2lpdGlsZGUnO1xuICAgICAgfVxuXG4gICAgICBib2R5LnB1c2goYnVpbGRDb21tb24ubWFrZVN5bWJvbChjLCBcIlR5cGV3cml0ZXItUmVndWxhclwiLCBncm91cC5tb2RlLCBuZXdPcHRpb25zLCBbXCJtb3JkXCIsIFwidGV4dHR0XCJdKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJ0ZXh0XCJdLmNvbmNhdChuZXdPcHRpb25zLnNpemluZ0NsYXNzZXMob3B0aW9ucykpLCBidWlsZENvbW1vbi50cnlDb21iaW5lQ2hhcnMoYm9keSksIG5ld09wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHRleHQgPSBuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZShtYWtlVmVyYihncm91cCkpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGV4dFwiLCBbdGV4dF0pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aHZhcmlhbnRcIiwgXCJtb25vc3BhY2VcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLyoqXG4gKiBDb252ZXJ0cyB2ZXJiIGdyb3VwIGludG8gYm9keSBzdHJpbmcuXG4gKlxuICogXFx2ZXJiKiByZXBsYWNlcyBlYWNoIHNwYWNlIHdpdGggYW4gb3BlbiBib3ggXFx1MjQyM1xuICogXFx2ZXJiIHJlcGxhY2VzIGVhY2ggc3BhY2Ugd2l0aCBhIG5vLWJyZWFrIHNwYWNlIFxceEEwXG4gKi9cblxudmFyIG1ha2VWZXJiID0gZnVuY3Rpb24gbWFrZVZlcmIoZ3JvdXApIHtcbiAgcmV0dXJuIGdyb3VwLmJvZHkucmVwbGFjZSgvIC9nLCBncm91cC5zdGFyID8gXCJcXHUyNDIzXCIgOiAnXFx4QTAnKTtcbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMuanNcbi8qKiBJbmNsdWRlIHRoaXMgdG8gZW5zdXJlIHRoYXQgYWxsIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gKi9cblxudmFyIGZ1bmN0aW9ucyA9IF9mdW5jdGlvbnM7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfZnVuY3Rpb25zID0gKGZ1bmN0aW9ucyk7IC8vIFRPRE8oa2V2aW5iKTogaGF2ZSBmdW5jdGlvbnMgcmV0dXJuIGFuIG9iamVjdCBhbmQgY2FsbCBkZWZpbmVGdW5jdGlvbiB3aXRoXG4vLyB0aGF0IG9iamVjdCBpbiB0aGlzIGZpbGUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHNpZGUtZWZmZWN0cy5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvTGV4ZXIuanNcbi8qKlxuICogVGhlIExleGVyIGNsYXNzIGhhbmRsZXMgdG9rZW5pemluZyB0aGUgaW5wdXQgaW4gdmFyaW91cyB3YXlzLiBTaW5jZSBvdXJcbiAqIHBhcnNlciBleHBlY3RzIHVzIHRvIGJlIGFibGUgdG8gYmFja3RyYWNrLCB0aGUgbGV4ZXIgYWxsb3dzIGxleGluZyBmcm9tIGFueVxuICogZ2l2ZW4gc3RhcnRpbmcgcG9pbnQuXG4gKlxuICogSXRzIG1haW4gZXhwb3NlZCBmdW5jdGlvbiBpcyB0aGUgYGxleGAgZnVuY3Rpb24sIHdoaWNoIHRha2VzIGEgcG9zaXRpb24gdG9cbiAqIGxleCBmcm9tIGFuZCBhIHR5cGUgb2YgdG9rZW4gdG8gbGV4LiBJdCBkZWZlcnMgdG8gdGhlIGFwcHJvcHJpYXRlIGBfaW5uZXJMZXhgXG4gKiBmdW5jdGlvbi5cbiAqXG4gKiBUaGUgdmFyaW91cyBgX2lubmVyTGV4YCBmdW5jdGlvbnMgcGVyZm9ybSB0aGUgYWN0dWFsIGxleGluZyBvZiBkaWZmZXJlbnRcbiAqIGtpbmRzLlxuICovXG5cblxuXG5cbi8qIFRoZSBmb2xsb3dpbmcgdG9rZW5SZWdleFxuICogLSBtYXRjaGVzIHR5cGljYWwgd2hpdGVzcGFjZSAoYnV0IG5vdCBOQlNQIGV0Yy4pIHVzaW5nIGl0cyBmaXJzdCBncm91cFxuICogLSBkb2VzIG5vdCBtYXRjaCBhbnkgY29udHJvbCBjaGFyYWN0ZXIgXFx4MDAtXFx4MWYgZXhjZXB0IHdoaXRlc3BhY2VcbiAqIC0gZG9lcyBub3QgbWF0Y2ggYSBiYXJlIGJhY2tzbGFzaFxuICogLSBtYXRjaGVzIGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0IHRob3NlIGp1c3QgbWVudGlvbmVkXG4gKiAtIGRvZXMgbm90IG1hdGNoIHRoZSBCTVAgcHJpdmF0ZSB1c2UgYXJlYSBcXHVFMDAwLVxcdUY4RkZcbiAqIC0gZG9lcyBub3QgbWF0Y2ggYmFyZSBzdXJyb2dhdGUgY29kZSB1bml0c1xuICogLSBtYXRjaGVzIGFueSBCTVAgY2hhcmFjdGVyIGV4Y2VwdCBmb3IgdGhvc2UganVzdCBkZXNjcmliZWRcbiAqIC0gbWF0Y2hlcyBhbnkgdmFsaWQgVW5pY29kZSBzdXJyb2dhdGUgcGFpclxuICogLSBtYXRjaGVzIGEgYmFja3NsYXNoIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGxldHRlcnNcbiAqIC0gbWF0Y2hlcyBhIGJhY2tzbGFzaCBmb2xsb3dlZCBieSBhbnkgQk1QIGNoYXJhY3RlciwgaW5jbHVkaW5nIG5ld2xpbmVcbiAqIEp1c3QgYmVjYXVzZSB0aGUgTGV4ZXIgbWF0Y2hlcyBzb21ldGhpbmcgZG9lc24ndCBtZWFuIGl0J3MgdmFsaWQgaW5wdXQ6XG4gKiBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBmdW5jdGlvbiBvciBzeW1ib2wgZGVmaW5pdGlvbiwgdGhlIFBhcnNlciB3aWxsXG4gKiBzdGlsbCByZWplY3QgdGhlIGlucHV0LlxuICovXG52YXIgc3BhY2VSZWdleFN0cmluZyA9IFwiWyBcXHJcXG5cXHRdXCI7XG52YXIgY29udHJvbFdvcmRSZWdleFN0cmluZyA9IFwiXFxcXFxcXFxbYS16QS1aQF0rXCI7XG52YXIgY29udHJvbFN5bWJvbFJlZ2V4U3RyaW5nID0gXCJcXFxcXFxcXFteXFx1RDgwMC1cXHVERkZGXVwiO1xudmFyIGNvbnRyb2xXb3JkV2hpdGVzcGFjZVJlZ2V4U3RyaW5nID0gXCJcIiArIGNvbnRyb2xXb3JkUmVnZXhTdHJpbmcgKyBzcGFjZVJlZ2V4U3RyaW5nICsgXCIqXCI7XG52YXIgY29udHJvbFdvcmRXaGl0ZXNwYWNlUmVnZXggPSBuZXcgUmVnRXhwKFwiXihcIiArIGNvbnRyb2xXb3JkUmVnZXhTdHJpbmcgKyBcIilcIiArIHNwYWNlUmVnZXhTdHJpbmcgKyBcIiokXCIpO1xudmFyIGNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyA9IFwiW1xcdTAzMDAtXFx1MDM2Rl1cIjtcbnZhciBjb21iaW5pbmdEaWFjcml0aWNhbE1hcmtzRW5kUmVnZXggPSBuZXcgUmVnRXhwKGNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyArIFwiKyRcIik7XG52YXIgdG9rZW5SZWdleFN0cmluZyA9IFwiKFwiICsgc3BhY2VSZWdleFN0cmluZyArIFwiKyl8XCIgKyAvLyB3aGl0ZXNwYWNlXG5cIihbIS1cXFxcW1xcXFxdLVxcdTIwMjdcXHUyMDJBLVxcdUQ3RkZcXHVGOTAwLVxcdUZGRkZdXCIgKyAoIC8vIHNpbmdsZSBjb2RlcG9pbnRcbmNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyArIFwiKlwiKSArIC8vIC4uLnBsdXMgYWNjZW50c1xuXCJ8W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXVwiICsgKCAvLyBzdXJyb2dhdGUgcGFpclxuY29tYmluaW5nRGlhY3JpdGljYWxNYXJrU3RyaW5nICsgXCIqXCIpICsgLy8gLi4ucGx1cyBhY2NlbnRzXG5cInxcXFxcXFxcXHZlcmJcXFxcKihbXl0pLio/XFxcXDNcIiArIC8vIFxcdmVyYipcblwifFxcXFxcXFxcdmVyYihbXiphLXpBLVpdKS4qP1xcXFw0XCIgKyAvLyBcXHZlcmIgdW5zdGFycmVkXG5cInxcXFxcXFxcXG9wZXJhdG9ybmFtZVxcXFwqXCIgKyAoIC8vIFxcb3BlcmF0b3JuYW1lKlxuXCJ8XCIgKyBjb250cm9sV29yZFdoaXRlc3BhY2VSZWdleFN0cmluZykgKyAoIC8vIFxcbWFjcm9OYW1lICsgc3BhY2VzXG5cInxcIiArIGNvbnRyb2xTeW1ib2xSZWdleFN0cmluZyArIFwiKVwiKTsgLy8gXFxcXCwgXFwnLCBldGMuXG5cbi8qKiBNYWluIExleGVyIGNsYXNzICovXG5cbnZhciBMZXhlcl9MZXhlciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIC8vIGNhdGVnb3J5IGNvZGVzLCBvbmx5IHN1cHBvcnRzIGNvbW1lbnQgY2hhcmFjdGVycyAoMTQpIGZvciBub3dcbiAgZnVuY3Rpb24gTGV4ZXIoaW5wdXQsIHNldHRpbmdzKSB7XG4gICAgdGhpcy5pbnB1dCA9IHZvaWQgMDtcbiAgICB0aGlzLnNldHRpbmdzID0gdm9pZCAwO1xuICAgIHRoaXMudG9rZW5SZWdleCA9IHZvaWQgMDtcbiAgICB0aGlzLmNhdGNvZGVzID0gdm9pZCAwO1xuICAgIC8vIFNlcGFyYXRlIGFjY2VudHMgZnJvbSBjaGFyYWN0ZXJzXG4gICAgdGhpcy5pbnB1dCA9IGlucHV0O1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB0aGlzLnRva2VuUmVnZXggPSBuZXcgUmVnRXhwKHRva2VuUmVnZXhTdHJpbmcsICdnJyk7XG4gICAgdGhpcy5jYXRjb2RlcyA9IHtcbiAgICAgIFwiJVwiOiAxNCAvLyBjb21tZW50IGNoYXJhY3RlclxuXG4gICAgfTtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBMZXhlci5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnNldENhdGNvZGUgPSBmdW5jdGlvbiBzZXRDYXRjb2RlKGNoYXIsIGNvZGUpIHtcbiAgICB0aGlzLmNhdGNvZGVzW2NoYXJdID0gY29kZTtcbiAgfVxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBsZXhlcyBhIHNpbmdsZSB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ubGV4ID0gZnVuY3Rpb24gbGV4KCkge1xuICAgIHZhciBpbnB1dCA9IHRoaXMuaW5wdXQ7XG4gICAgdmFyIHBvcyA9IHRoaXMudG9rZW5SZWdleC5sYXN0SW5kZXg7XG5cbiAgICBpZiAocG9zID09PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgVG9rZW5fVG9rZW4oXCJFT0ZcIiwgbmV3IFNvdXJjZUxvY2F0aW9uKHRoaXMsIHBvcywgcG9zKSk7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoID0gdGhpcy50b2tlblJlZ2V4LmV4ZWMoaW5wdXQpO1xuXG4gICAgaWYgKG1hdGNoID09PSBudWxsIHx8IG1hdGNoLmluZGV4ICE9PSBwb3MpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyOiAnXCIgKyBpbnB1dFtwb3NdICsgXCInXCIsIG5ldyBUb2tlbl9Ub2tlbihpbnB1dFtwb3NdLCBuZXcgU291cmNlTG9jYXRpb24odGhpcywgcG9zLCBwb3MgKyAxKSkpO1xuICAgIH1cblxuICAgIHZhciB0ZXh0ID0gbWF0Y2hbMl0gfHwgXCIgXCI7XG5cbiAgICBpZiAodGhpcy5jYXRjb2Rlc1t0ZXh0XSA9PT0gMTQpIHtcbiAgICAgIC8vIGNvbW1lbnQgY2hhcmFjdGVyXG4gICAgICB2YXIgbmxJbmRleCA9IGlucHV0LmluZGV4T2YoJ1xcbicsIHRoaXMudG9rZW5SZWdleC5sYXN0SW5kZXgpO1xuXG4gICAgICBpZiAobmxJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy50b2tlblJlZ2V4Lmxhc3RJbmRleCA9IGlucHV0Lmxlbmd0aDsgLy8gRU9GXG5cbiAgICAgICAgdGhpcy5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJjb21tZW50QXRFbmRcIiwgXCIlIGNvbW1lbnQgaGFzIG5vIHRlcm1pbmF0aW5nIG5ld2xpbmU7IExhVGVYIHdvdWxkIFwiICsgXCJmYWlsIGJlY2F1c2Ugb2YgY29tbWVudGluZyB0aGUgZW5kIG9mIG1hdGggbW9kZSAoZS5nLiAkKVwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9rZW5SZWdleC5sYXN0SW5kZXggPSBubEluZGV4ICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgfSAvLyBUcmltIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gY29udHJvbCB3b3JkIG1hdGNoXG5cblxuICAgIHZhciBjb250cm9sTWF0Y2ggPSB0ZXh0Lm1hdGNoKGNvbnRyb2xXb3JkV2hpdGVzcGFjZVJlZ2V4KTtcblxuICAgIGlmIChjb250cm9sTWF0Y2gpIHtcbiAgICAgIHRleHQgPSBjb250cm9sTWF0Y2hbMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBUb2tlbl9Ub2tlbih0ZXh0LCBuZXcgU291cmNlTG9jYXRpb24odGhpcywgcG9zLCB0aGlzLnRva2VuUmVnZXgubGFzdEluZGV4KSk7XG4gIH07XG5cbiAgcmV0dXJuIExleGVyO1xufSgpO1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL05hbWVzcGFjZS5qc1xuLyoqXG4gKiBBIGBOYW1lc3BhY2VgIHJlZmVycyB0byBhIHNwYWNlIG9mIG5hbWVhYmxlIHRoaW5ncyBsaWtlIG1hY3JvcyBvciBsZW5ndGhzLFxuICogd2hpY2ggY2FuIGJlIGBzZXRgIGVpdGhlciBnbG9iYWxseSBvciBsb2NhbCB0byBhIG5lc3RlZCBncm91cCwgdXNpbmcgYW5cbiAqIHVuZG8gc3RhY2sgc2ltaWxhciB0byBob3cgVGVYIGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbmFsaXR5LlxuICogUGVyZm9ybWFuY2Utd2lzZSwgYGdldGAgYW5kIGxvY2FsIGBzZXRgIHRha2UgY29uc3RhbnQgdGltZSwgd2hpbGUgZ2xvYmFsXG4gKiBgc2V0YCB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byB0aGUgZGVwdGggb2YgZ3JvdXAgbmVzdGluZy5cbiAqL1xuXG5cbnZhciBOYW1lc3BhY2VfTmFtZXNwYWNlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEJvdGggYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBvYmplY3Qgb2ZcbiAgICogYnVpbHQtaW4gbWFwcGluZ3Mgd2hpY2ggbmV2ZXIgY2hhbmdlLiAgVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhbiBvYmplY3RcbiAgICogb2YgaW5pdGlhbCAoZ2xvYmFsLWxldmVsKSBtYXBwaW5ncywgd2hpY2ggd2lsbCBjb25zdGFudGx5IGNoYW5nZVxuICAgKiBhY2NvcmRpbmcgdG8gYW55IGdsb2JhbC90b3AtbGV2ZWwgYHNldGBzIGRvbmUuXG4gICAqL1xuICBmdW5jdGlvbiBOYW1lc3BhY2UoYnVpbHRpbnMsIGdsb2JhbE1hY3Jvcykge1xuICAgIGlmIChidWlsdGlucyA9PT0gdm9pZCAwKSB7XG4gICAgICBidWlsdGlucyA9IHt9O1xuICAgIH1cblxuICAgIGlmIChnbG9iYWxNYWNyb3MgPT09IHZvaWQgMCkge1xuICAgICAgZ2xvYmFsTWFjcm9zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50ID0gdm9pZCAwO1xuICAgIHRoaXMuYnVpbHRpbnMgPSB2b2lkIDA7XG4gICAgdGhpcy51bmRlZlN0YWNrID0gdm9pZCAwO1xuICAgIHRoaXMuY3VycmVudCA9IGdsb2JhbE1hY3JvcztcbiAgICB0aGlzLmJ1aWx0aW5zID0gYnVpbHRpbnM7XG4gICAgdGhpcy51bmRlZlN0YWNrID0gW107XG4gIH1cbiAgLyoqXG4gICAqIFN0YXJ0IGEgbmV3IG5lc3RlZCBncm91cCwgYWZmZWN0aW5nIGZ1dHVyZSBsb2NhbCBgc2V0YHMuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IE5hbWVzcGFjZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmJlZ2luR3JvdXAgPSBmdW5jdGlvbiBiZWdpbkdyb3VwKCkge1xuICAgIHRoaXMudW5kZWZTdGFjay5wdXNoKHt9KTtcbiAgfVxuICAvKipcbiAgICogRW5kIGN1cnJlbnQgbmVzdGVkIGdyb3VwLCByZXN0b3JpbmcgdmFsdWVzIGJlZm9yZSB0aGUgZ3JvdXAgYmVnYW4uXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmVuZEdyb3VwID0gZnVuY3Rpb24gZW5kR3JvdXAoKSB7XG4gICAgaWYgKHRoaXMudW5kZWZTdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVuYmFsYW5jZWQgbmFtZXNwYWNlIGRlc3RydWN0aW9uOiBhdHRlbXB0IFwiICsgXCJ0byBwb3AgZ2xvYmFsIG5hbWVzcGFjZTsgcGxlYXNlIHJlcG9ydCB0aGlzIGFzIGEgYnVnXCIpO1xuICAgIH1cblxuICAgIHZhciB1bmRlZnMgPSB0aGlzLnVuZGVmU3RhY2sucG9wKCk7XG5cbiAgICBmb3IgKHZhciB1bmRlZiBpbiB1bmRlZnMpIHtcbiAgICAgIGlmICh1bmRlZnMuaGFzT3duUHJvcGVydHkodW5kZWYpKSB7XG4gICAgICAgIGlmICh1bmRlZnNbdW5kZWZdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50W3VuZGVmXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRbdW5kZWZdID0gdW5kZWZzW3VuZGVmXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogRGV0ZWN0IHdoZXRoZXIgYG5hbWVgIGhhcyBhIGRlZmluaXRpb24uICBFcXVpdmFsZW50IHRvXG4gICAqIGBnZXQobmFtZSkgIT0gbnVsbGAuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhcyA9IGZ1bmN0aW9uIGhhcyhuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudC5oYXNPd25Qcm9wZXJ0eShuYW1lKSB8fCB0aGlzLmJ1aWx0aW5zLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBuYW1lLCBvciBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBubyB2YWx1ZS5cbiAgICpcbiAgICogTm90ZTogRG8gbm90IHVzZSBgaWYgKG5hbWVzcGFjZS5nZXQoLi4uKSlgIHRvIGRldGVjdCB3aGV0aGVyIGEgbWFjcm9cbiAgICogaXMgZGVmaW5lZCwgYXMgdGhlIGRlZmluaXRpb24gbWF5IGJlIHRoZSBlbXB0eSBzdHJpbmcgd2hpY2ggZXZhbHVhdGVzXG4gICAqIHRvIGBmYWxzZWAgaW4gSmF2YVNjcmlwdC4gIFVzZSBgaWYgKG5hbWVzcGFjZS5nZXQoLi4uKSAhPSBudWxsKWAgb3JcbiAgICogYGlmIChuYW1lc3BhY2UuaGFzKC4uLikpYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZ2V0ID0gZnVuY3Rpb24gZ2V0KG5hbWUpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50Lmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50W25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsdGluc1tuYW1lXTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIG5hbWUsIGFuZCBvcHRpb25hbGx5IHNldCBpdCBnbG9iYWxseSB0b28uXG4gICAqIExvY2FsIHNldCgpIHNldHMgdGhlIGN1cnJlbnQgdmFsdWUgYW5kICh3aGVuIGFwcHJvcHJpYXRlKSBhZGRzIGFuIHVuZG9cbiAgICogb3BlcmF0aW9uIHRvIHRoZSB1bmRvIHN0YWNrLiAgR2xvYmFsIHNldCgpIG1heSBjaGFuZ2UgdGhlIHVuZG9cbiAgICogb3BlcmF0aW9uIGF0IGV2ZXJ5IGxldmVsLCBzbyB0YWtlcyB0aW1lIGxpbmVhciBpbiB0aGVpciBudW1iZXIuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnNldCA9IGZ1bmN0aW9uIHNldChuYW1lLCB2YWx1ZSwgZ2xvYmFsKSB7XG4gICAgaWYgKGdsb2JhbCA9PT0gdm9pZCAwKSB7XG4gICAgICBnbG9iYWwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZ2xvYmFsKSB7XG4gICAgICAvLyBHbG9iYWwgc2V0IGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBpbiBhbGwgZ3JvdXBzLiAgU2ltdWxhdGUgdGhpc1xuICAgICAgLy8gYnkgZGVzdHJveWluZyBhbnkgdW5kb3MgY3VycmVudGx5IHNjaGVkdWxlZCBmb3IgdGhpcyBuYW1lLFxuICAgICAgLy8gYW5kIGFkZGluZyBhbiB1bmRvIHdpdGggdGhlICpuZXcqIHZhbHVlIChpbiBjYXNlIGl0IGxhdGVyIGdldHNcbiAgICAgIC8vIGxvY2FsbHkgcmVzZXQgd2l0aGluIHRoaXMgZW52aXJvbm1lbnQpLlxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnVuZGVmU3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZGVsZXRlIHRoaXMudW5kZWZTdGFja1tpXVtuYW1lXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudW5kZWZTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudW5kZWZTdGFja1t0aGlzLnVuZGVmU3RhY2subGVuZ3RoIC0gMV1bbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVW5kbyB0aGlzIHNldCBhdCBlbmQgb2YgdGhpcyBncm91cCAocG9zc2libHkgdG8gYHVuZGVmaW5lZGApLFxuICAgICAgLy8gdW5sZXNzIGFuIHVuZG8gaXMgYWxyZWFkeSBpbiBwbGFjZSwgaW4gd2hpY2ggY2FzZSB0aGF0IG9sZGVyXG4gICAgICAvLyB2YWx1ZSBpcyB0aGUgY29ycmVjdCBvbmUuXG4gICAgICB2YXIgdG9wID0gdGhpcy51bmRlZlN0YWNrW3RoaXMudW5kZWZTdGFjay5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKHRvcCAmJiAhdG9wLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIHRvcFtuYW1lXSA9IHRoaXMuY3VycmVudFtuYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRbbmFtZV0gPSB2YWx1ZTtcbiAgfTtcblxuICByZXR1cm4gTmFtZXNwYWNlO1xufSgpO1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL21hY3Jvcy5qc1xuLyoqXG4gKiBQcmVkZWZpbmVkIG1hY3JvcyBmb3IgS2FUZVguXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBzb21lIGNvbW1hbmRzIGluIHRlcm1zIG9mIG90aGVycy5cbiAqL1xuXG5cblxuXG5cbnZhciBidWlsdGluTWFjcm9zID0ge307XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtYWNyb3MgPSAoYnVpbHRpbk1hY3Jvcyk7IC8vIFRoaXMgZnVuY3Rpb24gbWlnaHQgb25lIGRheSBhY2NlcHQgYW4gYWRkaXRpb25hbCBhcmd1bWVudCBhbmQgZG8gbW9yZSB0aGluZ3MuXG5cbmZ1bmN0aW9uIGRlZmluZU1hY3JvKG5hbWUsIGJvZHkpIHtcbiAgYnVpbHRpbk1hY3Jvc1tuYW1lXSA9IGJvZHk7XG59IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIG1hY3JvIHRvb2xzXG4vLyBMYVRlWCdzIFxcQGZpcnN0b2Z0d297IzF9eyMyfSBleHBhbmRzIHRvICMxLCBza2lwcGluZyAjMlxuLy8gVGVYIHNvdXJjZTogXFxsb25nXFxkZWZcXEBmaXJzdG9mdHdvIzEjMnsjMX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQGZpcnN0b2Z0d29cIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIGFyZ3MgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDIpO1xuICByZXR1cm4ge1xuICAgIHRva2VuczogYXJnc1swXSxcbiAgICBudW1BcmdzOiAwXG4gIH07XG59KTsgLy8gTGFUZVgncyBcXEBzZWNvbmRvZnR3b3sjMX17IzJ9IGV4cGFuZHMgdG8gIzIsIHNraXBwaW5nICMxXG4vLyBUZVggc291cmNlOiBcXGxvbmdcXGRlZlxcQHNlY29uZG9mdHdvIzEjMnsjMn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQHNlY29uZG9mdHdvXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBhcmdzID0gY29udGV4dC5jb25zdW1lQXJncygyKTtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbnM6IGFyZ3NbMV0sXG4gICAgbnVtQXJnczogMFxuICB9O1xufSk7IC8vIExhVGVYJ3MgXFxAaWZuZXh0Y2hhcnsjMX17IzJ9eyMzfSBsb29rcyBhaGVhZCB0byB0aGUgbmV4dCAodW5leHBhbmRlZClcbi8vIHN5bWJvbC4gIElmIGl0IG1hdGNoZXMgIzEsIHRoZW4gdGhlIG1hY3JvIGV4cGFuZHMgdG8gIzI7IG90aGVyd2lzZSwgIzMuXG4vLyBOb3RlLCBob3dldmVyLCB0aGF0IGl0IGRvZXMgbm90IGNvbnN1bWUgdGhlIG5leHQgc3ltYm9sIGluIGVpdGhlciBjYXNlLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxAaWZuZXh0Y2hhclwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgYXJncyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMyk7IC8vIHN5bWJvbCwgaWYsIGVsc2VcblxuICB2YXIgbmV4dFRva2VuID0gY29udGV4dC5mdXR1cmUoKTtcblxuICBpZiAoYXJnc1swXS5sZW5ndGggPT09IDEgJiYgYXJnc1swXVswXS50ZXh0ID09PSBuZXh0VG9rZW4udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbnM6IGFyZ3NbMV0sXG4gICAgICBudW1BcmdzOiAwXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW5zOiBhcmdzWzJdLFxuICAgICAgbnVtQXJnczogMFxuICAgIH07XG4gIH1cbn0pOyAvLyBMYVRlWCdzIFxcQGlmc3RhcnsjMX17IzJ9IGxvb2tzIGFoZWFkIHRvIHRoZSBuZXh0ICh1bmV4cGFuZGVkKSBzeW1ib2wuXG4vLyBJZiBpdCBpcyBgKmAsIHRoZW4gaXQgY29uc3VtZXMgdGhlIHN5bWJvbCwgYW5kIHRoZSBtYWNybyBleHBhbmRzIHRvICMxO1xuLy8gb3RoZXJ3aXNlLCB0aGUgbWFjcm8gZXhwYW5kcyB0byAjMiAod2l0aG91dCBjb25zdW1pbmcgdGhlIHN5bWJvbCkuXG4vLyBUZVggc291cmNlOiBcXGRlZlxcQGlmc3RhciMxe1xcQGlmbmV4dGNoYXIgKntcXEBmaXJzdG9mdHdveyMxfX19XG5cbmRlZmluZU1hY3JvKFwiXFxcXEBpZnN0YXJcIiwgXCJcXFxcQGlmbmV4dGNoYXIgKntcXFxcQGZpcnN0b2Z0d297IzF9fVwiKTsgLy8gTGFUZVgncyBcXFRleHRPck1hdGh7IzF9eyMyfSBleHBhbmRzIHRvICMxIGluIHRleHQgbW9kZSwgIzIgaW4gbWF0aCBtb2RlXG5cbmRlZmluZU1hY3JvKFwiXFxcXFRleHRPck1hdGhcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIGFyZ3MgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDIpO1xuXG4gIGlmIChjb250ZXh0Lm1vZGUgPT09ICd0ZXh0Jykge1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbnM6IGFyZ3NbMF0sXG4gICAgICBudW1BcmdzOiAwXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW5zOiBhcmdzWzFdLFxuICAgICAgbnVtQXJnczogMFxuICAgIH07XG4gIH1cbn0pOyAvLyBMb29rdXAgdGFibGUgZm9yIHBhcnNpbmcgbnVtYmVycyBpbiBiYXNlIDggdGhyb3VnaCAxNlxuXG52YXIgZGlnaXRUb051bWJlciA9IHtcbiAgXCIwXCI6IDAsXG4gIFwiMVwiOiAxLFxuICBcIjJcIjogMixcbiAgXCIzXCI6IDMsXG4gIFwiNFwiOiA0LFxuICBcIjVcIjogNSxcbiAgXCI2XCI6IDYsXG4gIFwiN1wiOiA3LFxuICBcIjhcIjogOCxcbiAgXCI5XCI6IDksXG4gIFwiYVwiOiAxMCxcbiAgXCJBXCI6IDEwLFxuICBcImJcIjogMTEsXG4gIFwiQlwiOiAxMSxcbiAgXCJjXCI6IDEyLFxuICBcIkNcIjogMTIsXG4gIFwiZFwiOiAxMyxcbiAgXCJEXCI6IDEzLFxuICBcImVcIjogMTQsXG4gIFwiRVwiOiAxNCxcbiAgXCJmXCI6IDE1LFxuICBcIkZcIjogMTVcbn07IC8vIFRlWCBcXGNoYXIgbWFrZXMgYSBsaXRlcmFsIGNoYXJhY3RlciAoY2F0Y29kZSAxMikgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3Jtczpcbi8vIChzZWUgVGhlIFRlWEJvb2ssIHAuIDQzKVxuLy8gICBcXGNoYXIxMjMgIC0tIGRlY2ltYWxcbi8vICAgXFxjaGFyJzEyMyAtLSBvY3RhbFxuLy8gICBcXGNoYXJcIjEyMyAtLSBoZXhcbi8vICAgXFxjaGFyYHggICAtLSBjaGFyYWN0ZXIgdGhhdCBjYW4gYmUgd3JpdHRlbiAoaS5lLiBpc24ndCBhY3RpdmUpXG4vLyAgIFxcY2hhcmBcXHggIC0tIGNoYXJhY3RlciB0aGF0IGNhbm5vdCBiZSB3cml0dGVuIChlLmcuICUpXG4vLyBUaGVzZSBhbGwgcmVmZXIgdG8gY2hhcmFjdGVycyBmcm9tIHRoZSBmb250LCBzbyB3ZSB0dXJuIHRoZW0gaW50byBzcGVjaWFsXG4vLyBjYWxscyB0byBhIGZ1bmN0aW9uIFxcQGNoYXIgZGVhbHQgd2l0aCBpbiB0aGUgUGFyc2VyLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxjaGFyXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciB0b2tlbiA9IGNvbnRleHQucG9wVG9rZW4oKTtcbiAgdmFyIGJhc2U7XG4gIHZhciBudW1iZXIgPSAnJztcblxuICBpZiAodG9rZW4udGV4dCA9PT0gXCInXCIpIHtcbiAgICBiYXNlID0gODtcbiAgICB0b2tlbiA9IGNvbnRleHQucG9wVG9rZW4oKTtcbiAgfSBlbHNlIGlmICh0b2tlbi50ZXh0ID09PSAnXCInKSB7XG4gICAgYmFzZSA9IDE2O1xuICAgIHRva2VuID0gY29udGV4dC5wb3BUb2tlbigpO1xuICB9IGVsc2UgaWYgKHRva2VuLnRleHQgPT09IFwiYFwiKSB7XG4gICAgdG9rZW4gPSBjb250ZXh0LnBvcFRva2VuKCk7XG5cbiAgICBpZiAodG9rZW4udGV4dFswXSA9PT0gXCJcXFxcXCIpIHtcbiAgICAgIG51bWJlciA9IHRva2VuLnRleHQuY2hhckNvZGVBdCgxKTtcbiAgICB9IGVsc2UgaWYgKHRva2VuLnRleHQgPT09IFwiRU9GXCIpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxjaGFyYCBtaXNzaW5nIGFyZ3VtZW50XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBudW1iZXIgPSB0b2tlbi50ZXh0LmNoYXJDb2RlQXQoMCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJhc2UgPSAxMDtcbiAgfVxuXG4gIGlmIChiYXNlKSB7XG4gICAgLy8gUGFyc2UgYSBudW1iZXIgaW4gdGhlIGdpdmVuIGJhc2UsIHN0YXJ0aW5nIHdpdGggZmlyc3QgYHRva2VuYC5cbiAgICBudW1iZXIgPSBkaWdpdFRvTnVtYmVyW3Rva2VuLnRleHRdO1xuXG4gICAgaWYgKG51bWJlciA9PSBudWxsIHx8IG51bWJlciA+PSBiYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGJhc2UtXCIgKyBiYXNlICsgXCIgZGlnaXQgXCIgKyB0b2tlbi50ZXh0KTtcbiAgICB9XG5cbiAgICB2YXIgZGlnaXQ7XG5cbiAgICB3aGlsZSAoKGRpZ2l0ID0gZGlnaXRUb051bWJlcltjb250ZXh0LmZ1dHVyZSgpLnRleHRdKSAhPSBudWxsICYmIGRpZ2l0IDwgYmFzZSkge1xuICAgICAgbnVtYmVyICo9IGJhc2U7XG4gICAgICBudW1iZXIgKz0gZGlnaXQ7XG4gICAgICBjb250ZXh0LnBvcFRva2VuKCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFwiXFxcXEBjaGFye1wiICsgbnVtYmVyICsgXCJ9XCI7XG59KTsgLy8gQmFzaWMgc3VwcG9ydCBmb3IgbWFjcm8gZGVmaW5pdGlvbnM6XG4vLyAgICAgXFxkZWZcXG1hY3Jve2V4cGFuc2lvbn1cbi8vICAgICBcXGRlZlxcbWFjcm8jMXtleHBhbnNpb259XG4vLyAgICAgXFxkZWZcXG1hY3JvIzEjMntleHBhbnNpb259XG4vLyAgICAgXFxkZWZcXG1hY3JvIzEjMiMzIzQjNSM2IzcjOCM5e2V4cGFuc2lvbn1cbi8vIEFsc28gdGhlIFxcZ2RlZiBhbmQgXFxnbG9iYWxcXGRlZiBlcXVpdmFsZW50c1xuXG52YXIgbWFjcm9zX2RlZiA9IGZ1bmN0aW9uIGRlZihjb250ZXh0LCBnbG9iYWwpIHtcbiAgdmFyIGFyZyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgaWYgKGFyZy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcZ2RlZidzIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBtYWNybyBuYW1lXCIpO1xuICB9XG5cbiAgdmFyIG5hbWUgPSBhcmdbMF0udGV4dDsgLy8gQ291bnQgYXJndW1lbnQgc3BlY2lmaWVycywgYW5kIGNoZWNrIHRoZXkgYXJlIGluIHRoZSBvcmRlciAjMSAjMiAuLi5cblxuICB2YXIgbnVtQXJncyA9IDA7XG4gIGFyZyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgd2hpbGUgKGFyZy5sZW5ndGggPT09IDEgJiYgYXJnWzBdLnRleHQgPT09IFwiI1wiKSB7XG4gICAgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcblxuICAgIGlmIChhcmcubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50IG51bWJlciBsZW5ndGggXFxcIlwiICsgYXJnLmxlbmd0aCArIFwiXFxcIlwiKTtcbiAgICB9XG5cbiAgICBpZiAoIS9eWzEtOV0kLy50ZXN0KGFyZ1swXS50ZXh0KSkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBhcmd1bWVudCBudW1iZXIgXFxcIlwiICsgYXJnWzBdLnRleHQgKyBcIlxcXCJcIik7XG4gICAgfVxuXG4gICAgbnVtQXJncysrO1xuXG4gICAgaWYgKHBhcnNlSW50KGFyZ1swXS50ZXh0KSAhPT0gbnVtQXJncykge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiQXJndW1lbnQgbnVtYmVyIFxcXCJcIiArIGFyZ1swXS50ZXh0ICsgXCJcXFwiIG91dCBvZiBvcmRlclwiKTtcbiAgICB9XG5cbiAgICBhcmcgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDEpWzBdO1xuICB9IC8vIEZpbmFsIGFyZyBpcyB0aGUgZXhwYW5zaW9uIG9mIHRoZSBtYWNyb1xuXG5cbiAgY29udGV4dC5tYWNyb3Muc2V0KG5hbWUsIHtcbiAgICB0b2tlbnM6IGFyZyxcbiAgICBudW1BcmdzOiBudW1BcmdzXG4gIH0sIGdsb2JhbCk7XG4gIHJldHVybiAnJztcbn07XG5cbmRlZmluZU1hY3JvKFwiXFxcXGdkZWZcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIG1hY3Jvc19kZWYoY29udGV4dCwgdHJ1ZSk7XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGRlZlwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4gbWFjcm9zX2RlZihjb250ZXh0LCBmYWxzZSk7XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGdsb2JhbFwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgbmV4dCA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgaWYgKG5leHQubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBjb21tYW5kIGFmdGVyIFxcXFxnbG9iYWxcIik7XG4gIH1cblxuICB2YXIgY29tbWFuZCA9IG5leHRbMF0udGV4dDsgLy8gVE9ETzogU2hvdWxkIGV4cGFuZCBjb21tYW5kXG5cbiAgaWYgKGNvbW1hbmQgPT09IFwiXFxcXGRlZlwiKSB7XG4gICAgLy8gXFxnbG9iYWxcXGRlZiBpcyBlcXVpdmFsZW50IHRvIFxcZ2RlZlxuICAgIHJldHVybiBtYWNyb3NfZGVmKGNvbnRleHQsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgY29tbWFuZCAnXCIgKyBjb21tYW5kICsgXCInIGFmdGVyIFxcXFxnbG9iYWxcIik7XG4gIH1cbn0pOyAvLyBcXG5ld2NvbW1hbmR7XFxtYWNyb31bYXJnc117ZGVmaW5pdGlvbn1cbi8vIFxccmVuZXdjb21tYW5ke1xcbWFjcm99W2FyZ3Nde2RlZmluaXRpb259XG4vLyBUT0RPOiBPcHRpb25hbCBhcmd1bWVudHM6IFxcbmV3Y29tbWFuZHtcXG1hY3JvfVthcmdzXVtkZWZhdWx0XXtkZWZpbml0aW9ufVxuXG52YXIgbWFjcm9zX25ld2NvbW1hbmQgPSBmdW5jdGlvbiBuZXdjb21tYW5kKGNvbnRleHQsIGV4aXN0c09LLCBub25leGlzdHNPSykge1xuICB2YXIgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcblxuICBpZiAoYXJnLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxuZXdjb21tYW5kJ3MgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIG1hY3JvIG5hbWVcIik7XG4gIH1cblxuICB2YXIgbmFtZSA9IGFyZ1swXS50ZXh0O1xuICB2YXIgZXhpc3RzID0gY29udGV4dC5pc0RlZmluZWQobmFtZSk7XG5cbiAgaWYgKGV4aXN0cyAmJiAhZXhpc3RzT0spIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcbmV3Y29tbWFuZHtcIiArIG5hbWUgKyBcIn0gYXR0ZW1wdGluZyB0byByZWRlZmluZSBcIiArIChuYW1lICsgXCI7IHVzZSBcXFxccmVuZXdjb21tYW5kXCIpKTtcbiAgfVxuXG4gIGlmICghZXhpc3RzICYmICFub25leGlzdHNPSykge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxyZW5ld2NvbW1hbmR7XCIgKyBuYW1lICsgXCJ9IHdoZW4gY29tbWFuZCBcIiArIG5hbWUgKyBcIiBcIiArIFwiZG9lcyBub3QgeWV0IGV4aXN0OyB1c2UgXFxcXG5ld2NvbW1hbmRcIik7XG4gIH1cblxuICB2YXIgbnVtQXJncyA9IDA7XG4gIGFyZyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgaWYgKGFyZy5sZW5ndGggPT09IDEgJiYgYXJnWzBdLnRleHQgPT09IFwiW1wiKSB7XG4gICAgdmFyIGFyZ1RleHQgPSAnJztcbiAgICB2YXIgdG9rZW4gPSBjb250ZXh0LmV4cGFuZE5leHRUb2tlbigpO1xuXG4gICAgd2hpbGUgKHRva2VuLnRleHQgIT09IFwiXVwiICYmIHRva2VuLnRleHQgIT09IFwiRU9GXCIpIHtcbiAgICAgIC8vIFRPRE86IFNob3VsZCBwcm9wZXJseSBleHBhbmQgYXJnLCBlLmcuLCBpZ25vcmUge31zXG4gICAgICBhcmdUZXh0ICs9IHRva2VuLnRleHQ7XG4gICAgICB0b2tlbiA9IGNvbnRleHQuZXhwYW5kTmV4dFRva2VuKCk7XG4gICAgfVxuXG4gICAgaWYgKCFhcmdUZXh0Lm1hdGNoKC9eXFxzKlswLTldK1xccyokLykpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50czogXCIgKyBhcmdUZXh0KTtcbiAgICB9XG5cbiAgICBudW1BcmdzID0gcGFyc2VJbnQoYXJnVGV4dCk7XG4gICAgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcbiAgfSAvLyBGaW5hbCBhcmcgaXMgdGhlIGV4cGFuc2lvbiBvZiB0aGUgbWFjcm9cblxuXG4gIGNvbnRleHQubWFjcm9zLnNldChuYW1lLCB7XG4gICAgdG9rZW5zOiBhcmcsXG4gICAgbnVtQXJnczogbnVtQXJnc1xuICB9KTtcbiAgcmV0dXJuICcnO1xufTtcblxuZGVmaW5lTWFjcm8oXCJcXFxcbmV3Y29tbWFuZFwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4gbWFjcm9zX25ld2NvbW1hbmQoY29udGV4dCwgZmFsc2UsIHRydWUpO1xufSk7XG5kZWZpbmVNYWNybyhcIlxcXFxyZW5ld2NvbW1hbmRcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIG1hY3Jvc19uZXdjb21tYW5kKGNvbnRleHQsIHRydWUsIGZhbHNlKTtcbn0pO1xuZGVmaW5lTWFjcm8oXCJcXFxccHJvdmlkZWNvbW1hbmRcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIG1hY3Jvc19uZXdjb21tYW5kKGNvbnRleHQsIHRydWUsIHRydWUpO1xufSk7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdyb3VwaW5nXG4vLyBcXGxldFxcYmdyb3VwPXsgXFxsZXRcXGVncm91cD19XG5cbmRlZmluZU1hY3JvKFwiXFxcXGJncm91cFwiLCBcIntcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxlZ3JvdXBcIiwgXCJ9XCIpOyAvLyBTeW1ib2xzIGZyb20gbGF0ZXgubHR4OlxuLy8gXFxkZWZcXGxxe2B9XG4vLyBcXGRlZlxccnF7J31cbi8vIFxcZGVmIFxcYWEge1xcciBhfVxuLy8gXFxkZWYgXFxBQSB7XFxyIEF9XG5cbmRlZmluZU1hY3JvKFwiXFxcXGxxXCIsIFwiYFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJxXCIsIFwiJ1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFhXCIsIFwiXFxcXHIgYVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEFBXCIsIFwiXFxcXHIgQVwiKTsgLy8gQ29weXJpZ2h0IChDKSBhbmQgcmVnaXN0ZXJlZCAoUikgc3ltYm9scy4gVXNlIHJhdyBzeW1ib2wgaW4gTWF0aE1MLlxuLy8gXFxEZWNsYXJlVGV4dENvbW1hbmREZWZhdWx0e1xcdGV4dGNvcHlyaWdodH17XFx0ZXh0Y2lyY2xlZHtjfX1cbi8vIFxcRGVjbGFyZVRleHRDb21tYW5kRGVmYXVsdHtcXHRleHRyZWdpc3RlcmVkfXtcXHRleHRjaXJjbGVkeyVcbi8vICAgICAgXFxjaGVja0BtYXRoZm9udHNcXGZvbnRzaXplXFxzZkBzaXplXFx6QFxcbWF0aEBmb250c2ZhbHNlXFxzZWxlY3Rmb250IFJ9fVxuLy8gXFxEZWNsYXJlUm9idXN0Q29tbWFuZHtcXGNvcHlyaWdodH17JVxuLy8gICAgXFxpZm1tb2Rle1xcbmZzc0B0ZXh0e1xcdGV4dGNvcHlyaWdodH19XFxlbHNlXFx0ZXh0Y29weXJpZ2h0XFxmaX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcdGV4dGNvcHlyaWdodFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcdGV4dGNpcmNsZWR7Y319e1xcXFxjaGFyYMKpfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvcHlyaWdodFwiLCBcIlxcXFxUZXh0T3JNYXRoe1xcXFx0ZXh0Y29weXJpZ2h0fXtcXFxcdGV4dHtcXFxcdGV4dGNvcHlyaWdodH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGV4dHJlZ2lzdGVyZWRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXHRleHRjaXJjbGVke1xcXFxzY3JpcHRzaXplIFJ9fXtcXFxcY2hhcmDCrn1cIik7IC8vIENoYXJhY3RlcnMgb21pdHRlZCBmcm9tIFVuaWNvZGUgcmFuZ2UgMUQ0MDDigJMxRDdGRlxuXG5kZWZpbmVNYWNybyhcIlxcdTIxMkNcIiwgXCJcXFxcbWF0aHNjcntCfVwiKTsgLy8gc2NyaXB0XG5cbmRlZmluZU1hY3JvKFwiXFx1MjEzMFwiLCBcIlxcXFxtYXRoc2Nye0V9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTMxXCIsIFwiXFxcXG1hdGhzY3J7Rn1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMEJcIiwgXCJcXFxcbWF0aHNjcntIfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjExMFwiLCBcIlxcXFxtYXRoc2Nye0l9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTEyXCIsIFwiXFxcXG1hdGhzY3J7TH1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMzNcIiwgXCJcXFxcbWF0aHNjcntNfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjExQlwiLCBcIlxcXFxtYXRoc2Nye1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTJEXCIsIFwiXFxcXG1hdGhmcmFre0N9XCIpOyAvLyBGcmFrdHVyXG5cbmRlZmluZU1hY3JvKFwiXFx1MjEwQ1wiLCBcIlxcXFxtYXRoZnJha3tIfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjEyOFwiLCBcIlxcXFxtYXRoZnJha3tafVwiKTsgLy8gRGVmaW5lIFxcQmJiayB3aXRoIGEgbWFjcm8gdGhhdCB3b3JrcyBpbiBib3RoIEhUTUwgYW5kIE1hdGhNTC5cblxuZGVmaW5lTWFjcm8oXCJcXFxcQmJia1wiLCBcIlxcXFxCYmJ7a31cIik7IC8vIFVuaWNvZGUgbWlkZGxlIGRvdFxuLy8gVGhlIEthVGVYIGZvbnRzIGRvIG5vdCBjb250YWluIFUrMDBCNy4gSW5zdGVhZCwgXFxjZG90cCBkaXNwbGF5c1xuLy8gdGhlIGRvdCBhdCBVKzIyQzUgYW5kIGdpdmVzIGl0IHB1bmN0IHNwYWNpbmcuXG5cbmRlZmluZU1hY3JvKFwiXFx4QjdcIiwgXCJcXFxcY2RvdHBcIik7IC8vIFxcbGxhcCBhbmQgXFxybGFwIHJlbmRlciB0aGVpciBjb250ZW50cyBpbiB0ZXh0IG1vZGVcblxuZGVmaW5lTWFjcm8oXCJcXFxcbGxhcFwiLCBcIlxcXFxtYXRobGxhcHtcXFxcdGV4dHJteyMxfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxybGFwXCIsIFwiXFxcXG1hdGhybGFwe1xcXFx0ZXh0cm17IzF9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNsYXBcIiwgXCJcXFxcbWF0aGNsYXB7XFxcXHRleHRybXsjMX19XCIpOyAvLyBcXG5vdCBpcyBkZWZpbmVkIGJ5IGJhc2UvZm9udG1hdGgubHR4IHZpYVxuLy8gXFxEZWNsYXJlTWF0aFN5bWJvbHtcXG5vdH17XFxtYXRocmVsfXtzeW1ib2xzfXtcIjM2fVxuLy8gSXQncyB0aHVzIHRyZWF0ZWQgbGlrZSBhIFxcbWF0aHJlbCwgYnV0IGRlZmluZWQgYnkgYSBzeW1ib2wgdGhhdCBoYXMgemVyb1xuLy8gd2lkdGggYnV0IGV4dGVuZHMgdG8gdGhlIHJpZ2h0LiAgV2UgdXNlIFxccmxhcCB0byBnZXQgdGhhdCBzcGFjaW5nLlxuLy8gRm9yIE1hdGhNTCB3ZSB3cml0ZSBVKzAzMzggaGVyZS4gYnVpbGRNYXRoTUwuanMgd2lsbCB0aGVuIGRvIHRoZSBvdmVybGF5LlxuXG5kZWZpbmVNYWNybyhcIlxcXFxub3RcIiwgJ1xcXFxodG1sQG1hdGhtbHtcXFxcbWF0aHJlbHtcXFxcbWF0aHJsYXBcXFxcQG5vdH19e1xcXFxjaGFyXCIzMzh9Jyk7IC8vIE5lZ2F0ZWQgc3ltYm9scyBmcm9tIGJhc2UvZm9udG1hdGgubHR4OlxuLy8gXFxkZWZcXG5lcXtcXG5vdD19IFxcbGV0XFxuZT1cXG5lcVxuLy8gXFxEZWNsYXJlUm9idXN0Q29tbWFuZFxuLy8gICBcXG5vdGlue1xcbWF0aHJlbHtcXG1AdGhcXG1hdGhwYWxldHRlXFxjQG5jZWxcXGlufX1cbi8vIFxcZGVmXFxjQG5jZWwjMSMye1xcbUB0aFxcb29hbGlnbnskXFxoZmlsIzFcXG1rZXJuMW11L1xcaGZpbCRcXGNyY3IkIzEjMiR9fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxuZXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXG1hdGhyZWx7XFxcXG5vdD19fXtcXFxcbWF0aHJlbHtcXFxcY2hhcmDiiaB9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5lXCIsIFwiXFxcXG5lcVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjI2MFwiLCBcIlxcXFxuZXFcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxub3RpblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcbWF0aHJlbHt7XFxcXGlufVxcXFxtYXRobGxhcHsvXFxcXG1za2lwMW11fX19XCIgKyBcIntcXFxcbWF0aHJlbHtcXFxcY2hhcmDiiIl9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjIwOVwiLCBcIlxcXFxub3RpblwiKTsgLy8gVW5pY29kZSBzdGFja2VkIHJlbGF0aW9uc1xuXG5kZWZpbmVNYWNybyhcIlxcdTIyNThcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVsez1cXFxca2VybnstMWVtfVxcXFxyYWlzZWJveHswLjRlbX17JFxcXFxzY3JpcHRzaXplXFxcXGZyb3duJH19XCIgKyBcIn17XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1OH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjU5XCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueVxcXFx3ZWRnZX17PX19e1xcXFxtYXRocmVse1xcXFxjaGFyYFxcdTIyNTh9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjI1QVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcc3RhY2tyZWx7XFxcXHRpbnlcXFxcdmVlfXs9fX17XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1QX19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVCXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcc2NyaXB0c2l6ZVxcXFxzdGFyfXs9fX1cIiArIFwie1xcXFxtYXRocmVse1xcXFxjaGFyYFxcdTIyNUJ9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjI1RFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcc3RhY2tyZWx7XFxcXHRpbnlcXFxcbWF0aHJte2RlZn19ez19fVwiICsgXCJ7XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1RH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVFXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueVxcXFxtYXRocm17bX19ez19fVwiICsgXCJ7XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1RX19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVGXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueT99ez19fXtcXFxcbWF0aHJlbHtcXFxcY2hhcmBcXHUyMjVGfX1cIik7IC8vIE1pc2MgVW5pY29kZVxuXG5kZWZpbmVNYWNybyhcIlxcdTI3QzJcIiwgXCJcXFxccGVycFwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjAzQ1wiLCBcIlxcXFxtYXRoY2xvc2V7IVxcXFxta2Vybi0wLjhtdSF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjBDXCIsIFwiXFxcXG5vdG5pXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFDXCIsIFwiXFxcXHVsY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFEXCIsIFwiXFxcXHVyY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFFXCIsIFwiXFxcXGxsY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFGXCIsIFwiXFxcXGxyY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHhBOVwiLCBcIlxcXFxjb3B5cmlnaHRcIik7XG5kZWZpbmVNYWNybyhcIlxceEFFXCIsIFwiXFxcXHRleHRyZWdpc3RlcmVkXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHVGRTBGXCIsIFwiXFxcXHRleHRyZWdpc3RlcmVkXCIpOyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMYVRlWF8yzrVcbi8vIFxcdmRvdHN7XFx2Ym94e1xcYmFzZWxpbmVza2lwNFxccEAgIFxcbGluZXNraXBsaW1pdFxcekBcbi8vIFxca2VybjZcXHBAXFxoYm94ey59XFxoYm94ey59XFxoYm94ey59fX1cbi8vIFdlJ2xsIGNhbGwgXFx2YXJ2ZG90cywgd2hpY2ggZ2V0cyBhIGdseXBoIGZyb20gc3ltYm9scy5qcy5cbi8vIFRoZSB6ZXJvLXdpZHRoIHJ1bGUgZ2V0cyB1cyBhbiBlcXVpdmFsZW50IHRvIHRoZSB2ZXJ0aWNhbCA2cHQga2Vybi5cblxuZGVmaW5lTWFjcm8oXCJcXFxcdmRvdHNcIiwgXCJcXFxcbWF0aG9yZHtcXFxcdmFydmRvdHNcXFxccnVsZXswcHR9ezE1cHR9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjJFRVwiLCBcIlxcXFx2ZG90c1wiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gYW1zbWF0aC5zdHlcbi8vIGh0dHA6Ly9taXJyb3JzLmNvbmNlcnRwYXNzLmNvbS90ZXgtYXJjaGl2ZS9tYWNyb3MvbGF0ZXgvcmVxdWlyZWQvYW1zbWF0aC9hbXNtYXRoLnBkZlxuLy8gSXRhbGljIEdyZWVrIGNhcGl0YWwgbGV0dGVycy4gIEFNUyBkZWZpbmVzIHRoZXNlIHdpdGggXFxEZWNsYXJlTWF0aFN5bWJvbCxcbi8vIGJ1dCB0aGV5IGFyZSBlcXVpdmFsZW50IHRvIFxcbWF0aGl0e1xcTGV0dGVyfS5cblxuZGVmaW5lTWFjcm8oXCJcXFxcdmFyR2FtbWFcIiwgXCJcXFxcbWF0aGl0e1xcXFxHYW1tYX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJEZWx0YVwiLCBcIlxcXFxtYXRoaXR7XFxcXERlbHRhfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclRoZXRhXCIsIFwiXFxcXG1hdGhpdHtcXFxcVGhldGF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyTGFtYmRhXCIsIFwiXFxcXG1hdGhpdHtcXFxcTGFtYmRhfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclhpXCIsIFwiXFxcXG1hdGhpdHtcXFxcWGl9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyUGlcIiwgXCJcXFxcbWF0aGl0e1xcXFxQaX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJTaWdtYVwiLCBcIlxcXFxtYXRoaXR7XFxcXFNpZ21hfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclVwc2lsb25cIiwgXCJcXFxcbWF0aGl0e1xcXFxVcHNpbG9ufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclBoaVwiLCBcIlxcXFxtYXRoaXR7XFxcXFBoaX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJQc2lcIiwgXCJcXFxcbWF0aGl0e1xcXFxQc2l9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyT21lZ2FcIiwgXCJcXFxcbWF0aGl0e1xcXFxPbWVnYX1cIik7IC8vXFxuZXdjb21tYW5ke1xcc3Vic3RhY2t9WzFde1xcc3ViYXJyYXl7Y30jMVxcZW5kc3ViYXJyYXl9XG5cbmRlZmluZU1hY3JvKFwiXFxcXHN1YnN0YWNrXCIsIFwiXFxcXGJlZ2lue3N1YmFycmF5fXtjfSMxXFxcXGVuZHtzdWJhcnJheX1cIik7IC8vIFxccmVuZXdjb21tYW5ke1xcY29sb259e1xcbm9icmVha1xcbXNraXAybXVcXG1hdGhwdW5jdHt9XFxub25zY3JpcHRcbi8vIFxcbWtlcm4tXFx0aGlubXVza2lwezp9XFxtc2tpcDZtdXBsdXMxbXVcXHJlbGF4fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvblwiLCBcIlxcXFxub2JyZWFrXFxcXG1za2lwMm11XFxcXG1hdGhwdW5jdHt9XCIgKyBcIlxcXFxtYXRoY2hvaWNle1xcXFxta2Vybi0zbXV9e1xcXFxta2Vybi0zbXV9e317fXs6fVxcXFxtc2tpcDZtdVwiKTsgLy8gXFxuZXdjb21tYW5ke1xcYm94ZWR9WzFde1xcZmJveHtcXG1AdGgkXFxkaXNwbGF5c3R5bGUjMSR9fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxib3hlZFwiLCBcIlxcXFxmYm94eyRcXFxcZGlzcGxheXN0eWxleyMxfSR9XCIpOyAvLyBcXGRlZlxcaWZme1xcRE9UU0JcXDtcXExvbmdsZWZ0cmlnaHRhcnJvd1xcO31cbi8vIFxcZGVmXFxpbXBsaWVze1xcRE9UU0JcXDtcXExvbmdyaWdodGFycm93XFw7fVxuLy8gXFxkZWZcXGltcGxpZWRieXtcXERPVFNCXFw7XFxMb25nbGVmdGFycm93XFw7fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxpZmZcIiwgXCJcXFxcRE9UU0JcXFxcO1xcXFxMb25nbGVmdHJpZ2h0YXJyb3dcXFxcO1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGltcGxpZXNcIiwgXCJcXFxcRE9UU0JcXFxcO1xcXFxMb25ncmlnaHRhcnJvd1xcXFw7XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaW1wbGllZGJ5XCIsIFwiXFxcXERPVFNCXFxcXDtcXFxcTG9uZ2xlZnRhcnJvd1xcXFw7XCIpOyAvLyBBTVNNYXRoJ3MgYXV0b21hdGljIFxcZG90cywgYmFzZWQgb24gXFxtZG90c0BAIG1hY3JvLlxuXG52YXIgZG90c0J5VG9rZW4gPSB7XG4gICcsJzogJ1xcXFxkb3RzYycsXG4gICdcXFxcbm90JzogJ1xcXFxkb3RzYicsXG4gIC8vIFxca2V5YmluQCBjaGVja3MgZm9yIHRoZSBmb2xsb3dpbmc6XG4gICcrJzogJ1xcXFxkb3RzYicsXG4gICc9JzogJ1xcXFxkb3RzYicsXG4gICc8JzogJ1xcXFxkb3RzYicsXG4gICc+JzogJ1xcXFxkb3RzYicsXG4gICctJzogJ1xcXFxkb3RzYicsXG4gICcqJzogJ1xcXFxkb3RzYicsXG4gICc6JzogJ1xcXFxkb3RzYicsXG4gIC8vIFN5bWJvbHMgd2hvc2UgZGVmaW5pdGlvbiBzdGFydHMgd2l0aCBcXERPVFNCOlxuICAnXFxcXERPVFNCJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcY29wcm9kJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcYmlndmVlJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcYmlnd2VkZ2UnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWd1cGx1cyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ2NhcCc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ2N1cCc6ICdcXFxcZG90c2InLFxuICAnXFxcXHByb2QnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxzdW0nOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWdvdGltZXMnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWdvcGx1cyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ29kb3QnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWdzcWN1cCc6ICdcXFxcZG90c2InLFxuICAnXFxcXEFuZCc6ICdcXFxcZG90c2InLFxuICAnXFxcXGxvbmdyaWdodGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxcTG9uZ3JpZ2h0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxsb25nbGVmdGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxcTG9uZ2xlZnRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGxvbmdsZWZ0cmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXExvbmdsZWZ0cmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXG1hcHN0byc6ICdcXFxcZG90c2InLFxuICAnXFxcXGxvbmdtYXBzdG8nOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxob29rcmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGRvdGVxJzogJ1xcXFxkb3RzYicsXG4gIC8vIFN5bWJvbHMgd2hvc2UgZGVmaW5pdGlvbiBzdGFydHMgd2l0aCBcXG1hdGhiaW46XG4gICdcXFxcbWF0aGJpbic6ICdcXFxcZG90c2InLFxuICAvLyBTeW1ib2xzIHdob3NlIGRlZmluaXRpb24gc3RhcnRzIHdpdGggXFxtYXRocmVsOlxuICAnXFxcXG1hdGhyZWwnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxyZWxiYXInOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxSZWxiYXInOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFx4cmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXHhsZWZ0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgLy8gU3ltYm9scyB3aG9zZSBkZWZpbml0aW9uIHN0YXJ0cyB3aXRoIFxcRE9UU0k6XG4gICdcXFxcRE9UU0knOiAnXFxcXGRvdHNpJyxcbiAgJ1xcXFxpbnQnOiAnXFxcXGRvdHNpJyxcbiAgJ1xcXFxvaW50JzogJ1xcXFxkb3RzaScsXG4gICdcXFxcaWludCc6ICdcXFxcZG90c2knLFxuICAnXFxcXGlpaW50JzogJ1xcXFxkb3RzaScsXG4gICdcXFxcaWlpaW50JzogJ1xcXFxkb3RzaScsXG4gICdcXFxcaWRvdHNpbnQnOiAnXFxcXGRvdHNpJyxcbiAgLy8gU3ltYm9scyB3aG9zZSBkZWZpbml0aW9uIHN0YXJ0cyB3aXRoIFxcRE9UU1g6XG4gICdcXFxcRE9UU1gnOiAnXFxcXGRvdHN4J1xufTtcbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgLy8gVE9ETzogSWYgdXNlZCBpbiB0ZXh0IG1vZGUsIHNob3VsZCBleHBhbmQgdG8gXFx0ZXh0ZWxsaXBzaXMuXG4gIC8vIEhvd2V2ZXIsIGluIEthVGVYLCBcXHRleHRlbGxpcHNpcyBhbmQgXFxsZG90cyBiZWhhdmUgdGhlIHNhbWVcbiAgLy8gKGluIHRleHQgbW9kZSksIGFuZCBpdCdzIHVubGlrZWx5IHdlJ2Qgc2VlIGFueSBvZiB0aGUgbWF0aCBjb21tYW5kc1xuICAvLyB0aGF0IGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgXFxkb3RzIHdoZW4gaW4gdGV4dCBtb2RlLiAgU28gZmluZSBmb3Igbm93XG4gIC8vICh1bnRpbCB3ZSBzdXBwb3J0IFxcaWZtbW9kZSAuLi4gXFxlbHNlIC4uLiBcXGZpKS5cbiAgdmFyIHRoZWRvdHMgPSAnXFxcXGRvdHNvJztcbiAgdmFyIG5leHQgPSBjb250ZXh0LmV4cGFuZEFmdGVyRnV0dXJlKCkudGV4dDtcblxuICBpZiAobmV4dCBpbiBkb3RzQnlUb2tlbikge1xuICAgIHRoZWRvdHMgPSBkb3RzQnlUb2tlbltuZXh0XTtcbiAgfSBlbHNlIGlmIChuZXh0LnN1YnN0cigwLCA0KSA9PT0gJ1xcXFxub3QnKSB7XG4gICAgdGhlZG90cyA9ICdcXFxcZG90c2InO1xuICB9IGVsc2UgaWYgKG5leHQgaW4gc3JjX3N5bWJvbHMubWF0aCkge1xuICAgIGlmICh1dGlscy5jb250YWlucyhbJ2JpbicsICdyZWwnXSwgc3JjX3N5bWJvbHMubWF0aFtuZXh0XS5ncm91cCkpIHtcbiAgICAgIHRoZWRvdHMgPSAnXFxcXGRvdHNiJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhlZG90cztcbn0pO1xudmFyIHNwYWNlQWZ0ZXJEb3RzID0ge1xuICAvLyBcXHJpZ2h0ZGVsaW1AIGNoZWNrcyBmb3IgdGhlIGZvbGxvd2luZzpcbiAgJyknOiB0cnVlLFxuICAnXSc6IHRydWUsXG4gICdcXFxccmJyYWNrJzogdHJ1ZSxcbiAgJ1xcXFx9JzogdHJ1ZSxcbiAgJ1xcXFxyYnJhY2UnOiB0cnVlLFxuICAnXFxcXHJhbmdsZSc6IHRydWUsXG4gICdcXFxccmNlaWwnOiB0cnVlLFxuICAnXFxcXHJmbG9vcic6IHRydWUsXG4gICdcXFxccmdyb3VwJzogdHJ1ZSxcbiAgJ1xcXFxybW91c3RhY2hlJzogdHJ1ZSxcbiAgJ1xcXFxyaWdodCc6IHRydWUsXG4gICdcXFxcYmlncic6IHRydWUsXG4gICdcXFxcYmlnZ3InOiB0cnVlLFxuICAnXFxcXEJpZ3InOiB0cnVlLFxuICAnXFxcXEJpZ2dyJzogdHJ1ZSxcbiAgLy8gXFxleHRyYUAgYWxzbyB0ZXN0cyBmb3IgdGhlIGZvbGxvd2luZzpcbiAgJyQnOiB0cnVlLFxuICAvLyBcXGV4dHJhcEAgY2hlY2tzIGZvciB0aGUgZm9sbG93aW5nOlxuICAnOyc6IHRydWUsXG4gICcuJzogdHJ1ZSxcbiAgJywnOiB0cnVlXG59O1xuZGVmaW5lTWFjcm8oXCJcXFxcZG90c29cIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIG5leHQgPSBjb250ZXh0LmZ1dHVyZSgpLnRleHQ7XG5cbiAgaWYgKG5leHQgaW4gc3BhY2VBZnRlckRvdHMpIHtcbiAgICByZXR1cm4gXCJcXFxcbGRvdHNcXFxcLFwiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBcIlxcXFxsZG90c1wiO1xuICB9XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNjXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBuZXh0ID0gY29udGV4dC5mdXR1cmUoKS50ZXh0OyAvLyBcXGRvdHNjIHVzZXMgXFxleHRyYUAgYnV0IG5vdCBcXGV4dHJhcEAsIGluc3RlYWQgc3BlY2lhbGx5IGNoZWNraW5nIGZvclxuICAvLyAnOycgYW5kICcuJywgYnV0IGRvZXNuJ3QgY2hlY2sgZm9yICcsJy5cblxuICBpZiAobmV4dCBpbiBzcGFjZUFmdGVyRG90cyAmJiBuZXh0ICE9PSAnLCcpIHtcbiAgICByZXR1cm4gXCJcXFxcbGRvdHNcXFxcLFwiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBcIlxcXFxsZG90c1wiO1xuICB9XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGNkb3RzXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBuZXh0ID0gY29udGV4dC5mdXR1cmUoKS50ZXh0O1xuXG4gIGlmIChuZXh0IGluIHNwYWNlQWZ0ZXJEb3RzKSB7XG4gICAgcmV0dXJuIFwiXFxcXEBjZG90c1xcXFwsXCI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwiXFxcXEBjZG90c1wiO1xuICB9XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNiXCIsIFwiXFxcXGNkb3RzXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZG90c21cIiwgXCJcXFxcY2RvdHNcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxkb3RzaVwiLCBcIlxcXFwhXFxcXGNkb3RzXCIpOyAvLyBhbXNtYXRoIGRvZXNuJ3QgYWN0dWFsbHkgZGVmaW5lIFxcZG90c3gsIGJ1dCBcXGRvdHMgZm9sbG93ZWQgYnkgYSBtYWNyb1xuLy8gc3RhcnRpbmcgd2l0aCBcXERPVFNYIGltcGxpZXMgXFxkb3RzbywgYW5kIHRoZW4gXFxleHRyYUAgZGV0ZWN0cyB0aGlzIGNhc2Vcbi8vIGFuZCBmb3JjZXMgdGhlIGFkZGVkIGBcXCxgLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxkb3RzeFwiLCBcIlxcXFxsZG90c1xcXFwsXCIpOyAvLyBcXGxldFxcRE9UU0lcXHJlbGF4XG4vLyBcXGxldFxcRE9UU0JcXHJlbGF4XG4vLyBcXGxldFxcRE9UU1hcXHJlbGF4XG5cbmRlZmluZU1hY3JvKFwiXFxcXERPVFNJXCIsIFwiXFxcXHJlbGF4XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcRE9UU0JcIiwgXCJcXFxccmVsYXhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxET1RTWFwiLCBcIlxcXFxyZWxheFwiKTsgLy8gU3BhY2luZywgYmFzZWQgb24gYW1zbWF0aC5zdHkncyBvdmVycmlkZSBvZiBMYVRlWCBkZWZhdWx0c1xuLy8gXFxEZWNsYXJlUm9idXN0Q29tbWFuZHtcXHRtc3BhY2V9WzNdeyVcbi8vICAgXFxpZm1tb2RlXFxtc2tpcCMxIzJcXGVsc2VcXGtlcm4jMSMzXFxmaVxccmVsYXh9XG5cbmRlZmluZU1hY3JvKFwiXFxcXHRtc3BhY2VcIiwgXCJcXFxcVGV4dE9yTWF0aHtcXFxca2VybiMxIzN9e1xcXFxtc2tpcCMxIzJ9XFxcXHJlbGF4XCIpOyAvLyBcXHJlbmV3Y29tbWFuZHtcXCx9e1xcdG1zcGFjZStcXHRoaW5tdXNraXB7LjE2NjdlbX19XG4vLyBUT0RPOiBtYXRoIG1vZGUgc2hvdWxkIHVzZSBcXHRoaW5tdXNraXBcblxuZGVmaW5lTWFjcm8oXCJcXFxcLFwiLCBcIlxcXFx0bXNwYWNlK3szbXV9ey4xNjY3ZW19XCIpOyAvLyBcXGxldFxcdGhpbnNwYWNlXFwsXG5cbmRlZmluZU1hY3JvKFwiXFxcXHRoaW5zcGFjZVwiLCBcIlxcXFwsXCIpOyAvLyBcXGRlZlxcPntcXG1za2lwXFxtZWRtdXNraXB9XG4vLyBcXHJlbmV3Y29tbWFuZHtcXDp9e1xcdG1zcGFjZStcXG1lZG11c2tpcHsuMjIyMmVtfX1cbi8vIFRPRE86IFxcPiBhbmQgbWF0aCBtb2RlIG9mIFxcOiBzaG91bGQgdXNlIFxcbWVkbXVza2lwID0gNG11IHBsdXMgMm11IG1pbnVzIDRtdVxuXG5kZWZpbmVNYWNybyhcIlxcXFw+XCIsIFwiXFxcXG1za2lwezRtdX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFw6XCIsIFwiXFxcXHRtc3BhY2UrezRtdX17LjIyMjJlbX1cIik7IC8vIFxcbGV0XFxtZWRzcGFjZVxcOlxuXG5kZWZpbmVNYWNybyhcIlxcXFxtZWRzcGFjZVwiLCBcIlxcXFw6XCIpOyAvLyBcXHJlbmV3Y29tbWFuZHtcXDt9e1xcdG1zcGFjZStcXHRoaWNrbXVza2lwey4yNzc3ZW19fVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFx0aGlja211c2tpcCA9IDVtdSBwbHVzIDVtdVxuXG5kZWZpbmVNYWNybyhcIlxcXFw7XCIsIFwiXFxcXHRtc3BhY2UrezVtdX17LjI3NzdlbX1cIik7IC8vIFxcbGV0XFx0aGlja3NwYWNlXFw7XG5cbmRlZmluZU1hY3JvKFwiXFxcXHRoaWNrc3BhY2VcIiwgXCJcXFxcO1wiKTsgLy8gXFxyZW5ld2NvbW1hbmR7XFwhfXtcXHRtc3BhY2UtXFx0aGlubXVza2lwey4xNjY3ZW19fVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFx0aGlubXVza2lwXG5cbmRlZmluZU1hY3JvKFwiXFxcXCFcIiwgXCJcXFxcdG1zcGFjZS17M211fXsuMTY2N2VtfVwiKTsgLy8gXFxsZXRcXG5lZ3RoaW5zcGFjZVxcIVxuXG5kZWZpbmVNYWNybyhcIlxcXFxuZWd0aGluc3BhY2VcIiwgXCJcXFxcIVwiKTsgLy8gXFxuZXdjb21tYW5ke1xcbmVnbWVkc3BhY2V9e1xcdG1zcGFjZS1cXG1lZG11c2tpcHsuMjIyMmVtfX1cbi8vIFRPRE86IG1hdGggbW9kZSBzaG91bGQgdXNlIFxcbWVkbXVza2lwXG5cbmRlZmluZU1hY3JvKFwiXFxcXG5lZ21lZHNwYWNlXCIsIFwiXFxcXHRtc3BhY2UtezRtdX17LjIyMjJlbX1cIik7IC8vIFxcbmV3Y29tbWFuZHtcXG5lZ3RoaWNrc3BhY2V9e1xcdG1zcGFjZS1cXHRoaWNrbXVza2lwey4yNzc3ZW19fVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFx0aGlja211c2tpcFxuXG5kZWZpbmVNYWNybyhcIlxcXFxuZWd0aGlja3NwYWNlXCIsIFwiXFxcXHRtc3BhY2UtezVtdX17LjI3N2VtfVwiKTsgLy8gXFxkZWZcXGVuc3BhY2V7XFxrZXJuLjVlbSB9XG5cbmRlZmluZU1hY3JvKFwiXFxcXGVuc3BhY2VcIiwgXCJcXFxca2Vybi41ZW0gXCIpOyAvLyBcXGRlZlxcZW5za2lwe1xcaHNraXAuNWVtXFxyZWxheH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcZW5za2lwXCIsIFwiXFxcXGhza2lwLjVlbVxcXFxyZWxheFwiKTsgLy8gXFxkZWZcXHF1YWR7XFxoc2tpcDFlbVxccmVsYXh9XG5cbmRlZmluZU1hY3JvKFwiXFxcXHF1YWRcIiwgXCJcXFxcaHNraXAxZW1cXFxccmVsYXhcIik7IC8vIFxcZGVmXFxxcXVhZHtcXGhza2lwMmVtXFxyZWxheH1cblxuZGVmaW5lTWFjcm8oXCJcXFxccXF1YWRcIiwgXCJcXFxcaHNraXAyZW1cXFxccmVsYXhcIik7IC8vIFxcdGFnQGluQGRpc3BsYXkgZm9ybSBvZiBcXHRhZ1xuXG5kZWZpbmVNYWNybyhcIlxcXFx0YWdcIiwgXCJcXFxcQGlmc3RhclxcXFx0YWdAbGl0ZXJhbFxcXFx0YWdAcGFyZW5cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0YWdAcGFyZW5cIiwgXCJcXFxcdGFnQGxpdGVyYWx7KHsjMX0pfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHRhZ0BsaXRlcmFsXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0Lm1hY3Jvcy5nZXQoXCJcXFxcZGZAdGFnXCIpKSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTXVsdGlwbGUgXFxcXHRhZ1wiKTtcbiAgfVxuXG4gIHJldHVybiBcIlxcXFxnZGVmXFxcXGRmQHRhZ3tcXFxcdGV4dHsjMX19XCI7XG59KTsgLy8gXFxyZW5ld2NvbW1hbmR7XFxibW9kfXtcXG5vbnNjcmlwdFxcbXNraXAtXFxtZWRtdXNraXBcXG1rZXJuNW11XFxtYXRoYmluXG4vLyAgIHtcXG9wZXJhdG9yQGZvbnQgbW9kfVxccGVuYWx0eTkwMFxuLy8gICBcXG1rZXJuNW11XFxub25zY3JpcHRcXG1za2lwLVxcbWVkbXVza2lwfVxuLy8gXFxuZXdjb21tYW5ke1xccG9kfVsxXXtcXGFsbG93YnJlYWtcbi8vICAgXFxpZkBkaXNwbGF5XFxta2VybjE4bXVcXGVsc2VcXG1rZXJuOG11XFxmaSgjMSl9XG4vLyBcXHJlbmV3Y29tbWFuZHtcXHBtb2R9WzFde1xccG9ke3tcXG9wZXJhdG9yQGZvbnQgbW9kfVxcbWtlcm42bXUjMX19XG4vLyBcXG5ld2NvbW1hbmR7XFxtb2R9WzFde1xcYWxsb3dicmVha1xcaWZAZGlzcGxheVxcbWtlcm4xOG11XG4vLyAgIFxcZWxzZVxcbWtlcm4xMm11XFxmaXtcXG9wZXJhdG9yQGZvbnQgbW9kfVxcLFxcLCMxfVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFxtZWRtdXNraXAgPSA0bXUgcGx1cyAybXUgbWludXMgNG11XG5cbmRlZmluZU1hY3JvKFwiXFxcXGJtb2RcIiwgXCJcXFxcbWF0aGNob2ljZXtcXFxcbXNraXAxbXV9e1xcXFxtc2tpcDFtdX17XFxcXG1za2lwNW11fXtcXFxcbXNraXA1bXV9XCIgKyBcIlxcXFxtYXRoYmlue1xcXFxybSBtb2R9XCIgKyBcIlxcXFxtYXRoY2hvaWNle1xcXFxtc2tpcDFtdX17XFxcXG1za2lwMW11fXtcXFxcbXNraXA1bXV9e1xcXFxtc2tpcDVtdX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwb2RcIiwgXCJcXFxcYWxsb3dicmVha1wiICsgXCJcXFxcbWF0aGNob2ljZXtcXFxcbWtlcm4xOG11fXtcXFxcbWtlcm44bXV9e1xcXFxta2VybjhtdX17XFxcXG1rZXJuOG11fSgjMSlcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwbW9kXCIsIFwiXFxcXHBvZHt7XFxcXHJtIG1vZH1cXFxcbWtlcm42bXUjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtb2RcIiwgXCJcXFxcYWxsb3dicmVha1wiICsgXCJcXFxcbWF0aGNob2ljZXtcXFxcbWtlcm4xOG11fXtcXFxcbWtlcm4xMm11fXtcXFxcbWtlcm4xMm11fXtcXFxcbWtlcm4xMm11fVwiICsgXCJ7XFxcXHJtIG1vZH1cXFxcLFxcXFwsIzFcIik7IC8vIFxccG1iICAgIC0tICAgQSBzaW11bGF0aW9uIG9mIGJvbGQuXG4vLyBUaGUgdmVyc2lvbiBpbiBhbWJzeS5zdHkgd29ya3MgYnkgdHlwZXNldHRpbmcgdGhyZWUgY29waWVzIG9mIHRoZSBhcmd1bWVudFxuLy8gd2l0aCBzbWFsbCBvZmZzZXRzLiBXZSB1c2UgdHdvIGNvcGllcy4gV2Ugb21pdCB0aGUgdmVydGljYWwgb2Zmc2V0IGJlY2F1c2Vcbi8vIG9mIHJlbmRlcmluZyBwcm9ibGVtcyB0aGF0IG1ha2VWTGlzdCBlbmNvdW50ZXJzIGluIFNhZmFyaS5cblxuZGVmaW5lTWFjcm8oXCJcXFxccG1iXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcQGJpbnJlbHsjMX17XFxcXG1hdGhybGFweyMxfVxcXFxrZXJuMC41cHgjMX19XCIgKyBcIntcXFxcbWF0aGJmeyMxfX1cIik7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIExhVGVYIHNvdXJjZTJlXG4vLyBcXFxcIGRlZmF1bHRzIHRvIFxcbmV3bGluZSwgYnV0IGNoYW5nZXMgdG8gXFxjciB3aXRoaW4gYXJyYXkgZW52aXJvbm1lbnRcblxuZGVmaW5lTWFjcm8oXCJcXFxcXFxcXFwiLCBcIlxcXFxuZXdsaW5lXCIpOyAvLyBcXGRlZlxcVGVYe1RcXGtlcm4tLjE2NjdlbVxcbG93ZXIuNWV4XFxoYm94e0V9XFxrZXJuLS4xMjVlbVhcXEB9XG4vLyBUT0RPOiBEb2Vzbid0IG5vcm1hbGx5IHdvcmsgaW4gbWF0aCBtb2RlIGJlY2F1c2UgXFxAIGZhaWxzLiAgS2FUZVggZG9lc24ndFxuLy8gc3VwcG9ydCBcXEAgeWV0LCBzbyB0aGF0J3Mgb21pdHRlZCwgYW5kIHdlIGFkZCBcXHRleHQgc28gdGhhdCB0aGUgcmVzdWx0XG4vLyBkb2Vzbid0IGxvb2sgZnVubnkgaW4gbWF0aCBtb2RlLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxUZVhcIiwgXCJcXFxcdGV4dHJte1xcXFxodG1sQG1hdGhtbHtcIiArIFwiVFxcXFxrZXJuLS4xNjY3ZW1cXFxccmFpc2Vib3h7LS41ZXh9e0V9XFxcXGtlcm4tLjEyNWVtWFwiICsgXCJ9e1RlWH19XCIpOyAvLyBcXERlY2xhcmVSb2J1c3RDb21tYW5ke1xcTGFUZVh9e0xcXGtlcm4tLjM2ZW0lXG4vLyAgICAgICAgIHtcXHNib3hcXHpAIFQlXG4vLyAgICAgICAgICBcXHZib3ggdG9cXGh0XFx6QHtcXGhib3h7XFxjaGVja0BtYXRoZm9udHNcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcZm9udHNpemVcXHNmQHNpemVcXHpAXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXG1hdGhAZm9udHNmYWxzZVxcc2VsZWN0Zm9udFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQX0lXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICBcXHZzc30lXG4vLyAgICAgICAgIH0lXG4vLyAgICAgICAgIFxca2Vybi0uMTVlbSVcbi8vICAgICAgICAgXFxUZVh9XG4vLyBUaGlzIGNvZGUgYWxpZ25zIHRoZSB0b3Agb2YgdGhlIEEgd2l0aCB0aGUgVCAoZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgVGVYJ3Ncbi8vIGJveGVzLCB0aG91Z2ggdmlzdWFsbHkgdGhlIEEgYXBwZWFycyB0byBleHRlbmQgYWJvdmUgc2xpZ2h0bHkpLlxuLy8gV2UgY29tcHV0ZSB0aGUgY29ycmVzcG9uZGluZyBcXHJhaXNlYm94IHdoZW4gQSBpcyByZW5kZXJlZCBpbiBcXG5vcm1hbHNpemVcbi8vIFxcc2NyaXB0c3R5bGUsIHdoaWNoIGhhcyBhIHNjYWxlIGZhY3RvciBvZiAwLjcgKHNlZSBPcHRpb25zLmpzKS5cblxudmFyIGxhdGV4UmFpc2VBID0gZm9udE1ldHJpY3NEYXRhWydNYWluLVJlZ3VsYXInXVtcIlRcIi5jaGFyQ29kZUF0KDApXVsxXSAtIDAuNyAqIGZvbnRNZXRyaWNzRGF0YVsnTWFpbi1SZWd1bGFyJ11bXCJBXCIuY2hhckNvZGVBdCgwKV1bMV0gKyBcImVtXCI7XG5kZWZpbmVNYWNybyhcIlxcXFxMYVRlWFwiLCBcIlxcXFx0ZXh0cm17XFxcXGh0bWxAbWF0aG1se1wiICsgKFwiTFxcXFxrZXJuLS4zNmVtXFxcXHJhaXNlYm94e1wiICsgbGF0ZXhSYWlzZUEgKyBcIn17XFxcXHNjcmlwdHN0eWxlIEF9XCIpICsgXCJcXFxca2Vybi0uMTVlbVxcXFxUZVh9e0xhVGVYfX1cIik7IC8vIE5ldyBLYVRlWCBsb2dvIGJhc2VkIG9uIHR3ZWFraW5nIExhVGVYIGxvZ29cblxuZGVmaW5lTWFjcm8oXCJcXFxcS2FUZVhcIiwgXCJcXFxcdGV4dHJte1xcXFxodG1sQG1hdGhtbHtcIiArIChcIktcXFxca2Vybi0uMTdlbVxcXFxyYWlzZWJveHtcIiArIGxhdGV4UmFpc2VBICsgXCJ9e1xcXFxzY3JpcHRzdHlsZSBBfVwiKSArIFwiXFxcXGtlcm4tLjE1ZW1cXFxcVGVYfXtLYVRlWH19XCIpOyAvLyBcXERlY2xhcmVSb2J1c3RDb21tYW5kXFxoc3BhY2V7XFxAaWZzdGFyXFxAaHNwYWNlclxcQGhzcGFjZX1cbi8vIFxcZGVmXFxAaHNwYWNlIzF7XFxoc2tpcCAgIzFcXHJlbGF4fVxuLy8gXFxkZWZcXEBoc3BhY2VyIzF7XFx2cnVsZSBcXEB3aWR0aFxcekBcXG5vYnJlYWtcbi8vICAgICAgICAgICAgICAgICBcXGhza2lwICMxXFxoc2tpcCBcXHpAc2tpcH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcaHNwYWNlXCIsIFwiXFxcXEBpZnN0YXJcXFxcQGhzcGFjZXJcXFxcQGhzcGFjZVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEBoc3BhY2VcIiwgXCJcXFxcaHNraXAgIzFcXFxccmVsYXhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxAaHNwYWNlclwiLCBcIlxcXFxydWxlezBwdH17MHB0fVxcXFxoc2tpcCAjMVxcXFxyZWxheFwiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gbWF0aHRvb2xzLnN0eVxuLy9cXHByb3ZpZGVjb21tYW5kXFxvcmRpbmFyeWNvbG9uezp9XG5cbmRlZmluZU1hY3JvKFwiXFxcXG9yZGluYXJ5Y29sb25cIiwgXCI6XCIpOyAvL1xcZGVmXFx2Y2VudGNvbG9ue1xcbWF0aHJlbHtcXG1hdGhvcFxcb3JkaW5hcnljb2xvbn19XG4vL1RPRE8oZWRlbWFpbmUpOiBOb3QgeWV0IGNlbnRlcmVkLiBGaXggdmlhIFxccmFpc2Vib3ggb3IgIzcyNlxuXG5kZWZpbmVNYWNybyhcIlxcXFx2Y2VudGNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXG1hdGhvcFxcXFxvcmRpbmFyeWNvbG9ufVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGRibGNvbG9ue1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLS45bXV9XFx2Y2VudGNvbG9ufVxuXG5kZWZpbmVNYWNybyhcIlxcXFxkYmxjb2xvblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tLjltdX1cXFxcdmNlbnRjb2xvbn19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjIyMzd9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGNvbG9uZXFxe1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fT19XG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uZXFxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHtcXFxcdmNlbnRjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX09fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjI1NH19XCIpOyAvLyDiiZRcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxDb2xvbmVxcXtcXGRibGNvbG9uXFxtYXRocmVse1xcbWtlcm4tMS4ybXV9PX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25lcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFxkYmxjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX09fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIzN1xcXFxjaGFyXFxcIjNkfX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxjb2xvbmVxe1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcbWF0aHJlbHstfX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25lcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXG1hdGhyZWx7LX19fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIzYVxcXFxjaGFyXFxcIjIyMTJ9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXENvbG9uZXF7XFxkYmxjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcbWF0aHJlbHstfX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25lcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXGRibGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxtYXRocmVsey19fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIzN1xcXFxjaGFyXFxcIjIyMTJ9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGVxcWNvbG9uez1cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXHZjZW50Y29sb259XG5cbmRlZmluZU1hY3JvKFwiXFxcXGVxcWNvbG9uXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHs9XFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFx2Y2VudGNvbG9ufX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjI1NX19XCIpOyAvLyDiiZVcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxFcXFjb2xvbns9XFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxkYmxjb2xvbn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcRXFxY29sb25cIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVsez1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGRibGNvbG9ufX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiM2RcXFxcY2hhclxcXCIyMjM3fX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxlcWNvbG9ue1xcbWF0aHJlbHstfVxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcdmNlbnRjb2xvbn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcZXFjb2xvblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXG1hdGhyZWx7LX1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHZjZW50Y29sb259fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjM5fX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxFcWNvbG9ue1xcbWF0aHJlbHstfVxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcZGJsY29sb259XG5cbmRlZmluZU1hY3JvKFwiXFxcXEVxY29sb25cIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFxtYXRocmVsey19XFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxkYmxjb2xvbn19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjIyMTJcXFxcY2hhclxcXCIyMjM3fX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxjb2xvbmFwcHJveHtcXHZjZW50Y29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXGFwcHJveH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25hcHByb3hcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFx2Y2VudGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxhcHByb3h9fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIzYVxcXFxjaGFyXFxcIjIyNDh9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXENvbG9uYXBwcm94e1xcZGJsY29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXGFwcHJveH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25hcHByb3hcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFxkYmxjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcYXBwcm94fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIzN1xcXFxjaGFyXFxcIjIyNDh9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGNvbG9uc2lte1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcc2ltfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbnNpbVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHNpbX19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjNhXFxcXGNoYXJcXFwiMjIzY319XCIpOyAvLyBcXHByb3ZpZGVjb21tYW5kKlxcQ29sb25zaW17XFxkYmxjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcc2ltfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxDb2xvbnNpbVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXGRibGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxzaW19fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjM3XFxcXGNoYXJcXFwiMjIzY319XCIpOyAvLyBTb21lIFVuaWNvZGUgY2hhcmFjdGVycyBhcmUgaW1wbGVtZW50ZWQgd2l0aCBtYWNyb3MgdG8gbWF0aHRvb2xzIGZ1bmN0aW9ucy5cblxuZGVmaW5lTWFjcm8oXCJcXHUyMjM3XCIsIFwiXFxcXGRibGNvbG9uXCIpOyAvLyA6OlxuXG5kZWZpbmVNYWNybyhcIlxcdTIyMzlcIiwgXCJcXFxcZXFjb2xvblwiKTsgLy8gLTpcblxuZGVmaW5lTWFjcm8oXCJcXHUyMjU0XCIsIFwiXFxcXGNvbG9uZXFxXCIpOyAvLyA6PVxuXG5kZWZpbmVNYWNybyhcIlxcdTIyNTVcIiwgXCJcXFxcZXFxY29sb25cIik7IC8vID06XG5cbmRlZmluZU1hY3JvKFwiXFx1MkE3NFwiLCBcIlxcXFxDb2xvbmVxcVwiKTsgLy8gOjo9XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBjb2xvbmVxdWFscy5zdHlcbi8vIEFsdGVybmF0ZSBuYW1lcyBmb3IgbWF0aHRvb2xzJ3MgbWFjcm9zOlxuXG5kZWZpbmVNYWNybyhcIlxcXFxyYXRpb1wiLCBcIlxcXFx2Y2VudGNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25jb2xvblwiLCBcIlxcXFxkYmxjb2xvblwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uZXF1YWxzXCIsIFwiXFxcXGNvbG9uZXFxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25jb2xvbmVxdWFsc1wiLCBcIlxcXFxDb2xvbmVxcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGVxdWFsc2NvbG9uXCIsIFwiXFxcXGVxcWNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZXF1YWxzY29sb25jb2xvblwiLCBcIlxcXFxFcXFjb2xvblwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9ubWludXNcIiwgXCJcXFxcY29sb25lcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uY29sb25taW51c1wiLCBcIlxcXFxDb2xvbmVxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWludXNjb2xvblwiLCBcIlxcXFxlcWNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWludXNjb2xvbmNvbG9uXCIsIFwiXFxcXEVxY29sb25cIik7IC8vIFxcY29sb25hcHByb3ggbmFtZSBpcyBzYW1lIGluIG1hdGh0b29scyBhbmQgY29sb25lcXVhbHMuXG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uY29sb25hcHByb3hcIiwgXCJcXFxcQ29sb25hcHByb3hcIik7IC8vIFxcY29sb25zaW0gbmFtZSBpcyBzYW1lIGluIG1hdGh0b29scyBhbmQgY29sb25lcXVhbHMuXG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uY29sb25zaW1cIiwgXCJcXFxcQ29sb25zaW1cIik7IC8vIEFkZGl0aW9uYWwgbWFjcm9zLCBpbXBsZW1lbnRlZCBieSBhbmFsb2d5IHdpdGggbWF0aHRvb2xzIGRlZmluaXRpb25zOlxuXG5kZWZpbmVNYWNybyhcIlxcXFxzaW1jb2xvblwiLCBcIlxcXFxtYXRocmVse1xcXFxzaW1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHZjZW50Y29sb259XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc2ltY29sb25jb2xvblwiLCBcIlxcXFxtYXRocmVse1xcXFxzaW1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGRibGNvbG9ufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFwcHJveGNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXGFwcHJveFxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcdmNlbnRjb2xvbn1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxhcHByb3hjb2xvbmNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXGFwcHJveFxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcZGJsY29sb259XCIpOyAvLyBQcmVzZW50IGluIG5ld3R4bWF0aCwgcHhmb250cyBhbmQgdHhmb250c1xuXG5kZWZpbmVNYWNybyhcIlxcXFxub3RuaVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcbm90XFxcXG5pfXtcXFxcbWF0aHJlbHtcXFxcY2hhcmBcXHUyMjBDfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsaW1zdXBcIiwgXCJcXFxcRE9UU0JcXFxcb3BlcmF0b3JuYW1lKntsaW1cXFxcLHN1cH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsaW1pbmZcIiwgXCJcXFxcRE9UU0JcXFxcb3BlcmF0b3JuYW1lKntsaW1cXFxcLGluZn1cIik7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1hdGhNTCBhbHRlcm5hdGVzIGZvciBLYVRlWCBnbHlwaHMgaW4gdGhlIFVuaWNvZGUgcHJpdmF0ZSBhcmVhXG5cbmRlZmluZU1hY3JvKFwiXFxcXGd2ZXJ0bmVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQGd2ZXJ0bmVxcX17XFx1MjI2OX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsdmVydG5lcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBsdmVydG5lcXF9e1xcdTIyNjh9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbmdlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuZ2VxcX17XFx1MjI3MX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxuZ2Vxc2xhbnRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuZ2Vxc2xhbnR9e1xcdTIyNzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbmxlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBubGVxcX17XFx1MjI3MH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxubGVxc2xhbnRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBubGVxc2xhbnR9e1xcdTIyNzB9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbnNob3J0bWlkXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxAbnNob3J0bWlkfXviiKR9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbnNob3J0cGFyYWxsZWxcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuc2hvcnRwYXJhbGxlbH174oimfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5zdWJzZXRlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuc3Vic2V0ZXFxfXtcXHUyMjg4fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5zdXBzZXRlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuc3Vwc2V0ZXFxfXtcXHUyMjg5fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhcnN1YnNldG5lcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQHZhcnN1YnNldG5lcX174oqKfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhcnN1YnNldG5lcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEB2YXJzdWJzZXRuZXFxfXviq4t9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyc3Vwc2V0bmVxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxAdmFyc3Vwc2V0bmVxfXviiot9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyc3Vwc2V0bmVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQHZhcnN1cHNldG5lcXF9e+KrjH1cIik7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIHN0bWFyeXJkIGFuZCBzZW1hbnRpY1xuLy8gVGhlIHN0bWFyeXJkIGFuZCBzZW1hbnRpYyBwYWNrYWdlcyByZW5kZXIgdGhlIG5leHQgZm91ciBpdGVtcyBieSBjYWxsaW5nIGFcbi8vIGdseXBoLiBUaG9zZSBnbHlwaHMgZG8gbm90IGV4aXN0IGluIHRoZSBLYVRlWCBmb250cy4gSGVuY2UgdGhlIG1hY3Jvcy5cblxuZGVmaW5lTWFjcm8oXCJcXFxcbGxicmFja2V0XCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aG9wZW57W1xcXFxta2Vybi0zLjJtdVt9fVwiICsgXCJ7XFxcXG1hdGhvcGVue1xcXFxjaGFyYFxcdTI3RTZ9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJyYnJhY2tldFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhjbG9zZXtdXFxcXG1rZXJuLTMuMm11XX19XCIgKyBcIntcXFxcbWF0aGNsb3Nle1xcXFxjaGFyYFxcdTI3RTd9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjdFNlwiLCBcIlxcXFxsbGJyYWNrZXRcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCBbXG5cbmRlZmluZU1hY3JvKFwiXFx1MjdFN1wiLCBcIlxcXFxycmJyYWNrZXRcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCBdXG5cbmRlZmluZU1hY3JvKFwiXFxcXGxCcmFjZVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhvcGVue1xcXFx7XFxcXG1rZXJuLTMuMm11W319XCIgKyBcIntcXFxcbWF0aG9wZW57XFxcXGNoYXJgXFx1Mjk4M319XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcckJyYWNlXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aGNsb3Nle11cXFxcbWtlcm4tMy4ybXVcXFxcfX19XCIgKyBcIntcXFxcbWF0aGNsb3Nle1xcXFxjaGFyYFxcdTI5ODR9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1Mjk4M1wiLCBcIlxcXFxsQnJhY2VcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCB7XG5cbmRlZmluZU1hY3JvKFwiXFx1Mjk4NFwiLCBcIlxcXFxyQnJhY2VcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCB9XG4vLyBUT0RPOiBDcmVhdGUgdmFyaWFibGUgc2l6ZWQgdmVyc2lvbnMgb2YgdGhlIGxhc3QgdHdvIGl0ZW1zLiBJIGJlbGlldmUgdGhhdFxuLy8gd2lsbCByZXF1aXJlIG5ldyBmb250IGdseXBocy5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIHRleHZjLnN0eVxuLy8gVGhlIHRleHZjIHBhY2thZ2UgY29udGFpbnMgbWFjcm9zIGF2YWlsYWJsZSBpbiBtZWRpYXdpa2kgcGFnZXMuXG4vLyBXZSBvbWl0IHRoZSBmdW5jdGlvbnMgZGVwcmVjYXRlZCBhdFxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVscDpEaXNwbGF5aW5nX2FfZm9ybXVsYSNEZXByZWNhdGVkX3N5bnRheFxuLy8gV2UgYWxzbyBvbWl0IHRleHZjJ3MgXFxPLCB3aGljaCBjb25mbGljdHMgd2l0aCBcXHRleHR7XFxPfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxkYXJyXCIsIFwiXFxcXGRvd25hcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGRBcnJcIiwgXCJcXFxcRG93bmFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcRGFyclwiLCBcIlxcXFxEb3duYXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsYW5nXCIsIFwiXFxcXGxhbmdsZVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJhbmdcIiwgXCJcXFxccmFuZ2xlXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdWFyclwiLCBcIlxcXFx1cGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdUFyclwiLCBcIlxcXFxVcGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcVWFyclwiLCBcIlxcXFxVcGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcTlwiLCBcIlxcXFxtYXRoYmJ7Tn1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxSXCIsIFwiXFxcXG1hdGhiYntSfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXFpcIiwgXCJcXFxcbWF0aGJie1p9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYWxlZlwiLCBcIlxcXFxhbGVwaFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFsZWZzeW1cIiwgXCJcXFxcYWxlcGhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxBbHBoYVwiLCBcIlxcXFxtYXRocm17QX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxCZXRhXCIsIFwiXFxcXG1hdGhybXtCfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJ1bGxcIiwgXCJcXFxcYnVsbGV0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcQ2hpXCIsIFwiXFxcXG1hdGhybXtYfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNsdWJzXCIsIFwiXFxcXGNsdWJzdWl0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY251bXNcIiwgXCJcXFxcbWF0aGJie0N9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcQ29tcGxleFwiLCBcIlxcXFxtYXRoYmJ7Q31cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxEYWdnZXJcIiwgXCJcXFxcZGRhZ2dlclwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGRpYW1vbmRzXCIsIFwiXFxcXGRpYW1vbmRzdWl0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZW1wdHlcIiwgXCJcXFxcZW1wdHlzZXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxFcHNpbG9uXCIsIFwiXFxcXG1hdGhybXtFfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEV0YVwiLCBcIlxcXFxtYXRocm17SH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxleGlzdFwiLCBcIlxcXFxleGlzdHNcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxoYXJyXCIsIFwiXFxcXGxlZnRyaWdodGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaEFyclwiLCBcIlxcXFxMZWZ0cmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEhhcnJcIiwgXCJcXFxcTGVmdHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxoZWFydHNcIiwgXCJcXFxcaGVhcnRzdWl0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaW1hZ2VcIiwgXCJcXFxcSW1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxpbmZpblwiLCBcIlxcXFxpbmZ0eVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXElvdGFcIiwgXCJcXFxcbWF0aHJte0l9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaXNpblwiLCBcIlxcXFxpblwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEthcHBhXCIsIFwiXFxcXG1hdGhybXtLfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGxhcnJcIiwgXCJcXFxcbGVmdGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbEFyclwiLCBcIlxcXFxMZWZ0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxMYXJyXCIsIFwiXFxcXExlZnRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGxyYXJyXCIsIFwiXFxcXGxlZnRyaWdodGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbHJBcnJcIiwgXCJcXFxcTGVmdHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxMcmFyclwiLCBcIlxcXFxMZWZ0cmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXE11XCIsIFwiXFxcXG1hdGhybXtNfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5hdG51bXNcIiwgXCJcXFxcbWF0aGJie059XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcTnVcIiwgXCJcXFxcbWF0aHJte059XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcT21pY3JvblwiLCBcIlxcXFxtYXRocm17T31cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwbHVzbW5cIiwgXCJcXFxccG1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyYXJyXCIsIFwiXFxcXHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyQXJyXCIsIFwiXFxcXFJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxSYXJyXCIsIFwiXFxcXFJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWFsXCIsIFwiXFxcXFJlXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVhbHNcIiwgXCJcXFxcbWF0aGJie1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcUmVhbHNcIiwgXCJcXFxcbWF0aGJie1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcUmhvXCIsIFwiXFxcXG1hdGhybXtQfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHNkb3RcIiwgXCJcXFxcY2RvdFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHNlY3RcIiwgXCJcXFxcU1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHNwYWRlc1wiLCBcIlxcXFxzcGFkZXN1aXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxzdWJcIiwgXCJcXFxcc3Vic2V0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc3ViZVwiLCBcIlxcXFxzdWJzZXRlcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHN1cGVcIiwgXCJcXFxcc3Vwc2V0ZXFcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxUYXVcIiwgXCJcXFxcbWF0aHJte1R9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGhldGFzeW1cIiwgXCJcXFxcdmFydGhldGFcIik7IC8vIFRPRE86IGRlZmluZU1hY3JvKFwiXFxcXHZhcmNvcHBhXCIsIFwiXFxcXFxcbWJveHtcXFxcY29wcGF9XCIpO1xuXG5kZWZpbmVNYWNybyhcIlxcXFx3ZWllcnBcIiwgXCJcXFxcd3BcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxaZXRhXCIsIFwiXFxcXG1hdGhybXtafVwiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gc3RhdG1hdGguc3R5XG4vLyBodHRwczovL2N0YW4ubWF0aC5pbGxpbm9pcy5lZHUvbWFjcm9zL2xhdGV4L2NvbnRyaWIvc3RhdG1hdGgvc3RhdG1hdGgucGRmXG5cbmRlZmluZU1hY3JvKFwiXFxcXGFyZ21pblwiLCBcIlxcXFxET1RTQlxcXFxvcGVyYXRvcm5hbWUqe2FyZ1xcXFwsbWlufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFyZ21heFwiLCBcIlxcXFxET1RTQlxcXFxvcGVyYXRvcm5hbWUqe2FyZ1xcXFwsbWF4fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHBsaW1cIiwgXCJcXFxcRE9UU0JcXFxcbWF0aG9we1xcXFxvcGVyYXRvcm5hbWV7cGxpbX19XFxcXGxpbWl0c1wiKTsgLy8gQ3VzdG9tIEtoYW4gQWNhZGVteSBjb2xvcnMsIHNob3VsZCBiZSBtb3ZlZCB0byBhbiBvcHRpb25hbCBwYWNrYWdlXG5cbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjNjQ5NWVkfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxvcmFuZ2VcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmZhNTAwfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwaW5rXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmMDBhZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVkXCIsIFwiXFxcXHRleHRjb2xvcnsjI2RmMDAzMH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JlZW5cIiwgXCJcXFxcdGV4dGNvbG9yeyMjMjhhZTdifXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5XCIsIFwiXFxcXHRleHRjb2xvcntncmF5fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwdXJwbGVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjOWQzOGJkfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxibHVlQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNjY2ZhZmZ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVCXCIsIFwiXFxcXHRleHRjb2xvcnsjIzgwZjZmZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYmx1ZUNcIiwgXCJcXFxcdGV4dGNvbG9yeyMjNjNkOWVhfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxibHVlRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMxMWFjY2R9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVFXCIsIFwiXFxcXHRleHRjb2xvcnsjIzBjN2Y5OX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGVhbEFcIiwgXCJcXFxcdGV4dGNvbG9yeyMjOTRmZmY1fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0ZWFsQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMyNmVkZDV9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHRlYWxDXCIsIFwiXFxcXHRleHRjb2xvcnsjIzAxZDFjMX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGVhbERcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMDFhOTk1fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0ZWFsRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMyMDgxNzB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNiNmZmYjB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM4YWYyODF9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyM3NGNmNzB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMxZmFiNTR9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMwZDkyM2Z9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdvbGRBXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmZDBhOX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ29sZEJcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmZiYjcxfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxnb2xkQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmZjljMzl9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdvbGREXCIsIFwiXFxcXHRleHRjb2xvcnsjI2UwN2QxMH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ29sZEVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjYTc1YTA1fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWRBXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZjYTlhOX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVkQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmZjg0ODJ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJlZENcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZjk2ODVkfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWREXCIsIFwiXFxcXHRleHRjb2xvcnsjI2U4NGQzOX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVkRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNiYzI2MTJ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1hcm9vbkFcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmZiZGUwfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtYXJvb25CXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmOTJjNn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWFyb29uQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyNlZDVmYTZ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1hcm9vbkRcIiwgXCJcXFxcdGV4dGNvbG9yeyMjY2EzMzdjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtYXJvb25FXCIsIFwiXFxcXHRleHRjb2xvcnsjIzllMDM0ZX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccHVycGxlQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNkZGQ3ZmZ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHB1cnBsZUJcIiwgXCJcXFxcdGV4dGNvbG9yeyMjYzZiOWZjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwdXJwbGVDXCIsIFwiXFxcXHRleHRjb2xvcnsjI2FhODdmZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccHVycGxlRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM3ODU0YWJ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHB1cnBsZUVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjNTQzYjc4fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtaW50QVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmNWY5ZTh9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1pbnRCXCIsIFwiXFxcXHRleHRjb2xvcnsjI2VkZjJkZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWludENcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZTBlNWNjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5QVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmNmY3Zjd9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlCXCIsIFwiXFxcXHRleHRjb2xvcnsjI2YwZjFmMn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUNcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZTNlNWU2fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5RFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNkNmQ4ZGF9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlFXCIsIFwiXFxcXHRleHRjb2xvcnsjI2JhYmVjMn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUZcIiwgXCJcXFxcdGV4dGNvbG9yeyMjODg4ZDkzfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5R1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyM2MjY1Njl9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlIXCIsIFwiXFxcXHRleHRjb2xvcnsjIzNiM2U0MH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUlcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMjEyNDJjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxrYUJsdWVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMzE0NDUzfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxrYUdyZWVuXCIsIFwiXFxcXHRleHRjb2xvcnsjIzcxQjMwN317IzF9XCIpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvTWFjcm9FeHBhbmRlci5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIOKAnGd1bGxldOKAnSB3aGVyZSBtYWNyb3MgYXJlIGV4cGFuZGVkXG4gKiB1bnRpbCBvbmx5IG5vbi1tYWNybyB0b2tlbnMgcmVtYWluLlxuICovXG5cblxuXG5cblxuXG5cbi8vIExpc3Qgb2YgY29tbWFuZHMgdGhhdCBhY3QgbGlrZSBtYWNyb3MgYnV0IGFyZW4ndCBkZWZpbmVkIGFzIGEgbWFjcm8sXG4vLyBmdW5jdGlvbiwgb3Igc3ltYm9sLiAgVXNlZCBpbiBgaXNEZWZpbmVkYC5cbnZhciBpbXBsaWNpdENvbW1hbmRzID0ge1xuICBcIlxcXFxyZWxheFwiOiB0cnVlLFxuICAvLyBNYWNyb0V4cGFuZGVyLmpzXG4gIFwiXlwiOiB0cnVlLFxuICAvLyBQYXJzZXIuanNcbiAgXCJfXCI6IHRydWUsXG4gIC8vIFBhcnNlci5qc1xuICBcIlxcXFxsaW1pdHNcIjogdHJ1ZSxcbiAgLy8gUGFyc2VyLmpzXG4gIFwiXFxcXG5vbGltaXRzXCI6IHRydWUgLy8gUGFyc2VyLmpzXG5cbn07XG5cbnZhciBNYWNyb0V4cGFuZGVyX01hY3JvRXhwYW5kZXIgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNYWNyb0V4cGFuZGVyKGlucHV0LCBzZXR0aW5ncywgbW9kZSkge1xuICAgIHRoaXMuc2V0dGluZ3MgPSB2b2lkIDA7XG4gICAgdGhpcy5leHBhbnNpb25Db3VudCA9IHZvaWQgMDtcbiAgICB0aGlzLmxleGVyID0gdm9pZCAwO1xuICAgIHRoaXMubWFjcm9zID0gdm9pZCAwO1xuICAgIHRoaXMuc3RhY2sgPSB2b2lkIDA7XG4gICAgdGhpcy5tb2RlID0gdm9pZCAwO1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB0aGlzLmV4cGFuc2lvbkNvdW50ID0gMDtcbiAgICB0aGlzLmZlZWQoaW5wdXQpOyAvLyBNYWtlIG5ldyBnbG9iYWwgbmFtZXNwYWNlXG5cbiAgICB0aGlzLm1hY3JvcyA9IG5ldyBOYW1lc3BhY2VfTmFtZXNwYWNlKG1hY3Jvcywgc2V0dGluZ3MubWFjcm9zKTtcbiAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICAgIHRoaXMuc3RhY2sgPSBbXTsgLy8gY29udGFpbnMgdG9rZW5zIGluIFJFVkVSU0Ugb3JkZXJcbiAgfVxuICAvKipcbiAgICogRmVlZCBhIG5ldyBpbnB1dCBzdHJpbmcgdG8gdGhlIHNhbWUgTWFjcm9FeHBhbmRlclxuICAgKiAod2l0aCBleGlzdGluZyBtYWNyb3MgZXRjLikuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IE1hY3JvRXhwYW5kZXIucHJvdG90eXBlO1xuXG4gIF9wcm90by5mZWVkID0gZnVuY3Rpb24gZmVlZChpbnB1dCkge1xuICAgIHRoaXMubGV4ZXIgPSBuZXcgTGV4ZXJfTGV4ZXIoaW5wdXQsIHRoaXMuc2V0dGluZ3MpO1xuICB9XG4gIC8qKlxuICAgKiBTd2l0Y2hlcyBiZXR3ZWVuIFwidGV4dFwiIGFuZCBcIm1hdGhcIiBtb2Rlcy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uc3dpdGNoTW9kZSA9IGZ1bmN0aW9uIHN3aXRjaE1vZGUobmV3TW9kZSkge1xuICAgIHRoaXMubW9kZSA9IG5ld01vZGU7XG4gIH1cbiAgLyoqXG4gICAqIFN0YXJ0IGEgbmV3IGdyb3VwIG5lc3Rpbmcgd2l0aGluIGFsbCBuYW1lc3BhY2VzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5iZWdpbkdyb3VwID0gZnVuY3Rpb24gYmVnaW5Hcm91cCgpIHtcbiAgICB0aGlzLm1hY3Jvcy5iZWdpbkdyb3VwKCk7XG4gIH1cbiAgLyoqXG4gICAqIEVuZCBjdXJyZW50IGdyb3VwIG5lc3Rpbmcgd2l0aGluIGFsbCBuYW1lc3BhY2VzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5lbmRHcm91cCA9IGZ1bmN0aW9uIGVuZEdyb3VwKCkge1xuICAgIHRoaXMubWFjcm9zLmVuZEdyb3VwKCk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRvcG1vc3QgdG9rZW4gb24gdGhlIHN0YWNrLCB3aXRob3V0IGV4cGFuZGluZyBpdC5cbiAgICogU2ltaWxhciBpbiBiZWhhdmlvciB0byBUZVgncyBgXFxmdXR1cmVsZXRgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mdXR1cmUgPSBmdW5jdGlvbiBmdXR1cmUoKSB7XG4gICAgaWYgKHRoaXMuc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnB1c2hUb2tlbih0aGlzLmxleGVyLmxleCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgYW5kIHJldHVybiB0aGUgbmV4dCB1bmV4cGFuZGVkIHRva2VuLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wb3BUb2tlbiA9IGZ1bmN0aW9uIHBvcFRva2VuKCkge1xuICAgIHRoaXMuZnV0dXJlKCk7IC8vIGVuc3VyZSBub24tZW1wdHkgc3RhY2tcblxuICAgIHJldHVybiB0aGlzLnN0YWNrLnBvcCgpO1xuICB9XG4gIC8qKlxuICAgKiBBZGQgYSBnaXZlbiB0b2tlbiB0byB0aGUgdG9rZW4gc3RhY2suICBJbiBwYXJ0aWN1bGFyLCB0aGlzIGdldCBiZSB1c2VkXG4gICAqIHRvIHB1dCBiYWNrIGEgdG9rZW4gcmV0dXJuZWQgZnJvbSBvbmUgb2YgdGhlIG90aGVyIG1ldGhvZHMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnB1c2hUb2tlbiA9IGZ1bmN0aW9uIHB1c2hUb2tlbih0b2tlbikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0b2tlbik7XG4gIH1cbiAgLyoqXG4gICAqIEFwcGVuZCBhbiBhcnJheSBvZiB0b2tlbnMgdG8gdGhlIHRva2VuIHN0YWNrLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wdXNoVG9rZW5zID0gZnVuY3Rpb24gcHVzaFRva2Vucyh0b2tlbnMpIHtcbiAgICB2YXIgX3RoaXMkc3RhY2s7XG5cbiAgICAoX3RoaXMkc3RhY2sgPSB0aGlzLnN0YWNrKS5wdXNoLmFwcGx5KF90aGlzJHN0YWNrLCB0b2tlbnMpO1xuICB9XG4gIC8qKlxuICAgKiBDb25zdW1lIGFsbCBmb2xsb3dpbmcgc3BhY2UgdG9rZW5zLCB3aXRob3V0IGV4cGFuc2lvbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZVNwYWNlcyA9IGZ1bmN0aW9uIGNvbnN1bWVTcGFjZXMoKSB7XG4gICAgZm9yICg7Oykge1xuICAgICAgdmFyIHRva2VuID0gdGhpcy5mdXR1cmUoKTtcblxuICAgICAgaWYgKHRva2VuLnRleHQgPT09IFwiIFwiKSB7XG4gICAgICAgIHRoaXMuc3RhY2sucG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIENvbnN1bWUgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYXJndW1lbnRzIGZyb20gdGhlIHRva2VuIHN0cmVhbSxcbiAgICogYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZUFyZ3MgPSBmdW5jdGlvbiBjb25zdW1lQXJncyhudW1BcmdzKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTsgLy8gb2J0YWluIGFyZ3VtZW50cywgZWl0aGVyIHNpbmdsZSB0b2tlbiBvciBiYWxhbmNlZCB74oCmfSBncm91cFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpIHtcbiAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpOyAvLyBpZ25vcmUgc3BhY2VzIGJlZm9yZSBlYWNoIGFyZ3VtZW50XG5cbiAgICAgIHZhciBzdGFydE9mQXJnID0gdGhpcy5wb3BUb2tlbigpO1xuXG4gICAgICBpZiAoc3RhcnRPZkFyZy50ZXh0ID09PSBcIntcIikge1xuICAgICAgICB2YXIgYXJnID0gW107XG4gICAgICAgIHZhciBkZXB0aCA9IDE7XG5cbiAgICAgICAgd2hpbGUgKGRlcHRoICE9PSAwKSB7XG4gICAgICAgICAgdmFyIHRvayA9IHRoaXMucG9wVG9rZW4oKTtcbiAgICAgICAgICBhcmcucHVzaCh0b2spO1xuXG4gICAgICAgICAgaWYgKHRvay50ZXh0ID09PSBcIntcIikge1xuICAgICAgICAgICAgKytkZXB0aDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRvay50ZXh0ID09PSBcIn1cIikge1xuICAgICAgICAgICAgLS1kZXB0aDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRvay50ZXh0ID09PSBcIkVPRlwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJFbmQgb2YgaW5wdXQgaW4gbWFjcm8gYXJndW1lbnRcIiwgc3RhcnRPZkFyZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXJnLnBvcCgpOyAvLyByZW1vdmUgbGFzdCB9XG5cbiAgICAgICAgYXJnLnJldmVyc2UoKTsgLy8gbGlrZSBhYm92ZSwgdG8gZml0IGluIHdpdGggc3RhY2sgb3JkZXJcblxuICAgICAgICBhcmdzW2ldID0gYXJnO1xuICAgICAgfSBlbHNlIGlmIChzdGFydE9mQXJnLnRleHQgPT09IFwiRU9GXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRW5kIG9mIGlucHV0IGV4cGVjdGluZyBtYWNybyBhcmd1bWVudFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyZ3NbaV0gPSBbc3RhcnRPZkFyZ107XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3M7XG4gIH1cbiAgLyoqXG4gICAqIEV4cGFuZCB0aGUgbmV4dCB0b2tlbiBvbmx5IG9uY2UgaWYgcG9zc2libGUuXG4gICAqXG4gICAqIElmIHRoZSB0b2tlbiBpcyBleHBhbmRlZCwgdGhlIHJlc3VsdGluZyB0b2tlbnMgd2lsbCBiZSBwdXNoZWQgb250b1xuICAgKiB0aGUgc3RhY2sgaW4gcmV2ZXJzZSBvcmRlciBhbmQgd2lsbCBiZSByZXR1cm5lZCBhcyBhbiBhcnJheSxcbiAgICogYWxzbyBpbiByZXZlcnNlIG9yZGVyLlxuICAgKlxuICAgKiBJZiBub3QsIHRoZSBuZXh0IHRva2VuIHdpbGwgYmUgcmV0dXJuZWQgd2l0aG91dCByZW1vdmluZyBpdFxuICAgKiBmcm9tIHRoZSBzdGFjay4gIFRoaXMgY2FzZSBjYW4gYmUgZGV0ZWN0ZWQgYnkgYSBgVG9rZW5gIHJldHVybiB2YWx1ZVxuICAgKiBpbnN0ZWFkIG9mIGFuIGBBcnJheWAgcmV0dXJuIHZhbHVlLlxuICAgKlxuICAgKiBJbiBlaXRoZXIgY2FzZSwgdGhlIG5leHQgdG9rZW4gd2lsbCBiZSBvbiB0aGUgdG9wIG9mIHRoZSBzdGFjayxcbiAgICogb3IgdGhlIHN0YWNrIHdpbGwgYmUgZW1wdHkuXG4gICAqXG4gICAqIFVzZWQgdG8gaW1wbGVtZW50IGBleHBhbmRBZnRlckZ1dHVyZWAgYW5kIGBleHBhbmROZXh0VG9rZW5gLlxuICAgKlxuICAgKiBBdCB0aGUgbW9tZW50LCBtYWNybyBleHBhbnNpb24gZG9lc24ndCBoYW5kbGUgZGVsaW1pdGVkIG1hY3JvcyxcbiAgICogaS5lLiB0aGluZ3MgbGlrZSB0aG9zZSBkZWZpbmVkIGJ5IFxcZGVmXFxmb28jMVxcZW5ke+KApn0uXG4gICAqIFNlZSB0aGUgVGVYIGJvb2sgcGFnZSAyMDJmZi4gZm9yIGRldGFpbHMgb24gaG93IHRob3NlIHNob3VsZCBiZWhhdmUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmV4cGFuZE9uY2UgPSBmdW5jdGlvbiBleHBhbmRPbmNlKCkge1xuICAgIHZhciB0b3BUb2tlbiA9IHRoaXMucG9wVG9rZW4oKTtcbiAgICB2YXIgbmFtZSA9IHRvcFRva2VuLnRleHQ7XG5cbiAgICB2YXIgZXhwYW5zaW9uID0gdGhpcy5fZ2V0RXhwYW5zaW9uKG5hbWUpO1xuXG4gICAgaWYgKGV4cGFuc2lvbiA9PSBudWxsKSB7XG4gICAgICAvLyBtYWlubHkgY2hlY2tpbmcgZm9yIHVuZGVmaW5lZCBoZXJlXG4gICAgICAvLyBGdWxseSBleHBhbmRlZFxuICAgICAgdGhpcy5wdXNoVG9rZW4odG9wVG9rZW4pO1xuICAgICAgcmV0dXJuIHRvcFRva2VuO1xuICAgIH1cblxuICAgIHRoaXMuZXhwYW5zaW9uQ291bnQrKztcblxuICAgIGlmICh0aGlzLmV4cGFuc2lvbkNvdW50ID4gdGhpcy5zZXR0aW5ncy5tYXhFeHBhbmQpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlRvbyBtYW55IGV4cGFuc2lvbnM6IGluZmluaXRlIGxvb3Agb3IgXCIgKyBcIm5lZWQgdG8gaW5jcmVhc2UgbWF4RXhwYW5kIHNldHRpbmdcIik7XG4gICAgfVxuXG4gICAgdmFyIHRva2VucyA9IGV4cGFuc2lvbi50b2tlbnM7XG5cbiAgICBpZiAoZXhwYW5zaW9uLm51bUFyZ3MpIHtcbiAgICAgIHZhciBhcmdzID0gdGhpcy5jb25zdW1lQXJncyhleHBhbnNpb24ubnVtQXJncyk7IC8vIHBhc3RlIGFyZ3VtZW50cyBpbiBwbGFjZSBvZiB0aGUgcGxhY2Vob2xkZXJzXG5cbiAgICAgIHRva2VucyA9IHRva2Vucy5zbGljZSgpOyAvLyBtYWtlIGEgc2hhbGxvdyBjb3B5XG5cbiAgICAgIGZvciAodmFyIGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHRvayA9IHRva2Vuc1tpXTtcblxuICAgICAgICBpZiAodG9rLnRleHQgPT09IFwiI1wiKSB7XG4gICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkluY29tcGxldGUgcGxhY2Vob2xkZXIgYXQgZW5kIG9mIG1hY3JvIGJvZHlcIiwgdG9rKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0b2sgPSB0b2tlbnNbLS1pXTsgLy8gbmV4dCB0b2tlbiBvbiBzdGFja1xuXG4gICAgICAgICAgaWYgKHRvay50ZXh0ID09PSBcIiNcIikge1xuICAgICAgICAgICAgLy8gIyMg4oaSICNcbiAgICAgICAgICAgIHRva2Vucy5zcGxpY2UoaSArIDEsIDEpOyAvLyBkcm9wIGZpcnN0ICNcbiAgICAgICAgICB9IGVsc2UgaWYgKC9eWzEtOV0kLy50ZXN0KHRvay50ZXh0KSkge1xuICAgICAgICAgICAgdmFyIF90b2tlbnM7XG5cbiAgICAgICAgICAgIC8vIHJlcGxhY2UgdGhlIHBsYWNlaG9sZGVyIHdpdGggdGhlIGluZGljYXRlZCBhcmd1bWVudFxuICAgICAgICAgICAgKF90b2tlbnMgPSB0b2tlbnMpLnNwbGljZS5hcHBseShfdG9rZW5zLCBbaSwgMl0uY29uY2F0KGFyZ3NbK3Rvay50ZXh0IC0gMV0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTm90IGEgdmFsaWQgYXJndW1lbnQgbnVtYmVyXCIsIHRvayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBDb25jYXRlbmF0ZSBleHBhbnNpb24gb250byB0b3Agb2Ygc3RhY2suXG5cblxuICAgIHRoaXMucHVzaFRva2Vucyh0b2tlbnMpO1xuICAgIHJldHVybiB0b2tlbnM7XG4gIH1cbiAgLyoqXG4gICAqIEV4cGFuZCB0aGUgbmV4dCB0b2tlbiBvbmx5IG9uY2UgKGlmIHBvc3NpYmxlKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nXG4gICAqIHRvcCB0b2tlbiBvbiB0aGUgc3RhY2sgKHdpdGhvdXQgcmVtb3ZpbmcgYW55dGhpbmcgZnJvbSB0aGUgc3RhY2spLlxuICAgKiBTaW1pbGFyIGluIGJlaGF2aW9yIHRvIFRlWCdzIGBcXGV4cGFuZGFmdGVyXFxmdXR1cmVsZXRgLlxuICAgKiBFcXVpdmFsZW50IHRvIGV4cGFuZE9uY2UoKSBmb2xsb3dlZCBieSBmdXR1cmUoKS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZXhwYW5kQWZ0ZXJGdXR1cmUgPSBmdW5jdGlvbiBleHBhbmRBZnRlckZ1dHVyZSgpIHtcbiAgICB0aGlzLmV4cGFuZE9uY2UoKTtcbiAgICByZXR1cm4gdGhpcy5mdXR1cmUoKTtcbiAgfVxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgZXhwYW5kIGZpcnN0IHRva2VuLCB0aGVuIHJldHVybiBmaXJzdCBub24tZXhwYW5kYWJsZSB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZXhwYW5kTmV4dFRva2VuID0gZnVuY3Rpb24gZXhwYW5kTmV4dFRva2VuKCkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIHZhciBleHBhbmRlZCA9IHRoaXMuZXhwYW5kT25jZSgpOyAvLyBleHBhbmRPbmNlIHJldHVybnMgVG9rZW4gaWYgYW5kIG9ubHkgaWYgaXQncyBmdWxseSBleHBhbmRlZC5cblxuICAgICAgaWYgKGV4cGFuZGVkIGluc3RhbmNlb2YgVG9rZW5fVG9rZW4pIHtcbiAgICAgICAgLy8gXFxyZWxheCBzdG9wcyB0aGUgZXhwYW5zaW9uLCBidXQgc2hvdWxkbid0IGdldCByZXR1cm5lZCAoYVxuICAgICAgICAvLyBudWxsIHJldHVybiB2YWx1ZSBjb3VsZG4ndCBnZXQgaW1wbGVtZW50ZWQgYXMgYSBmdW5jdGlvbikuXG4gICAgICAgIGlmIChleHBhbmRlZC50ZXh0ID09PSBcIlxcXFxyZWxheFwiKSB7XG4gICAgICAgICAgdGhpcy5zdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5wb3AoKTsgLy8gPT09IGV4cGFuZGVkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIEZsb3cgdW5hYmxlIHRvIGZpZ3VyZSBvdXQgdGhhdCB0aGlzIHBhdGh3YXkgaXMgaW1wb3NzaWJsZS5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNDgwOFxuXG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnJlYWNoYWJsZVxuICB9XG4gIC8qKlxuICAgKiBGdWxseSBleHBhbmQgdGhlIGdpdmVuIG1hY3JvIG5hbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGxpc3Qgb2ZcbiAgICogdG9rZW5zLCBvciByZXR1cm4gYHVuZGVmaW5lZGAgaWYgbm8gc3VjaCBtYWNybyBpcyBkZWZpbmVkLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5leHBhbmRNYWNybyA9IGZ1bmN0aW9uIGV4cGFuZE1hY3JvKG5hbWUpIHtcbiAgICBpZiAoIXRoaXMubWFjcm9zLmdldChuYW1lKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgdmFyIG9sZFN0YWNrTGVuZ3RoID0gdGhpcy5zdGFjay5sZW5ndGg7XG4gICAgdGhpcy5wdXNoVG9rZW4obmV3IFRva2VuX1Rva2VuKG5hbWUpKTtcblxuICAgIHdoaWxlICh0aGlzLnN0YWNrLmxlbmd0aCA+IG9sZFN0YWNrTGVuZ3RoKSB7XG4gICAgICB2YXIgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZE9uY2UoKTsgLy8gZXhwYW5kT25jZSByZXR1cm5zIFRva2VuIGlmIGFuZCBvbmx5IGlmIGl0J3MgZnVsbHkgZXhwYW5kZWQuXG5cbiAgICAgIGlmIChleHBhbmRlZCBpbnN0YW5jZW9mIFRva2VuX1Rva2VuKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHRoaXMuc3RhY2sucG9wKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cbiAgLyoqXG4gICAqIEZ1bGx5IGV4cGFuZCB0aGUgZ2l2ZW4gbWFjcm8gbmFtZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBzdHJpbmcsXG4gICAqIG9yIHJldHVybiBgdW5kZWZpbmVkYCBpZiBubyBzdWNoIG1hY3JvIGlzIGRlZmluZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmV4cGFuZE1hY3JvQXNUZXh0ID0gZnVuY3Rpb24gZXhwYW5kTWFjcm9Bc1RleHQobmFtZSkge1xuICAgIHZhciB0b2tlbnMgPSB0aGlzLmV4cGFuZE1hY3JvKG5hbWUpO1xuXG4gICAgaWYgKHRva2Vucykge1xuICAgICAgcmV0dXJuIHRva2Vucy5tYXAoZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgIHJldHVybiB0b2tlbi50ZXh0O1xuICAgICAgfSkuam9pbihcIlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRva2VucztcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGV4cGFuZGVkIG1hY3JvIGFzIGEgcmV2ZXJzZWQgYXJyYXkgb2YgdG9rZW5zIGFuZCBhIG1hY3JvXG4gICAqIGFyZ3VtZW50IGNvdW50LiAgT3IgcmV0dXJucyBgbnVsbGAgaWYgbm8gc3VjaCBtYWNyby5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uX2dldEV4cGFuc2lvbiA9IGZ1bmN0aW9uIF9nZXRFeHBhbnNpb24obmFtZSkge1xuICAgIHZhciBkZWZpbml0aW9uID0gdGhpcy5tYWNyb3MuZ2V0KG5hbWUpO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT0gbnVsbCkge1xuICAgICAgLy8gbWFpbmx5IGNoZWNraW5nIGZvciB1bmRlZmluZWQgaGVyZVxuICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgfVxuXG4gICAgdmFyIGV4cGFuc2lvbiA9IHR5cGVvZiBkZWZpbml0aW9uID09PSBcImZ1bmN0aW9uXCIgPyBkZWZpbml0aW9uKHRoaXMpIDogZGVmaW5pdGlvbjtcblxuICAgIGlmICh0eXBlb2YgZXhwYW5zaW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB2YXIgbnVtQXJncyA9IDA7XG5cbiAgICAgIGlmIChleHBhbnNpb24uaW5kZXhPZihcIiNcIikgIT09IC0xKSB7XG4gICAgICAgIHZhciBzdHJpcHBlZCA9IGV4cGFuc2lvbi5yZXBsYWNlKC8jIy9nLCBcIlwiKTtcblxuICAgICAgICB3aGlsZSAoc3RyaXBwZWQuaW5kZXhPZihcIiNcIiArIChudW1BcmdzICsgMSkpICE9PSAtMSkge1xuICAgICAgICAgICsrbnVtQXJncztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgYm9keUxleGVyID0gbmV3IExleGVyX0xleGVyKGV4cGFuc2lvbiwgdGhpcy5zZXR0aW5ncyk7XG4gICAgICB2YXIgdG9rZW5zID0gW107XG4gICAgICB2YXIgdG9rID0gYm9keUxleGVyLmxleCgpO1xuXG4gICAgICB3aGlsZSAodG9rLnRleHQgIT09IFwiRU9GXCIpIHtcbiAgICAgICAgdG9rZW5zLnB1c2godG9rKTtcbiAgICAgICAgdG9rID0gYm9keUxleGVyLmxleCgpO1xuICAgICAgfVxuXG4gICAgICB0b2tlbnMucmV2ZXJzZSgpOyAvLyB0byBmaXQgaW4gd2l0aCBzdGFjayB1c2luZyBwdXNoIGFuZCBwb3BcblxuICAgICAgdmFyIGV4cGFuZGVkID0ge1xuICAgICAgICB0b2tlbnM6IHRva2VucyxcbiAgICAgICAgbnVtQXJnczogbnVtQXJnc1xuICAgICAgfTtcbiAgICAgIHJldHVybiBleHBhbmRlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhwYW5zaW9uO1xuICB9XG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhIGNvbW1hbmQgaXMgY3VycmVudGx5IFwiZGVmaW5lZFwiIChoYXMgc29tZVxuICAgKiBmdW5jdGlvbmFsaXR5KSwgbWVhbmluZyB0aGF0IGl0J3MgYSBtYWNybyAoaW4gdGhlIGN1cnJlbnQgZ3JvdXApLFxuICAgKiBhIGZ1bmN0aW9uLCBhIHN5bWJvbCwgb3Igb25lIG9mIHRoZSBzcGVjaWFsIGNvbW1hbmRzIGxpc3RlZCBpblxuICAgKiBgaW1wbGljaXRDb21tYW5kc2AuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmlzRGVmaW5lZCA9IGZ1bmN0aW9uIGlzRGVmaW5lZChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFjcm9zLmhhcyhuYW1lKSB8fCBzcmNfZnVuY3Rpb25zLmhhc093blByb3BlcnR5KG5hbWUpIHx8IHNyY19zeW1ib2xzLm1hdGguaGFzT3duUHJvcGVydHkobmFtZSkgfHwgc3JjX3N5bWJvbHMudGV4dC5oYXNPd25Qcm9wZXJ0eShuYW1lKSB8fCBpbXBsaWNpdENvbW1hbmRzLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9O1xuXG4gIHJldHVybiBNYWNyb0V4cGFuZGVyO1xufSgpO1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3VuaWNvZGVBY2NlbnRzLmpzXG4vLyBNYXBwaW5nIG9mIFVuaWNvZGUgYWNjZW50IGNoYXJhY3RlcnMgdG8gdGhlaXIgTGFUZVggZXF1aXZhbGVudCBpbiB0ZXh0IGFuZFxuLy8gbWF0aCBtb2RlICh3aGVuIHRoZXkgZXhpc3QpLlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdW5pY29kZUFjY2VudHMgPSAoe1xuICBcIlxcdTAzMDFcIjoge1xuICAgIHRleHQ6IFwiXFxcXCdcIixcbiAgICBtYXRoOiAnXFxcXGFjdXRlJ1xuICB9LFxuICBcIlxcdTAzMDBcIjoge1xuICAgIHRleHQ6ICdcXFxcYCcsXG4gICAgbWF0aDogJ1xcXFxncmF2ZSdcbiAgfSxcbiAgXCJcXHUwMzA4XCI6IHtcbiAgICB0ZXh0OiAnXFxcXFwiJyxcbiAgICBtYXRoOiAnXFxcXGRkb3QnXG4gIH0sXG4gIFwiXFx1MDMwM1wiOiB7XG4gICAgdGV4dDogJ1xcXFx+JyxcbiAgICBtYXRoOiAnXFxcXHRpbGRlJ1xuICB9LFxuICBcIlxcdTAzMDRcIjoge1xuICAgIHRleHQ6ICdcXFxcPScsXG4gICAgbWF0aDogJ1xcXFxiYXInXG4gIH0sXG4gIFwiXFx1MDMwNlwiOiB7XG4gICAgdGV4dDogXCJcXFxcdVwiLFxuICAgIG1hdGg6ICdcXFxcYnJldmUnXG4gIH0sXG4gIFwiXFx1MDMwQ1wiOiB7XG4gICAgdGV4dDogJ1xcXFx2JyxcbiAgICBtYXRoOiAnXFxcXGNoZWNrJ1xuICB9LFxuICBcIlxcdTAzMDJcIjoge1xuICAgIHRleHQ6ICdcXFxcXicsXG4gICAgbWF0aDogJ1xcXFxoYXQnXG4gIH0sXG4gIFwiXFx1MDMwN1wiOiB7XG4gICAgdGV4dDogJ1xcXFwuJyxcbiAgICBtYXRoOiAnXFxcXGRvdCdcbiAgfSxcbiAgXCJcXHUwMzBBXCI6IHtcbiAgICB0ZXh0OiAnXFxcXHInLFxuICAgIG1hdGg6ICdcXFxcbWF0aHJpbmcnXG4gIH0sXG4gIFwiXFx1MDMwQlwiOiB7XG4gICAgdGV4dDogJ1xcXFxIJ1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3VuaWNvZGVTeW1ib2xzLmpzXG4vLyBUaGlzIGZpbGUgaXMgR0VORVJBVEVEIGJ5IHVuaWNvZGVNYWtlLmpzLiBETyBOT1QgTU9ESUZZLlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdW5pY29kZVN5bWJvbHMgPSAoe1xuICBcIlxceEUxXCI6IFwiYVxcdTAzMDFcIixcbiAgLy8gw6EgPSBcXCd7YX1cbiAgXCJcXHhFMFwiOiBcImFcXHUwMzAwXCIsXG4gIC8vIMOgID0gXFxge2F9XG4gIFwiXFx4RTRcIjogXCJhXFx1MDMwOFwiLFxuICAvLyDDpCA9IFxcXCJ7YX1cbiAgXCJcXHUwMURGXCI6IFwiYVxcdTAzMDhcXHUwMzA0XCIsXG4gIC8vIMefID0gXFxcIlxcPXthfVxuICBcIlxceEUzXCI6IFwiYVxcdTAzMDNcIixcbiAgLy8gw6MgPSBcXH57YX1cbiAgXCJcXHUwMTAxXCI6IFwiYVxcdTAzMDRcIixcbiAgLy8gxIEgPSBcXD17YX1cbiAgXCJcXHUwMTAzXCI6IFwiYVxcdTAzMDZcIixcbiAgLy8gxIMgPSBcXHV7YX1cbiAgXCJcXHUxRUFGXCI6IFwiYVxcdTAzMDZcXHUwMzAxXCIsXG4gIC8vIOG6ryA9IFxcdVxcJ3thfVxuICBcIlxcdTFFQjFcIjogXCJhXFx1MDMwNlxcdTAzMDBcIixcbiAgLy8g4bqxID0gXFx1XFxge2F9XG4gIFwiXFx1MUVCNVwiOiBcImFcXHUwMzA2XFx1MDMwM1wiLFxuICAvLyDhurUgPSBcXHVcXH57YX1cbiAgXCJcXHUwMUNFXCI6IFwiYVxcdTAzMENcIixcbiAgLy8gx44gPSBcXHZ7YX1cbiAgXCJcXHhFMlwiOiBcImFcXHUwMzAyXCIsXG4gIC8vIMOiID0gXFxee2F9XG4gIFwiXFx1MUVBNVwiOiBcImFcXHUwMzAyXFx1MDMwMVwiLFxuICAvLyDhuqUgPSBcXF5cXCd7YX1cbiAgXCJcXHUxRUE3XCI6IFwiYVxcdTAzMDJcXHUwMzAwXCIsXG4gIC8vIOG6pyA9IFxcXlxcYHthfVxuICBcIlxcdTFFQUJcIjogXCJhXFx1MDMwMlxcdTAzMDNcIixcbiAgLy8g4bqrID0gXFxeXFx+e2F9XG4gIFwiXFx1MDIyN1wiOiBcImFcXHUwMzA3XCIsXG4gIC8vIMinID0gXFwue2F9XG4gIFwiXFx1MDFFMVwiOiBcImFcXHUwMzA3XFx1MDMwNFwiLFxuICAvLyDHoSA9IFxcLlxcPXthfVxuICBcIlxceEU1XCI6IFwiYVxcdTAzMEFcIixcbiAgLy8gw6UgPSBcXHJ7YX1cbiAgXCJcXHUwMUZCXCI6IFwiYVxcdTAzMEFcXHUwMzAxXCIsXG4gIC8vIMe7ID0gXFxyXFwne2F9XG4gIFwiXFx1MUUwM1wiOiBcImJcXHUwMzA3XCIsXG4gIC8vIOG4gyA9IFxcLntifVxuICBcIlxcdTAxMDdcIjogXCJjXFx1MDMwMVwiLFxuICAvLyDEhyA9IFxcJ3tjfVxuICBcIlxcdTAxMERcIjogXCJjXFx1MDMwQ1wiLFxuICAvLyDEjSA9IFxcdntjfVxuICBcIlxcdTAxMDlcIjogXCJjXFx1MDMwMlwiLFxuICAvLyDEiSA9IFxcXntjfVxuICBcIlxcdTAxMEJcIjogXCJjXFx1MDMwN1wiLFxuICAvLyDEiyA9IFxcLntjfVxuICBcIlxcdTAxMEZcIjogXCJkXFx1MDMwQ1wiLFxuICAvLyDEjyA9IFxcdntkfVxuICBcIlxcdTFFMEJcIjogXCJkXFx1MDMwN1wiLFxuICAvLyDhuIsgPSBcXC57ZH1cbiAgXCJcXHhFOVwiOiBcImVcXHUwMzAxXCIsXG4gIC8vIMOpID0gXFwne2V9XG4gIFwiXFx4RThcIjogXCJlXFx1MDMwMFwiLFxuICAvLyDDqCA9IFxcYHtlfVxuICBcIlxceEVCXCI6IFwiZVxcdTAzMDhcIixcbiAgLy8gw6sgPSBcXFwie2V9XG4gIFwiXFx1MUVCRFwiOiBcImVcXHUwMzAzXCIsXG4gIC8vIOG6vSA9IFxcfntlfVxuICBcIlxcdTAxMTNcIjogXCJlXFx1MDMwNFwiLFxuICAvLyDEkyA9IFxcPXtlfVxuICBcIlxcdTFFMTdcIjogXCJlXFx1MDMwNFxcdTAzMDFcIixcbiAgLy8g4biXID0gXFw9XFwne2V9XG4gIFwiXFx1MUUxNVwiOiBcImVcXHUwMzA0XFx1MDMwMFwiLFxuICAvLyDhuJUgPSBcXD1cXGB7ZX1cbiAgXCJcXHUwMTE1XCI6IFwiZVxcdTAzMDZcIixcbiAgLy8gxJUgPSBcXHV7ZX1cbiAgXCJcXHUwMTFCXCI6IFwiZVxcdTAzMENcIixcbiAgLy8gxJsgPSBcXHZ7ZX1cbiAgXCJcXHhFQVwiOiBcImVcXHUwMzAyXCIsXG4gIC8vIMOqID0gXFxee2V9XG4gIFwiXFx1MUVCRlwiOiBcImVcXHUwMzAyXFx1MDMwMVwiLFxuICAvLyDhur8gPSBcXF5cXCd7ZX1cbiAgXCJcXHUxRUMxXCI6IFwiZVxcdTAzMDJcXHUwMzAwXCIsXG4gIC8vIOG7gSA9IFxcXlxcYHtlfVxuICBcIlxcdTFFQzVcIjogXCJlXFx1MDMwMlxcdTAzMDNcIixcbiAgLy8g4buFID0gXFxeXFx+e2V9XG4gIFwiXFx1MDExN1wiOiBcImVcXHUwMzA3XCIsXG4gIC8vIMSXID0gXFwue2V9XG4gIFwiXFx1MUUxRlwiOiBcImZcXHUwMzA3XCIsXG4gIC8vIOG4nyA9IFxcLntmfVxuICBcIlxcdTAxRjVcIjogXCJnXFx1MDMwMVwiLFxuICAvLyDHtSA9IFxcJ3tnfVxuICBcIlxcdTFFMjFcIjogXCJnXFx1MDMwNFwiLFxuICAvLyDhuKEgPSBcXD17Z31cbiAgXCJcXHUwMTFGXCI6IFwiZ1xcdTAzMDZcIixcbiAgLy8gxJ8gPSBcXHV7Z31cbiAgXCJcXHUwMUU3XCI6IFwiZ1xcdTAzMENcIixcbiAgLy8gx6cgPSBcXHZ7Z31cbiAgXCJcXHUwMTFEXCI6IFwiZ1xcdTAzMDJcIixcbiAgLy8gxJ0gPSBcXF57Z31cbiAgXCJcXHUwMTIxXCI6IFwiZ1xcdTAzMDdcIixcbiAgLy8gxKEgPSBcXC57Z31cbiAgXCJcXHUxRTI3XCI6IFwiaFxcdTAzMDhcIixcbiAgLy8g4binID0gXFxcIntofVxuICBcIlxcdTAyMUZcIjogXCJoXFx1MDMwQ1wiLFxuICAvLyDInyA9IFxcdntofVxuICBcIlxcdTAxMjVcIjogXCJoXFx1MDMwMlwiLFxuICAvLyDEpSA9IFxcXntofVxuICBcIlxcdTFFMjNcIjogXCJoXFx1MDMwN1wiLFxuICAvLyDhuKMgPSBcXC57aH1cbiAgXCJcXHhFRFwiOiBcImlcXHUwMzAxXCIsXG4gIC8vIMOtID0gXFwne2l9XG4gIFwiXFx4RUNcIjogXCJpXFx1MDMwMFwiLFxuICAvLyDDrCA9IFxcYHtpfVxuICBcIlxceEVGXCI6IFwiaVxcdTAzMDhcIixcbiAgLy8gw68gPSBcXFwie2l9XG4gIFwiXFx1MUUyRlwiOiBcImlcXHUwMzA4XFx1MDMwMVwiLFxuICAvLyDhuK8gPSBcXFwiXFwne2l9XG4gIFwiXFx1MDEyOVwiOiBcImlcXHUwMzAzXCIsXG4gIC8vIMSpID0gXFx+e2l9XG4gIFwiXFx1MDEyQlwiOiBcImlcXHUwMzA0XCIsXG4gIC8vIMSrID0gXFw9e2l9XG4gIFwiXFx1MDEyRFwiOiBcImlcXHUwMzA2XCIsXG4gIC8vIMStID0gXFx1e2l9XG4gIFwiXFx1MDFEMFwiOiBcImlcXHUwMzBDXCIsXG4gIC8vIMeQID0gXFx2e2l9XG4gIFwiXFx4RUVcIjogXCJpXFx1MDMwMlwiLFxuICAvLyDDriA9IFxcXntpfVxuICBcIlxcdTAxRjBcIjogXCJqXFx1MDMwQ1wiLFxuICAvLyDHsCA9IFxcdntqfVxuICBcIlxcdTAxMzVcIjogXCJqXFx1MDMwMlwiLFxuICAvLyDEtSA9IFxcXntqfVxuICBcIlxcdTFFMzFcIjogXCJrXFx1MDMwMVwiLFxuICAvLyDhuLEgPSBcXCd7a31cbiAgXCJcXHUwMUU5XCI6IFwia1xcdTAzMENcIixcbiAgLy8gx6kgPSBcXHZ7a31cbiAgXCJcXHUwMTNBXCI6IFwibFxcdTAzMDFcIixcbiAgLy8gxLogPSBcXCd7bH1cbiAgXCJcXHUwMTNFXCI6IFwibFxcdTAzMENcIixcbiAgLy8gxL4gPSBcXHZ7bH1cbiAgXCJcXHUxRTNGXCI6IFwibVxcdTAzMDFcIixcbiAgLy8g4bi/ID0gXFwne219XG4gIFwiXFx1MUU0MVwiOiBcIm1cXHUwMzA3XCIsXG4gIC8vIOG5gSA9IFxcLnttfVxuICBcIlxcdTAxNDRcIjogXCJuXFx1MDMwMVwiLFxuICAvLyDFhCA9IFxcJ3tufVxuICBcIlxcdTAxRjlcIjogXCJuXFx1MDMwMFwiLFxuICAvLyDHuSA9IFxcYHtufVxuICBcIlxceEYxXCI6IFwiblxcdTAzMDNcIixcbiAgLy8gw7EgPSBcXH57bn1cbiAgXCJcXHUwMTQ4XCI6IFwiblxcdTAzMENcIixcbiAgLy8gxYggPSBcXHZ7bn1cbiAgXCJcXHUxRTQ1XCI6IFwiblxcdTAzMDdcIixcbiAgLy8g4bmFID0gXFwue259XG4gIFwiXFx4RjNcIjogXCJvXFx1MDMwMVwiLFxuICAvLyDDsyA9IFxcJ3tvfVxuICBcIlxceEYyXCI6IFwib1xcdTAzMDBcIixcbiAgLy8gw7IgPSBcXGB7b31cbiAgXCJcXHhGNlwiOiBcIm9cXHUwMzA4XCIsXG4gIC8vIMO2ID0gXFxcIntvfVxuICBcIlxcdTAyMkJcIjogXCJvXFx1MDMwOFxcdTAzMDRcIixcbiAgLy8gyKsgPSBcXFwiXFw9e299XG4gIFwiXFx4RjVcIjogXCJvXFx1MDMwM1wiLFxuICAvLyDDtSA9IFxcfntvfVxuICBcIlxcdTFFNERcIjogXCJvXFx1MDMwM1xcdTAzMDFcIixcbiAgLy8g4bmNID0gXFx+XFwne299XG4gIFwiXFx1MUU0RlwiOiBcIm9cXHUwMzAzXFx1MDMwOFwiLFxuICAvLyDhuY8gPSBcXH5cXFwie299XG4gIFwiXFx1MDIyRFwiOiBcIm9cXHUwMzAzXFx1MDMwNFwiLFxuICAvLyDIrSA9IFxcflxcPXtvfVxuICBcIlxcdTAxNERcIjogXCJvXFx1MDMwNFwiLFxuICAvLyDFjSA9IFxcPXtvfVxuICBcIlxcdTFFNTNcIjogXCJvXFx1MDMwNFxcdTAzMDFcIixcbiAgLy8g4bmTID0gXFw9XFwne299XG4gIFwiXFx1MUU1MVwiOiBcIm9cXHUwMzA0XFx1MDMwMFwiLFxuICAvLyDhuZEgPSBcXD1cXGB7b31cbiAgXCJcXHUwMTRGXCI6IFwib1xcdTAzMDZcIixcbiAgLy8gxY8gPSBcXHV7b31cbiAgXCJcXHUwMUQyXCI6IFwib1xcdTAzMENcIixcbiAgLy8gx5IgPSBcXHZ7b31cbiAgXCJcXHhGNFwiOiBcIm9cXHUwMzAyXCIsXG4gIC8vIMO0ID0gXFxee299XG4gIFwiXFx1MUVEMVwiOiBcIm9cXHUwMzAyXFx1MDMwMVwiLFxuICAvLyDhu5EgPSBcXF5cXCd7b31cbiAgXCJcXHUxRUQzXCI6IFwib1xcdTAzMDJcXHUwMzAwXCIsXG4gIC8vIOG7kyA9IFxcXlxcYHtvfVxuICBcIlxcdTFFRDdcIjogXCJvXFx1MDMwMlxcdTAzMDNcIixcbiAgLy8g4buXID0gXFxeXFx+e299XG4gIFwiXFx1MDIyRlwiOiBcIm9cXHUwMzA3XCIsXG4gIC8vIMivID0gXFwue299XG4gIFwiXFx1MDIzMVwiOiBcIm9cXHUwMzA3XFx1MDMwNFwiLFxuICAvLyDIsSA9IFxcLlxcPXtvfVxuICBcIlxcdTAxNTFcIjogXCJvXFx1MDMwQlwiLFxuICAvLyDFkSA9IFxcSHtvfVxuICBcIlxcdTFFNTVcIjogXCJwXFx1MDMwMVwiLFxuICAvLyDhuZUgPSBcXCd7cH1cbiAgXCJcXHUxRTU3XCI6IFwicFxcdTAzMDdcIixcbiAgLy8g4bmXID0gXFwue3B9XG4gIFwiXFx1MDE1NVwiOiBcInJcXHUwMzAxXCIsXG4gIC8vIMWVID0gXFwne3J9XG4gIFwiXFx1MDE1OVwiOiBcInJcXHUwMzBDXCIsXG4gIC8vIMWZID0gXFx2e3J9XG4gIFwiXFx1MUU1OVwiOiBcInJcXHUwMzA3XCIsXG4gIC8vIOG5mSA9IFxcLntyfVxuICBcIlxcdTAxNUJcIjogXCJzXFx1MDMwMVwiLFxuICAvLyDFmyA9IFxcJ3tzfVxuICBcIlxcdTFFNjVcIjogXCJzXFx1MDMwMVxcdTAzMDdcIixcbiAgLy8g4bmlID0gXFwnXFwue3N9XG4gIFwiXFx1MDE2MVwiOiBcInNcXHUwMzBDXCIsXG4gIC8vIMWhID0gXFx2e3N9XG4gIFwiXFx1MUU2N1wiOiBcInNcXHUwMzBDXFx1MDMwN1wiLFxuICAvLyDhuacgPSBcXHZcXC57c31cbiAgXCJcXHUwMTVEXCI6IFwic1xcdTAzMDJcIixcbiAgLy8gxZ0gPSBcXF57c31cbiAgXCJcXHUxRTYxXCI6IFwic1xcdTAzMDdcIixcbiAgLy8g4bmhID0gXFwue3N9XG4gIFwiXFx1MUU5N1wiOiBcInRcXHUwMzA4XCIsXG4gIC8vIOG6lyA9IFxcXCJ7dH1cbiAgXCJcXHUwMTY1XCI6IFwidFxcdTAzMENcIixcbiAgLy8gxaUgPSBcXHZ7dH1cbiAgXCJcXHUxRTZCXCI6IFwidFxcdTAzMDdcIixcbiAgLy8g4bmrID0gXFwue3R9XG4gIFwiXFx4RkFcIjogXCJ1XFx1MDMwMVwiLFxuICAvLyDDuiA9IFxcJ3t1fVxuICBcIlxceEY5XCI6IFwidVxcdTAzMDBcIixcbiAgLy8gw7kgPSBcXGB7dX1cbiAgXCJcXHhGQ1wiOiBcInVcXHUwMzA4XCIsXG4gIC8vIMO8ID0gXFxcInt1fVxuICBcIlxcdTAxRDhcIjogXCJ1XFx1MDMwOFxcdTAzMDFcIixcbiAgLy8gx5ggPSBcXFwiXFwne3V9XG4gIFwiXFx1MDFEQ1wiOiBcInVcXHUwMzA4XFx1MDMwMFwiLFxuICAvLyDHnCA9IFxcXCJcXGB7dX1cbiAgXCJcXHUwMUQ2XCI6IFwidVxcdTAzMDhcXHUwMzA0XCIsXG4gIC8vIMeWID0gXFxcIlxcPXt1fVxuICBcIlxcdTAxREFcIjogXCJ1XFx1MDMwOFxcdTAzMENcIixcbiAgLy8gx5ogPSBcXFwiXFx2e3V9XG4gIFwiXFx1MDE2OVwiOiBcInVcXHUwMzAzXCIsXG4gIC8vIMWpID0gXFx+e3V9XG4gIFwiXFx1MUU3OVwiOiBcInVcXHUwMzAzXFx1MDMwMVwiLFxuICAvLyDhubkgPSBcXH5cXCd7dX1cbiAgXCJcXHUwMTZCXCI6IFwidVxcdTAzMDRcIixcbiAgLy8gxasgPSBcXD17dX1cbiAgXCJcXHUxRTdCXCI6IFwidVxcdTAzMDRcXHUwMzA4XCIsXG4gIC8vIOG5uyA9IFxcPVxcXCJ7dX1cbiAgXCJcXHUwMTZEXCI6IFwidVxcdTAzMDZcIixcbiAgLy8gxa0gPSBcXHV7dX1cbiAgXCJcXHUwMUQ0XCI6IFwidVxcdTAzMENcIixcbiAgLy8gx5QgPSBcXHZ7dX1cbiAgXCJcXHhGQlwiOiBcInVcXHUwMzAyXCIsXG4gIC8vIMO7ID0gXFxee3V9XG4gIFwiXFx1MDE2RlwiOiBcInVcXHUwMzBBXCIsXG4gIC8vIMWvID0gXFxye3V9XG4gIFwiXFx1MDE3MVwiOiBcInVcXHUwMzBCXCIsXG4gIC8vIMWxID0gXFxIe3V9XG4gIFwiXFx1MUU3RFwiOiBcInZcXHUwMzAzXCIsXG4gIC8vIOG5vSA9IFxcfnt2fVxuICBcIlxcdTFFODNcIjogXCJ3XFx1MDMwMVwiLFxuICAvLyDhuoMgPSBcXCd7d31cbiAgXCJcXHUxRTgxXCI6IFwid1xcdTAzMDBcIixcbiAgLy8g4bqBID0gXFxge3d9XG4gIFwiXFx1MUU4NVwiOiBcIndcXHUwMzA4XCIsXG4gIC8vIOG6hSA9IFxcXCJ7d31cbiAgXCJcXHUwMTc1XCI6IFwid1xcdTAzMDJcIixcbiAgLy8gxbUgPSBcXF57d31cbiAgXCJcXHUxRTg3XCI6IFwid1xcdTAzMDdcIixcbiAgLy8g4bqHID0gXFwue3d9XG4gIFwiXFx1MUU5OFwiOiBcIndcXHUwMzBBXCIsXG4gIC8vIOG6mCA9IFxccnt3fVxuICBcIlxcdTFFOERcIjogXCJ4XFx1MDMwOFwiLFxuICAvLyDhuo0gPSBcXFwie3h9XG4gIFwiXFx1MUU4QlwiOiBcInhcXHUwMzA3XCIsXG4gIC8vIOG6iyA9IFxcLnt4fVxuICBcIlxceEZEXCI6IFwieVxcdTAzMDFcIixcbiAgLy8gw70gPSBcXCd7eX1cbiAgXCJcXHUxRUYzXCI6IFwieVxcdTAzMDBcIixcbiAgLy8g4buzID0gXFxge3l9XG4gIFwiXFx4RkZcIjogXCJ5XFx1MDMwOFwiLFxuICAvLyDDvyA9IFxcXCJ7eX1cbiAgXCJcXHUxRUY5XCI6IFwieVxcdTAzMDNcIixcbiAgLy8g4bu5ID0gXFx+e3l9XG4gIFwiXFx1MDIzM1wiOiBcInlcXHUwMzA0XCIsXG4gIC8vIMizID0gXFw9e3l9XG4gIFwiXFx1MDE3N1wiOiBcInlcXHUwMzAyXCIsXG4gIC8vIMW3ID0gXFxee3l9XG4gIFwiXFx1MUU4RlwiOiBcInlcXHUwMzA3XCIsXG4gIC8vIOG6jyA9IFxcLnt5fVxuICBcIlxcdTFFOTlcIjogXCJ5XFx1MDMwQVwiLFxuICAvLyDhupkgPSBcXHJ7eX1cbiAgXCJcXHUwMTdBXCI6IFwielxcdTAzMDFcIixcbiAgLy8gxbogPSBcXCd7en1cbiAgXCJcXHUwMTdFXCI6IFwielxcdTAzMENcIixcbiAgLy8gxb4gPSBcXHZ7en1cbiAgXCJcXHUxRTkxXCI6IFwielxcdTAzMDJcIixcbiAgLy8g4bqRID0gXFxee3p9XG4gIFwiXFx1MDE3Q1wiOiBcInpcXHUwMzA3XCIsXG4gIC8vIMW8ID0gXFwue3p9XG4gIFwiXFx4QzFcIjogXCJBXFx1MDMwMVwiLFxuICAvLyDDgSA9IFxcJ3tBfVxuICBcIlxceEMwXCI6IFwiQVxcdTAzMDBcIixcbiAgLy8gw4AgPSBcXGB7QX1cbiAgXCJcXHhDNFwiOiBcIkFcXHUwMzA4XCIsXG4gIC8vIMOEID0gXFxcIntBfVxuICBcIlxcdTAxREVcIjogXCJBXFx1MDMwOFxcdTAzMDRcIixcbiAgLy8gx54gPSBcXFwiXFw9e0F9XG4gIFwiXFx4QzNcIjogXCJBXFx1MDMwM1wiLFxuICAvLyDDgyA9IFxcfntBfVxuICBcIlxcdTAxMDBcIjogXCJBXFx1MDMwNFwiLFxuICAvLyDEgCA9IFxcPXtBfVxuICBcIlxcdTAxMDJcIjogXCJBXFx1MDMwNlwiLFxuICAvLyDEgiA9IFxcdXtBfVxuICBcIlxcdTFFQUVcIjogXCJBXFx1MDMwNlxcdTAzMDFcIixcbiAgLy8g4bquID0gXFx1XFwne0F9XG4gIFwiXFx1MUVCMFwiOiBcIkFcXHUwMzA2XFx1MDMwMFwiLFxuICAvLyDhurAgPSBcXHVcXGB7QX1cbiAgXCJcXHUxRUI0XCI6IFwiQVxcdTAzMDZcXHUwMzAzXCIsXG4gIC8vIOG6tCA9IFxcdVxcfntBfVxuICBcIlxcdTAxQ0RcIjogXCJBXFx1MDMwQ1wiLFxuICAvLyDHjSA9IFxcdntBfVxuICBcIlxceEMyXCI6IFwiQVxcdTAzMDJcIixcbiAgLy8gw4IgPSBcXF57QX1cbiAgXCJcXHUxRUE0XCI6IFwiQVxcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG6pCA9IFxcXlxcJ3tBfVxuICBcIlxcdTFFQTZcIjogXCJBXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4bqmID0gXFxeXFxge0F9XG4gIFwiXFx1MUVBQVwiOiBcIkFcXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhuqogPSBcXF5cXH57QX1cbiAgXCJcXHUwMjI2XCI6IFwiQVxcdTAzMDdcIixcbiAgLy8gyKYgPSBcXC57QX1cbiAgXCJcXHUwMUUwXCI6IFwiQVxcdTAzMDdcXHUwMzA0XCIsXG4gIC8vIMegID0gXFwuXFw9e0F9XG4gIFwiXFx4QzVcIjogXCJBXFx1MDMwQVwiLFxuICAvLyDDhSA9IFxccntBfVxuICBcIlxcdTAxRkFcIjogXCJBXFx1MDMwQVxcdTAzMDFcIixcbiAgLy8gx7ogPSBcXHJcXCd7QX1cbiAgXCJcXHUxRTAyXCI6IFwiQlxcdTAzMDdcIixcbiAgLy8g4biCID0gXFwue0J9XG4gIFwiXFx1MDEwNlwiOiBcIkNcXHUwMzAxXCIsXG4gIC8vIMSGID0gXFwne0N9XG4gIFwiXFx1MDEwQ1wiOiBcIkNcXHUwMzBDXCIsXG4gIC8vIMSMID0gXFx2e0N9XG4gIFwiXFx1MDEwOFwiOiBcIkNcXHUwMzAyXCIsXG4gIC8vIMSIID0gXFxee0N9XG4gIFwiXFx1MDEwQVwiOiBcIkNcXHUwMzA3XCIsXG4gIC8vIMSKID0gXFwue0N9XG4gIFwiXFx1MDEwRVwiOiBcIkRcXHUwMzBDXCIsXG4gIC8vIMSOID0gXFx2e0R9XG4gIFwiXFx1MUUwQVwiOiBcIkRcXHUwMzA3XCIsXG4gIC8vIOG4iiA9IFxcLntEfVxuICBcIlxceEM5XCI6IFwiRVxcdTAzMDFcIixcbiAgLy8gw4kgPSBcXCd7RX1cbiAgXCJcXHhDOFwiOiBcIkVcXHUwMzAwXCIsXG4gIC8vIMOIID0gXFxge0V9XG4gIFwiXFx4Q0JcIjogXCJFXFx1MDMwOFwiLFxuICAvLyDDiyA9IFxcXCJ7RX1cbiAgXCJcXHUxRUJDXCI6IFwiRVxcdTAzMDNcIixcbiAgLy8g4bq8ID0gXFx+e0V9XG4gIFwiXFx1MDExMlwiOiBcIkVcXHUwMzA0XCIsXG4gIC8vIMSSID0gXFw9e0V9XG4gIFwiXFx1MUUxNlwiOiBcIkVcXHUwMzA0XFx1MDMwMVwiLFxuICAvLyDhuJYgPSBcXD1cXCd7RX1cbiAgXCJcXHUxRTE0XCI6IFwiRVxcdTAzMDRcXHUwMzAwXCIsXG4gIC8vIOG4lCA9IFxcPVxcYHtFfVxuICBcIlxcdTAxMTRcIjogXCJFXFx1MDMwNlwiLFxuICAvLyDElCA9IFxcdXtFfVxuICBcIlxcdTAxMUFcIjogXCJFXFx1MDMwQ1wiLFxuICAvLyDEmiA9IFxcdntFfVxuICBcIlxceENBXCI6IFwiRVxcdTAzMDJcIixcbiAgLy8gw4ogPSBcXF57RX1cbiAgXCJcXHUxRUJFXCI6IFwiRVxcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG6viA9IFxcXlxcJ3tFfVxuICBcIlxcdTFFQzBcIjogXCJFXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4buAID0gXFxeXFxge0V9XG4gIFwiXFx1MUVDNFwiOiBcIkVcXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhu4QgPSBcXF5cXH57RX1cbiAgXCJcXHUwMTE2XCI6IFwiRVxcdTAzMDdcIixcbiAgLy8gxJYgPSBcXC57RX1cbiAgXCJcXHUxRTFFXCI6IFwiRlxcdTAzMDdcIixcbiAgLy8g4bieID0gXFwue0Z9XG4gIFwiXFx1MDFGNFwiOiBcIkdcXHUwMzAxXCIsXG4gIC8vIMe0ID0gXFwne0d9XG4gIFwiXFx1MUUyMFwiOiBcIkdcXHUwMzA0XCIsXG4gIC8vIOG4oCA9IFxcPXtHfVxuICBcIlxcdTAxMUVcIjogXCJHXFx1MDMwNlwiLFxuICAvLyDEniA9IFxcdXtHfVxuICBcIlxcdTAxRTZcIjogXCJHXFx1MDMwQ1wiLFxuICAvLyDHpiA9IFxcdntHfVxuICBcIlxcdTAxMUNcIjogXCJHXFx1MDMwMlwiLFxuICAvLyDEnCA9IFxcXntHfVxuICBcIlxcdTAxMjBcIjogXCJHXFx1MDMwN1wiLFxuICAvLyDEoCA9IFxcLntHfVxuICBcIlxcdTFFMjZcIjogXCJIXFx1MDMwOFwiLFxuICAvLyDhuKYgPSBcXFwie0h9XG4gIFwiXFx1MDIxRVwiOiBcIkhcXHUwMzBDXCIsXG4gIC8vIMieID0gXFx2e0h9XG4gIFwiXFx1MDEyNFwiOiBcIkhcXHUwMzAyXCIsXG4gIC8vIMSkID0gXFxee0h9XG4gIFwiXFx1MUUyMlwiOiBcIkhcXHUwMzA3XCIsXG4gIC8vIOG4oiA9IFxcLntIfVxuICBcIlxceENEXCI6IFwiSVxcdTAzMDFcIixcbiAgLy8gw40gPSBcXCd7SX1cbiAgXCJcXHhDQ1wiOiBcIklcXHUwMzAwXCIsXG4gIC8vIMOMID0gXFxge0l9XG4gIFwiXFx4Q0ZcIjogXCJJXFx1MDMwOFwiLFxuICAvLyDDjyA9IFxcXCJ7SX1cbiAgXCJcXHUxRTJFXCI6IFwiSVxcdTAzMDhcXHUwMzAxXCIsXG4gIC8vIOG4riA9IFxcXCJcXCd7SX1cbiAgXCJcXHUwMTI4XCI6IFwiSVxcdTAzMDNcIixcbiAgLy8gxKggPSBcXH57SX1cbiAgXCJcXHUwMTJBXCI6IFwiSVxcdTAzMDRcIixcbiAgLy8gxKogPSBcXD17SX1cbiAgXCJcXHUwMTJDXCI6IFwiSVxcdTAzMDZcIixcbiAgLy8gxKwgPSBcXHV7SX1cbiAgXCJcXHUwMUNGXCI6IFwiSVxcdTAzMENcIixcbiAgLy8gx48gPSBcXHZ7SX1cbiAgXCJcXHhDRVwiOiBcIklcXHUwMzAyXCIsXG4gIC8vIMOOID0gXFxee0l9XG4gIFwiXFx1MDEzMFwiOiBcIklcXHUwMzA3XCIsXG4gIC8vIMSwID0gXFwue0l9XG4gIFwiXFx1MDEzNFwiOiBcIkpcXHUwMzAyXCIsXG4gIC8vIMS0ID0gXFxee0p9XG4gIFwiXFx1MUUzMFwiOiBcIktcXHUwMzAxXCIsXG4gIC8vIOG4sCA9IFxcJ3tLfVxuICBcIlxcdTAxRThcIjogXCJLXFx1MDMwQ1wiLFxuICAvLyDHqCA9IFxcdntLfVxuICBcIlxcdTAxMzlcIjogXCJMXFx1MDMwMVwiLFxuICAvLyDEuSA9IFxcJ3tMfVxuICBcIlxcdTAxM0RcIjogXCJMXFx1MDMwQ1wiLFxuICAvLyDEvSA9IFxcdntMfVxuICBcIlxcdTFFM0VcIjogXCJNXFx1MDMwMVwiLFxuICAvLyDhuL4gPSBcXCd7TX1cbiAgXCJcXHUxRTQwXCI6IFwiTVxcdTAzMDdcIixcbiAgLy8g4bmAID0gXFwue019XG4gIFwiXFx1MDE0M1wiOiBcIk5cXHUwMzAxXCIsXG4gIC8vIMWDID0gXFwne059XG4gIFwiXFx1MDFGOFwiOiBcIk5cXHUwMzAwXCIsXG4gIC8vIMe4ID0gXFxge059XG4gIFwiXFx4RDFcIjogXCJOXFx1MDMwM1wiLFxuICAvLyDDkSA9IFxcfntOfVxuICBcIlxcdTAxNDdcIjogXCJOXFx1MDMwQ1wiLFxuICAvLyDFhyA9IFxcdntOfVxuICBcIlxcdTFFNDRcIjogXCJOXFx1MDMwN1wiLFxuICAvLyDhuYQgPSBcXC57Tn1cbiAgXCJcXHhEM1wiOiBcIk9cXHUwMzAxXCIsXG4gIC8vIMOTID0gXFwne099XG4gIFwiXFx4RDJcIjogXCJPXFx1MDMwMFwiLFxuICAvLyDDkiA9IFxcYHtPfVxuICBcIlxceEQ2XCI6IFwiT1xcdTAzMDhcIixcbiAgLy8gw5YgPSBcXFwie099XG4gIFwiXFx1MDIyQVwiOiBcIk9cXHUwMzA4XFx1MDMwNFwiLFxuICAvLyDIqiA9IFxcXCJcXD17T31cbiAgXCJcXHhENVwiOiBcIk9cXHUwMzAzXCIsXG4gIC8vIMOVID0gXFx+e099XG4gIFwiXFx1MUU0Q1wiOiBcIk9cXHUwMzAzXFx1MDMwMVwiLFxuICAvLyDhuYwgPSBcXH5cXCd7T31cbiAgXCJcXHUxRTRFXCI6IFwiT1xcdTAzMDNcXHUwMzA4XCIsXG4gIC8vIOG5jiA9IFxcflxcXCJ7T31cbiAgXCJcXHUwMjJDXCI6IFwiT1xcdTAzMDNcXHUwMzA0XCIsXG4gIC8vIMisID0gXFx+XFw9e099XG4gIFwiXFx1MDE0Q1wiOiBcIk9cXHUwMzA0XCIsXG4gIC8vIMWMID0gXFw9e099XG4gIFwiXFx1MUU1MlwiOiBcIk9cXHUwMzA0XFx1MDMwMVwiLFxuICAvLyDhuZIgPSBcXD1cXCd7T31cbiAgXCJcXHUxRTUwXCI6IFwiT1xcdTAzMDRcXHUwMzAwXCIsXG4gIC8vIOG5kCA9IFxcPVxcYHtPfVxuICBcIlxcdTAxNEVcIjogXCJPXFx1MDMwNlwiLFxuICAvLyDFjiA9IFxcdXtPfVxuICBcIlxcdTAxRDFcIjogXCJPXFx1MDMwQ1wiLFxuICAvLyDHkSA9IFxcdntPfVxuICBcIlxceEQ0XCI6IFwiT1xcdTAzMDJcIixcbiAgLy8gw5QgPSBcXF57T31cbiAgXCJcXHUxRUQwXCI6IFwiT1xcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG7kCA9IFxcXlxcJ3tPfVxuICBcIlxcdTFFRDJcIjogXCJPXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4buSID0gXFxeXFxge099XG4gIFwiXFx1MUVENlwiOiBcIk9cXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhu5YgPSBcXF5cXH57T31cbiAgXCJcXHUwMjJFXCI6IFwiT1xcdTAzMDdcIixcbiAgLy8gyK4gPSBcXC57T31cbiAgXCJcXHUwMjMwXCI6IFwiT1xcdTAzMDdcXHUwMzA0XCIsXG4gIC8vIMiwID0gXFwuXFw9e099XG4gIFwiXFx1MDE1MFwiOiBcIk9cXHUwMzBCXCIsXG4gIC8vIMWQID0gXFxIe099XG4gIFwiXFx1MUU1NFwiOiBcIlBcXHUwMzAxXCIsXG4gIC8vIOG5lCA9IFxcJ3tQfVxuICBcIlxcdTFFNTZcIjogXCJQXFx1MDMwN1wiLFxuICAvLyDhuZYgPSBcXC57UH1cbiAgXCJcXHUwMTU0XCI6IFwiUlxcdTAzMDFcIixcbiAgLy8gxZQgPSBcXCd7Un1cbiAgXCJcXHUwMTU4XCI6IFwiUlxcdTAzMENcIixcbiAgLy8gxZggPSBcXHZ7Un1cbiAgXCJcXHUxRTU4XCI6IFwiUlxcdTAzMDdcIixcbiAgLy8g4bmYID0gXFwue1J9XG4gIFwiXFx1MDE1QVwiOiBcIlNcXHUwMzAxXCIsXG4gIC8vIMWaID0gXFwne1N9XG4gIFwiXFx1MUU2NFwiOiBcIlNcXHUwMzAxXFx1MDMwN1wiLFxuICAvLyDhuaQgPSBcXCdcXC57U31cbiAgXCJcXHUwMTYwXCI6IFwiU1xcdTAzMENcIixcbiAgLy8gxaAgPSBcXHZ7U31cbiAgXCJcXHUxRTY2XCI6IFwiU1xcdTAzMENcXHUwMzA3XCIsXG4gIC8vIOG5piA9IFxcdlxcLntTfVxuICBcIlxcdTAxNUNcIjogXCJTXFx1MDMwMlwiLFxuICAvLyDFnCA9IFxcXntTfVxuICBcIlxcdTFFNjBcIjogXCJTXFx1MDMwN1wiLFxuICAvLyDhuaAgPSBcXC57U31cbiAgXCJcXHUwMTY0XCI6IFwiVFxcdTAzMENcIixcbiAgLy8gxaQgPSBcXHZ7VH1cbiAgXCJcXHUxRTZBXCI6IFwiVFxcdTAzMDdcIixcbiAgLy8g4bmqID0gXFwue1R9XG4gIFwiXFx4REFcIjogXCJVXFx1MDMwMVwiLFxuICAvLyDDmiA9IFxcJ3tVfVxuICBcIlxceEQ5XCI6IFwiVVxcdTAzMDBcIixcbiAgLy8gw5kgPSBcXGB7VX1cbiAgXCJcXHhEQ1wiOiBcIlVcXHUwMzA4XCIsXG4gIC8vIMOcID0gXFxcIntVfVxuICBcIlxcdTAxRDdcIjogXCJVXFx1MDMwOFxcdTAzMDFcIixcbiAgLy8gx5cgPSBcXFwiXFwne1V9XG4gIFwiXFx1MDFEQlwiOiBcIlVcXHUwMzA4XFx1MDMwMFwiLFxuICAvLyDHmyA9IFxcXCJcXGB7VX1cbiAgXCJcXHUwMUQ1XCI6IFwiVVxcdTAzMDhcXHUwMzA0XCIsXG4gIC8vIMeVID0gXFxcIlxcPXtVfVxuICBcIlxcdTAxRDlcIjogXCJVXFx1MDMwOFxcdTAzMENcIixcbiAgLy8gx5kgPSBcXFwiXFx2e1V9XG4gIFwiXFx1MDE2OFwiOiBcIlVcXHUwMzAzXCIsXG4gIC8vIMWoID0gXFx+e1V9XG4gIFwiXFx1MUU3OFwiOiBcIlVcXHUwMzAzXFx1MDMwMVwiLFxuICAvLyDhubggPSBcXH5cXCd7VX1cbiAgXCJcXHUwMTZBXCI6IFwiVVxcdTAzMDRcIixcbiAgLy8gxaogPSBcXD17VX1cbiAgXCJcXHUxRTdBXCI6IFwiVVxcdTAzMDRcXHUwMzA4XCIsXG4gIC8vIOG5uiA9IFxcPVxcXCJ7VX1cbiAgXCJcXHUwMTZDXCI6IFwiVVxcdTAzMDZcIixcbiAgLy8gxawgPSBcXHV7VX1cbiAgXCJcXHUwMUQzXCI6IFwiVVxcdTAzMENcIixcbiAgLy8gx5MgPSBcXHZ7VX1cbiAgXCJcXHhEQlwiOiBcIlVcXHUwMzAyXCIsXG4gIC8vIMObID0gXFxee1V9XG4gIFwiXFx1MDE2RVwiOiBcIlVcXHUwMzBBXCIsXG4gIC8vIMWuID0gXFxye1V9XG4gIFwiXFx1MDE3MFwiOiBcIlVcXHUwMzBCXCIsXG4gIC8vIMWwID0gXFxIe1V9XG4gIFwiXFx1MUU3Q1wiOiBcIlZcXHUwMzAzXCIsXG4gIC8vIOG5vCA9IFxcfntWfVxuICBcIlxcdTFFODJcIjogXCJXXFx1MDMwMVwiLFxuICAvLyDhuoIgPSBcXCd7V31cbiAgXCJcXHUxRTgwXCI6IFwiV1xcdTAzMDBcIixcbiAgLy8g4bqAID0gXFxge1d9XG4gIFwiXFx1MUU4NFwiOiBcIldcXHUwMzA4XCIsXG4gIC8vIOG6hCA9IFxcXCJ7V31cbiAgXCJcXHUwMTc0XCI6IFwiV1xcdTAzMDJcIixcbiAgLy8gxbQgPSBcXF57V31cbiAgXCJcXHUxRTg2XCI6IFwiV1xcdTAzMDdcIixcbiAgLy8g4bqGID0gXFwue1d9XG4gIFwiXFx1MUU4Q1wiOiBcIlhcXHUwMzA4XCIsXG4gIC8vIOG6jCA9IFxcXCJ7WH1cbiAgXCJcXHUxRThBXCI6IFwiWFxcdTAzMDdcIixcbiAgLy8g4bqKID0gXFwue1h9XG4gIFwiXFx4RERcIjogXCJZXFx1MDMwMVwiLFxuICAvLyDDnSA9IFxcJ3tZfVxuICBcIlxcdTFFRjJcIjogXCJZXFx1MDMwMFwiLFxuICAvLyDhu7IgPSBcXGB7WX1cbiAgXCJcXHUwMTc4XCI6IFwiWVxcdTAzMDhcIixcbiAgLy8gxbggPSBcXFwie1l9XG4gIFwiXFx1MUVGOFwiOiBcIllcXHUwMzAzXCIsXG4gIC8vIOG7uCA9IFxcfntZfVxuICBcIlxcdTAyMzJcIjogXCJZXFx1MDMwNFwiLFxuICAvLyDIsiA9IFxcPXtZfVxuICBcIlxcdTAxNzZcIjogXCJZXFx1MDMwMlwiLFxuICAvLyDFtiA9IFxcXntZfVxuICBcIlxcdTFFOEVcIjogXCJZXFx1MDMwN1wiLFxuICAvLyDhuo4gPSBcXC57WX1cbiAgXCJcXHUwMTc5XCI6IFwiWlxcdTAzMDFcIixcbiAgLy8gxbkgPSBcXCd7Wn1cbiAgXCJcXHUwMTdEXCI6IFwiWlxcdTAzMENcIixcbiAgLy8gxb0gPSBcXHZ7Wn1cbiAgXCJcXHUxRTkwXCI6IFwiWlxcdTAzMDJcIixcbiAgLy8g4bqQID0gXFxee1p9XG4gIFwiXFx1MDE3QlwiOiBcIlpcXHUwMzA3XCIsXG4gIC8vIMW7ID0gXFwue1p9XG4gIFwiXFx1MDNBQ1wiOiBcIlxcdTAzQjFcXHUwMzAxXCIsXG4gIC8vIM6sID0gXFwne86xfVxuICBcIlxcdTFGNzBcIjogXCJcXHUwM0IxXFx1MDMwMFwiLFxuICAvLyDhvbAgPSBcXGB7zrF9XG4gIFwiXFx1MUZCMVwiOiBcIlxcdTAzQjFcXHUwMzA0XCIsXG4gIC8vIOG+sSA9IFxcPXvOsX1cbiAgXCJcXHUxRkIwXCI6IFwiXFx1MDNCMVxcdTAzMDZcIixcbiAgLy8g4b6wID0gXFx1e86xfVxuICBcIlxcdTAzQURcIjogXCJcXHUwM0I1XFx1MDMwMVwiLFxuICAvLyDOrSA9IFxcJ3vOtX1cbiAgXCJcXHUxRjcyXCI6IFwiXFx1MDNCNVxcdTAzMDBcIixcbiAgLy8g4b2yID0gXFxge861fVxuICBcIlxcdTAzQUVcIjogXCJcXHUwM0I3XFx1MDMwMVwiLFxuICAvLyDOriA9IFxcJ3vOt31cbiAgXCJcXHUxRjc0XCI6IFwiXFx1MDNCN1xcdTAzMDBcIixcbiAgLy8g4b20ID0gXFxge863fVxuICBcIlxcdTAzQUZcIjogXCJcXHUwM0I5XFx1MDMwMVwiLFxuICAvLyDOryA9IFxcJ3vOuX1cbiAgXCJcXHUxRjc2XCI6IFwiXFx1MDNCOVxcdTAzMDBcIixcbiAgLy8g4b22ID0gXFxge865fVxuICBcIlxcdTAzQ0FcIjogXCJcXHUwM0I5XFx1MDMwOFwiLFxuICAvLyDPiiA9IFxcXCJ7zrl9XG4gIFwiXFx1MDM5MFwiOiBcIlxcdTAzQjlcXHUwMzA4XFx1MDMwMVwiLFxuICAvLyDOkCA9IFxcXCJcXCd7zrl9XG4gIFwiXFx1MUZEMlwiOiBcIlxcdTAzQjlcXHUwMzA4XFx1MDMwMFwiLFxuICAvLyDhv5IgPSBcXFwiXFxge865fVxuICBcIlxcdTFGRDFcIjogXCJcXHUwM0I5XFx1MDMwNFwiLFxuICAvLyDhv5EgPSBcXD17zrl9XG4gIFwiXFx1MUZEMFwiOiBcIlxcdTAzQjlcXHUwMzA2XCIsXG4gIC8vIOG/kCA9IFxcdXvOuX1cbiAgXCJcXHUwM0NDXCI6IFwiXFx1MDNCRlxcdTAzMDFcIixcbiAgLy8gz4wgPSBcXCd7zr99XG4gIFwiXFx1MUY3OFwiOiBcIlxcdTAzQkZcXHUwMzAwXCIsXG4gIC8vIOG9uCA9IFxcYHvOv31cbiAgXCJcXHUwM0NEXCI6IFwiXFx1MDNDNVxcdTAzMDFcIixcbiAgLy8gz40gPSBcXCd7z4V9XG4gIFwiXFx1MUY3QVwiOiBcIlxcdTAzQzVcXHUwMzAwXCIsXG4gIC8vIOG9uiA9IFxcYHvPhX1cbiAgXCJcXHUwM0NCXCI6IFwiXFx1MDNDNVxcdTAzMDhcIixcbiAgLy8gz4sgPSBcXFwie8+FfVxuICBcIlxcdTAzQjBcIjogXCJcXHUwM0M1XFx1MDMwOFxcdTAzMDFcIixcbiAgLy8gzrAgPSBcXFwiXFwne8+FfVxuICBcIlxcdTFGRTJcIjogXCJcXHUwM0M1XFx1MDMwOFxcdTAzMDBcIixcbiAgLy8g4b+iID0gXFxcIlxcYHvPhX1cbiAgXCJcXHUxRkUxXCI6IFwiXFx1MDNDNVxcdTAzMDRcIixcbiAgLy8g4b+hID0gXFw9e8+FfVxuICBcIlxcdTFGRTBcIjogXCJcXHUwM0M1XFx1MDMwNlwiLFxuICAvLyDhv6AgPSBcXHV7z4V9XG4gIFwiXFx1MDNDRVwiOiBcIlxcdTAzQzlcXHUwMzAxXCIsXG4gIC8vIM+OID0gXFwne8+JfVxuICBcIlxcdTFGN0NcIjogXCJcXHUwM0M5XFx1MDMwMFwiLFxuICAvLyDhvbwgPSBcXGB7z4l9XG4gIFwiXFx1MDM4RVwiOiBcIlxcdTAzQTVcXHUwMzAxXCIsXG4gIC8vIM6OID0gXFwne86lfVxuICBcIlxcdTFGRUFcIjogXCJcXHUwM0E1XFx1MDMwMFwiLFxuICAvLyDhv6ogPSBcXGB7zqV9XG4gIFwiXFx1MDNBQlwiOiBcIlxcdTAzQTVcXHUwMzA4XCIsXG4gIC8vIM6rID0gXFxcInvOpX1cbiAgXCJcXHUxRkU5XCI6IFwiXFx1MDNBNVxcdTAzMDRcIixcbiAgLy8g4b+pID0gXFw9e86lfVxuICBcIlxcdTFGRThcIjogXCJcXHUwM0E1XFx1MDMwNlwiLFxuICAvLyDhv6ggPSBcXHV7zqV9XG4gIFwiXFx1MDM4RlwiOiBcIlxcdTAzQTlcXHUwMzAxXCIsXG4gIC8vIM6PID0gXFwne86pfVxuICBcIlxcdTFGRkFcIjogXCJcXHUwM0E5XFx1MDMwMFwiIC8vIOG/uiA9IFxcYHvOqX1cblxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9QYXJzZXIuanNcbi8qIGVzbGludCBuby1jb25zdGFudC1jb25kaXRpb246MCAqL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBwYXJzZXIgdXNlZCB0byBwYXJzZSBvdXQgYSBUZVggZXhwcmVzc2lvbiBmcm9tIHRoZVxuICogaW5wdXQuIFNpbmNlIFRlWCBpc24ndCBjb250ZXh0LWZyZWUsIHN0YW5kYXJkIHBhcnNlcnMgZG9uJ3Qgd29yayBwYXJ0aWN1bGFybHlcbiAqIHdlbGwuXG4gKlxuICogVGhlIHN0cmF0ZWd5IG9mIHRoaXMgcGFyc2VyIGlzIGFzIHN1Y2g6XG4gKlxuICogVGhlIG1haW4gZnVuY3Rpb25zICh0aGUgYC5wYXJzZS4uLmAgb25lcykgdGFrZSBhIHBvc2l0aW9uIGluIHRoZSBjdXJyZW50XG4gKiBwYXJzZSBzdHJpbmcgdG8gcGFyc2UgdG9rZW5zIGZyb20uIFRoZSBsZXhlciAoZm91bmQgaW4gTGV4ZXIuanMsIHN0b3JlZCBhdFxuICogdGhpcy5ndWxsZXQubGV4ZXIpIGFsc28gc3VwcG9ydHMgcHVsbGluZyBvdXQgdG9rZW5zIGF0IGFyYml0cmFyeSBwbGFjZXMuIFdoZW5cbiAqIGluZGl2aWR1YWwgdG9rZW5zIGFyZSBuZWVkZWQgYXQgYSBwb3NpdGlvbiwgdGhlIGxleGVyIGlzIGNhbGxlZCB0byBwdWxsIG91dCBhXG4gKiB0b2tlbiwgd2hpY2ggaXMgdGhlbiB1c2VkLlxuICpcbiAqIFRoZSBwYXJzZXIgaGFzIGEgcHJvcGVydHkgY2FsbGVkIFwibW9kZVwiIGluZGljYXRpbmcgdGhlIG1vZGUgdGhhdFxuICogdGhlIHBhcnNlciBpcyBjdXJyZW50bHkgaW4uIEN1cnJlbnRseSBpdCBoYXMgdG8gYmUgb25lIG9mIFwibWF0aFwiIG9yXG4gKiBcInRleHRcIiwgd2hpY2ggZGVub3RlcyB3aGV0aGVyIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIGEgbWF0aC15XG4gKiBvbmUgb3IgYSB0ZXh0LXkgb25lIChlLmcuIGluc2lkZSBcXHRleHQpLiBDdXJyZW50bHksIHRoaXMgc2VydmVzIHRvXG4gKiBsaW1pdCB0aGUgZnVuY3Rpb25zIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRleHQgbW9kZS5cbiAqXG4gKiBUaGUgbWFpbiBmdW5jdGlvbnMgdGhlbiByZXR1cm4gYW4gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIHRoZSB1c2VmdWwgZGF0YSB0aGF0XG4gKiB3YXMgcGFyc2VkIGF0IGl0cyBnaXZlbiBwb2ludCwgYW5kIGEgbmV3IHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YgdGhlIHBhcnNlZFxuICogZGF0YS4gVGhlIG1haW4gZnVuY3Rpb25zIGNhbiBjYWxsIGVhY2ggb3RoZXIgYW5kIGNvbnRpbnVlIHRoZSBwYXJzaW5nIGJ5XG4gKiB1c2luZyB0aGUgcmV0dXJuZWQgcG9zaXRpb24gYXMgYSBuZXcgc3RhcnRpbmcgcG9pbnQuXG4gKlxuICogVGhlcmUgYXJlIGFsc28gZXh0cmEgYC5oYW5kbGUuLi5gIGZ1bmN0aW9ucywgd2hpY2ggcHVsbCBvdXQgc29tZSByZXVzZWRcbiAqIGZ1bmN0aW9uYWxpdHkgaW50byBzZWxmLWNvbnRhaW5lZCBmdW5jdGlvbnMuXG4gKlxuICogVGhlIGZ1bmN0aW9ucyByZXR1cm4gUGFyc2VOb2Rlcy5cbiAqL1xudmFyIFBhcnNlcl9QYXJzZXIgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQYXJzZXIoaW5wdXQsIHNldHRpbmdzKSB7XG4gICAgdGhpcy5tb2RlID0gdm9pZCAwO1xuICAgIHRoaXMuZ3VsbGV0ID0gdm9pZCAwO1xuICAgIHRoaXMuc2V0dGluZ3MgPSB2b2lkIDA7XG4gICAgdGhpcy5sZWZ0cmlnaHREZXB0aCA9IHZvaWQgMDtcbiAgICB0aGlzLm5leHRUb2tlbiA9IHZvaWQgMDtcbiAgICAvLyBTdGFydCBpbiBtYXRoIG1vZGVcbiAgICB0aGlzLm1vZGUgPSBcIm1hdGhcIjsgLy8gQ3JlYXRlIGEgbmV3IG1hY3JvIGV4cGFuZGVyIChndWxsZXQpIGFuZCAoaW5kaXJlY3RseSB2aWEgdGhhdCkgYWxzbyBhXG4gICAgLy8gbmV3IGxleGVyIChtb3V0aCkgZm9yIHRoaXMgcGFyc2VyIChzdG9tYWNoLCBpbiB0aGUgbGFuZ3VhZ2Ugb2YgVGVYKVxuXG4gICAgdGhpcy5ndWxsZXQgPSBuZXcgTWFjcm9FeHBhbmRlcl9NYWNyb0V4cGFuZGVyKGlucHV0LCBzZXR0aW5ncywgdGhpcy5tb2RlKTsgLy8gU3RvcmUgdGhlIHNldHRpbmdzIGZvciB1c2UgaW4gcGFyc2luZ1xuXG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzOyAvLyBDb3VudCBsZWZ0cmlnaHQgZGVwdGggKGZvciBcXG1pZGRsZSBlcnJvcnMpXG5cbiAgICB0aGlzLmxlZnRyaWdodERlcHRoID0gMDtcbiAgfVxuICAvKipcbiAgICogQ2hlY2tzIGEgcmVzdWx0IHRvIG1ha2Ugc3VyZSBpdCBoYXMgdGhlIHJpZ2h0IHR5cGUsIGFuZCB0aHJvd3MgYW5cbiAgICogYXBwcm9wcmlhdGUgZXJyb3Igb3RoZXJ3aXNlLlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBQYXJzZXIucHJvdG90eXBlO1xuXG4gIF9wcm90by5leHBlY3QgPSBmdW5jdGlvbiBleHBlY3QodGV4dCwgY29uc3VtZSkge1xuICAgIGlmIChjb25zdW1lID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnN1bWUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZldGNoKCkudGV4dCAhPT0gdGV4dCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRXhwZWN0ZWQgJ1wiICsgdGV4dCArIFwiJywgZ290ICdcIiArIHRoaXMuZmV0Y2goKS50ZXh0ICsgXCInXCIsIHRoaXMuZmV0Y2goKSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnN1bWUpIHtcbiAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogRGlzY2FyZHMgdGhlIGN1cnJlbnQgbG9va2FoZWFkIHRva2VuLCBjb25zaWRlcmluZyBpdCBjb25zdW1lZC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZSA9IGZ1bmN0aW9uIGNvbnN1bWUoKSB7XG4gICAgdGhpcy5uZXh0VG9rZW4gPSBudWxsO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgbG9va2FoZWFkIHRva2VuLCBvciBpZiB0aGVyZSBpc24ndCBvbmUgKGF0IHRoZVxuICAgKiBiZWdpbm5pbmcsIG9yIGlmIHRoZSBwcmV2aW91cyBsb29rYWhlYWQgdG9rZW4gd2FzIGNvbnN1bWUoKWQpLFxuICAgKiBmZXRjaCB0aGUgbmV4dCB0b2tlbiBhcyB0aGUgbmV3IGxvb2thaGVhZCB0b2tlbiBhbmQgcmV0dXJuIGl0LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mZXRjaCA9IGZ1bmN0aW9uIGZldGNoKCkge1xuICAgIGlmICh0aGlzLm5leHRUb2tlbiA9PSBudWxsKSB7XG4gICAgICB0aGlzLm5leHRUb2tlbiA9IHRoaXMuZ3VsbGV0LmV4cGFuZE5leHRUb2tlbigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5leHRUb2tlbjtcbiAgfVxuICAvKipcbiAgICogU3dpdGNoZXMgYmV0d2VlbiBcInRleHRcIiBhbmQgXCJtYXRoXCIgbW9kZXMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnN3aXRjaE1vZGUgPSBmdW5jdGlvbiBzd2l0Y2hNb2RlKG5ld01vZGUpIHtcbiAgICB0aGlzLm1vZGUgPSBuZXdNb2RlO1xuICAgIHRoaXMuZ3VsbGV0LnN3aXRjaE1vZGUobmV3TW9kZSk7XG4gIH1cbiAgLyoqXG4gICAqIE1haW4gcGFyc2luZyBmdW5jdGlvbiwgd2hpY2ggcGFyc2VzIGFuIGVudGlyZSBpbnB1dC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2UgPSBmdW5jdGlvbiBwYXJzZSgpIHtcbiAgICAvLyBDcmVhdGUgYSBncm91cCBuYW1lc3BhY2UgZm9yIHRoZSBtYXRoIGV4cHJlc3Npb24uXG4gICAgLy8gKExhVGVYIGNyZWF0ZXMgYSBuZXcgZ3JvdXAgZm9yIGV2ZXJ5ICQuLi4kLCAkJC4uLiQkLCBcXFsuLi5cXF0uKVxuICAgIHRoaXMuZ3VsbGV0LmJlZ2luR3JvdXAoKTsgLy8gVXNlIG9sZCBcXGNvbG9yIGJlaGF2aW9yIChzYW1lIGFzIExhVGVYJ3MgXFx0ZXh0Y29sb3IpIGlmIHJlcXVlc3RlZC5cbiAgICAvLyBXZSBkbyB0aGlzIHdpdGhpbiB0aGUgZ3JvdXAgZm9yIHRoZSBtYXRoIGV4cHJlc3Npb24sIHNvIGl0IGRvZXNuJ3RcbiAgICAvLyBwb2xsdXRlIHNldHRpbmdzLm1hY3Jvcy5cblxuICAgIGlmICh0aGlzLnNldHRpbmdzLmNvbG9ySXNUZXh0Q29sb3IpIHtcbiAgICAgIHRoaXMuZ3VsbGV0Lm1hY3Jvcy5zZXQoXCJcXFxcY29sb3JcIiwgXCJcXFxcdGV4dGNvbG9yXCIpO1xuICAgIH0gLy8gVHJ5IHRvIHBhcnNlIHRoZSBpbnB1dFxuXG5cbiAgICB2YXIgcGFyc2UgPSB0aGlzLnBhcnNlRXhwcmVzc2lvbihmYWxzZSk7IC8vIElmIHdlIHN1Y2NlZWRlZCwgbWFrZSBzdXJlIHRoZXJlJ3MgYW4gRU9GIGF0IHRoZSBlbmRcblxuICAgIHRoaXMuZXhwZWN0KFwiRU9GXCIpOyAvLyBFbmQgdGhlIGdyb3VwIG5hbWVzcGFjZSBmb3IgdGhlIGV4cHJlc3Npb25cblxuICAgIHRoaXMuZ3VsbGV0LmVuZEdyb3VwKCk7XG4gICAgcmV0dXJuIHBhcnNlO1xuICB9O1xuXG4gIF9wcm90by5wYXJzZUV4cHJlc3Npb24gPSBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oYnJlYWtPbkluZml4LCBicmVha09uVG9rZW5UZXh0KSB7XG4gICAgdmFyIGJvZHkgPSBbXTsgLy8gS2VlcCBhZGRpbmcgYXRvbXMgdG8gdGhlIGJvZHkgdW50aWwgd2UgY2FuJ3QgcGFyc2UgYW55IG1vcmUgYXRvbXMgKGVpdGhlclxuICAgIC8vIHdlIHJlYWNoZWQgdGhlIGVuZCwgYSB9LCBvciBhIFxccmlnaHQpXG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgLy8gSWdub3JlIHNwYWNlcyBpbiBtYXRoIG1vZGVcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09IFwibWF0aFwiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGV4ID0gdGhpcy5mZXRjaCgpO1xuXG4gICAgICBpZiAoUGFyc2VyLmVuZE9mRXhwcmVzc2lvbi5pbmRleE9mKGxleC50ZXh0KSAhPT0gLTEpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChicmVha09uVG9rZW5UZXh0ICYmIGxleC50ZXh0ID09PSBicmVha09uVG9rZW5UZXh0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoYnJlYWtPbkluZml4ICYmIHNyY19mdW5jdGlvbnNbbGV4LnRleHRdICYmIHNyY19mdW5jdGlvbnNbbGV4LnRleHRdLmluZml4KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgYXRvbSA9IHRoaXMucGFyc2VBdG9tKGJyZWFrT25Ub2tlblRleHQpO1xuXG4gICAgICBpZiAoIWF0b20pIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGJvZHkucHVzaChhdG9tKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSBcInRleHRcIikge1xuICAgICAgdGhpcy5mb3JtTGlnYXR1cmVzKGJvZHkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmhhbmRsZUluZml4Tm9kZXMoYm9keSk7XG4gIH1cbiAgLyoqXG4gICAqIFJld3JpdGVzIGluZml4IG9wZXJhdG9ycyBzdWNoIGFzIFxcb3ZlciB3aXRoIGNvcnJlc3BvbmRpbmcgY29tbWFuZHMgc3VjaFxuICAgKiBhcyBcXGZyYWMuXG4gICAqXG4gICAqIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBpbmZpeCBvcGVyYXRvciBwZXIgZ3JvdXAuICBJZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmVcbiAgICogdGhlbiB0aGUgZXhwcmVzc2lvbiBpcyBhbWJpZ3VvdXMuICBUaGlzIGNhbiBiZSByZXNvbHZlZCBieSBhZGRpbmcge30uXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhbmRsZUluZml4Tm9kZXMgPSBmdW5jdGlvbiBoYW5kbGVJbmZpeE5vZGVzKGJvZHkpIHtcbiAgICB2YXIgb3ZlckluZGV4ID0gLTE7XG4gICAgdmFyIGZ1bmNOYW1lO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib2R5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IGNoZWNrTm9kZVR5cGUoYm9keVtpXSwgXCJpbmZpeFwiKTtcblxuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgaWYgKG92ZXJJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJvbmx5IG9uZSBpbmZpeCBvcGVyYXRvciBwZXIgZ3JvdXBcIiwgbm9kZS50b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBvdmVySW5kZXggPSBpO1xuICAgICAgICBmdW5jTmFtZSA9IG5vZGUucmVwbGFjZVdpdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG92ZXJJbmRleCAhPT0gLTEgJiYgZnVuY05hbWUpIHtcbiAgICAgIHZhciBudW1lck5vZGU7XG4gICAgICB2YXIgZGVub21Ob2RlO1xuICAgICAgdmFyIG51bWVyQm9keSA9IGJvZHkuc2xpY2UoMCwgb3ZlckluZGV4KTtcbiAgICAgIHZhciBkZW5vbUJvZHkgPSBib2R5LnNsaWNlKG92ZXJJbmRleCArIDEpO1xuXG4gICAgICBpZiAobnVtZXJCb2R5Lmxlbmd0aCA9PT0gMSAmJiBudW1lckJvZHlbMF0udHlwZSA9PT0gXCJvcmRncm91cFwiKSB7XG4gICAgICAgIG51bWVyTm9kZSA9IG51bWVyQm9keVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG51bWVyTm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIGJvZHk6IG51bWVyQm9keVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVub21Cb2R5Lmxlbmd0aCA9PT0gMSAmJiBkZW5vbUJvZHlbMF0udHlwZSA9PT0gXCJvcmRncm91cFwiKSB7XG4gICAgICAgIGRlbm9tTm9kZSA9IGRlbm9tQm9keVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbm9tTm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIGJvZHk6IGRlbm9tQm9keVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgX25vZGU7XG5cbiAgICAgIGlmIChmdW5jTmFtZSA9PT0gXCJcXFxcXFxcXGFib3ZlZnJhY1wiKSB7XG4gICAgICAgIF9ub2RlID0gdGhpcy5jYWxsRnVuY3Rpb24oZnVuY05hbWUsIFtudW1lck5vZGUsIGJvZHlbb3ZlckluZGV4XSwgZGVub21Ob2RlXSwgW10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX25vZGUgPSB0aGlzLmNhbGxGdW5jdGlvbihmdW5jTmFtZSwgW251bWVyTm9kZSwgZGVub21Ob2RlXSwgW10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW19ub2RlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJvZHk7XG4gICAgfVxuICB9IC8vIFRoZSBncmVlZGluZXNzIG9mIGEgc3VwZXJzY3JpcHQgb3Igc3Vic2NyaXB0XG4gIDtcblxuICAvKipcbiAgICogSGFuZGxlIGEgc3Vic2NyaXB0IG9yIHN1cGVyc2NyaXB0IHdpdGggbmljZSBlcnJvcnMuXG4gICAqL1xuICBfcHJvdG8uaGFuZGxlU3VwU3Vic2NyaXB0ID0gZnVuY3Rpb24gaGFuZGxlU3VwU3Vic2NyaXB0KG5hbWUpIHtcbiAgICB2YXIgc3ltYm9sVG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIHN5bWJvbCA9IHN5bWJvbFRva2VuLnRleHQ7XG4gICAgdGhpcy5jb25zdW1lKCk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5wYXJzZUdyb3VwKG5hbWUsIGZhbHNlLCBQYXJzZXIuU1VQU1VCX0dSRUVESU5FU1MsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTsgLy8gaWdub3JlIHNwYWNlcyBiZWZvcmUgc3VwL3N1YnNjcmlwdCBhcmd1bWVudFxuXG4gICAgaWYgKCFncm91cCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRXhwZWN0ZWQgZ3JvdXAgYWZ0ZXIgJ1wiICsgc3ltYm9sICsgXCInXCIsIHN5bWJvbFRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JvdXA7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSB0ZXh0dWFsIGlucHV0IG9mIGFuIHVuc3VwcG9ydGVkIGNvbW1hbmQgaW50byBhIHRleHQgbm9kZVxuICAgKiBjb250YWluZWQgd2l0aGluIGEgY29sb3Igbm9kZSB3aG9zZSBjb2xvciBpcyBkZXRlcm1pbmVkIGJ5IGVycm9yQ29sb3JcbiAgICovXG4gIDtcblxuICBfcHJvdG8uZm9ybWF0VW5zdXBwb3J0ZWRDbWQgPSBmdW5jdGlvbiBmb3JtYXRVbnN1cHBvcnRlZENtZCh0ZXh0KSB7XG4gICAgdmFyIHRleHRvcmRBcnJheSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB0ZXh0b3JkQXJyYXkucHVzaCh7XG4gICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICBtb2RlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogdGV4dFtpXVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIHRleHROb2RlID0ge1xuICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBib2R5OiB0ZXh0b3JkQXJyYXlcbiAgICB9O1xuICAgIHZhciBjb2xvck5vZGUgPSB7XG4gICAgICB0eXBlOiBcImNvbG9yXCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBjb2xvcjogdGhpcy5zZXR0aW5ncy5lcnJvckNvbG9yLFxuICAgICAgYm9keTogW3RleHROb2RlXVxuICAgIH07XG4gICAgcmV0dXJuIGNvbG9yTm9kZTtcbiAgfVxuICAvKipcbiAgICogUGFyc2VzIGEgZ3JvdXAgd2l0aCBvcHRpb25hbCBzdXBlci9zdWJzY3JpcHRzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUF0b20gPSBmdW5jdGlvbiBwYXJzZUF0b20oYnJlYWtPblRva2VuVGV4dCkge1xuICAgIC8vIFRoZSBib2R5IG9mIGFuIGF0b20gaXMgYW4gaW1wbGljaXQgZ3JvdXAsIHNvIHRoYXQgdGhpbmdzIGxpa2VcbiAgICAvLyBcXGxlZnQoeFxccmlnaHQpXjIgd29yayBjb3JyZWN0bHkuXG4gICAgdmFyIGJhc2UgPSB0aGlzLnBhcnNlR3JvdXAoXCJhdG9tXCIsIGZhbHNlLCBudWxsLCBicmVha09uVG9rZW5UZXh0KTsgLy8gSW4gdGV4dCBtb2RlLCB3ZSBkb24ndCBoYXZlIHN1cGVyc2NyaXB0cyBvciBzdWJzY3JpcHRzXG5cbiAgICBpZiAodGhpcy5tb2RlID09PSBcInRleHRcIikge1xuICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfSAvLyBOb3RlIHRoYXQgYmFzZSBtYXkgYmUgZW1wdHkgKGkuZS4gbnVsbCkgYXQgdGhpcyBwb2ludC5cblxuXG4gICAgdmFyIHN1cGVyc2NyaXB0O1xuICAgIHZhciBzdWJzY3JpcHQ7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgLy8gR3VhcmFudGVlZCBpbiBtYXRoIG1vZGUsIHNvIGVhdCBhbnkgc3BhY2VzIGZpcnN0LlxuICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7IC8vIExleCB0aGUgZmlyc3QgdG9rZW5cblxuICAgICAgdmFyIGxleCA9IHRoaXMuZmV0Y2goKTtcblxuICAgICAgaWYgKGxleC50ZXh0ID09PSBcIlxcXFxsaW1pdHNcIiB8fCBsZXgudGV4dCA9PT0gXCJcXFxcbm9saW1pdHNcIikge1xuICAgICAgICAvLyBXZSBnb3QgYSBsaW1pdCBjb250cm9sXG4gICAgICAgIHZhciBvcE5vZGUgPSBjaGVja05vZGVUeXBlKGJhc2UsIFwib3BcIik7XG5cbiAgICAgICAgaWYgKG9wTm9kZSkge1xuICAgICAgICAgIHZhciBsaW1pdHMgPSBsZXgudGV4dCA9PT0gXCJcXFxcbGltaXRzXCI7XG4gICAgICAgICAgb3BOb2RlLmxpbWl0cyA9IGxpbWl0cztcbiAgICAgICAgICBvcE5vZGUuYWx3YXlzSGFuZGxlU3VwU3ViID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcE5vZGUgPSBjaGVja05vZGVUeXBlKGJhc2UsIFwib3BlcmF0b3JuYW1lXCIpO1xuXG4gICAgICAgICAgaWYgKG9wTm9kZSAmJiBvcE5vZGUuYWx3YXlzSGFuZGxlU3VwU3ViKSB7XG4gICAgICAgICAgICB2YXIgX2xpbWl0cyA9IGxleC50ZXh0ID09PSBcIlxcXFxsaW1pdHNcIjtcblxuICAgICAgICAgICAgb3BOb2RlLmxpbWl0cyA9IF9saW1pdHM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkxpbWl0IGNvbnRyb2xzIG11c3QgZm9sbG93IGEgbWF0aCBvcGVyYXRvclwiLCBsZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfSBlbHNlIGlmIChsZXgudGV4dCA9PT0gXCJeXCIpIHtcbiAgICAgICAgLy8gV2UgZ290IGEgc3VwZXJzY3JpcHQgc3RhcnRcbiAgICAgICAgaWYgKHN1cGVyc2NyaXB0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRG91YmxlIHN1cGVyc2NyaXB0XCIsIGxleCk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlcnNjcmlwdCA9IHRoaXMuaGFuZGxlU3VwU3Vic2NyaXB0KFwic3VwZXJzY3JpcHRcIik7XG4gICAgICB9IGVsc2UgaWYgKGxleC50ZXh0ID09PSBcIl9cIikge1xuICAgICAgICAvLyBXZSBnb3QgYSBzdWJzY3JpcHQgc3RhcnRcbiAgICAgICAgaWYgKHN1YnNjcmlwdCkge1xuICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkRvdWJsZSBzdWJzY3JpcHRcIiwgbGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnNjcmlwdCA9IHRoaXMuaGFuZGxlU3VwU3Vic2NyaXB0KFwic3Vic2NyaXB0XCIpO1xuICAgICAgfSBlbHNlIGlmIChsZXgudGV4dCA9PT0gXCInXCIpIHtcbiAgICAgICAgLy8gV2UgZ290IGEgcHJpbWVcbiAgICAgICAgaWYgKHN1cGVyc2NyaXB0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRG91YmxlIHN1cGVyc2NyaXB0XCIsIGxleCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcHJpbWUgPSB7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIHRleHQ6IFwiXFxcXHByaW1lXCJcbiAgICAgICAgfTsgLy8gTWFueSBwcmltZXMgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIsIHNvIHdlIGhhbmRsZSB0aGlzIGhlcmVcblxuICAgICAgICB2YXIgcHJpbWVzID0gW3ByaW1lXTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7IC8vIEtlZXAgbGV4aW5nIHRva2VucyB1bnRpbCB3ZSBnZXQgc29tZXRoaW5nIHRoYXQncyBub3QgYSBwcmltZVxuXG4gICAgICAgIHdoaWxlICh0aGlzLmZldGNoKCkudGV4dCA9PT0gXCInXCIpIHtcbiAgICAgICAgICAvLyBGb3IgZWFjaCBvbmUsIGFkZCBhbm90aGVyIHByaW1lIHRvIHRoZSBsaXN0XG4gICAgICAgICAgcHJpbWVzLnB1c2gocHJpbWUpO1xuICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB9IC8vIElmIHRoZXJlJ3MgYSBzdXBlcnNjcmlwdCBmb2xsb3dpbmcgdGhlIHByaW1lcywgY29tYmluZSB0aGF0XG4gICAgICAgIC8vIHN1cGVyc2NyaXB0IGluIHdpdGggdGhlIHByaW1lcy5cblxuXG4gICAgICAgIGlmICh0aGlzLmZldGNoKCkudGV4dCA9PT0gXCJeXCIpIHtcbiAgICAgICAgICBwcmltZXMucHVzaCh0aGlzLmhhbmRsZVN1cFN1YnNjcmlwdChcInN1cGVyc2NyaXB0XCIpKTtcbiAgICAgICAgfSAvLyBQdXQgZXZlcnl0aGluZyBpbnRvIGFuIG9yZGdyb3VwIGFzIHRoZSBzdXBlcnNjcmlwdFxuXG5cbiAgICAgICAgc3VwZXJzY3JpcHQgPSB7XG4gICAgICAgICAgdHlwZTogXCJvcmRncm91cFwiLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBib2R5OiBwcmltZXNcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIGl0IHdhc24ndCBeLCBfLCBvciAnLCBzdG9wIHBhcnNpbmcgc3VwZXIvc3Vic2NyaXB0c1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IC8vIEJhc2UgbXVzdCBiZSBzZXQgaWYgc3VwZXJzY3JpcHQgb3Igc3Vic2NyaXB0IGFyZSBzZXQgcGVyIGxvZ2ljIGFib3ZlLFxuICAgIC8vIGJ1dCBuZWVkIHRvIGNoZWNrIGhlcmUgZm9yIHR5cGUgY2hlY2sgdG8gcGFzcy5cblxuXG4gICAgaWYgKHN1cGVyc2NyaXB0IHx8IHN1YnNjcmlwdCkge1xuICAgICAgLy8gSWYgd2UgZ290IGVpdGhlciBhIHN1cGVyc2NyaXB0IG9yIHN1YnNjcmlwdCwgY3JlYXRlIGEgc3Vwc3ViXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInN1cHN1YlwiLFxuICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgIGJhc2U6IGJhc2UsXG4gICAgICAgIHN1cDogc3VwZXJzY3JpcHQsXG4gICAgICAgIHN1Yjogc3Vic2NyaXB0XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UgcmV0dXJuIHRoZSBvcmlnaW5hbCBib2R5XG4gICAgICByZXR1cm4gYmFzZTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBlbnRpcmUgZnVuY3Rpb24sIGluY2x1ZGluZyBpdHMgYmFzZSBhbmQgYWxsIG9mIGl0cyBhcmd1bWVudHMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlRnVuY3Rpb24gPSBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uKGJyZWFrT25Ub2tlblRleHQsIG5hbWUsIC8vIEZvciBlcnJvciByZXBvcnRpbmcuXG4gIGdyZWVkaW5lc3MpIHtcbiAgICB2YXIgdG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIGZ1bmMgPSB0b2tlbi50ZXh0O1xuICAgIHZhciBmdW5jRGF0YSA9IHNyY19mdW5jdGlvbnNbZnVuY107XG5cbiAgICBpZiAoIWZ1bmNEYXRhKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnN1bWUoKTsgLy8gY29uc3VtZSBjb21tYW5kIHRva2VuXG5cbiAgICBpZiAoZ3JlZWRpbmVzcyAhPSBudWxsICYmIGZ1bmNEYXRhLmdyZWVkaW5lc3MgPD0gZ3JlZWRpbmVzcykge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiR290IGZ1bmN0aW9uICdcIiArIGZ1bmMgKyBcIicgd2l0aCBubyBhcmd1bWVudHNcIiArIChuYW1lID8gXCIgYXMgXCIgKyBuYW1lIDogXCJcIiksIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gXCJ0ZXh0XCIgJiYgIWZ1bmNEYXRhLmFsbG93ZWRJblRleHQpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkNhbid0IHVzZSBmdW5jdGlvbiAnXCIgKyBmdW5jICsgXCInIGluIHRleHQgbW9kZVwiLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09IFwibWF0aFwiICYmIGZ1bmNEYXRhLmFsbG93ZWRJbk1hdGggPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJDYW4ndCB1c2UgZnVuY3Rpb24gJ1wiICsgZnVuYyArIFwiJyBpbiBtYXRoIG1vZGVcIiwgdG9rZW4pO1xuICAgIH1cblxuICAgIHZhciBfdGhpcyRwYXJzZUFyZ3VtZW50cyA9IHRoaXMucGFyc2VBcmd1bWVudHMoZnVuYywgZnVuY0RhdGEpLFxuICAgICAgICBhcmdzID0gX3RoaXMkcGFyc2VBcmd1bWVudHMuYXJncyxcbiAgICAgICAgb3B0QXJncyA9IF90aGlzJHBhcnNlQXJndW1lbnRzLm9wdEFyZ3M7XG5cbiAgICByZXR1cm4gdGhpcy5jYWxsRnVuY3Rpb24oZnVuYywgYXJncywgb3B0QXJncywgdG9rZW4sIGJyZWFrT25Ub2tlblRleHQpO1xuICB9XG4gIC8qKlxuICAgKiBDYWxsIGEgZnVuY3Rpb24gaGFuZGxlciB3aXRoIGEgc3VpdGFibGUgY29udGV4dCBhbmQgYXJndW1lbnRzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5jYWxsRnVuY3Rpb24gPSBmdW5jdGlvbiBjYWxsRnVuY3Rpb24obmFtZSwgYXJncywgb3B0QXJncywgdG9rZW4sIGJyZWFrT25Ub2tlblRleHQpIHtcbiAgICB2YXIgY29udGV4dCA9IHtcbiAgICAgIGZ1bmNOYW1lOiBuYW1lLFxuICAgICAgcGFyc2VyOiB0aGlzLFxuICAgICAgdG9rZW46IHRva2VuLFxuICAgICAgYnJlYWtPblRva2VuVGV4dDogYnJlYWtPblRva2VuVGV4dFxuICAgIH07XG4gICAgdmFyIGZ1bmMgPSBzcmNfZnVuY3Rpb25zW25hbWVdO1xuXG4gICAgaWYgKGZ1bmMgJiYgZnVuYy5oYW5kbGVyKSB7XG4gICAgICByZXR1cm4gZnVuYy5oYW5kbGVyKGNvbnRleHQsIGFyZ3MsIG9wdEFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJObyBmdW5jdGlvbiBoYW5kbGVyIGZvciBcIiArIG5hbWUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogUGFyc2VzIHRoZSBhcmd1bWVudHMgb2YgYSBmdW5jdGlvbiBvciBlbnZpcm9ubWVudFxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUFyZ3VtZW50cyA9IGZ1bmN0aW9uIHBhcnNlQXJndW1lbnRzKGZ1bmMsIC8vIFNob3VsZCBsb29rIGxpa2UgXCJcXG5hbWVcIiBvciBcIlxcYmVnaW57bmFtZX1cIi5cbiAgZnVuY0RhdGEpIHtcbiAgICB2YXIgdG90YWxBcmdzID0gZnVuY0RhdGEubnVtQXJncyArIGZ1bmNEYXRhLm51bU9wdGlvbmFsQXJncztcblxuICAgIGlmICh0b3RhbEFyZ3MgPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFyZ3M6IFtdLFxuICAgICAgICBvcHRBcmdzOiBbXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgYmFzZUdyZWVkaW5lc3MgPSBmdW5jRGF0YS5ncmVlZGluZXNzO1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIG9wdEFyZ3MgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG90YWxBcmdzOyBpKyspIHtcbiAgICAgIHZhciBhcmdUeXBlID0gZnVuY0RhdGEuYXJnVHlwZXMgJiYgZnVuY0RhdGEuYXJnVHlwZXNbaV07XG4gICAgICB2YXIgaXNPcHRpb25hbCA9IGkgPCBmdW5jRGF0YS5udW1PcHRpb25hbEFyZ3M7IC8vIElnbm9yZSBzcGFjZXMgYmV0d2VlbiBhcmd1bWVudHMuICBBcyB0aGUgVGVYYm9vayBzYXlzOlxuICAgICAgLy8gXCJBZnRlciB5b3UgaGF2ZSBzYWlkIOKAmFxcZGVmXFxyb3cjMSMyey4uLn3igJksIHlvdSBhcmUgYWxsb3dlZCB0b1xuICAgICAgLy8gIHB1dCBzcGFjZXMgYmV0d2VlbiB0aGUgYXJndW1lbnRzIChlLmcuLCDigJhcXHJvdyB4IG7igJkpLCBiZWNhdXNlXG4gICAgICAvLyAgVGVYIGRvZXNu4oCZdCB1c2Ugc2luZ2xlIHNwYWNlcyBhcyB1bmRlbGltaXRlZCBhcmd1bWVudHMuXCJcblxuICAgICAgdmFyIGNvbnN1bWVTcGFjZXMgPSBpID4gMCAmJiAhaXNPcHRpb25hbCB8fCAvLyBBbHNvIGNvbnN1bWUgbGVhZGluZyBzcGFjZXMgaW4gbWF0aCBtb2RlLCBhcyBwYXJzZVN5bWJvbFxuICAgICAgLy8gd29uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggdGhlbS4gIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGhcbiAgICAgIC8vIG1hY3JvcywgZS5nLiBcXGZyYWNcXGZvb1xcZm9vIHdoZXJlIFxcZm9vIGV4cGFuZHMgdG8gYSBzcGFjZSBzeW1ib2wuXG4gICAgICAvLyBJbiBMYVRlWCwgdGhlIFxcZm9vJ3MgZ2V0IHRyZWF0ZWQgYXMgKGJsYW5rKSBhcmd1bWVudHMuXG4gICAgICAvLyBJbiBLYVRlWCwgZm9yIG5vdywgYm90aCBzcGFjZXMgd2lsbCBnZXQgY29uc3VtZWQuXG4gICAgICAvLyBUT0RPKGVkZW1haW5lKVxuICAgICAgaSA9PT0gMCAmJiAhaXNPcHRpb25hbCAmJiB0aGlzLm1vZGUgPT09IFwibWF0aFwiO1xuICAgICAgdmFyIGFyZyA9IHRoaXMucGFyc2VHcm91cE9mVHlwZShcImFyZ3VtZW50IHRvICdcIiArIGZ1bmMgKyBcIidcIiwgYXJnVHlwZSwgaXNPcHRpb25hbCwgYmFzZUdyZWVkaW5lc3MsIGNvbnN1bWVTcGFjZXMpO1xuXG4gICAgICBpZiAoIWFyZykge1xuICAgICAgICBpZiAoaXNPcHRpb25hbCkge1xuICAgICAgICAgIG9wdEFyZ3MucHVzaChudWxsKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkV4cGVjdGVkIGdyb3VwIGFmdGVyICdcIiArIGZ1bmMgKyBcIidcIiwgdGhpcy5mZXRjaCgpKTtcbiAgICAgIH1cblxuICAgICAgKGlzT3B0aW9uYWwgPyBvcHRBcmdzIDogYXJncykucHVzaChhcmcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhcmdzOiBhcmdzLFxuICAgICAgb3B0QXJnczogb3B0QXJnc1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhIGdyb3VwIHdoZW4gdGhlIG1vZGUgaXMgY2hhbmdpbmcuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlR3JvdXBPZlR5cGUgPSBmdW5jdGlvbiBwYXJzZUdyb3VwT2ZUeXBlKG5hbWUsIHR5cGUsIG9wdGlvbmFsLCBncmVlZGluZXNzLCBjb25zdW1lU3BhY2VzKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiY29sb3JcIjpcbiAgICAgICAgaWYgKGNvbnN1bWVTcGFjZXMpIHtcbiAgICAgICAgICB0aGlzLmNvbnN1bWVTcGFjZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlQ29sb3JHcm91cChvcHRpb25hbCk7XG5cbiAgICAgIGNhc2UgXCJzaXplXCI6XG4gICAgICAgIGlmIChjb25zdW1lU3BhY2VzKSB7XG4gICAgICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVNpemVHcm91cChvcHRpb25hbCk7XG5cbiAgICAgIGNhc2UgXCJ1cmxcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VVcmxHcm91cChvcHRpb25hbCwgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgIGNhc2UgXCJtYXRoXCI6XG4gICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUdyb3VwKG5hbWUsIG9wdGlvbmFsLCBncmVlZGluZXNzLCB1bmRlZmluZWQsIHR5cGUsIGNvbnN1bWVTcGFjZXMpO1xuXG4gICAgICBjYXNlIFwiaGJveFwiOlxuICAgICAgICB7XG4gICAgICAgICAgLy8gaGJveCBhcmd1bWVudCB0eXBlIHdyYXBzIHRoZSBhcmd1bWVudCBpbiB0aGUgZXF1aXZhbGVudCBvZlxuICAgICAgICAgIC8vIFxcaGJveCwgd2hpY2ggaXMgbGlrZSBcXHRleHQgYnV0IHN3aXRjaGluZyB0byBcXHRleHRzdHlsZSBzaXplLlxuICAgICAgICAgIHZhciBncm91cCA9IHRoaXMucGFyc2VHcm91cChuYW1lLCBvcHRpb25hbCwgZ3JlZWRpbmVzcywgdW5kZWZpbmVkLCBcInRleHRcIiwgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgICAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHN0eWxlZEdyb3VwID0ge1xuICAgICAgICAgICAgdHlwZTogXCJzdHlsaW5nXCIsXG4gICAgICAgICAgICBtb2RlOiBncm91cC5tb2RlLFxuICAgICAgICAgICAgYm9keTogW2dyb3VwXSxcbiAgICAgICAgICAgIHN0eWxlOiBcInRleHRcIiAvLyBzaW11bGF0ZSBcXHRleHRzdHlsZVxuXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gc3R5bGVkR3JvdXA7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBcInJhd1wiOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKGNvbnN1bWVTcGFjZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvcHRpb25hbCAmJiB0aGlzLmZldGNoKCkudGV4dCA9PT0gXCJ7XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB0b2tlbiA9IHRoaXMucGFyc2VTdHJpbmdHcm91cChcInJhd1wiLCBvcHRpb25hbCwgdHJ1ZSk7XG5cbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwicmF3XCIsXG4gICAgICAgICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICBzdHJpbmc6IHRva2VuLnRleHRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkV4cGVjdGVkIHJhdyBncm91cFwiLCB0aGlzLmZldGNoKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFwib3JpZ2luYWxcIjpcbiAgICAgIGNhc2UgbnVsbDpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUdyb3VwKG5hbWUsIG9wdGlvbmFsLCBncmVlZGluZXNzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVua25vd24gZ3JvdXAgdHlwZSBhcyBcIiArIG5hbWUsIHRoaXMuZmV0Y2goKSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBEaXNjYXJkIGFueSBzcGFjZSB0b2tlbnMsIGZldGNoaW5nIHRoZSBuZXh0IG5vbi1zcGFjZSB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZVNwYWNlcyA9IGZ1bmN0aW9uIGNvbnN1bWVTcGFjZXMoKSB7XG4gICAgd2hpbGUgKHRoaXMuZmV0Y2goKS50ZXh0ID09PSBcIiBcIikge1xuICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBQYXJzZXMgYSBncm91cCwgZXNzZW50aWFsbHkgcmV0dXJuaW5nIHRoZSBzdHJpbmcgZm9ybWVkIGJ5IHRoZVxuICAgKiBicmFjZS1lbmNsb3NlZCB0b2tlbnMgcGx1cyBzb21lIHBvc2l0aW9uIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVN0cmluZ0dyb3VwID0gZnVuY3Rpb24gcGFyc2VTdHJpbmdHcm91cChtb2RlTmFtZSwgLy8gVXNlZCB0byBkZXNjcmliZSB0aGUgbW9kZSBpbiBlcnJvciBtZXNzYWdlcy5cbiAgb3B0aW9uYWwsIHJhdykge1xuICAgIHZhciBncm91cEJlZ2luID0gb3B0aW9uYWwgPyBcIltcIiA6IFwie1wiO1xuICAgIHZhciBncm91cEVuZCA9IG9wdGlvbmFsID8gXCJdXCIgOiBcIn1cIjtcbiAgICB2YXIgYmVnaW5Ub2tlbiA9IHRoaXMuZmV0Y2goKTtcblxuICAgIGlmIChiZWdpblRva2VuLnRleHQgIT09IGdyb3VwQmVnaW4pIHtcbiAgICAgIGlmIChvcHRpb25hbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAocmF3ICYmIGJlZ2luVG9rZW4udGV4dCAhPT0gXCJFT0ZcIiAmJiAvW157fVtcXF1dLy50ZXN0KGJlZ2luVG9rZW4udGV4dCkpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHJldHVybiBiZWdpblRva2VuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBvdXRlck1vZGUgPSB0aGlzLm1vZGU7XG4gICAgdGhpcy5tb2RlID0gXCJ0ZXh0XCI7XG4gICAgdGhpcy5leHBlY3QoZ3JvdXBCZWdpbik7XG4gICAgdmFyIHN0ciA9IFwiXCI7XG4gICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIG5lc3RlZCA9IDA7IC8vIGFsbG93IG5lc3RlZCBicmFjZXMgaW4gcmF3IHN0cmluZyBncm91cFxuXG4gICAgdmFyIGxhc3RUb2tlbiA9IGZpcnN0VG9rZW47XG4gICAgdmFyIG5leHRUb2tlbjtcblxuICAgIHdoaWxlICgobmV4dFRva2VuID0gdGhpcy5mZXRjaCgpKS50ZXh0ICE9PSBncm91cEVuZCB8fCByYXcgJiYgbmVzdGVkID4gMCkge1xuICAgICAgc3dpdGNoIChuZXh0VG9rZW4udGV4dCkge1xuICAgICAgICBjYXNlIFwiRU9GXCI6XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgaW4gXCIgKyBtb2RlTmFtZSwgZmlyc3RUb2tlbi5yYW5nZShsYXN0VG9rZW4sIHN0cikpO1xuXG4gICAgICAgIGNhc2UgZ3JvdXBCZWdpbjpcbiAgICAgICAgICBuZXN0ZWQrKztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIGdyb3VwRW5kOlxuICAgICAgICAgIG5lc3RlZC0tO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBsYXN0VG9rZW4gPSBuZXh0VG9rZW47XG4gICAgICBzdHIgKz0gbGFzdFRva2VuLnRleHQ7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmV4cGVjdChncm91cEVuZCk7XG4gICAgdGhpcy5tb2RlID0gb3V0ZXJNb2RlO1xuICAgIHJldHVybiBmaXJzdFRva2VuLnJhbmdlKGxhc3RUb2tlbiwgc3RyKTtcbiAgfVxuICAvKipcbiAgICogUGFyc2VzIGEgcmVnZXgtZGVsaW1pdGVkIGdyb3VwOiB0aGUgbGFyZ2VzdCBzZXF1ZW5jZSBvZiB0b2tlbnNcbiAgICogd2hvc2UgY29uY2F0ZW5hdGVkIHN0cmluZ3MgbWF0Y2ggYHJlZ2V4YC4gUmV0dXJucyB0aGUgc3RyaW5nXG4gICAqIGZvcm1lZCBieSB0aGUgdG9rZW5zIHBsdXMgc29tZSBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VSZWdleEdyb3VwID0gZnVuY3Rpb24gcGFyc2VSZWdleEdyb3VwKHJlZ2V4LCBtb2RlTmFtZSkge1xuICAgIHZhciBvdXRlck1vZGUgPSB0aGlzLm1vZGU7XG4gICAgdGhpcy5tb2RlID0gXCJ0ZXh0XCI7XG4gICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIGxhc3RUb2tlbiA9IGZpcnN0VG9rZW47XG4gICAgdmFyIHN0ciA9IFwiXCI7XG4gICAgdmFyIG5leHRUb2tlbjtcblxuICAgIHdoaWxlICgobmV4dFRva2VuID0gdGhpcy5mZXRjaCgpKS50ZXh0ICE9PSBcIkVPRlwiICYmIHJlZ2V4LnRlc3Qoc3RyICsgbmV4dFRva2VuLnRleHQpKSB7XG4gICAgICBsYXN0VG9rZW4gPSBuZXh0VG9rZW47XG4gICAgICBzdHIgKz0gbGFzdFRva2VuLnRleHQ7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICBpZiAoc3RyID09PSBcIlwiKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIFwiICsgbW9kZU5hbWUgKyBcIjogJ1wiICsgZmlyc3RUb2tlbi50ZXh0ICsgXCInXCIsIGZpcnN0VG9rZW4pO1xuICAgIH1cblxuICAgIHRoaXMubW9kZSA9IG91dGVyTW9kZTtcbiAgICByZXR1cm4gZmlyc3RUb2tlbi5yYW5nZShsYXN0VG9rZW4sIHN0cik7XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhIGNvbG9yIGRlc2NyaXB0aW9uLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUNvbG9yR3JvdXAgPSBmdW5jdGlvbiBwYXJzZUNvbG9yR3JvdXAob3B0aW9uYWwpIHtcbiAgICB2YXIgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwiY29sb3JcIiwgb3B0aW9uYWwpO1xuXG4gICAgaWYgKCFyZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBtYXRjaCA9IC9eKCNbYS1mMC05XXszfXwjP1thLWYwLTldezZ9fFthLXpdKykkL2kuZXhlYyhyZXMudGV4dCk7XG5cbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGNvbG9yOiAnXCIgKyByZXMudGV4dCArIFwiJ1wiLCByZXMpO1xuICAgIH1cblxuICAgIHZhciBjb2xvciA9IG1hdGNoWzBdO1xuXG4gICAgaWYgKC9eWzAtOWEtZl17Nn0kL2kudGVzdChjb2xvcikpIHtcbiAgICAgIC8vIFdlIGFsbG93IGEgNi1kaWdpdCBIVE1MIGNvbG9yIHNwZWMgd2l0aG91dCBhIGxlYWRpbmcgXCIjXCIuXG4gICAgICAvLyBUaGlzIGZvbGxvd3MgdGhlIHhjb2xvciBwYWNrYWdlJ3MgSFRNTCBjb2xvciBtb2RlbC5cbiAgICAgIC8vIFByZWRlZmluZWQgY29sb3IgbmFtZXMgYXJlIGFsbCBtaXNzZWQgYnkgdGhpcyBSZWdFeCBwYXR0ZXJuLlxuICAgICAgY29sb3IgPSBcIiNcIiArIGNvbG9yO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImNvbG9yLXRva2VuXCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBjb2xvcjogY29sb3JcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBQYXJzZXMgYSBzaXplIHNwZWNpZmljYXRpb24sIGNvbnNpc3Rpbmcgb2YgbWFnbml0dWRlIGFuZCB1bml0LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVNpemVHcm91cCA9IGZ1bmN0aW9uIHBhcnNlU2l6ZUdyb3VwKG9wdGlvbmFsKSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgaXNCbGFuayA9IGZhbHNlO1xuXG4gICAgaWYgKCFvcHRpb25hbCAmJiB0aGlzLmZldGNoKCkudGV4dCAhPT0gXCJ7XCIpIHtcbiAgICAgIHJlcyA9IHRoaXMucGFyc2VSZWdleEdyb3VwKC9eWy0rXT8gKig/OiR8XFxkK3xcXGQrXFwuXFxkKnxcXC5cXGQqKSAqW2Etel17MCwyfSAqJC8sIFwic2l6ZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwic2l6ZVwiLCBvcHRpb25hbCk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghb3B0aW9uYWwgJiYgcmVzLnRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBCZWNhdXNlIHdlJ3ZlIHRlc3RlZCBmb3Igd2hhdCBpcyAhb3B0aW9uYWwsIHRoaXMgYmxvY2sgd29uJ3RcbiAgICAgIC8vIGFmZmVjdCBcXGtlcm4sIFxcaHNwYWNlLCBldGMuIEl0IHdpbGwgY2FwdHVyZSB0aGUgbWFuZGF0b3J5IGFyZ3VtZW50c1xuICAgICAgLy8gdG8gXFxnZW5mcmFjIGFuZCBcXGFib3ZlLlxuICAgICAgcmVzLnRleHQgPSBcIjBwdFwiOyAvLyBFbmFibGUgXFxhYm92ZXt9XG5cbiAgICAgIGlzQmxhbmsgPSB0cnVlOyAvLyBUaGlzIGlzIGhlcmUgc3BlY2lmaWNhbGx5IGZvciBcXGdlbmZyYWNcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2ggPSAvKFstK10/KSAqKFxcZCsoPzpcXC5cXGQqKT98XFwuXFxkKykgKihbYS16XXsyfSkvLmV4ZWMocmVzLnRleHQpO1xuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBzaXplOiAnXCIgKyByZXMudGV4dCArIFwiJ1wiLCByZXMpO1xuICAgIH1cblxuICAgIHZhciBkYXRhID0ge1xuICAgICAgbnVtYmVyOiArKG1hdGNoWzFdICsgbWF0Y2hbMl0pLFxuICAgICAgLy8gc2lnbiArIG1hZ25pdHVkZSwgY2FzdCB0byBudW1iZXJcbiAgICAgIHVuaXQ6IG1hdGNoWzNdXG4gICAgfTtcblxuICAgIGlmICghdmFsaWRVbml0KGRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIHVuaXQ6ICdcIiArIGRhdGEudW5pdCArIFwiJ1wiLCByZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInNpemVcIixcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgaXNCbGFuazogaXNCbGFua1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBVUkwsIGNoZWNraW5nIGVzY2FwZWQgbGV0dGVycyBhbmQgYWxsb3dlZCBwcm90b2NvbHMsXG4gICAqIGFuZCBzZXR0aW5nIHRoZSBjYXRjb2RlIG9mICUgYXMgYW4gYWN0aXZlIGNoYXJhY3RlciAoYXMgaW4gXFxoeXBlcnJlZikuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlVXJsR3JvdXAgPSBmdW5jdGlvbiBwYXJzZVVybEdyb3VwKG9wdGlvbmFsLCBjb25zdW1lU3BhY2VzKSB7XG4gICAgdGhpcy5ndWxsZXQubGV4ZXIuc2V0Q2F0Y29kZShcIiVcIiwgMTMpOyAvLyBhY3RpdmUgY2hhcmFjdGVyXG5cbiAgICB2YXIgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwidXJsXCIsIG9wdGlvbmFsLCB0cnVlKTsgLy8gZ2V0IHJhdyBzdHJpbmdcblxuICAgIHRoaXMuZ3VsbGV0LmxleGVyLnNldENhdGNvZGUoXCIlXCIsIDE0KTsgLy8gY29tbWVudCBjaGFyYWN0ZXJcblxuICAgIGlmICghcmVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIGh5cGVycmVmIHBhY2thZ2UgYWxsb3dzIGJhY2tzbGFzaGVzIGFsb25lIGluIGhyZWYsIGJ1dCBkb2Vzbid0XG4gICAgLy8gZ2VuZXJhdGUgdmFsaWQgbGlua3MgaW4gc3VjaCBjYXNlczsgd2UgaW50ZXJwcmV0IHRoaXMgYXNcbiAgICAvLyBcInVuZGVmaW5lZFwiIGJlaGF2aW91ciwgYW5kIGtlZXAgdGhlbSBhcy1pcy4gU29tZSBicm93c2VyIHdpbGxcbiAgICAvLyByZXBsYWNlIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLlxuXG5cbiAgICB2YXIgdXJsID0gcmVzLnRleHQucmVwbGFjZSgvXFxcXChbIyQlJn5fXnt9XSkvZywgJyQxJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidXJsXCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICB1cmw6IHVybFxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIElmIGBvcHRpb25hbGAgaXMgZmFsc2Ugb3IgYWJzZW50LCB0aGlzIHBhcnNlcyBhbiBvcmRpbmFyeSBncm91cCxcbiAgICogd2hpY2ggaXMgZWl0aGVyIGEgc2luZ2xlIG51Y2xldXMgKGxpa2UgXCJ4XCIpIG9yIGFuIGV4cHJlc3Npb25cbiAgICogaW4gYnJhY2VzIChsaWtlIFwie3greX1cIikgb3IgYW4gaW1wbGljaXQgZ3JvdXAsIGEgZ3JvdXAgdGhhdCBzdGFydHNcbiAgICogYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24sIGFuZCBlbmRzIHJpZ2h0IGJlZm9yZSBhIGhpZ2hlciBleHBsaWNpdFxuICAgKiBncm91cCBlbmRzLCBvciBhdCBFT0YuXG4gICAqIElmIGBvcHRpb25hbGAgaXMgdHJ1ZSwgaXQgcGFyc2VzIGVpdGhlciBhIGJyYWNrZXQtZGVsaW1pdGVkIGV4cHJlc3Npb25cbiAgICogKGxpa2UgXCJbeCt5XVwiKSBvciByZXR1cm5zIG51bGwgdG8gaW5kaWNhdGUgdGhlIGFic2VuY2Ugb2YgYVxuICAgKiBicmFja2V0LWVuY2xvc2VkIGdyb3VwLlxuICAgKiBJZiBgbW9kZWAgaXMgcHJlc2VudCwgc3dpdGNoZXMgdG8gdGhhdCBtb2RlIHdoaWxlIHBhcnNpbmcgdGhlIGdyb3VwLFxuICAgKiBhbmQgc3dpdGNoZXMgYmFjayBhZnRlci5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VHcm91cCA9IGZ1bmN0aW9uIHBhcnNlR3JvdXAobmFtZSwgLy8gRm9yIGVycm9yIHJlcG9ydGluZy5cbiAgb3B0aW9uYWwsIGdyZWVkaW5lc3MsIGJyZWFrT25Ub2tlblRleHQsIG1vZGUsIGNvbnN1bWVTcGFjZXMpIHtcbiAgICAvLyBTd2l0Y2ggdG8gc3BlY2lmaWVkIG1vZGVcbiAgICB2YXIgb3V0ZXJNb2RlID0gdGhpcy5tb2RlO1xuXG4gICAgaWYgKG1vZGUpIHtcbiAgICAgIHRoaXMuc3dpdGNoTW9kZShtb2RlKTtcbiAgICB9IC8vIENvbnN1bWUgc3BhY2VzIGlmIHJlcXVlc3RlZCwgY3J1Y2lhbGx5ICphZnRlciogd2Ugc3dpdGNoIG1vZGVzLFxuICAgIC8vIHNvIHRoYXQgdGhlIG5leHQgbm9uLXNwYWNlIHRva2VuIGlzIHBhcnNlZCBpbiB0aGUgY29ycmVjdCBtb2RlLlxuXG5cbiAgICBpZiAoY29uc3VtZVNwYWNlcykge1xuICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7XG4gICAgfSAvLyBHZXQgZmlyc3QgdG9rZW5cblxuXG4gICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIHRleHQgPSBmaXJzdFRva2VuLnRleHQ7XG4gICAgdmFyIHJlc3VsdDsgLy8gVHJ5IHRvIHBhcnNlIGFuIG9wZW4gYnJhY2Ugb3IgXFxiZWdpbmdyb3VwXG5cbiAgICBpZiAob3B0aW9uYWwgPyB0ZXh0ID09PSBcIltcIiA6IHRleHQgPT09IFwie1wiIHx8IHRleHQgPT09IFwiXFxcXGJlZ2luZ3JvdXBcIikge1xuICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB2YXIgZ3JvdXBFbmQgPSBQYXJzZXIuZW5kT2ZHcm91cFt0ZXh0XTsgLy8gU3RhcnQgYSBuZXcgZ3JvdXAgbmFtZXNwYWNlXG5cbiAgICAgIHRoaXMuZ3VsbGV0LmJlZ2luR3JvdXAoKTsgLy8gSWYgd2UgZ2V0IGEgYnJhY2UsIHBhcnNlIGFuIGV4cHJlc3Npb25cblxuICAgICAgdmFyIGV4cHJlc3Npb24gPSB0aGlzLnBhcnNlRXhwcmVzc2lvbihmYWxzZSwgZ3JvdXBFbmQpO1xuICAgICAgdmFyIGxhc3RUb2tlbiA9IHRoaXMuZmV0Y2goKTsgLy8gQ2hlY2sgdGhhdCB3ZSBnb3QgYSBtYXRjaGluZyBjbG9zaW5nIGJyYWNlXG5cbiAgICAgIHRoaXMuZXhwZWN0KGdyb3VwRW5kKTsgLy8gRW5kIGdyb3VwIG5hbWVzcGFjZVxuXG4gICAgICB0aGlzLmd1bGxldC5lbmRHcm91cCgpO1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgbG9jOiBTb3VyY2VMb2NhdGlvbi5yYW5nZShmaXJzdFRva2VuLCBsYXN0VG9rZW4pLFxuICAgICAgICBib2R5OiBleHByZXNzaW9uLFxuICAgICAgICAvLyBBIGdyb3VwIGZvcm1lZCBieSBcXGJlZ2luZ3JvdXAuLi5cXGVuZGdyb3VwIGlzIGEgc2VtaS1zaW1wbGUgZ3JvdXBcbiAgICAgICAgLy8gd2hpY2ggZG9lc24ndCBhZmZlY3Qgc3BhY2luZyBpbiBtYXRoIG1vZGUsIGkuZS4sIGlzIHRyYW5zcGFyZW50LlxuICAgICAgICAvLyBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTkzMC93aGVuLXNob3VsZC1vbmUtXG4gICAgICAgIC8vIHVzZS1iZWdpbmdyb3VwLWluc3RlYWQtb2YtYmdyb3VwXG4gICAgICAgIHNlbWlzaW1wbGU6IHRleHQgPT09IFwiXFxcXGJlZ2luZ3JvdXBcIiB8fCB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChvcHRpb25hbCkge1xuICAgICAgLy8gUmV0dXJuIG5vdGhpbmcgZm9yIGFuIG9wdGlvbmFsIGdyb3VwXG4gICAgICByZXN1bHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGVyZSBleGlzdHMgYSBmdW5jdGlvbiB3aXRoIHRoaXMgbmFtZSwgcGFyc2UgdGhlIGZ1bmN0aW9uLlxuICAgICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHJldHVybiBhIG51Y2xldXNcbiAgICAgIHJlc3VsdCA9IHRoaXMucGFyc2VGdW5jdGlvbihicmVha09uVG9rZW5UZXh0LCBuYW1lLCBncmVlZGluZXNzKSB8fCB0aGlzLnBhcnNlU3ltYm9sKCk7XG5cbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCAmJiB0ZXh0WzBdID09PSBcIlxcXFxcIiAmJiAhaW1wbGljaXRDb21tYW5kcy5oYXNPd25Qcm9wZXJ0eSh0ZXh0KSkge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy50aHJvd09uRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmRlZmluZWQgY29udHJvbCBzZXF1ZW5jZTogXCIgKyB0ZXh0LCBmaXJzdFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZm9ybWF0VW5zdXBwb3J0ZWRDbWQodGV4dCk7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfVxuICAgIH0gLy8gU3dpdGNoIG1vZGUgYmFja1xuXG5cbiAgICBpZiAobW9kZSkge1xuICAgICAgdGhpcy5zd2l0Y2hNb2RlKG91dGVyTW9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICogRm9ybSBsaWdhdHVyZS1saWtlIGNvbWJpbmF0aW9ucyBvZiBjaGFyYWN0ZXJzIGZvciB0ZXh0IG1vZGUuXG4gICAqIFRoaXMgaW5jbHVkZXMgaW5wdXRzIGxpa2UgXCItLVwiLCBcIi0tLVwiLCBcImBgXCIgYW5kIFwiJydcIi5cbiAgICogVGhlIHJlc3VsdCB3aWxsIHNpbXBseSByZXBsYWNlIG11bHRpcGxlIHRleHRvcmQgbm9kZXMgd2l0aCBhIHNpbmdsZVxuICAgKiBjaGFyYWN0ZXIgaW4gZWFjaCB2YWx1ZSBieSBhIHNpbmdsZSB0ZXh0b3JkIG5vZGUgaGF2aW5nIG11bHRpcGxlXG4gICAqIGNoYXJhY3RlcnMgaW4gaXRzIHZhbHVlLiAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIHN0aWxsIEFTQ0lJIHNvdXJjZS5cbiAgICogVGhlIGdyb3VwIHdpbGwgYmUgbW9kaWZpZWQgaW4gcGxhY2UuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmZvcm1MaWdhdHVyZXMgPSBmdW5jdGlvbiBmb3JtTGlnYXR1cmVzKGdyb3VwKSB7XG4gICAgdmFyIG4gPSBncm91cC5sZW5ndGggLSAxO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciBhID0gZ3JvdXBbaV07IC8vICRGbG93Rml4TWU6IE5vdCBldmVyeSBub2RlIHR5cGUgaGFzIGEgYHRleHRgIHByb3BlcnR5LlxuXG4gICAgICB2YXIgdiA9IGEudGV4dDtcblxuICAgICAgaWYgKHYgPT09IFwiLVwiICYmIGdyb3VwW2kgKyAxXS50ZXh0ID09PSBcIi1cIikge1xuICAgICAgICBpZiAoaSArIDEgPCBuICYmIGdyb3VwW2kgKyAyXS50ZXh0ID09PSBcIi1cIikge1xuICAgICAgICAgIGdyb3VwLnNwbGljZShpLCAzLCB7XG4gICAgICAgICAgICB0eXBlOiBcInRleHRvcmRcIixcbiAgICAgICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgbG9jOiBTb3VyY2VMb2NhdGlvbi5yYW5nZShhLCBncm91cFtpICsgMl0pLFxuICAgICAgICAgICAgdGV4dDogXCItLS1cIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG4gLT0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cC5zcGxpY2UoaSwgMiwge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgICAgICBtb2RlOiBcInRleHRcIixcbiAgICAgICAgICAgIGxvYzogU291cmNlTG9jYXRpb24ucmFuZ2UoYSwgZ3JvdXBbaSArIDFdKSxcbiAgICAgICAgICAgIHRleHQ6IFwiLS1cIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG4gLT0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoKHYgPT09IFwiJ1wiIHx8IHYgPT09IFwiYFwiKSAmJiBncm91cFtpICsgMV0udGV4dCA9PT0gdikge1xuICAgICAgICBncm91cC5zcGxpY2UoaSwgMiwge1xuICAgICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICAgIGxvYzogU291cmNlTG9jYXRpb24ucmFuZ2UoYSwgZ3JvdXBbaSArIDFdKSxcbiAgICAgICAgICB0ZXh0OiB2ICsgdlxuICAgICAgICB9KTtcbiAgICAgICAgbiAtPSAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogUGFyc2UgYSBzaW5nbGUgc3ltYm9sIG91dCBvZiB0aGUgc3RyaW5nLiBIZXJlLCB3ZSBoYW5kbGUgc2luZ2xlIGNoYXJhY3RlclxuICAgKiBzeW1ib2xzIGFuZCBzcGVjaWFsIGZ1bmN0aW9ucyBsaWtlIFxcdmVyYi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VTeW1ib2wgPSBmdW5jdGlvbiBwYXJzZVN5bWJvbCgpIHtcbiAgICB2YXIgbnVjbGV1cyA9IHRoaXMuZmV0Y2goKTtcbiAgICB2YXIgdGV4dCA9IG51Y2xldXMudGV4dDtcblxuICAgIGlmICgvXlxcXFx2ZXJiW15hLXpBLVpdLy50ZXN0KHRleHQpKSB7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgIHZhciBhcmcgPSB0ZXh0LnNsaWNlKDUpO1xuICAgICAgdmFyIHN0YXIgPSBhcmcuY2hhckF0KDApID09PSBcIipcIjtcblxuICAgICAgaWYgKHN0YXIpIHtcbiAgICAgICAgYXJnID0gYXJnLnNsaWNlKDEpO1xuICAgICAgfSAvLyBMZXhlcidzIHRva2VuUmVnZXggaXMgY29uc3RydWN0ZWQgdG8gYWx3YXlzIGhhdmUgbWF0Y2hpbmdcbiAgICAgIC8vIGZpcnN0L2xhc3QgY2hhcmFjdGVycy5cblxuXG4gICAgICBpZiAoYXJnLmxlbmd0aCA8IDIgfHwgYXJnLmNoYXJBdCgwKSAhPT0gYXJnLnNsaWNlKC0xKSkge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcdmVyYiBhc3NlcnRpb24gZmFpbGVkIC0tXFxuICAgICAgICAgICAgICAgICAgICBwbGVhc2UgcmVwb3J0IHdoYXQgaW5wdXQgY2F1c2VkIHRoaXMgYnVnXCIpO1xuICAgICAgfVxuXG4gICAgICBhcmcgPSBhcmcuc2xpY2UoMSwgLTEpOyAvLyByZW1vdmUgZmlyc3QgYW5kIGxhc3QgY2hhclxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInZlcmJcIixcbiAgICAgICAgbW9kZTogXCJ0ZXh0XCIsXG4gICAgICAgIGJvZHk6IGFyZyxcbiAgICAgICAgc3Rhcjogc3RhclxuICAgICAgfTtcbiAgICB9IC8vIEF0IHRoaXMgcG9pbnQsIHdlIHNob3VsZCBoYXZlIGEgc3ltYm9sLCBwb3NzaWJseSB3aXRoIGFjY2VudHMuXG4gICAgLy8gRmlyc3QgZXhwYW5kIGFueSBhY2NlbnRlZCBiYXNlIHN5bWJvbCBhY2NvcmRpbmcgdG8gdW5pY29kZVN5bWJvbHMuXG5cblxuICAgIGlmICh1bmljb2RlU3ltYm9scy5oYXNPd25Qcm9wZXJ0eSh0ZXh0WzBdKSAmJiAhc3JjX3N5bWJvbHNbdGhpcy5tb2RlXVt0ZXh0WzBdXSkge1xuICAgICAgLy8gVGhpcyBiZWhhdmlvciBpcyBub3Qgc3RyaWN0IChYZVRlWC1jb21wYXRpYmxlKSBpbiBtYXRoIG1vZGUuXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5zdHJpY3QgJiYgdGhpcy5tb2RlID09PSBcIm1hdGhcIikge1xuICAgICAgICB0aGlzLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcInVuaWNvZGVUZXh0SW5NYXRoTW9kZVwiLCBcIkFjY2VudGVkIFVuaWNvZGUgdGV4dCBjaGFyYWN0ZXIgXFxcIlwiICsgdGV4dFswXSArIFwiXFxcIiB1c2VkIGluIFwiICsgXCJtYXRoIG1vZGVcIiwgbnVjbGV1cyk7XG4gICAgICB9XG5cbiAgICAgIHRleHQgPSB1bmljb2RlU3ltYm9sc1t0ZXh0WzBdXSArIHRleHQuc3Vic3RyKDEpO1xuICAgIH0gLy8gU3RyaXAgb2ZmIGFueSBjb21iaW5pbmcgY2hhcmFjdGVyc1xuXG5cbiAgICB2YXIgbWF0Y2ggPSBjb21iaW5pbmdEaWFjcml0aWNhbE1hcmtzRW5kUmVnZXguZXhlYyh0ZXh0KTtcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KTtcblxuICAgICAgaWYgKHRleHQgPT09ICdpJykge1xuICAgICAgICB0ZXh0ID0gXCJcXHUwMTMxXCI7IC8vIGRvdGxlc3MgaSwgaW4gbWF0aCBhbmQgdGV4dCBtb2RlXG4gICAgICB9IGVsc2UgaWYgKHRleHQgPT09ICdqJykge1xuICAgICAgICB0ZXh0ID0gXCJcXHUwMjM3XCI7IC8vIGRvdGxlc3MgaiwgaW4gbWF0aCBhbmQgdGV4dCBtb2RlXG4gICAgICB9XG4gICAgfSAvLyBSZWNvZ25pemUgYmFzZSBzeW1ib2xcblxuXG4gICAgdmFyIHN5bWJvbDtcblxuICAgIGlmIChzcmNfc3ltYm9sc1t0aGlzLm1vZGVdW3RleHRdKSB7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5zdHJpY3QgJiYgdGhpcy5tb2RlID09PSAnbWF0aCcgJiYgZXh0cmFMYXRpbi5pbmRleE9mKHRleHQpID49IDApIHtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJ1bmljb2RlVGV4dEluTWF0aE1vZGVcIiwgXCJMYXRpbi0xL1VuaWNvZGUgdGV4dCBjaGFyYWN0ZXIgXFxcIlwiICsgdGV4dFswXSArIFwiXFxcIiB1c2VkIGluIFwiICsgXCJtYXRoIG1vZGVcIiwgbnVjbGV1cyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBncm91cCA9IHNyY19zeW1ib2xzW3RoaXMubW9kZV1bdGV4dF0uZ3JvdXA7XG4gICAgICB2YXIgbG9jID0gU291cmNlTG9jYXRpb24ucmFuZ2UobnVjbGV1cyk7XG4gICAgICB2YXIgcztcblxuICAgICAgaWYgKEFUT01TLmhhc093blByb3BlcnR5KGdyb3VwKSkge1xuICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgIHZhciBmYW1pbHkgPSBncm91cDtcbiAgICAgICAgcyA9IHtcbiAgICAgICAgICB0eXBlOiBcImF0b21cIixcbiAgICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgICAgZmFtaWx5OiBmYW1pbHksXG4gICAgICAgICAgbG9jOiBsb2MsXG4gICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgICBzID0ge1xuICAgICAgICAgIHR5cGU6IGdyb3VwLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBsb2M6IGxvYyxcbiAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHN5bWJvbCA9IHM7XG4gICAgfSBlbHNlIGlmICh0ZXh0LmNoYXJDb2RlQXQoMCkgPj0gMHg4MCkge1xuICAgICAgLy8gbm8gc3ltYm9sIGZvciBlLmcuIF5cbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLnN0cmljdCkge1xuICAgICAgICBpZiAoIXN1cHBvcnRlZENvZGVwb2ludCh0ZXh0LmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJ1bmtub3duU3ltYm9sXCIsIFwiVW5yZWNvZ25pemVkIFVuaWNvZGUgY2hhcmFjdGVyIFxcXCJcIiArIHRleHRbMF0gKyBcIlxcXCJcIiArIChcIiAoXCIgKyB0ZXh0LmNoYXJDb2RlQXQoMCkgKyBcIilcIiksIG51Y2xldXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gXCJtYXRoXCIpIHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcInVuaWNvZGVUZXh0SW5NYXRoTW9kZVwiLCBcIlVuaWNvZGUgdGV4dCBjaGFyYWN0ZXIgXFxcIlwiICsgdGV4dFswXSArIFwiXFxcIiB1c2VkIGluIG1hdGggbW9kZVwiLCBudWNsZXVzKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBBbGwgbm9ubWF0aGVtYXRpY2FsIFVuaWNvZGUgY2hhcmFjdGVycyBhcmUgcmVuZGVyZWQgYXMgaWYgdGhleVxuICAgICAgLy8gYXJlIGluIHRleHQgbW9kZSAod3JhcHBlZCBpbiBcXHRleHQpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaXRcbiAgICAgIC8vIHRha2VzIHRvIHJlbmRlciB0aGVtIGluIExhVGVYLiAgU2V0dGluZyBgbW9kZTogdGhpcy5tb2RlYCBpc1xuICAgICAgLy8gYW5vdGhlciBuYXR1cmFsIGNob2ljZSAodGhlIHVzZXIgcmVxdWVzdGVkIG1hdGggbW9kZSksIGJ1dFxuICAgICAgLy8gdGhpcyBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCBmb3IgZ2V0Q2hhcmFjdGVyTWV0cmljcygpIHRvXG4gICAgICAvLyBkaXN0aW5ndWlzaCBVbmljb2RlIGNoYXJhY3RlcnMgd2l0aG91dCBtZXRyaWNzIGFuZCB0aG9zZSBmb3JcbiAgICAgIC8vIHdoaWNoIHdlIHdhbnQgdG8gc2ltdWxhdGUgdGhlIGxldHRlciBNLlxuXG5cbiAgICAgIHN5bWJvbCA9IHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICBsb2M6IFNvdXJjZUxvY2F0aW9uLnJhbmdlKG51Y2xldXMpLFxuICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDsgLy8gRU9GLCBeLCBfLCB7LCB9LCBldGMuXG4gICAgfVxuXG4gICAgdGhpcy5jb25zdW1lKCk7IC8vIFRyYW5zZm9ybSBjb21iaW5pbmcgY2hhcmFjdGVycyBpbnRvIGFjY2VudHNcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaFswXS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYWNjZW50ID0gbWF0Y2hbMF1baV07XG5cbiAgICAgICAgaWYgKCF1bmljb2RlQWNjZW50c1thY2NlbnRdKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5rbm93biBhY2NlbnQgJyBcIiArIGFjY2VudCArIFwiJ1wiLCBudWNsZXVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb21tYW5kID0gdW5pY29kZUFjY2VudHNbYWNjZW50XVt0aGlzLm1vZGVdO1xuXG4gICAgICAgIGlmICghY29tbWFuZCkge1xuICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkFjY2VudCBcIiArIGFjY2VudCArIFwiIHVuc3VwcG9ydGVkIGluIFwiICsgdGhpcy5tb2RlICsgXCIgbW9kZVwiLCBudWNsZXVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN5bWJvbCA9IHtcbiAgICAgICAgICB0eXBlOiBcImFjY2VudFwiLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBsb2M6IFNvdXJjZUxvY2F0aW9uLnJhbmdlKG51Y2xldXMpLFxuICAgICAgICAgIGxhYmVsOiBjb21tYW5kLFxuICAgICAgICAgIGlzU3RyZXRjaHk6IGZhbHNlLFxuICAgICAgICAgIGlzU2hpZnR5OiB0cnVlLFxuICAgICAgICAgIGJhc2U6IHN5bWJvbFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzeW1ib2w7XG4gIH07XG5cbiAgcmV0dXJuIFBhcnNlcjtcbn0oKTtcblxuUGFyc2VyX1BhcnNlci5lbmRPZkV4cHJlc3Npb24gPSBbXCJ9XCIsIFwiXFxcXGVuZGdyb3VwXCIsIFwiXFxcXGVuZFwiLCBcIlxcXFxyaWdodFwiLCBcIiZcIl07XG5QYXJzZXJfUGFyc2VyLmVuZE9mR3JvdXAgPSB7XG4gIFwiW1wiOiBcIl1cIixcbiAgXCJ7XCI6IFwifVwiLFxuICBcIlxcXFxiZWdpbmdyb3VwXCI6IFwiXFxcXGVuZGdyb3VwXCJcbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBcImV4cHJlc3Npb25cIiwgd2hpY2ggaXMgYSBsaXN0IG9mIGF0b21zLlxuICAgKlxuICAgKiBgYnJlYWtPbkluZml4YDogU2hvdWxkIHRoZSBwYXJzaW5nIHN0b3Agd2hlbiB3ZSBoaXQgaW5maXggbm9kZXM/IFRoaXNcbiAgICogICAgICAgICAgICAgICAgIGhhcHBlbnMgd2hlbiBmdW5jdGlvbnMgaGF2ZSBoaWdoZXIgcHJlY2VuZGVuY2UgaGFuIGluZml4XG4gICAqICAgICAgICAgICAgICAgICBub2RlcyBpbiBpbXBsaWNpdCBwYXJzZXMuXG4gICAqXG4gICAqIGBicmVha09uVG9rZW5UZXh0YDogVGhlIHRleHQgb2YgdGhlIHRva2VuIHRoYXQgdGhlIGV4cHJlc3Npb24gc2hvdWxkIGVuZFxuICAgKiAgICAgICAgICAgICAgICAgICAgIHdpdGgsIG9yIGBudWxsYCBpZiBzb21ldGhpbmcgZWxzZSBzaG91bGQgZW5kIHRoZVxuICAgKiAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24uXG4gICAqL1xuXG59O1xuUGFyc2VyX1BhcnNlci5TVVBTVUJfR1JFRURJTkVTUyA9IDE7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3BhcnNlVHJlZS5qc1xuLyoqXG4gKiBQcm92aWRlcyBhIHNpbmdsZSBmdW5jdGlvbiBmb3IgcGFyc2luZyBhbiBleHByZXNzaW9uIHVzaW5nIGEgUGFyc2VyXG4gKiBUT0RPKGVtaWx5KTogUmVtb3ZlIHRoaXNcbiAqL1xuXG5cblxuLyoqXG4gKiBQYXJzZXMgYW4gZXhwcmVzc2lvbiB1c2luZyBhIFBhcnNlciwgdGhlbiByZXR1cm5zIHRoZSBwYXJzZWQgcmVzdWx0LlxuICovXG52YXIgcGFyc2VUcmVlX3BhcnNlVHJlZSA9IGZ1bmN0aW9uIHBhcnNlVHJlZSh0b1BhcnNlLCBzZXR0aW5ncykge1xuICBpZiAoISh0eXBlb2YgdG9QYXJzZSA9PT0gJ3N0cmluZycgfHwgdG9QYXJzZSBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdLYVRlWCBjYW4gb25seSBwYXJzZSBzdHJpbmcgdHlwZWQgZXhwcmVzc2lvbicpO1xuICB9XG5cbiAgdmFyIHBhcnNlciA9IG5ldyBQYXJzZXJfUGFyc2VyKHRvUGFyc2UsIHNldHRpbmdzKTsgLy8gQmxhbmsgb3V0IGFueSBcXGRmQHRhZyB0byBhdm9pZCBzcHVyaW91cyBcIkR1cGxpY2F0ZSBcXHRhZ1wiIGVycm9yc1xuXG4gIGRlbGV0ZSBwYXJzZXIuZ3VsbGV0Lm1hY3Jvcy5jdXJyZW50W1wiXFxcXGRmQHRhZ1wiXTtcbiAgdmFyIHRyZWUgPSBwYXJzZXIucGFyc2UoKTsgLy8gSWYgdGhlIGlucHV0IHVzZWQgXFx0YWcsIGl0IHdpbGwgc2V0IHRoZSBcXGRmQHRhZyBtYWNybyB0byB0aGUgdGFnLlxuICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNlcGFyYXRlbHkgcGFyc2UgdGhlIHRhZyBhbmQgd3JhcCB0aGUgdHJlZS5cblxuICBpZiAocGFyc2VyLmd1bGxldC5tYWNyb3MuZ2V0KFwiXFxcXGRmQHRhZ1wiKSkge1xuICAgIGlmICghc2V0dGluZ3MuZGlzcGxheU1vZGUpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFx0YWcgd29ya3Mgb25seSBpbiBkaXNwbGF5IGVxdWF0aW9uc1wiKTtcbiAgICB9XG5cbiAgICBwYXJzZXIuZ3VsbGV0LmZlZWQoXCJcXFxcZGZAdGFnXCIpO1xuICAgIHRyZWUgPSBbe1xuICAgICAgdHlwZTogXCJ0YWdcIixcbiAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgYm9keTogdHJlZSxcbiAgICAgIHRhZzogcGFyc2VyLnBhcnNlKClcbiAgICB9XTtcbiAgfVxuXG4gIHJldHVybiB0cmVlO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3BhcnNlVHJlZSA9IChwYXJzZVRyZWVfcGFyc2VUcmVlKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4va2F0ZXguanNcbi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cblxuLyoqXG4gKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBLYVRlWC4gSGVyZSwgd2UgZXhwb3NlIGZ1bmN0aW9ucyBmb3JcbiAqIHJlbmRlcmluZyBleHByZXNzaW9ucyBlaXRoZXIgdG8gRE9NIG5vZGVzIG9yIHRvIG1hcmt1cCBzdHJpbmdzLlxuICpcbiAqIFdlIGFsc28gZXhwb3NlIHRoZSBQYXJzZUVycm9yIGNsYXNzIHRvIGNoZWNrIGlmIGVycm9ycyB0aHJvd24gZnJvbSBLYVRlWCBhcmVcbiAqIGVycm9ycyBpbiB0aGUgZXhwcmVzc2lvbiwgb3IgZXJyb3JzIGluIGphdmFzY3JpcHQgaGFuZGxpbmcuXG4gKi9cblxuXG5cblxuXG5cblxuXG5cblxuLyoqXG4gKiBQYXJzZSBhbmQgYnVpbGQgYW4gZXhwcmVzc2lvbiwgYW5kIHBsYWNlIHRoYXQgZXhwcmVzc2lvbiBpbiB0aGUgRE9NIG5vZGVcbiAqIGdpdmVuLlxuICovXG52YXIga2F0ZXhfcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKGV4cHJlc3Npb24sIGJhc2VOb2RlLCBvcHRpb25zKSB7XG4gIGJhc2VOb2RlLnRleHRDb250ZW50ID0gXCJcIjtcbiAgdmFyIG5vZGUgPSBrYXRleF9yZW5kZXJUb0RvbVRyZWUoZXhwcmVzc2lvbiwgb3B0aW9ucykudG9Ob2RlKCk7XG4gIGJhc2VOb2RlLmFwcGVuZENoaWxkKG5vZGUpO1xufTsgLy8gS2FUZVgncyBzdHlsZXMgZG9uJ3Qgd29yayBwcm9wZXJseSBpbiBxdWlya3MgbW9kZS4gUHJpbnQgb3V0IGFuIGVycm9yLCBhbmRcbi8vIGRpc2FibGUgcmVuZGVyaW5nLlxuXG5cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgaWYgKGRvY3VtZW50LmNvbXBhdE1vZGUgIT09IFwiQ1NTMUNvbXBhdFwiKSB7XG4gICAgdHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS53YXJuKFwiV2FybmluZzogS2FUZVggZG9lc24ndCB3b3JrIGluIHF1aXJrcyBtb2RlLiBNYWtlIHN1cmUgeW91ciBcIiArIFwid2Vic2l0ZSBoYXMgYSBzdWl0YWJsZSBkb2N0eXBlLlwiKTtcblxuICAgIGthdGV4X3JlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkthVGVYIGRvZXNuJ3Qgd29yayBpbiBxdWlya3MgbW9kZS5cIik7XG4gICAgfTtcbiAgfVxufVxuLyoqXG4gKiBQYXJzZSBhbmQgYnVpbGQgYW4gZXhwcmVzc2lvbiwgYW5kIHJldHVybiB0aGUgbWFya3VwIGZvciB0aGF0LlxuICovXG5cblxudmFyIHJlbmRlclRvU3RyaW5nID0gZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmcoZXhwcmVzc2lvbiwgb3B0aW9ucykge1xuICB2YXIgbWFya3VwID0ga2F0ZXhfcmVuZGVyVG9Eb21UcmVlKGV4cHJlc3Npb24sIG9wdGlvbnMpLnRvTWFya3VwKCk7XG4gIHJldHVybiBtYXJrdXA7XG59O1xuLyoqXG4gKiBQYXJzZSBhbiBleHByZXNzaW9uIGFuZCByZXR1cm4gdGhlIHBhcnNlIHRyZWUuXG4gKi9cblxuXG52YXIga2F0ZXhfZ2VuZXJhdGVQYXJzZVRyZWUgPSBmdW5jdGlvbiBnZW5lcmF0ZVBhcnNlVHJlZShleHByZXNzaW9uLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG5ldyBTZXR0aW5nc19TZXR0aW5ncyhvcHRpb25zKTtcbiAgcmV0dXJuIHNyY19wYXJzZVRyZWUoZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xufTtcbi8qKlxuICogSWYgdGhlIGdpdmVuIGVycm9yIGlzIGEgS2FUZVggUGFyc2VFcnJvciBhbmQgb3B0aW9ucy50aHJvd09uRXJyb3IgaXMgZmFsc2UsXG4gKiByZW5kZXJzIHRoZSBpbnZhbGlkIExhVGVYIGFzIGEgc3BhbiB3aXRoIGhvdmVyIHRpdGxlIGdpdmluZyB0aGUgS2FUZVhcbiAqIGVycm9yIG1lc3NhZ2UuICBPdGhlcndpc2UsIHNpbXBseSB0aHJvd3MgdGhlIGVycm9yLlxuICovXG5cblxudmFyIGthdGV4X3JlbmRlckVycm9yID0gZnVuY3Rpb24gcmVuZGVyRXJyb3IoZXJyb3IsIGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudGhyb3dPbkVycm9yIHx8ICEoZXJyb3IgaW5zdGFuY2VvZiBzcmNfUGFyc2VFcnJvcikpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIHZhciBub2RlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wia2F0ZXgtZXJyb3JcIl0sIFtuZXcgZG9tVHJlZV9TeW1ib2xOb2RlKGV4cHJlc3Npb24pXSk7XG4gIG5vZGUuc2V0QXR0cmlidXRlKFwidGl0bGVcIiwgZXJyb3IudG9TdHJpbmcoKSk7XG4gIG5vZGUuc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgXCJjb2xvcjpcIiArIG9wdGlvbnMuZXJyb3JDb2xvcik7XG4gIHJldHVybiBub2RlO1xufTtcbi8qKlxuICogR2VuZXJhdGVzIGFuZCByZXR1cm5zIHRoZSBrYXRleCBidWlsZCB0cmVlLiBUaGlzIGlzIHVzZWQgZm9yIGFkdmFuY2VkXG4gKiB1c2UgY2FzZXMgKGxpa2UgcmVuZGVyaW5nIHRvIGN1c3RvbSBvdXRwdXQpLlxuICovXG5cblxudmFyIGthdGV4X3JlbmRlclRvRG9tVHJlZSA9IGZ1bmN0aW9uIHJlbmRlclRvRG9tVHJlZShleHByZXNzaW9uLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG5ldyBTZXR0aW5nc19TZXR0aW5ncyhvcHRpb25zKTtcblxuICB0cnkge1xuICAgIHZhciB0cmVlID0gc3JjX3BhcnNlVHJlZShleHByZXNzaW9uLCBzZXR0aW5ncyk7XG4gICAgcmV0dXJuIGJ1aWxkVHJlZV9idWlsZFRyZWUodHJlZSwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBrYXRleF9yZW5kZXJFcnJvcihlcnJvciwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9XG59O1xuLyoqXG4gKiBHZW5lcmF0ZXMgYW5kIHJldHVybnMgdGhlIGthdGV4IGJ1aWxkIHRyZWUsIHdpdGgganVzdCBIVE1MIChubyBNYXRoTUwpLlxuICogVGhpcyBpcyB1c2VkIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMgKGxpa2UgcmVuZGVyaW5nIHRvIGN1c3RvbSBvdXRwdXQpLlxuICovXG5cblxudmFyIGthdGV4X3JlbmRlclRvSFRNTFRyZWUgPSBmdW5jdGlvbiByZW5kZXJUb0hUTUxUcmVlKGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gbmV3IFNldHRpbmdzX1NldHRpbmdzKG9wdGlvbnMpO1xuXG4gIHRyeSB7XG4gICAgdmFyIHRyZWUgPSBzcmNfcGFyc2VUcmVlKGV4cHJlc3Npb24sIHNldHRpbmdzKTtcbiAgICByZXR1cm4gYnVpbGRUcmVlX2J1aWxkSFRNTFRyZWUodHJlZSwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBrYXRleF9yZW5kZXJFcnJvcihlcnJvciwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBrYXRleF8wID0gKHtcbiAgLyoqXG4gICAqIEN1cnJlbnQgS2FUZVggdmVyc2lvblxuICAgKi9cbiAgdmVyc2lvbjogXCIwLjExLjFcIixcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZ2l2ZW4gTGFUZVggaW50byBhbiBIVE1MK01hdGhNTCBjb21iaW5hdGlvbiwgYW5kIGFkZHNcbiAgICogaXQgYXMgYSBjaGlsZCB0byB0aGUgc3BlY2lmaWVkIERPTSBub2RlLlxuICAgKi9cbiAgcmVuZGVyOiBrYXRleF9yZW5kZXIsXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCtNYXRoTUwgY29tYmluYXRpb24gc3RyaW5nLFxuICAgKiBmb3Igc2VuZGluZyB0byB0aGUgY2xpZW50LlxuICAgKi9cbiAgcmVuZGVyVG9TdHJpbmc6IHJlbmRlclRvU3RyaW5nLFxuXG4gIC8qKlxuICAgKiBLYVRlWCBlcnJvciwgdXN1YWxseSBkdXJpbmcgcGFyc2luZy5cbiAgICovXG4gIFBhcnNlRXJyb3I6IHNyY19QYXJzZUVycm9yLFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIExhVGVYIGludG8gS2FUZVgncyBpbnRlcm5hbCBwYXJzZSB0cmVlIHN0cnVjdHVyZSxcbiAgICogd2l0aG91dCByZW5kZXJpbmcgdG8gSFRNTCBvciBNYXRoTUwuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHB1YmxpYyB1c2UuXG4gICAqIFRoZSBpbnRlcm5hbCB0cmVlIHJlcHJlc2VudGF0aW9uIGlzIHVuc3RhYmxlIGFuZCBpcyB2ZXJ5IGxpa2VseVxuICAgKiB0byBjaGFuZ2UuIFVzZSBhdCB5b3VyIG93biByaXNrLlxuICAgKi9cbiAgX19wYXJzZToga2F0ZXhfZ2VuZXJhdGVQYXJzZVRyZWUsXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCtNYXRoTUwgaW50ZXJuYWwgRE9NIHRyZWVcbiAgICogcmVwcmVzZW50YXRpb24sIHdpdGhvdXQgZmxhdHRlbmluZyB0aGF0IHJlcHJlc2VudGF0aW9uIHRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBOT1RFOiBUaGlzIG1ldGhvZCBpcyBub3QgY3VycmVudGx5IHJlY29tbWVuZGVkIGZvciBwdWJsaWMgdXNlLlxuICAgKiBUaGUgaW50ZXJuYWwgdHJlZSByZXByZXNlbnRhdGlvbiBpcyB1bnN0YWJsZSBhbmQgaXMgdmVyeSBsaWtlbHlcbiAgICogdG8gY2hhbmdlLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICovXG4gIF9fcmVuZGVyVG9Eb21UcmVlOiBrYXRleF9yZW5kZXJUb0RvbVRyZWUsXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCBpbnRlcm5hbCBET00gdHJlZSByZXByZXNlbnRhdGlvbixcbiAgICogd2l0aG91dCBNYXRoTUwgYW5kIHdpdGhvdXQgZmxhdHRlbmluZyB0aGF0IHJlcHJlc2VudGF0aW9uIHRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBOT1RFOiBUaGlzIG1ldGhvZCBpcyBub3QgY3VycmVudGx5IHJlY29tbWVuZGVkIGZvciBwdWJsaWMgdXNlLlxuICAgKiBUaGUgaW50ZXJuYWwgdHJlZSByZXByZXNlbnRhdGlvbiBpcyB1bnN0YWJsZSBhbmQgaXMgdmVyeSBsaWtlbHlcbiAgICogdG8gY2hhbmdlLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICovXG4gIF9fcmVuZGVyVG9IVE1MVHJlZToga2F0ZXhfcmVuZGVyVG9IVE1MVHJlZSxcblxuICAvKipcbiAgICogZXh0ZW5kcyBpbnRlcm5hbCBmb250IG1ldHJpY3Mgb2JqZWN0IHdpdGggYSBuZXcgb2JqZWN0XG4gICAqIGVhY2gga2V5IGluIHRoZSBuZXcgb2JqZWN0IHJlcHJlc2VudHMgYSBmb250IG5hbWVcbiAgKi9cbiAgX19zZXRGb250TWV0cmljczogc2V0Rm9udE1ldHJpY3MsXG5cbiAgLyoqXG4gICAqIGFkZHMgYSBuZXcgc3ltYm9sIHRvIGJ1aWx0aW4gc3ltYm9scyB0YWJsZVxuICAgKi9cbiAgX19kZWZpbmVTeW1ib2w6IGRlZmluZVN5bWJvbCxcblxuICAvKipcbiAgICogYWRkcyBhIG5ldyBtYWNybyB0byBidWlsdGluIG1hY3JvIGxpc3RcbiAgICovXG4gIF9fZGVmaW5lTWFjcm86IGRlZmluZU1hY3JvLFxuXG4gIC8qKlxuICAgKiBFeHBvc2UgdGhlIGRvbSB0cmVlIG5vZGUgdHlwZXMsIHdoaWNoIGNhbiBiZSB1c2VmdWwgZm9yIHR5cGUgY2hlY2tpbmcgbm9kZXMuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHB1YmxpYyB1c2UuXG4gICAqIFRoZSBpbnRlcm5hbCB0cmVlIHJlcHJlc2VudGF0aW9uIGlzIHVuc3RhYmxlIGFuZCBpcyB2ZXJ5IGxpa2VseVxuICAgKiB0byBjaGFuZ2UuIFVzZSBhdCB5b3VyIG93biByaXNrLlxuICAgKi9cbiAgX19kb21UcmVlOiB7XG4gICAgU3BhbjogZG9tVHJlZV9TcGFuLFxuICAgIEFuY2hvcjogZG9tVHJlZV9BbmNob3IsXG4gICAgU3ltYm9sTm9kZTogZG9tVHJlZV9TeW1ib2xOb2RlLFxuICAgIFN2Z05vZGU6IFN2Z05vZGUsXG4gICAgUGF0aE5vZGU6IGRvbVRyZWVfUGF0aE5vZGUsXG4gICAgTGluZU5vZGU6IExpbmVOb2RlXG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9rYXRleC53ZWJwYWNrLmpzXG4vKipcbiAqIFRoaXMgaXMgdGhlIHdlYnBhY2sgZW50cnkgcG9pbnQgZm9yIEthVGVYLiBBcyBFQ01BU2NyaXB0LCBmbG93WzFdIGFuZCBqZXN0WzJdXG4gKiBkb2Vzbid0IHN1cHBvcnQgQ1NTIG1vZHVsZXMgbmF0aXZlbHksIGEgc2VwYXJhdGUgZW50cnkgcG9pbnQgaXMgdXNlZCBhbmRcbiAqIGl0IGlzIG5vdCBmbG93dHlwZWQuXG4gKlxuICogWzFdIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2xhbWJkYWhhbmRzL2QxOWUwZGE5NjI4NWI3NDlmMGVmXG4gKiBbMl0gaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vamVzdC9kb2NzL2VuL3dlYnBhY2suaHRtbFxuICovXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIga2F0ZXhfd2VicGFjayA9IF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKGthdGV4XzApO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSlbXCJkZWZhdWx0XCJdO1xufSk7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBpc0FycmF5ID0gZnVuY3Rpb24gaXNBcnJheShhcnIpIHtcblx0aWYgKHR5cGVvZiBBcnJheS5pc0FycmF5ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyKTtcblx0fVxuXG5cdHJldHVybiB0b1N0ci5jYWxsKGFycikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuXG52YXIgaXNQbGFpbk9iamVjdCA9IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG5cdGlmICghb2JqIHx8IHRvU3RyLmNhbGwob2JqKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHR2YXIgaGFzT3duQ29uc3RydWN0b3IgPSBoYXNPd24uY2FsbChvYmosICdjb25zdHJ1Y3RvcicpO1xuXHR2YXIgaGFzSXNQcm90b3R5cGVPZiA9IG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IucHJvdG90eXBlICYmIGhhc093bi5jYWxsKG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsICdpc1Byb3RvdHlwZU9mJyk7XG5cdC8vIE5vdCBvd24gY29uc3RydWN0b3IgcHJvcGVydHkgbXVzdCBiZSBPYmplY3Rcblx0aWYgKG9iai5jb25zdHJ1Y3RvciAmJiAhaGFzT3duQ29uc3RydWN0b3IgJiYgIWhhc0lzUHJvdG90eXBlT2YpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBPd24gcHJvcGVydGllcyBhcmUgZW51bWVyYXRlZCBmaXJzdGx5LCBzbyB0byBzcGVlZCB1cCxcblx0Ly8gaWYgbGFzdCBvbmUgaXMgb3duLCB0aGVuIGFsbCBwcm9wZXJ0aWVzIGFyZSBvd24uXG5cdHZhciBrZXk7XG5cdGZvciAoa2V5IGluIG9iaikgeyAvKiovIH1cblxuXHRyZXR1cm4gdHlwZW9mIGtleSA9PT0gJ3VuZGVmaW5lZCcgfHwgaGFzT3duLmNhbGwob2JqLCBrZXkpO1xufTtcblxuLy8gSWYgbmFtZSBpcyAnX19wcm90b19fJywgYW5kIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBpcyBhdmFpbGFibGUsIGRlZmluZSBfX3Byb3RvX18gYXMgYW4gb3duIHByb3BlcnR5IG9uIHRhcmdldFxudmFyIHNldFByb3BlcnR5ID0gZnVuY3Rpb24gc2V0UHJvcGVydHkodGFyZ2V0LCBvcHRpb25zKSB7XG5cdGlmIChkZWZpbmVQcm9wZXJ0eSAmJiBvcHRpb25zLm5hbWUgPT09ICdfX3Byb3RvX18nKSB7XG5cdFx0ZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBvcHRpb25zLm5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHR2YWx1ZTogb3B0aW9ucy5uZXdWYWx1ZSxcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0dGFyZ2V0W29wdGlvbnMubmFtZV0gPSBvcHRpb25zLm5ld1ZhbHVlO1xuXHR9XG59O1xuXG4vLyBSZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgX19wcm90b19fIGlmICdfX3Byb3RvX18nIGlzIG5vdCBhbiBvd24gcHJvcGVydHlcbnZhciBnZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uIGdldFByb3BlcnR5KG9iaiwgbmFtZSkge1xuXHRpZiAobmFtZSA9PT0gJ19fcHJvdG9fXycpIHtcblx0XHRpZiAoIWhhc093bi5jYWxsKG9iaiwgbmFtZSkpIHtcblx0XHRcdHJldHVybiB2b2lkIDA7XG5cdFx0fSBlbHNlIGlmIChnT1BEKSB7XG5cdFx0XHQvLyBJbiBlYXJseSB2ZXJzaW9ucyBvZiBub2RlLCBvYmpbJ19fcHJvdG9fXyddIGlzIGJ1Z2d5IHdoZW4gb2JqIGhhc1xuXHRcdFx0Ly8gX19wcm90b19fIGFzIGFuIG93biBwcm9wZXJ0eS4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHdvcmtzLlxuXHRcdFx0cmV0dXJuIGdPUEQob2JqLCBuYW1lKS52YWx1ZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb2JqW25hbWVdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBleHRlbmQoKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZTtcblx0dmFyIHRhcmdldCA9IGFyZ3VtZW50c1swXTtcblx0dmFyIGkgPSAxO1xuXHR2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcblx0dmFyIGRlZXAgPSBmYWxzZTtcblxuXHQvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uXG5cdGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnYm9vbGVhbicpIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sxXSB8fCB7fTtcblx0XHQvLyBza2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0aSA9IDI7XG5cdH1cblx0aWYgKHRhcmdldCA9PSBudWxsIHx8ICh0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nKSkge1xuXHRcdHRhcmdldCA9IHt9O1xuXHR9XG5cblx0Zm9yICg7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdG9wdGlvbnMgPSBhcmd1bWVudHNbaV07XG5cdFx0Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuXHRcdGlmIChvcHRpb25zICE9IG51bGwpIHtcblx0XHRcdC8vIEV4dGVuZCB0aGUgYmFzZSBvYmplY3Rcblx0XHRcdGZvciAobmFtZSBpbiBvcHRpb25zKSB7XG5cdFx0XHRcdHNyYyA9IGdldFByb3BlcnR5KHRhcmdldCwgbmFtZSk7XG5cdFx0XHRcdGNvcHkgPSBnZXRQcm9wZXJ0eShvcHRpb25zLCBuYW1lKTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICh0YXJnZXQgIT09IGNvcHkpIHtcblx0XHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0XHRpZiAoZGVlcCAmJiBjb3B5ICYmIChpc1BsYWluT2JqZWN0KGNvcHkpIHx8IChjb3B5SXNBcnJheSA9IGlzQXJyYXkoY29weSkpKSkge1xuXHRcdFx0XHRcdFx0aWYgKGNvcHlJc0FycmF5KSB7XG5cdFx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGlzQXJyYXkoc3JjKSA/IHNyYyA6IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgaXNQbGFpbk9iamVjdChzcmMpID8gc3JjIDoge307XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdFx0c2V0UHJvcGVydHkodGFyZ2V0LCB7IG5hbWU6IG5hbWUsIG5ld1ZhbHVlOiBleHRlbmQoZGVlcCwgY2xvbmUsIGNvcHkpIH0pO1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGNvcHkgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdFx0XHRzZXRQcm9wZXJ0eSh0YXJnZXQsIHsgbmFtZTogbmFtZSwgbmV3VmFsdWU6IGNvcHkgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3Rcblx0cmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBiYWlsXG5cbmZ1bmN0aW9uIGJhaWwoZXJyKSB7XG4gIGlmIChlcnIpIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ2lmeVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHtcbiAgLy8gTm90aGluZy5cbiAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBOb2RlLlxuICBpZiAob3duLmNhbGwodmFsdWUsICdwb3NpdGlvbicpIHx8IG93bi5jYWxsKHZhbHVlLCAndHlwZScpKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uKHZhbHVlLnBvc2l0aW9uKVxuICB9XG5cbiAgLy8gUG9zaXRpb24uXG4gIGlmIChvd24uY2FsbCh2YWx1ZSwgJ3N0YXJ0JykgfHwgb3duLmNhbGwodmFsdWUsICdlbmQnKSkge1xuICAgIHJldHVybiBwb3NpdGlvbih2YWx1ZSlcbiAgfVxuXG4gIC8vIFBvaW50LlxuICBpZiAob3duLmNhbGwodmFsdWUsICdsaW5lJykgfHwgb3duLmNhbGwodmFsdWUsICdjb2x1bW4nKSkge1xuICAgIHJldHVybiBwb2ludCh2YWx1ZSlcbiAgfVxuXG4gIC8vID9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIHBvaW50KHBvaW50KSB7XG4gIGlmICghcG9pbnQgfHwgdHlwZW9mIHBvaW50ICE9PSAnb2JqZWN0Jykge1xuICAgIHBvaW50ID0ge31cbiAgfVxuXG4gIHJldHVybiBpbmRleChwb2ludC5saW5lKSArICc6JyArIGluZGV4KHBvaW50LmNvbHVtbilcbn1cblxuZnVuY3Rpb24gcG9zaXRpb24ocG9zKSB7XG4gIGlmICghcG9zIHx8IHR5cGVvZiBwb3MgIT09ICdvYmplY3QnKSB7XG4gICAgcG9zID0ge31cbiAgfVxuXG4gIHJldHVybiBwb2ludChwb3Muc3RhcnQpICsgJy0nICsgcG9pbnQocG9zLmVuZClcbn1cblxuZnVuY3Rpb24gaW5kZXgodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IDFcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgc3RyaW5naWZ5ID0gcmVxdWlyZSgndW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZNZXNzYWdlXG5cbi8vIEluaGVyaXQgZnJvbSBgRXJyb3IjYC5cbmZ1bmN0aW9uIFZNZXNzYWdlUHJvdG90eXBlKCkge31cblZNZXNzYWdlUHJvdG90eXBlLnByb3RvdHlwZSA9IEVycm9yLnByb3RvdHlwZVxuVk1lc3NhZ2UucHJvdG90eXBlID0gbmV3IFZNZXNzYWdlUHJvdG90eXBlKClcblxuLy8gTWVzc2FnZSBwcm9wZXJ0aWVzLlxudmFyIHByb3RvID0gVk1lc3NhZ2UucHJvdG90eXBlXG5cbnByb3RvLmZpbGUgPSAnJ1xucHJvdG8ubmFtZSA9ICcnXG5wcm90by5yZWFzb24gPSAnJ1xucHJvdG8ubWVzc2FnZSA9ICcnXG5wcm90by5zdGFjayA9ICcnXG5wcm90by5mYXRhbCA9IG51bGxcbnByb3RvLmNvbHVtbiA9IG51bGxcbnByb3RvLmxpbmUgPSBudWxsXG5cbi8vIENvbnN0cnVjdCBhIG5ldyBWTWVzc2FnZS5cbi8vXG4vLyBOb3RlOiBXZSBjYW5ub3QgaW52b2tlIGBFcnJvcmAgb24gdGhlIGNyZWF0ZWQgY29udGV4dCwgYXMgdGhhdCBhZGRzIHJlYWRvbmx5XG4vLyBgbGluZWAgYW5kIGBjb2x1bW5gIGF0dHJpYnV0ZXMgb24gU2FmYXJpIDksIHRodXMgdGhyb3dpbmcgYW5kIGZhaWxpbmcgdGhlXG4vLyBkYXRhLlxuZnVuY3Rpb24gVk1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbiwgb3JpZ2luKSB7XG4gIHZhciBwYXJ0c1xuICB2YXIgcmFuZ2VcbiAgdmFyIGxvY2F0aW9uXG5cbiAgaWYgKHR5cGVvZiBwb3NpdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICBvcmlnaW4gPSBwb3NpdGlvblxuICAgIHBvc2l0aW9uID0gbnVsbFxuICB9XG5cbiAgcGFydHMgPSBwYXJzZU9yaWdpbihvcmlnaW4pXG4gIHJhbmdlID0gc3RyaW5naWZ5KHBvc2l0aW9uKSB8fCAnMToxJ1xuXG4gIGxvY2F0aW9uID0ge1xuICAgIHN0YXJ0OiB7bGluZTogbnVsbCwgY29sdW1uOiBudWxsfSxcbiAgICBlbmQ6IHtsaW5lOiBudWxsLCBjb2x1bW46IG51bGx9XG4gIH1cblxuICAvLyBOb2RlLlxuICBpZiAocG9zaXRpb24gJiYgcG9zaXRpb24ucG9zaXRpb24pIHtcbiAgICBwb3NpdGlvbiA9IHBvc2l0aW9uLnBvc2l0aW9uXG4gIH1cblxuICBpZiAocG9zaXRpb24pIHtcbiAgICAvLyBQb3NpdGlvbi5cbiAgICBpZiAocG9zaXRpb24uc3RhcnQpIHtcbiAgICAgIGxvY2F0aW9uID0gcG9zaXRpb25cbiAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24uc3RhcnRcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUG9pbnQuXG4gICAgICBsb2NhdGlvbi5zdGFydCA9IHBvc2l0aW9uXG4gICAgfVxuICB9XG5cbiAgaWYgKHJlYXNvbi5zdGFjaykge1xuICAgIHRoaXMuc3RhY2sgPSByZWFzb24uc3RhY2tcbiAgICByZWFzb24gPSByZWFzb24ubWVzc2FnZVxuICB9XG5cbiAgdGhpcy5tZXNzYWdlID0gcmVhc29uXG4gIHRoaXMubmFtZSA9IHJhbmdlXG4gIHRoaXMucmVhc29uID0gcmVhc29uXG4gIHRoaXMubGluZSA9IHBvc2l0aW9uID8gcG9zaXRpb24ubGluZSA6IG51bGxcbiAgdGhpcy5jb2x1bW4gPSBwb3NpdGlvbiA/IHBvc2l0aW9uLmNvbHVtbiA6IG51bGxcbiAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uXG4gIHRoaXMuc291cmNlID0gcGFydHNbMF1cbiAgdGhpcy5ydWxlSWQgPSBwYXJ0c1sxXVxufVxuXG5mdW5jdGlvbiBwYXJzZU9yaWdpbihvcmlnaW4pIHtcbiAgdmFyIHJlc3VsdCA9IFtudWxsLCBudWxsXVxuICB2YXIgaW5kZXhcblxuICBpZiAodHlwZW9mIG9yaWdpbiA9PT0gJ3N0cmluZycpIHtcbiAgICBpbmRleCA9IG9yaWdpbi5pbmRleE9mKCc6JylcblxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJlc3VsdFsxXSA9IG9yaWdpblxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbMF0gPSBvcmlnaW4uc2xpY2UoMCwgaW5kZXgpXG4gICAgICByZXN1bHRbMV0gPSBvcmlnaW4uc2xpY2UoaW5kZXggKyAxKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsImV4cG9ydCBkZWZhdWx0ICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDpcbiAgICAgICAgICAgIHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6XG4gICAgICAgICAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pO1xuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG4vLyBiYXNlZCBvZmYgaHR0cHM6Ly9naXRodWIuY29tL2RlZnVuY3R6b21iaWUvbm9kZS1wcm9jZXNzL2Jsb2IvbWFzdGVyL2Jyb3dzZXIuanNcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG52YXIgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbmlmICh0eXBlb2YgZ2xvYmFsLnNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbn1cbmlmICh0eXBlb2YgZ2xvYmFsLmNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbn1cblxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5leHRUaWNrKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59XG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xuZXhwb3J0IHZhciB0aXRsZSA9ICdicm93c2VyJztcbmV4cG9ydCB2YXIgcGxhdGZvcm0gPSAnYnJvd3Nlcic7XG5leHBvcnQgdmFyIGJyb3dzZXIgPSB0cnVlO1xuZXhwb3J0IHZhciBlbnYgPSB7fTtcbmV4cG9ydCB2YXIgYXJndiA9IFtdO1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5leHBvcnQgdmFyIHZlcnNpb25zID0ge307XG5leHBvcnQgdmFyIHJlbGVhc2UgPSB7fTtcbmV4cG9ydCB2YXIgY29uZmlnID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5leHBvcnQgdmFyIG9uID0gbm9vcDtcbmV4cG9ydCB2YXIgYWRkTGlzdGVuZXIgPSBub29wO1xuZXhwb3J0IHZhciBvbmNlID0gbm9vcDtcbmV4cG9ydCB2YXIgb2ZmID0gbm9vcDtcbmV4cG9ydCB2YXIgcmVtb3ZlTGlzdGVuZXIgPSBub29wO1xuZXhwb3J0IHZhciByZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xuZXhwb3J0IHZhciBlbWl0ID0gbm9vcDtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmcobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN3ZCAoKSB7IHJldHVybiAnLycgfVxuZXhwb3J0IGZ1bmN0aW9uIGNoZGlyIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiB1bWFzaygpIHsgcmV0dXJuIDA7IH1cblxuLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20va3VtYXZpcy9icm93c2VyLXByb2Nlc3MtaHJ0aW1lL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG52YXIgcGVyZm9ybWFuY2UgPSBnbG9iYWwucGVyZm9ybWFuY2UgfHwge31cbnZhciBwZXJmb3JtYW5jZU5vdyA9XG4gIHBlcmZvcm1hbmNlLm5vdyAgICAgICAgfHxcbiAgcGVyZm9ybWFuY2UubW96Tm93ICAgICB8fFxuICBwZXJmb3JtYW5jZS5tc05vdyAgICAgIHx8XG4gIHBlcmZvcm1hbmNlLm9Ob3cgICAgICAgfHxcbiAgcGVyZm9ybWFuY2Uud2Via2l0Tm93ICB8fFxuICBmdW5jdGlvbigpeyByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSB9XG5cbi8vIGdlbmVyYXRlIHRpbWVzdGFtcCBvciBkZWx0YVxuLy8gc2VlIGh0dHA6Ly9ub2RlanMub3JnL2FwaS9wcm9jZXNzLmh0bWwjcHJvY2Vzc19wcm9jZXNzX2hydGltZVxuZXhwb3J0IGZ1bmN0aW9uIGhydGltZShwcmV2aW91c1RpbWVzdGFtcCl7XG4gIHZhciBjbG9ja3RpbWUgPSBwZXJmb3JtYW5jZU5vdy5jYWxsKHBlcmZvcm1hbmNlKSoxZS0zXG4gIHZhciBzZWNvbmRzID0gTWF0aC5mbG9vcihjbG9ja3RpbWUpXG4gIHZhciBuYW5vc2Vjb25kcyA9IE1hdGguZmxvb3IoKGNsb2NrdGltZSUxKSoxZTkpXG4gIGlmIChwcmV2aW91c1RpbWVzdGFtcCkge1xuICAgIHNlY29uZHMgPSBzZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMF1cbiAgICBuYW5vc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMV1cbiAgICBpZiAobmFub3NlY29uZHM8MCkge1xuICAgICAgc2Vjb25kcy0tXG4gICAgICBuYW5vc2Vjb25kcyArPSAxZTlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtzZWNvbmRzLG5hbm9zZWNvbmRzXVxufVxuXG52YXIgc3RhcnRUaW1lID0gbmV3IERhdGUoKTtcbmV4cG9ydCBmdW5jdGlvbiB1cHRpbWUoKSB7XG4gIHZhciBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gIHZhciBkaWYgPSBjdXJyZW50VGltZSAtIHN0YXJ0VGltZTtcbiAgcmV0dXJuIGRpZiAvIDEwMDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmV4dFRpY2s6IG5leHRUaWNrLFxuICB0aXRsZTogdGl0bGUsXG4gIGJyb3dzZXI6IGJyb3dzZXIsXG4gIGVudjogZW52LFxuICBhcmd2OiBhcmd2LFxuICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICB2ZXJzaW9uczogdmVyc2lvbnMsXG4gIG9uOiBvbixcbiAgYWRkTGlzdGVuZXI6IGFkZExpc3RlbmVyLFxuICBvbmNlOiBvbmNlLFxuICBvZmY6IG9mZixcbiAgcmVtb3ZlTGlzdGVuZXI6IHJlbW92ZUxpc3RlbmVyLFxuICByZW1vdmVBbGxMaXN0ZW5lcnM6IHJlbW92ZUFsbExpc3RlbmVycyxcbiAgZW1pdDogZW1pdCxcbiAgYmluZGluZzogYmluZGluZyxcbiAgY3dkOiBjd2QsXG4gIGNoZGlyOiBjaGRpcixcbiAgdW1hc2s6IHVtYXNrLFxuICBocnRpbWU6IGhydGltZSxcbiAgcGxhdGZvcm06IHBsYXRmb3JtLFxuICByZWxlYXNlOiByZWxlYXNlLFxuICBjb25maWc6IGNvbmZpZyxcbiAgdXB0aW1lOiB1cHRpbWVcbn07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gcmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlXG4vLyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6XFwpIGluIHRoZSBhcnJheVxuLy8gKHNvIGFsc28gbm8gbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcyAtIGl0IGRvZXMgbm90IGRpc3Rpbmd1aXNoXG4vLyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMpXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheShwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHtcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxhc3QgPSBwYXJ0c1tpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzO1xufVxuXG4vLyBTcGxpdCBhIGZpbGVuYW1lIGludG8gW3Jvb3QsIGRpciwgYmFzZW5hbWUsIGV4dF0sIHVuaXggdmVyc2lvblxuLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy5cbnZhciBzcGxpdFBhdGhSZSA9XG4gICAgL14oXFwvP3wpKFtcXHNcXFNdKj8pKCg/OlxcLnsxLDJ9fFteXFwvXSs/fCkoXFwuW14uXFwvXSp8KSkoPzpbXFwvXSopJC87XG52YXIgc3BsaXRQYXRoID0gZnVuY3Rpb24oZmlsZW5hbWUpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aFJlLmV4ZWMoZmlsZW5hbWUpLnNsaWNlKDEpO1xufTtcblxuLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoKSB7XG4gIHZhciByZXNvbHZlZFBhdGggPSAnJyxcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIHZhciBwYXRoID0gKGkgPj0gMCkgPyBhcmd1bWVudHNbaV0gOiAnLyc7XG5cbiAgICAvLyBTa2lwIGVtcHR5IGFuZCBpbnZhbGlkIGVudHJpZXNcbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH0gZWxzZSBpZiAoIXBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IHBhdGguY2hhckF0KDApID09PSAnLyc7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gIC8vIGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocmVzb2x2ZWRQYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICByZXR1cm4gKChyZXNvbHZlZEFic29sdXRlID8gJy8nIDogJycpICsgcmVzb2x2ZWRQYXRoKSB8fCAnLic7XG59O1xuXG4vLyBwYXRoLm5vcm1hbGl6ZShwYXRoKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoKSB7XG4gIHZhciBpc1BhdGhBYnNvbHV0ZSA9IGlzQWJzb2x1dGUocGF0aCksXG4gICAgICB0cmFpbGluZ1NsYXNoID0gc3Vic3RyKHBhdGgsIC0xKSA9PT0gJy8nO1xuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICBwYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHBhdGguc3BsaXQoJy8nKSwgZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiAhIXA7XG4gIH0pLCAhaXNQYXRoQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICBpZiAoIXBhdGggJiYgIWlzUGF0aEFic29sdXRlKSB7XG4gICAgcGF0aCA9ICcuJztcbiAgfVxuICBpZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7XG4gICAgcGF0aCArPSAnLyc7XG4gIH1cblxuICByZXR1cm4gKGlzUGF0aEFic29sdXRlID8gJy8nIDogJycpICsgcGF0aDtcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGguY2hhckF0KDApID09PSAnLyc7XG59XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydCBmdW5jdGlvbiBqb2luKCkge1xuICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICByZXR1cm4gbm9ybWFsaXplKGZpbHRlcihwYXRocywgZnVuY3Rpb24ocCwgaW5kZXgpIHtcbiAgICBpZiAodHlwZW9mIHAgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5qb2luIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH1cbiAgICByZXR1cm4gcDtcbiAgfSkuam9pbignLycpKTtcbn1cblxuXG4vLyBwYXRoLnJlbGF0aXZlKGZyb20sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGF0aXZlKGZyb20sIHRvKSB7XG4gIGZyb20gPSByZXNvbHZlKGZyb20pLnN1YnN0cigxKTtcbiAgdG8gPSByZXNvbHZlKHRvKS5zdWJzdHIoMSk7XG5cbiAgZnVuY3Rpb24gdHJpbShhcnIpIHtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0KyspIHtcbiAgICAgIGlmIChhcnJbc3RhcnRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIGVuZCA9IGFyci5sZW5ndGggLSAxO1xuICAgIGZvciAoOyBlbmQgPj0gMDsgZW5kLS0pIHtcbiAgICAgIGlmIChhcnJbZW5kXSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA+IGVuZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7XG4gIH1cblxuICB2YXIgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KCcvJykpO1xuICB2YXIgdG9QYXJ0cyA9IHRyaW0odG8uc3BsaXQoJy8nKSk7XG5cbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsIHRvUGFydHMubGVuZ3RoKTtcbiAgdmFyIHNhbWVQYXJ0c0xlbmd0aCA9IGxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmIChmcm9tUGFydHNbaV0gIT09IHRvUGFydHNbaV0pIHtcbiAgICAgIHNhbWVQYXJ0c0xlbmd0aCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgb3V0cHV0UGFydHMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IHNhbWVQYXJ0c0xlbmd0aDsgaSA8IGZyb21QYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFBhcnRzLnB1c2goJy4uJyk7XG4gIH1cblxuICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpO1xuXG4gIHJldHVybiBvdXRwdXRQYXJ0cy5qb2luKCcvJyk7XG59XG5cbmV4cG9ydCB2YXIgc2VwID0gJy8nO1xuZXhwb3J0IHZhciBkZWxpbWl0ZXIgPSAnOic7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHtcbiAgdmFyIHJlc3VsdCA9IHNwbGl0UGF0aChwYXRoKSxcbiAgICAgIHJvb3QgPSByZXN1bHRbMF0sXG4gICAgICBkaXIgPSByZXN1bHRbMV07XG5cbiAgaWYgKCFyb290ICYmICFkaXIpIHtcbiAgICAvLyBObyBkaXJuYW1lIHdoYXRzb2V2ZXJcbiAgICByZXR1cm4gJy4nO1xuICB9XG5cbiAgaWYgKGRpcikge1xuICAgIC8vIEl0IGhhcyBhIGRpcm5hbWUsIHN0cmlwIHRyYWlsaW5nIHNsYXNoXG4gICAgZGlyID0gZGlyLnN1YnN0cigwLCBkaXIubGVuZ3RoIC0gMSk7XG4gIH1cblxuICByZXR1cm4gcm9vdCArIGRpcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhc2VuYW1lKHBhdGgsIGV4dCkge1xuICB2YXIgZiA9IHNwbGl0UGF0aChwYXRoKVsyXTtcbiAgLy8gVE9ETzogbWFrZSB0aGlzIGNvbXBhcmlzb24gY2FzZS1pbnNlbnNpdGl2ZSBvbiB3aW5kb3dzP1xuICBpZiAoZXh0ICYmIGYuc3Vic3RyKC0xICogZXh0Lmxlbmd0aCkgPT09IGV4dCkge1xuICAgIGYgPSBmLnN1YnN0cigwLCBmLmxlbmd0aCAtIGV4dC5sZW5ndGgpO1xuICB9XG4gIHJldHVybiBmO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRuYW1lKHBhdGgpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aChwYXRoKVszXTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZXh0bmFtZTogZXh0bmFtZSxcbiAgYmFzZW5hbWU6IGJhc2VuYW1lLFxuICBkaXJuYW1lOiBkaXJuYW1lLFxuICBzZXA6IHNlcCxcbiAgZGVsaW1pdGVyOiBkZWxpbWl0ZXIsXG4gIHJlbGF0aXZlOiByZWxhdGl2ZSxcbiAgam9pbjogam9pbixcbiAgaXNBYnNvbHV0ZTogaXNBYnNvbHV0ZSxcbiAgbm9ybWFsaXplOiBub3JtYWxpemUsXG4gIHJlc29sdmU6IHJlc29sdmVcbn07XG5mdW5jdGlvbiBmaWx0ZXIgKHhzLCBmKSB7XG4gICAgaWYgKHhzLmZpbHRlcikgcmV0dXJuIHhzLmZpbHRlcihmKTtcbiAgICB2YXIgcmVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZih4c1tpXSwgaSwgeHMpKSByZXMucHVzaCh4c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbi8vIFN0cmluZy5wcm90b3R5cGUuc3Vic3RyIC0gbmVnYXRpdmUgaW5kZXggZG9uJ3Qgd29yayBpbiBJRThcbnZhciBzdWJzdHIgPSAnYWInLnN1YnN0cigtMSkgPT09ICdiJyA/XG4gICAgZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikgeyByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKSB9IDpcbiAgICBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7XG4gICAgICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gc3RyLmxlbmd0aCArIHN0YXJ0O1xuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKTtcbiAgICB9XG47XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG5mdW5jdGlvbiByZXBsYWNlRXh0KG5wYXRoLCBleHQpIHtcbiAgaWYgKHR5cGVvZiBucGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnBhdGg7XG4gIH1cblxuICBpZiAobnBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG5wYXRoO1xuICB9XG5cbiAgdmFyIG5GaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUobnBhdGgsIHBhdGguZXh0bmFtZShucGF0aCkpICsgZXh0O1xuICByZXR1cm4gcGF0aC5qb2luKHBhdGguZGlybmFtZShucGF0aCksIG5GaWxlTmFtZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVwbGFjZUV4dDtcbiIsIi8qIVxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEJ1ZmZlclxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IgIT0gbnVsbCAmJlxuICAgIHR5cGVvZiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iailcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxudmFyIHJlcGxhY2UgPSByZXF1aXJlKCdyZXBsYWNlLWV4dCcpXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnaXMtYnVmZmVyJylcblxubW9kdWxlLmV4cG9ydHMgPSBWRmlsZVxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcbnZhciBwcm90byA9IFZGaWxlLnByb3RvdHlwZVxuXG4vLyBPcmRlciBvZiBzZXR0aW5nIChsZWFzdCBzcGVjaWZpYyB0byBtb3N0KSwgd2UgbmVlZCB0aGlzIGJlY2F1c2Ugb3RoZXJ3aXNlXG4vLyBge3N0ZW06ICdhJywgcGF0aDogJ34vYi5qcyd9YCB3b3VsZCB0aHJvdywgYXMgYSBwYXRoIGlzIG5lZWRlZCBiZWZvcmUgYVxuLy8gc3RlbSBjYW4gYmUgc2V0LlxudmFyIG9yZGVyID0gWydoaXN0b3J5JywgJ3BhdGgnLCAnYmFzZW5hbWUnLCAnc3RlbScsICdleHRuYW1lJywgJ2Rpcm5hbWUnXVxuXG5wcm90by50b1N0cmluZyA9IHRvU3RyaW5nXG5cbi8vIEFjY2VzcyBmdWxsIHBhdGggKGB+L2luZGV4Lm1pbi5qc2ApLlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAncGF0aCcsIHtnZXQ6IGdldFBhdGgsIHNldDogc2V0UGF0aH0pXG5cbi8vIEFjY2VzcyBwYXJlbnQgcGF0aCAoYH5gKS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgJ2Rpcm5hbWUnLCB7Z2V0OiBnZXREaXJuYW1lLCBzZXQ6IHNldERpcm5hbWV9KVxuXG4vLyBBY2Nlc3MgYmFzZW5hbWUgKGBpbmRleC5taW4uanNgKS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgJ2Jhc2VuYW1lJywge2dldDogZ2V0QmFzZW5hbWUsIHNldDogc2V0QmFzZW5hbWV9KVxuXG4vLyBBY2Nlc3MgZXh0bmFtZSAoYC5qc2ApLlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAnZXh0bmFtZScsIHtnZXQ6IGdldEV4dG5hbWUsIHNldDogc2V0RXh0bmFtZX0pXG5cbi8vIEFjY2VzcyBzdGVtIChgaW5kZXgubWluYCkuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sICdzdGVtJywge2dldDogZ2V0U3RlbSwgc2V0OiBzZXRTdGVtfSlcblxuLy8gQ29uc3RydWN0IGEgbmV3IGZpbGUuXG5mdW5jdGlvbiBWRmlsZShvcHRpb25zKSB7XG4gIHZhciBwcm9wXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnIHx8IGJ1ZmZlcihvcHRpb25zKSkge1xuICAgIG9wdGlvbnMgPSB7Y29udGVudHM6IG9wdGlvbnN9XG4gIH0gZWxzZSBpZiAoJ21lc3NhZ2UnIGluIG9wdGlvbnMgJiYgJ21lc3NhZ2VzJyBpbiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgfVxuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBWRmlsZSkpIHtcbiAgICByZXR1cm4gbmV3IFZGaWxlKG9wdGlvbnMpXG4gIH1cblxuICB0aGlzLmRhdGEgPSB7fVxuICB0aGlzLm1lc3NhZ2VzID0gW11cbiAgdGhpcy5oaXN0b3J5ID0gW11cbiAgdGhpcy5jd2QgPSBwcm9jZXNzLmN3ZCgpXG5cbiAgLy8gU2V0IHBhdGggcmVsYXRlZCBwcm9wZXJ0aWVzIGluIHRoZSBjb3JyZWN0IG9yZGVyLlxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IG9yZGVyLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcHJvcCA9IG9yZGVyW2luZGV4XVxuXG4gICAgaWYgKG93bi5jYWxsKG9wdGlvbnMsIHByb3ApKSB7XG4gICAgICB0aGlzW3Byb3BdID0gb3B0aW9uc1twcm9wXVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBub24tcGF0aCByZWxhdGVkIHByb3BlcnRpZXMuXG4gIGZvciAocHJvcCBpbiBvcHRpb25zKSB7XG4gICAgaWYgKG9yZGVyLmluZGV4T2YocHJvcCkgPT09IC0xKSB7XG4gICAgICB0aGlzW3Byb3BdID0gb3B0aW9uc1twcm9wXVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQYXRoKCkge1xuICByZXR1cm4gdGhpcy5oaXN0b3J5W3RoaXMuaGlzdG9yeS5sZW5ndGggLSAxXVxufVxuXG5mdW5jdGlvbiBzZXRQYXRoKHBhdGgpIHtcbiAgYXNzZXJ0Tm9uRW1wdHkocGF0aCwgJ3BhdGgnKVxuXG4gIGlmIChwYXRoICE9PSB0aGlzLnBhdGgpIHtcbiAgICB0aGlzLmhpc3RvcnkucHVzaChwYXRoKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldERpcm5hbWUoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguZGlybmFtZSh0aGlzLnBhdGgpIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNldERpcm5hbWUoZGlybmFtZSkge1xuICBhc3NlcnRQYXRoKHRoaXMucGF0aCwgJ2Rpcm5hbWUnKVxuICB0aGlzLnBhdGggPSBwYXRoLmpvaW4oZGlybmFtZSB8fCAnJywgdGhpcy5iYXNlbmFtZSlcbn1cblxuZnVuY3Rpb24gZ2V0QmFzZW5hbWUoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguYmFzZW5hbWUodGhpcy5wYXRoKSA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBzZXRCYXNlbmFtZShiYXNlbmFtZSkge1xuICBhc3NlcnROb25FbXB0eShiYXNlbmFtZSwgJ2Jhc2VuYW1lJylcbiAgYXNzZXJ0UGFydChiYXNlbmFtZSwgJ2Jhc2VuYW1lJylcbiAgdGhpcy5wYXRoID0gcGF0aC5qb2luKHRoaXMuZGlybmFtZSB8fCAnJywgYmFzZW5hbWUpXG59XG5cbmZ1bmN0aW9uIGdldEV4dG5hbWUoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguZXh0bmFtZSh0aGlzLnBhdGgpIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNldEV4dG5hbWUoZXh0bmFtZSkge1xuICB2YXIgZXh0ID0gZXh0bmFtZSB8fCAnJ1xuXG4gIGFzc2VydFBhcnQoZXh0LCAnZXh0bmFtZScpXG4gIGFzc2VydFBhdGgodGhpcy5wYXRoLCAnZXh0bmFtZScpXG5cbiAgaWYgKGV4dCkge1xuICAgIGlmIChleHQuY2hhckF0KDApICE9PSAnLicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYGV4dG5hbWVgIG11c3Qgc3RhcnQgd2l0aCBgLmAnKVxuICAgIH1cblxuICAgIGlmIChleHQuaW5kZXhPZignLicsIDEpICE9PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgZXh0bmFtZWAgY2Fubm90IGNvbnRhaW4gbXVsdGlwbGUgZG90cycpXG4gICAgfVxuICB9XG5cbiAgdGhpcy5wYXRoID0gcmVwbGFjZSh0aGlzLnBhdGgsIGV4dClcbn1cblxuZnVuY3Rpb24gZ2V0U3RlbSgpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnXG4gICAgPyBwYXRoLmJhc2VuYW1lKHRoaXMucGF0aCwgdGhpcy5leHRuYW1lKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNldFN0ZW0oc3RlbSkge1xuICBhc3NlcnROb25FbXB0eShzdGVtLCAnc3RlbScpXG4gIGFzc2VydFBhcnQoc3RlbSwgJ3N0ZW0nKVxuICB0aGlzLnBhdGggPSBwYXRoLmpvaW4odGhpcy5kaXJuYW1lIHx8ICcnLCBzdGVtICsgKHRoaXMuZXh0bmFtZSB8fCAnJykpXG59XG5cbi8vIEdldCB0aGUgdmFsdWUgb2YgdGhlIGZpbGUuXG5mdW5jdGlvbiB0b1N0cmluZyhlbmNvZGluZykge1xuICB2YXIgdmFsdWUgPSB0aGlzLmNvbnRlbnRzIHx8ICcnXG4gIHJldHVybiBidWZmZXIodmFsdWUpID8gdmFsdWUudG9TdHJpbmcoZW5jb2RpbmcpIDogU3RyaW5nKHZhbHVlKVxufVxuXG4vLyBBc3NlcnQgdGhhdCBgcGFydGAgaXMgbm90IGEgcGF0aCAoaS5lLiwgZG9lcyBub3QgY29udGFpbiBgcGF0aC5zZXBgKS5cbmZ1bmN0aW9uIGFzc2VydFBhcnQocGFydCwgbmFtZSkge1xuICBpZiAocGFydC5pbmRleE9mKHBhdGguc2VwKSAhPT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnYCcgKyBuYW1lICsgJ2AgY2Fubm90IGJlIGEgcGF0aDogZGlkIG5vdCBleHBlY3QgYCcgKyBwYXRoLnNlcCArICdgJ1xuICAgIClcbiAgfVxufVxuXG4vLyBBc3NlcnQgdGhhdCBgcGFydGAgaXMgbm90IGVtcHR5LlxuZnVuY3Rpb24gYXNzZXJ0Tm9uRW1wdHkocGFydCwgbmFtZSkge1xuICBpZiAoIXBhcnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2AnICsgbmFtZSArICdgIGNhbm5vdCBiZSBlbXB0eScpXG4gIH1cbn1cblxuLy8gQXNzZXJ0IGBwYXRoYCBleGlzdHMuXG5mdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGgsIG5hbWUpIHtcbiAgaWYgKCFwYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTZXR0aW5nIGAnICsgbmFtZSArICdgIHJlcXVpcmVzIGBwYXRoYCB0byBiZSBzZXQgdG9vJylcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBWTWVzc2FnZSA9IHJlcXVpcmUoJ3ZmaWxlLW1lc3NhZ2UnKVxudmFyIFZGaWxlID0gcmVxdWlyZSgnLi9jb3JlLmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBWRmlsZVxuXG52YXIgcHJvdG8gPSBWRmlsZS5wcm90b3R5cGVcblxucHJvdG8ubWVzc2FnZSA9IG1lc3NhZ2VcbnByb3RvLmluZm8gPSBpbmZvXG5wcm90by5mYWlsID0gZmFpbFxuXG4vLyBDcmVhdGUgYSBtZXNzYWdlIHdpdGggYHJlYXNvbmAgYXQgYHBvc2l0aW9uYC5cbi8vIFdoZW4gYW4gZXJyb3IgaXMgcGFzc2VkIGluIGFzIGByZWFzb25gLCBjb3BpZXMgdGhlIHN0YWNrLlxuZnVuY3Rpb24gbWVzc2FnZShyZWFzb24sIHBvc2l0aW9uLCBvcmlnaW4pIHtcbiAgdmFyIGZpbGVQYXRoID0gdGhpcy5wYXRoXG4gIHZhciBtZXNzYWdlID0gbmV3IFZNZXNzYWdlKHJlYXNvbiwgcG9zaXRpb24sIG9yaWdpbilcblxuICBpZiAoZmlsZVBhdGgpIHtcbiAgICBtZXNzYWdlLm5hbWUgPSBmaWxlUGF0aCArICc6JyArIG1lc3NhZ2UubmFtZVxuICAgIG1lc3NhZ2UuZmlsZSA9IGZpbGVQYXRoXG4gIH1cblxuICBtZXNzYWdlLmZhdGFsID0gZmFsc2VcblxuICB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSlcblxuICByZXR1cm4gbWVzc2FnZVxufVxuXG4vLyBGYWlsOiBjcmVhdGVzIGEgdm1lc3NhZ2UsIGFzc29jaWF0ZXMgaXQgd2l0aCB0aGUgZmlsZSwgYW5kIHRocm93cyBpdC5cbmZ1bmN0aW9uIGZhaWwoKSB7XG4gIHZhciBtZXNzYWdlID0gdGhpcy5tZXNzYWdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcblxuICBtZXNzYWdlLmZhdGFsID0gdHJ1ZVxuXG4gIHRocm93IG1lc3NhZ2Vcbn1cblxuLy8gSW5mbzogY3JlYXRlcyBhIHZtZXNzYWdlLCBhc3NvY2lhdGVzIGl0IHdpdGggdGhlIGZpbGUsIGFuZCBtYXJrcyB0aGUgZmF0YWxpdHlcbi8vIGFzIG51bGwuXG5mdW5jdGlvbiBpbmZvKCkge1xuICB2YXIgbWVzc2FnZSA9IHRoaXMubWVzc2FnZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG5cbiAgbWVzc2FnZS5mYXRhbCA9IG51bGxcblxuICByZXR1cm4gbWVzc2FnZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBzbGljZSA9IFtdLnNsaWNlXG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcFxuXG4vLyBXcmFwIGBmbmAuXG4vLyBDYW4gYmUgc3luYyBvciBhc3luYzsgcmV0dXJuIGEgcHJvbWlzZSwgcmVjZWl2ZSBhIGNvbXBsZXRpb24gaGFuZGxlciwgcmV0dXJuXG4vLyBuZXcgdmFsdWVzIGFuZCBlcnJvcnMuXG5mdW5jdGlvbiB3cmFwKGZuLCBjYWxsYmFjaykge1xuICB2YXIgaW52b2tlZFxuXG4gIHJldHVybiB3cmFwcGVkXG5cbiAgZnVuY3Rpb24gd3JhcHBlZCgpIHtcbiAgICB2YXIgcGFyYW1zID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDApXG4gICAgdmFyIGNhbGxiYWNrID0gZm4ubGVuZ3RoID4gcGFyYW1zLmxlbmd0aFxuICAgIHZhciByZXN1bHRcblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgcGFyYW1zLnB1c2goZG9uZSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gZm4uYXBwbHkobnVsbCwgcGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBXZWxsLCB0aGlzIGlzIHF1aXRlIHRoZSBwaWNrbGUuXG4gICAgICAvLyBgZm5gIHJlY2VpdmVkIGEgY2FsbGJhY2sgYW5kIGludm9rZWQgaXQgKHRodXMgY29udGludWluZyB0aGUgcGlwZWxpbmUpLFxuICAgICAgLy8gYnV0IGxhdGVyIGFsc28gdGhyZXcgYW4gZXJyb3IuXG4gICAgICAvLyBXZeKAmXJlIG5vdCBhYm91dCB0byByZXN0YXJ0IHRoZSBwaXBlbGluZSBhZ2Fpbiwgc28gdGhlIG9ubHkgdGhpbmcgbGVmdFxuICAgICAgLy8gdG8gZG8gaXMgdG8gdGhyb3cgdGhlIHRoaW5nIGluc3RlYWQuXG4gICAgICBpZiAoY2FsbGJhY2sgJiYgaW52b2tlZCkge1xuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZG9uZShlcnJvcilcbiAgICB9XG5cbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXN1bHQudGhlbih0aGVuLCBkb25lKVxuICAgICAgfSBlbHNlIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBkb25lKHJlc3VsdClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoZW4ocmVzdWx0KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEludm9rZSBgbmV4dGAsIG9ubHkgb25jZS5cbiAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICBpZiAoIWludm9rZWQpIHtcbiAgICAgIGludm9rZWQgPSB0cnVlXG5cbiAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cblxuICAvLyBJbnZva2UgYGRvbmVgIHdpdGggb25lIHZhbHVlLlxuICAvLyBUcmFja3MgaWYgYW4gZXJyb3IgaXMgcGFzc2VkLCB0b28uXG4gIGZ1bmN0aW9uIHRoZW4odmFsdWUpIHtcbiAgICBkb25lKG51bGwsIHZhbHVlKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdyYXAgPSByZXF1aXJlKCcuL3dyYXAuanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRyb3VnaFxuXG50cm91Z2gud3JhcCA9IHdyYXBcblxudmFyIHNsaWNlID0gW10uc2xpY2VcblxuLy8gQ3JlYXRlIG5ldyBtaWRkbGV3YXJlLlxuZnVuY3Rpb24gdHJvdWdoKCkge1xuICB2YXIgZm5zID0gW11cbiAgdmFyIG1pZGRsZXdhcmUgPSB7fVxuXG4gIG1pZGRsZXdhcmUucnVuID0gcnVuXG4gIG1pZGRsZXdhcmUudXNlID0gdXNlXG5cbiAgcmV0dXJuIG1pZGRsZXdhcmVcblxuICAvLyBSdW4gYGZuc2AuICBMYXN0IGFyZ3VtZW50IG11c3QgYmUgYSBjb21wbGV0aW9uIGhhbmRsZXIuXG4gIGZ1bmN0aW9uIHJ1bigpIHtcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciBpbnB1dCA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAwLCAtMSlcbiAgICB2YXIgZG9uZSA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV1cblxuICAgIGlmICh0eXBlb2YgZG9uZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiBhcyBsYXN0IGFyZ3VtZW50LCBub3QgJyArIGRvbmUpXG4gICAgfVxuXG4gICAgbmV4dC5hcHBseShudWxsLCBbbnVsbF0uY29uY2F0KGlucHV0KSlcblxuICAgIC8vIFJ1biB0aGUgbmV4dCBgZm5gLCBpZiBhbnkuXG4gICAgZnVuY3Rpb24gbmV4dChlcnIpIHtcbiAgICAgIHZhciBmbiA9IGZuc1srK2luZGV4XVxuICAgICAgdmFyIHBhcmFtcyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKVxuICAgICAgdmFyIHZhbHVlcyA9IHBhcmFtcy5zbGljZSgxKVxuICAgICAgdmFyIGxlbmd0aCA9IGlucHV0Lmxlbmd0aFxuICAgICAgdmFyIHBvcyA9IC0xXG5cbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgZG9uZShlcnIpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDb3B5IG5vbi1udWxseSBpbnB1dCBpbnRvIHZhbHVlcy5cbiAgICAgIHdoaWxlICgrK3BvcyA8IGxlbmd0aCkge1xuICAgICAgICBpZiAodmFsdWVzW3Bvc10gPT09IG51bGwgfHwgdmFsdWVzW3Bvc10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhbHVlc1twb3NdID0gaW5wdXRbcG9zXVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlucHV0ID0gdmFsdWVzXG5cbiAgICAgIC8vIE5leHQgb3IgZG9uZS5cbiAgICAgIGlmIChmbikge1xuICAgICAgICB3cmFwKGZuLCBuZXh0KS5hcHBseShudWxsLCBpbnB1dClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvbmUuYXBwbHkobnVsbCwgW251bGxdLmNvbmNhdChpbnB1dCkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGBmbmAgdG8gdGhlIGxpc3QuXG4gIGZ1bmN0aW9uIHVzZShmbikge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYGZuYCB0byBiZSBhIGZ1bmN0aW9uLCBub3QgJyArIGZuKVxuICAgIH1cblxuICAgIGZucy5wdXNoKGZuKVxuXG4gICAgcmV0dXJuIG1pZGRsZXdhcmVcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlID0+IHtcblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcblx0cmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZih7fSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBleHRlbmQgPSByZXF1aXJlKCdleHRlbmQnKVxudmFyIGJhaWwgPSByZXF1aXJlKCdiYWlsJylcbnZhciB2ZmlsZSA9IHJlcXVpcmUoJ3ZmaWxlJylcbnZhciB0cm91Z2ggPSByZXF1aXJlKCd0cm91Z2gnKVxudmFyIHBsYWluID0gcmVxdWlyZSgnaXMtcGxhaW4tb2JqJylcblxuLy8gRXhwb3NlIGEgZnJvemVuIHByb2Nlc3Nvci5cbm1vZHVsZS5leHBvcnRzID0gdW5pZmllZCgpLmZyZWV6ZSgpXG5cbnZhciBzbGljZSA9IFtdLnNsaWNlXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gUHJvY2VzcyBwaXBlbGluZS5cbnZhciBwaXBlbGluZSA9IHRyb3VnaCgpXG4gIC51c2UocGlwZWxpbmVQYXJzZSlcbiAgLnVzZShwaXBlbGluZVJ1bilcbiAgLnVzZShwaXBlbGluZVN0cmluZ2lmeSlcblxuZnVuY3Rpb24gcGlwZWxpbmVQYXJzZShwLCBjdHgpIHtcbiAgY3R4LnRyZWUgPSBwLnBhcnNlKGN0eC5maWxlKVxufVxuXG5mdW5jdGlvbiBwaXBlbGluZVJ1bihwLCBjdHgsIG5leHQpIHtcbiAgcC5ydW4oY3R4LnRyZWUsIGN0eC5maWxlLCBkb25lKVxuXG4gIGZ1bmN0aW9uIGRvbmUoZXJyLCB0cmVlLCBmaWxlKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgbmV4dChlcnIpXG4gICAgfSBlbHNlIHtcbiAgICAgIGN0eC50cmVlID0gdHJlZVxuICAgICAgY3R4LmZpbGUgPSBmaWxlXG4gICAgICBuZXh0KClcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcGlwZWxpbmVTdHJpbmdpZnkocCwgY3R4KSB7XG4gIGN0eC5maWxlLmNvbnRlbnRzID0gcC5zdHJpbmdpZnkoY3R4LnRyZWUsIGN0eC5maWxlKVxufVxuXG4vLyBGdW5jdGlvbiB0byBjcmVhdGUgdGhlIGZpcnN0IHByb2Nlc3Nvci5cbmZ1bmN0aW9uIHVuaWZpZWQoKSB7XG4gIHZhciBhdHRhY2hlcnMgPSBbXVxuICB2YXIgdHJhbnNmb3JtZXJzID0gdHJvdWdoKClcbiAgdmFyIG5hbWVzcGFjZSA9IHt9XG4gIHZhciBmcm96ZW4gPSBmYWxzZVxuICB2YXIgZnJlZXplSW5kZXggPSAtMVxuXG4gIC8vIERhdGEgbWFuYWdlbWVudC5cbiAgcHJvY2Vzc29yLmRhdGEgPSBkYXRhXG5cbiAgLy8gTG9jay5cbiAgcHJvY2Vzc29yLmZyZWV6ZSA9IGZyZWV6ZVxuXG4gIC8vIFBsdWdpbnMuXG4gIHByb2Nlc3Nvci5hdHRhY2hlcnMgPSBhdHRhY2hlcnNcbiAgcHJvY2Vzc29yLnVzZSA9IHVzZVxuXG4gIC8vIEFQSS5cbiAgcHJvY2Vzc29yLnBhcnNlID0gcGFyc2VcbiAgcHJvY2Vzc29yLnN0cmluZ2lmeSA9IHN0cmluZ2lmeVxuICBwcm9jZXNzb3IucnVuID0gcnVuXG4gIHByb2Nlc3Nvci5ydW5TeW5jID0gcnVuU3luY1xuICBwcm9jZXNzb3IucHJvY2VzcyA9IHByb2Nlc3NcbiAgcHJvY2Vzc29yLnByb2Nlc3NTeW5jID0gcHJvY2Vzc1N5bmNcblxuICAvLyBFeHBvc2UuXG4gIHJldHVybiBwcm9jZXNzb3JcblxuICAvLyBDcmVhdGUgYSBuZXcgcHJvY2Vzc29yIGJhc2VkIG9uIHRoZSBwcm9jZXNzb3IgaW4gdGhlIGN1cnJlbnQgc2NvcGUuXG4gIGZ1bmN0aW9uIHByb2Nlc3NvcigpIHtcbiAgICB2YXIgZGVzdGluYXRpb24gPSB1bmlmaWVkKClcbiAgICB2YXIgbGVuZ3RoID0gYXR0YWNoZXJzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgZGVzdGluYXRpb24udXNlLmFwcGx5KG51bGwsIGF0dGFjaGVyc1tpbmRleF0pXG4gICAgfVxuXG4gICAgZGVzdGluYXRpb24uZGF0YShleHRlbmQodHJ1ZSwge30sIG5hbWVzcGFjZSkpXG5cbiAgICByZXR1cm4gZGVzdGluYXRpb25cbiAgfVxuXG4gIC8vIEZyZWV6ZTogdXNlZCB0byBzaWduYWwgYSBwcm9jZXNzb3IgdGhhdCBoYXMgZmluaXNoZWQgY29uZmlndXJhdGlvbi5cbiAgLy9cbiAgLy8gRm9yIGV4YW1wbGUsIHRha2UgdW5pZmllZCBpdHNlbGY6IGl04oCZcyBmcm96ZW4uXG4gIC8vIFBsdWdpbnMgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byBpdC5cbiAgLy8gUmF0aGVyLCBpdCBzaG91bGQgYmUgZXh0ZW5kZWQsIGJ5IGludm9raW5nIGl0LCBiZWZvcmUgbW9kaWZ5aW5nIGl0LlxuICAvL1xuICAvLyBJbiBlc3NlbmNlLCBhbHdheXMgaW52b2tlIHRoaXMgd2hlbiBleHBvcnRpbmcgYSBwcm9jZXNzb3IuXG4gIGZ1bmN0aW9uIGZyZWV6ZSgpIHtcbiAgICB2YXIgdmFsdWVzXG4gICAgdmFyIHBsdWdpblxuICAgIHZhciBvcHRpb25zXG4gICAgdmFyIHRyYW5zZm9ybWVyXG5cbiAgICBpZiAoZnJvemVuKSB7XG4gICAgICByZXR1cm4gcHJvY2Vzc29yXG4gICAgfVxuXG4gICAgd2hpbGUgKCsrZnJlZXplSW5kZXggPCBhdHRhY2hlcnMubGVuZ3RoKSB7XG4gICAgICB2YWx1ZXMgPSBhdHRhY2hlcnNbZnJlZXplSW5kZXhdXG4gICAgICBwbHVnaW4gPSB2YWx1ZXNbMF1cbiAgICAgIG9wdGlvbnMgPSB2YWx1ZXNbMV1cbiAgICAgIHRyYW5zZm9ybWVyID0gbnVsbFxuXG4gICAgICBpZiAob3B0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMgPT09IHRydWUpIHtcbiAgICAgICAgdmFsdWVzWzFdID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIHRyYW5zZm9ybWVyID0gcGx1Z2luLmFwcGx5KHByb2Nlc3NvciwgdmFsdWVzLnNsaWNlKDEpKVxuXG4gICAgICBpZiAodHlwZW9mIHRyYW5zZm9ybWVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRyYW5zZm9ybWVycy51c2UodHJhbnNmb3JtZXIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnJvemVuID0gdHJ1ZVxuICAgIGZyZWV6ZUluZGV4ID0gSW5maW5pdHlcblxuICAgIHJldHVybiBwcm9jZXNzb3JcbiAgfVxuXG4gIC8vIERhdGEgbWFuYWdlbWVudC5cbiAgLy8gR2V0dGVyIC8gc2V0dGVyIGZvciBwcm9jZXNzb3Itc3BlY2lmaWMgaW5mb3JtdGlvbi5cbiAgZnVuY3Rpb24gZGF0YShrZXksIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBTZXQgYGtleWAuXG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBhc3NlcnRVbmZyb3plbignZGF0YScsIGZyb3plbilcblxuICAgICAgICBuYW1lc3BhY2Vba2V5XSA9IHZhbHVlXG5cbiAgICAgICAgcmV0dXJuIHByb2Nlc3NvclxuICAgICAgfVxuXG4gICAgICAvLyBHZXQgYGtleWAuXG4gICAgICByZXR1cm4gKG93bi5jYWxsKG5hbWVzcGFjZSwga2V5KSAmJiBuYW1lc3BhY2Vba2V5XSkgfHwgbnVsbFxuICAgIH1cblxuICAgIC8vIFNldCBzcGFjZS5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBhc3NlcnRVbmZyb3plbignZGF0YScsIGZyb3plbilcbiAgICAgIG5hbWVzcGFjZSA9IGtleVxuICAgICAgcmV0dXJuIHByb2Nlc3NvclxuICAgIH1cblxuICAgIC8vIEdldCBzcGFjZS5cbiAgICByZXR1cm4gbmFtZXNwYWNlXG4gIH1cblxuICAvLyBQbHVnaW4gbWFuYWdlbWVudC5cbiAgLy9cbiAgLy8gUGFzcyBpdDpcbiAgLy8gKiAgIGFuIGF0dGFjaGVyIGFuZCBvcHRpb25zLFxuICAvLyAqICAgYSBwcmVzZXQsXG4gIC8vICogICBhIGxpc3Qgb2YgcHJlc2V0cywgYXR0YWNoZXJzLCBhbmQgYXJndW1lbnRzIChsaXN0IG9mIGF0dGFjaGVycyBhbmRcbiAgLy8gICAgIG9wdGlvbnMpLlxuICBmdW5jdGlvbiB1c2UodmFsdWUpIHtcbiAgICB2YXIgc2V0dGluZ3NcblxuICAgIGFzc2VydFVuZnJvemVuKCd1c2UnLCBmcm96ZW4pXG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gRW1wdHkuXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGFkZFBsdWdpbi5hcHBseShudWxsLCBhcmd1bWVudHMpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoJ2xlbmd0aCcgaW4gdmFsdWUpIHtcbiAgICAgICAgYWRkTGlzdCh2YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZFByZXNldCh2YWx1ZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgJyArIHZhbHVlICsgJ2AnKVxuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgbmFtZXNwYWNlLnNldHRpbmdzID0gZXh0ZW5kKG5hbWVzcGFjZS5zZXR0aW5ncyB8fCB7fSwgc2V0dGluZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2Nlc3NvclxuXG4gICAgZnVuY3Rpb24gYWRkUHJlc2V0KHJlc3VsdCkge1xuICAgICAgYWRkTGlzdChyZXN1bHQucGx1Z2lucylcblxuICAgICAgaWYgKHJlc3VsdC5zZXR0aW5ncykge1xuICAgICAgICBzZXR0aW5ncyA9IGV4dGVuZChzZXR0aW5ncyB8fCB7fSwgcmVzdWx0LnNldHRpbmdzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBhZGRQbHVnaW4odmFsdWUpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKCdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgICAgICAgYWRkUGx1Z2luLmFwcGx5KG51bGwsIHZhbHVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZFByZXNldCh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgJyArIHZhbHVlICsgJ2AnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZExpc3QocGx1Z2lucykge1xuICAgICAgdmFyIGxlbmd0aFxuICAgICAgdmFyIGluZGV4XG5cbiAgICAgIGlmIChwbHVnaW5zID09PSBudWxsIHx8IHBsdWdpbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBFbXB0eS5cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbnMgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHBsdWdpbnMpIHtcbiAgICAgICAgbGVuZ3RoID0gcGx1Z2lucy5sZW5ndGhcbiAgICAgICAgaW5kZXggPSAtMVxuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYWRkKHBsdWdpbnNbaW5kZXhdKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgbGlzdCBvZiBwbHVnaW5zLCBub3QgYCcgKyBwbHVnaW5zICsgJ2AnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFBsdWdpbihwbHVnaW4sIHZhbHVlKSB7XG4gICAgICB2YXIgZW50cnkgPSBmaW5kKHBsdWdpbilcblxuICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIGlmIChwbGFpbihlbnRyeVsxXSkgJiYgcGxhaW4odmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUgPSBleHRlbmQoZW50cnlbMV0sIHZhbHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgZW50cnlbMV0gPSB2YWx1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXR0YWNoZXJzLnB1c2goc2xpY2UuY2FsbChhcmd1bWVudHMpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmQocGx1Z2luKSB7XG4gICAgdmFyIGxlbmd0aCA9IGF0dGFjaGVycy5sZW5ndGhcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciBlbnRyeVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gYXR0YWNoZXJzW2luZGV4XVxuXG4gICAgICBpZiAoZW50cnlbMF0gPT09IHBsdWdpbikge1xuICAgICAgICByZXR1cm4gZW50cnlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZSBhIGZpbGUgKGluIHN0cmluZyBvciB2ZmlsZSByZXByZXNlbnRhdGlvbikgaW50byBhIHVuaXN0IG5vZGUgdXNpbmdcbiAgLy8gdGhlIGBQYXJzZXJgIG9uIHRoZSBwcm9jZXNzb3IuXG4gIGZ1bmN0aW9uIHBhcnNlKGRvYykge1xuICAgIHZhciBmaWxlID0gdmZpbGUoZG9jKVxuICAgIHZhciBQYXJzZXJcblxuICAgIGZyZWV6ZSgpXG4gICAgUGFyc2VyID0gcHJvY2Vzc29yLlBhcnNlclxuICAgIGFzc2VydFBhcnNlcigncGFyc2UnLCBQYXJzZXIpXG5cbiAgICBpZiAobmV3YWJsZShQYXJzZXIsICdwYXJzZScpKSB7XG4gICAgICByZXR1cm4gbmV3IFBhcnNlcihTdHJpbmcoZmlsZSksIGZpbGUpLnBhcnNlKClcbiAgICB9XG5cbiAgICByZXR1cm4gUGFyc2VyKFN0cmluZyhmaWxlKSwgZmlsZSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG4gIH1cblxuICAvLyBSdW4gdHJhbnNmb3JtcyBvbiBhIHVuaXN0IG5vZGUgcmVwcmVzZW50YXRpb24gb2YgYSBmaWxlIChpbiBzdHJpbmcgb3JcbiAgLy8gdmZpbGUgcmVwcmVzZW50YXRpb24pLCBhc3luYy5cbiAgZnVuY3Rpb24gcnVuKG5vZGUsIGZpbGUsIGNiKSB7XG4gICAgYXNzZXJ0Tm9kZShub2RlKVxuICAgIGZyZWV6ZSgpXG5cbiAgICBpZiAoIWNiICYmIHR5cGVvZiBmaWxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYiA9IGZpbGVcbiAgICAgIGZpbGUgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKCFjYikge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGV4ZWN1dG9yKVxuICAgIH1cblxuICAgIGV4ZWN1dG9yKG51bGwsIGNiKVxuXG4gICAgZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB0cmFuc2Zvcm1lcnMucnVuKG5vZGUsIHZmaWxlKGZpbGUpLCBkb25lKVxuXG4gICAgICBmdW5jdGlvbiBkb25lKGVyciwgdHJlZSwgZmlsZSkge1xuICAgICAgICB0cmVlID0gdHJlZSB8fCBub2RlXG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmUpIHtcbiAgICAgICAgICByZXNvbHZlKHRyZWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2IobnVsbCwgdHJlZSwgZmlsZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJ1biB0cmFuc2Zvcm1zIG9uIGEgdW5pc3Qgbm9kZSByZXByZXNlbnRhdGlvbiBvZiBhIGZpbGUgKGluIHN0cmluZyBvclxuICAvLyB2ZmlsZSByZXByZXNlbnRhdGlvbiksIHN5bmMuXG4gIGZ1bmN0aW9uIHJ1blN5bmMobm9kZSwgZmlsZSkge1xuICAgIHZhciBjb21wbGV0ZSA9IGZhbHNlXG4gICAgdmFyIHJlc3VsdFxuXG4gICAgcnVuKG5vZGUsIGZpbGUsIGRvbmUpXG5cbiAgICBhc3NlcnREb25lKCdydW5TeW5jJywgJ3J1bicsIGNvbXBsZXRlKVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuXG4gICAgZnVuY3Rpb24gZG9uZShlcnIsIHRyZWUpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYmFpbChlcnIpXG4gICAgICByZXN1bHQgPSB0cmVlXG4gICAgfVxuICB9XG5cbiAgLy8gU3RyaW5naWZ5IGEgdW5pc3Qgbm9kZSByZXByZXNlbnRhdGlvbiBvZiBhIGZpbGUgKGluIHN0cmluZyBvciB2ZmlsZVxuICAvLyByZXByZXNlbnRhdGlvbikgaW50byBhIHN0cmluZyB1c2luZyB0aGUgYENvbXBpbGVyYCBvbiB0aGUgcHJvY2Vzc29yLlxuICBmdW5jdGlvbiBzdHJpbmdpZnkobm9kZSwgZG9jKSB7XG4gICAgdmFyIGZpbGUgPSB2ZmlsZShkb2MpXG4gICAgdmFyIENvbXBpbGVyXG5cbiAgICBmcmVlemUoKVxuICAgIENvbXBpbGVyID0gcHJvY2Vzc29yLkNvbXBpbGVyXG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3N0cmluZ2lmeScsIENvbXBpbGVyKVxuICAgIGFzc2VydE5vZGUobm9kZSlcblxuICAgIGlmIChuZXdhYmxlKENvbXBpbGVyLCAnY29tcGlsZScpKSB7XG4gICAgICByZXR1cm4gbmV3IENvbXBpbGVyKG5vZGUsIGZpbGUpLmNvbXBpbGUoKVxuICAgIH1cblxuICAgIHJldHVybiBDb21waWxlcihub2RlLCBmaWxlKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcbiAgfVxuXG4gIC8vIFBhcnNlIGEgZmlsZSAoaW4gc3RyaW5nIG9yIHZmaWxlIHJlcHJlc2VudGF0aW9uKSBpbnRvIGEgdW5pc3Qgbm9kZSB1c2luZ1xuICAvLyB0aGUgYFBhcnNlcmAgb24gdGhlIHByb2Nlc3NvciwgdGhlbiBydW4gdHJhbnNmb3JtcyBvbiB0aGF0IG5vZGUsIGFuZFxuICAvLyBjb21waWxlIHRoZSByZXN1bHRpbmcgbm9kZSB1c2luZyB0aGUgYENvbXBpbGVyYCBvbiB0aGUgcHJvY2Vzc29yLCBhbmRcbiAgLy8gc3RvcmUgdGhhdCByZXN1bHQgb24gdGhlIHZmaWxlLlxuICBmdW5jdGlvbiBwcm9jZXNzKGRvYywgY2IpIHtcbiAgICBmcmVlemUoKVxuICAgIGFzc2VydFBhcnNlcigncHJvY2VzcycsIHByb2Nlc3Nvci5QYXJzZXIpXG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3Byb2Nlc3MnLCBwcm9jZXNzb3IuQ29tcGlsZXIpXG5cbiAgICBpZiAoIWNiKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZXhlY3V0b3IpXG4gICAgfVxuXG4gICAgZXhlY3V0b3IobnVsbCwgY2IpXG5cbiAgICBmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBmaWxlID0gdmZpbGUoZG9jKVxuXG4gICAgICBwaXBlbGluZS5ydW4ocHJvY2Vzc29yLCB7ZmlsZTogZmlsZX0sIGRvbmUpXG5cbiAgICAgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmUpIHtcbiAgICAgICAgICByZXNvbHZlKGZpbGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2IobnVsbCwgZmlsZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByb2Nlc3MgdGhlIGdpdmVuIGRvY3VtZW50IChpbiBzdHJpbmcgb3IgdmZpbGUgcmVwcmVzZW50YXRpb24pLCBzeW5jLlxuICBmdW5jdGlvbiBwcm9jZXNzU3luYyhkb2MpIHtcbiAgICB2YXIgY29tcGxldGUgPSBmYWxzZVxuICAgIHZhciBmaWxlXG5cbiAgICBmcmVlemUoKVxuICAgIGFzc2VydFBhcnNlcigncHJvY2Vzc1N5bmMnLCBwcm9jZXNzb3IuUGFyc2VyKVxuICAgIGFzc2VydENvbXBpbGVyKCdwcm9jZXNzU3luYycsIHByb2Nlc3Nvci5Db21waWxlcilcbiAgICBmaWxlID0gdmZpbGUoZG9jKVxuXG4gICAgcHJvY2VzcyhmaWxlLCBkb25lKVxuXG4gICAgYXNzZXJ0RG9uZSgncHJvY2Vzc1N5bmMnLCAncHJvY2VzcycsIGNvbXBsZXRlKVxuXG4gICAgcmV0dXJuIGZpbGVcblxuICAgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7XG4gICAgICBjb21wbGV0ZSA9IHRydWVcbiAgICAgIGJhaWwoZXJyKVxuICAgIH1cbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgdmFsdWVgIGlzIGEgY29uc3RydWN0b3IuXG5mdW5jdGlvbiBuZXdhYmxlKHZhbHVlLCBuYW1lKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmXG4gICAgdmFsdWUucHJvdG90eXBlICYmXG4gICAgLy8gQSBmdW5jdGlvbiB3aXRoIGtleXMgaW4gaXRzIHByb3RvdHlwZSBpcyBwcm9iYWJseSBhIGNvbnN0cnVjdG9yLlxuICAgIC8vIENsYXNzZXPigJkgcHJvdG90eXBlIG1ldGhvZHMgYXJlIG5vdCBlbnVtZXJhYmxlLCBzbyB3ZSBjaGVjayBpZiBzb21lIHZhbHVlXG4gICAgLy8gZXhpc3RzIGluIHRoZSBwcm90b3R5cGUuXG4gICAgKGtleXModmFsdWUucHJvdG90eXBlKSB8fCBuYW1lIGluIHZhbHVlLnByb3RvdHlwZSlcbiAgKVxufVxuXG4vLyBDaGVjayBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCB3aXRoIGtleXMuXG5mdW5jdGlvbiBrZXlzKHZhbHVlKSB7XG4gIHZhciBrZXlcbiAgZm9yIChrZXkgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIEFzc2VydCBhIHBhcnNlciBpcyBhdmFpbGFibGUuXG5mdW5jdGlvbiBhc3NlcnRQYXJzZXIobmFtZSwgUGFyc2VyKSB7XG4gIGlmICh0eXBlb2YgUGFyc2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYCcgKyBuYW1lICsgJ2Agd2l0aG91dCBgUGFyc2VyYCcpXG4gIH1cbn1cblxuLy8gQXNzZXJ0IGEgY29tcGlsZXIgaXMgYXZhaWxhYmxlLlxuZnVuY3Rpb24gYXNzZXJ0Q29tcGlsZXIobmFtZSwgQ29tcGlsZXIpIHtcbiAgaWYgKHR5cGVvZiBDb21waWxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGAnICsgbmFtZSArICdgIHdpdGhvdXQgYENvbXBpbGVyYCcpXG4gIH1cbn1cblxuLy8gQXNzZXJ0IHRoZSBwcm9jZXNzb3IgaXMgbm90IGZyb3plbi5cbmZ1bmN0aW9uIGFzc2VydFVuZnJvemVuKG5hbWUsIGZyb3plbikge1xuICBpZiAoZnJvemVuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBpbnZva2UgYCcgK1xuICAgICAgICBuYW1lICtcbiAgICAgICAgJ2Agb24gYSBmcm96ZW4gcHJvY2Vzc29yLlxcbkNyZWF0ZSBhIG5ldyBwcm9jZXNzb3IgZmlyc3QsIGJ5IGludm9raW5nIGl0OiB1c2UgYHByb2Nlc3NvcigpYCBpbnN0ZWFkIG9mIGBwcm9jZXNzb3JgLidcbiAgICApXG4gIH1cbn1cblxuLy8gQXNzZXJ0IGBub2RlYCBpcyBhIHVuaXN0IG5vZGUuXG5mdW5jdGlvbiBhc3NlcnROb2RlKG5vZGUpIHtcbiAgaWYgKCFub2RlIHx8IHR5cGVvZiBub2RlLnR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBub2RlLCBnb3QgYCcgKyBub2RlICsgJ2AnKVxuICB9XG59XG5cbi8vIEFzc2VydCB0aGF0IGBjb21wbGV0ZWAgaXMgYHRydWVgLlxuZnVuY3Rpb24gYXNzZXJ0RG9uZShuYW1lLCBhc3luY05hbWUsIGNvbXBsZXRlKSB7XG4gIGlmICghY29tcGxldGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnYCcgKyBuYW1lICsgJ2AgZmluaXNoZWQgYXN5bmMuIFVzZSBgJyArIGFzeW5jTmFtZSArICdgIGluc3RlYWQnXG4gICAgKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGZyb21QYXJzZTUgPSByZXF1aXJlKCdoYXN0LXV0aWwtZnJvbS1wYXJzZTUnKVxudmFyIFBhcnNlcjUgPSByZXF1aXJlKCdwYXJzZTUvbGliL3BhcnNlcicpXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgZXJyb3JzID0gcmVxdWlyZSgnLi9lcnJvcnMuanNvbicpXG5cbnZhciBiYXNlID0gJ2h0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwYXJzZS1lcnJvci0nXG5cbnZhciBmYXRhbGl0aWVzID0gezI6IHRydWUsIDE6IGZhbHNlLCAwOiBudWxsfVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlXG5cbmZ1bmN0aW9uIHBhcnNlKG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0geHRlbmQob3B0aW9ucywgdGhpcy5kYXRhKCdzZXR0aW5ncycpKVxuICB2YXIgcG9zaXRpb24gPSBzZXR0aW5ncy5wb3NpdGlvblxuXG4gIHBvc2l0aW9uID0gdHlwZW9mIHBvc2l0aW9uID09PSAnYm9vbGVhbicgPyBwb3NpdGlvbiA6IHRydWVcblxuICB0aGlzLlBhcnNlciA9IHBhcnNlclxuXG4gIGZ1bmN0aW9uIHBhcnNlcihkb2MsIGZpbGUpIHtcbiAgICB2YXIgZm4gPSBzZXR0aW5ncy5mcmFnbWVudCA/ICdwYXJzZUZyYWdtZW50JyA6ICdwYXJzZSdcbiAgICB2YXIgb25QYXJzZUVycm9yID0gc2V0dGluZ3MuZW1pdFBhcnNlRXJyb3JzID8gb25lcnJvciA6IG51bGxcbiAgICB2YXIgcGFyc2U1ID0gbmV3IFBhcnNlcjUoe1xuICAgICAgc291cmNlQ29kZUxvY2F0aW9uSW5mbzogcG9zaXRpb24sXG4gICAgICBvblBhcnNlRXJyb3I6IG9uUGFyc2VFcnJvcixcbiAgICAgIHNjcmlwdGluZ0VuYWJsZWQ6IGZhbHNlXG4gICAgfSlcblxuICAgIHJldHVybiBmcm9tUGFyc2U1KHBhcnNlNVtmbl0oZG9jKSwge1xuICAgICAgc3BhY2U6IHNldHRpbmdzLnNwYWNlLFxuICAgICAgZmlsZTogZmlsZSxcbiAgICAgIHZlcmJvc2U6IHNldHRpbmdzLnZlcmJvc2VcbiAgICB9KVxuXG4gICAgZnVuY3Rpb24gb25lcnJvcihlcnIpIHtcbiAgICAgIHZhciBjb2RlID0gZXJyLmNvZGVcbiAgICAgIHZhciBuYW1lID0gY2FtZWxjYXNlKGNvZGUpXG4gICAgICB2YXIgc2V0dGluZyA9IHNldHRpbmdzW25hbWVdXG4gICAgICB2YXIgY29uZmlnID0gc2V0dGluZyA9PT0gdW5kZWZpbmVkIHx8IHNldHRpbmcgPT09IG51bGwgPyB0cnVlIDogc2V0dGluZ1xuICAgICAgdmFyIGxldmVsID0gdHlwZW9mIGNvbmZpZyA9PT0gJ251bWJlcicgPyBjb25maWcgOiBjb25maWcgPyAxIDogMFxuICAgICAgdmFyIHN0YXJ0ID0ge1xuICAgICAgICBsaW5lOiBlcnIuc3RhcnRMaW5lLFxuICAgICAgICBjb2x1bW46IGVyci5zdGFydENvbCxcbiAgICAgICAgb2Zmc2V0OiBlcnIuc3RhcnRPZmZzZXRcbiAgICAgIH1cbiAgICAgIHZhciBlbmQgPSB7bGluZTogZXJyLmVuZExpbmUsIGNvbHVtbjogZXJyLmVuZENvbCwgb2Zmc2V0OiBlcnIuZW5kT2Zmc2V0fVxuICAgICAgdmFyIGluZm9cbiAgICAgIHZhciBtZXNzYWdlXG5cbiAgICAgIGlmIChsZXZlbCkge1xuICAgICAgICBpbmZvID0gZXJyb3JzW25hbWVdIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHtcbiAgICAgICAgICByZWFzb246ICcnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJ1xuICAgICAgICB9XG5cbiAgICAgICAgbWVzc2FnZSA9IGZpbGUubWVzc2FnZShmb3JtYXQoaW5mby5yZWFzb24pLCB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZH0pXG4gICAgICAgIG1lc3NhZ2Uuc291cmNlID0gJ3BhcnNlLWVycm9yJ1xuICAgICAgICBtZXNzYWdlLnJ1bGVJZCA9IGNvZGVcbiAgICAgICAgbWVzc2FnZS5mYXRhbCA9IGZhdGFsaXRpZXNbbGV2ZWxdXG4gICAgICAgIG1lc3NhZ2Uubm90ZSA9IGZvcm1hdChpbmZvLmRlc2NyaXB0aW9uKVxuICAgICAgICBtZXNzYWdlLnVybCA9IGluZm8udXJsID09PSBmYWxzZSA/IG51bGwgOiBiYXNlICsgY29kZVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBmb3JtYXQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyVjKD86LShcXGQrKSk/L2csIGNoYXIpLnJlcGxhY2UoLyV4L2csIGVuY29kZWRDaGFyKVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjaGFyKCQwLCAkMSkge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gJDEgPyAtcGFyc2VJbnQoJDEsIDEwKSA6IDBcbiAgICAgICAgdmFyIGNoYXIgPSBkb2MuY2hhckF0KGVyci5zdGFydE9mZnNldCArIG9mZnNldClcbiAgICAgICAgcmV0dXJuIGNoYXIgPT09ICdgJyA/ICdgIGAgYCcgOiBjaGFyXG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGVuY29kZWRDaGFyKCkge1xuICAgICAgICB2YXIgY2hhciA9IGRvY1xuICAgICAgICAgIC5jaGFyQ29kZUF0KGVyci5zdGFydE9mZnNldClcbiAgICAgICAgICAudG9TdHJpbmcoMTYpXG4gICAgICAgICAgLnRvVXBwZXJDYXNlKClcblxuICAgICAgICByZXR1cm4gJzB4JyArIGNoYXJcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtZWxjYXNlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8tW2Etel0vZywgcmVwbGFjZXIpXG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VyKCQwKSB7XG4gIHJldHVybiAkMC5jaGFyQXQoMSkudG9VcHBlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaXNFbGVtZW50XG5cbi8vIENoZWNrIGlmIGlmIGBub2RlYCBpcyBhbiBgZWxlbWVudGAgYW5kLCBpZiBgdGFnTmFtZXNgIGlzIGdpdmVuLCBgbm9kZWBcbi8vIG1hdGNoZXMgdGhlbSBgdGFnTmFtZXNgLlxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUsIHRhZ05hbWVzKSB7XG4gIHZhciBuYW1lXG5cbiAgaWYgKFxuICAgICEoXG4gICAgICB0YWdOYW1lcyA9PT0gbnVsbCB8fFxuICAgICAgdGFnTmFtZXMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdHlwZW9mIHRhZ05hbWVzID09PSAnc3RyaW5nJyB8fFxuICAgICAgKHR5cGVvZiB0YWdOYW1lcyA9PT0gJ29iamVjdCcgJiYgdGFnTmFtZXMubGVuZ3RoICE9PSAwKVxuICAgIClcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0V4cGVjdGVkIGBzdHJpbmdgIG9yIGBBcnJheS48c3RyaW5nPmAgZm9yIGB0YWdOYW1lc2AsIG5vdCBgJyArXG4gICAgICAgIHRhZ05hbWVzICtcbiAgICAgICAgJ2AnXG4gICAgKVxuICB9XG5cbiAgaWYgKFxuICAgICFub2RlIHx8XG4gICAgdHlwZW9mIG5vZGUgIT09ICdvYmplY3QnIHx8XG4gICAgbm9kZS50eXBlICE9PSAnZWxlbWVudCcgfHxcbiAgICB0eXBlb2Ygbm9kZS50YWdOYW1lICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh0YWdOYW1lcyA9PT0gbnVsbCB8fCB0YWdOYW1lcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5hbWUgPSBub2RlLnRhZ05hbWVcblxuICBpZiAodHlwZW9mIHRhZ05hbWVzID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBuYW1lID09PSB0YWdOYW1lc1xuICB9XG5cbiAgcmV0dXJuIHRhZ05hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRBZnRlclxuXG5mdW5jdGlvbiBmaW5kQWZ0ZXIocGFyZW50LCBpbmRleCwgdGVzdCkge1xuICB2YXIgaXMgPSBjb252ZXJ0KHRlc3QpXG4gIHZhciBjaGlsZHJlblxuICB2YXIgY2hpbGRcbiAgdmFyIGxlbmd0aFxuXG4gIGlmICghcGFyZW50IHx8ICFwYXJlbnQudHlwZSB8fCAhcGFyZW50LmNoaWxkcmVuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBwYXJlbnQgbm9kZScpXG4gIH1cblxuICBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlblxuICBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICBpZiAoaW5kZXggJiYgaW5kZXgudHlwZSkge1xuICAgIGluZGV4ID0gY2hpbGRyZW4uaW5kZXhPZihpbmRleClcbiAgfVxuXG4gIGlmIChpc05hTihpbmRleCkgfHwgaW5kZXggPCAwIHx8IGluZGV4ID09PSBJbmZpbml0eSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgcG9zaXRpdmUgZmluaXRlIGluZGV4IG9yIGNoaWxkIG5vZGUnKVxuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGlsZCA9IGNoaWxkcmVuW2luZGV4XVxuXG4gICAgaWYgKGlzKGNoaWxkLCBpbmRleCwgcGFyZW50KSkge1xuICAgICAgcmV0dXJuIGNoaWxkXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpXG52YXIgaXMgPSByZXF1aXJlKCdoYXN0LXV0aWwtaXMtZWxlbWVudCcpXG52YXIgZmluZEFmdGVyID0gcmVxdWlyZSgndW5pc3QtdXRpbC1maW5kLWFmdGVyJylcblxubW9kdWxlLmV4cG9ydHMgPSB0b1RleHRcblxuLy8gTWV0aG9kcy5cbnZhciBtaW4gPSBNYXRoLm1pblxudmFyIG1heCA9IE1hdGgubWF4XG5cbi8vIFdoaXRlIHNwYWNlIGNvZGVzLlxudmFyIHRhYiA9IDB4OVxudmFyIHNwYWNlID0gMHgyMFxudmFyIHplcm9XaWR0aFNwYWNlID0gMHgyMDBiXG5cbi8vIEJpZGkgY29udHJvbCBjaGFyYWN0ZXJzIGNvZGVzLlxudmFyIGFsbSA9IDB4NjFjXG52YXIgbHRyID0gMHgyMDBlXG52YXIgcnRsID0gMHgyMDBmXG52YXIgbHJlID0gMHgyMDJhXG52YXIgcmxlID0gMHgyMDJiXG52YXIgcGRmID0gMHgyMDJjXG52YXIgbHJvID0gMHgyMDJkXG52YXIgcmxvID0gMHgyMDJlXG52YXIgbHJpID0gMHgyMDY2XG52YXIgcmxpID0gMHgyMDY3XG52YXIgZnNpID0gMHgyMDY4XG52YXIgcGRpID0gMHgyMDY5XG5cbi8vIENoYXJhY3RlcnMuXG52YXIgdGFiQ2hhciA9ICdcXHQnXG52YXIgbGluZUZlZWRDaGFyID0gJ1xcbidcbnZhciBzcGFjZUNoYXIgPSAnICdcblxuLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIGBpbm5lclRleHRgIGdldHRlcjpcbi8vIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtaW5uZXJ0ZXh0LWlkbC1hdHRyaWJ1dGU+XG4vLyBOb3RlIHRoYXQgd2UgYWN0IGFzIGlmIGBub2RlYCBpcyBiZWluZyByZW5kZXJlZCwgYW5kIGFzIGlmIHdl4oCZcmUgYVxuLy8gQ1NTLXN1cHBvcnRpbmcgdXNlciBhZ2VudC5cbmZ1bmN0aW9uIHRvVGV4dChub2RlKSB7XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gfHwgW11cbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuICB2YXIgYmxvY2sgPSBibG9ja09yQ2FwdGlvbihub2RlKVxuICB2YXIgd2hpdGVTcGFjZSA9IGluZmVyV2hpdGVTcGFjZShub2RlLCB7fSlcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHJlc3VsdHNcbiAgdmFyIGN1cnJlbnRcbiAgdmFyIHJlc3VsdFxuICB2YXIgdmFsdWVcbiAgdmFyIGNvdW50XG5cbiAgLy8gVHJlYXQgYHRleHRgIGFuZCBgY29tbWVudGAgYXMgaGF2aW5nIG5vcm1hbCB3aGl0ZS1zcGFjZS5cbiAgLy8gVGhpcyBkZXZpYXRlcyBmcm9tIHRoZSBzcGVjIGFzIGluIHRoZSBET00gdGhlIG5vZGXigJlzIGAuZGF0YWAgaGFzIHRvIGJlXG4gIC8vIHJldHVybmVkLlxuICAvLyBJZiB5b3Ugd2FudCB0aGF0IGJlaGF2aW9yIHVzZSBgaGFzdC11dGlsLXRvLXN0cmluZ2AuXG4gIC8vIEFsbCBvdGhlciBub2RlcyBhcmUgbGF0ZXIgaGFuZGxlZCBhcyBpZiB0aGV5IGFyZSBgZWxlbWVudGBzIChzbyB0aGVcbiAgLy8gYWxnb3JpdGhtIGFsc28gd29ya3Mgb24gYSBgcm9vdGApLlxuICAvLyBOb2RlcyB3aXRob3V0IGNoaWxkcmVuIGFyZSB0cmVhdGVkIGFzIGEgdm9pZCBlbGVtZW50LCBzbyBgZG9jdHlwZWAgaXMgdGh1c1xuICAvLyBpZ25vcmVkLlxuICBpZiAobm9kZS50eXBlID09PSAndGV4dCcgfHwgbm9kZS50eXBlID09PSAnY29tbWVudCcpIHtcbiAgICByZXR1cm4gY29sbGVjdFRleHQobm9kZSwge1xuICAgICAgd2hpdGVTcGFjZTogd2hpdGVTcGFjZSxcbiAgICAgIGJyZWFrQmVmb3JlOiB0cnVlLFxuICAgICAgYnJlYWtBZnRlcjogdHJ1ZVxuICAgIH0pXG4gIH1cblxuICAvLyAxLiAgSWYgdGhpcyBlbGVtZW50IGlzIG5vdCBiZWluZyByZW5kZXJlZCwgb3IgaWYgdGhlIHVzZXIgYWdlbnQgaXMgYVxuICAvLyAgICAgbm9uLUNTUyB1c2VyIGFnZW50LCB0aGVuIHJldHVybiB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGV4dENvbnRlbnQgSURMXG4gIC8vICAgICBhdHRyaWJ1dGUgb24gdGhpcyBlbGVtZW50LlxuICAvL1xuICAvLyAgICAgTm90ZTogd2XigJlyZSBub3Qgc3VwcG9ydGluZyBzdHlsZXNoZWV0cyBzbyB3ZeKAmXJlIGFjdGluZyBhcyBpZiB0aGUgbm9kZVxuICAvLyAgICAgaXMgcmVuZGVyZWQuXG4gIC8vXG4gIC8vICAgICBJZiB5b3Ugd2FudCB0aGF0IGJlaGF2aW9yIHVzZSBgaGFzdC11dGlsLXRvLXN0cmluZ2AuXG4gIC8vICAgICBJbXBvcnRhbnQ6IHdl4oCZbGwgaGF2ZSB0byBhY2NvdW50IGZvciB0aGlzIGxhdGVyIHRob3VnaC5cblxuICAvLyAyLiAgTGV0IHJlc3VsdHMgYmUgYSBuZXcgZW1wdHkgbGlzdC5cbiAgcmVzdWx0cyA9IFtdXG5cbiAgLy8gMy4gIEZvciBlYWNoIGNoaWxkIG5vZGUgbm9kZSBvZiB0aGlzIGVsZW1lbnQ6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgLy8gMy4xLiBMZXQgY3VycmVudCBiZSB0aGUgbGlzdCByZXN1bHRpbmcgaW4gcnVubmluZyB0aGUgaW5uZXIgdGV4dFxuICAgIC8vICAgICAgY29sbGVjdGlvbiBzdGVwcyB3aXRoIG5vZGUuXG4gICAgLy8gICAgICBFYWNoIGl0ZW0gaW4gcmVzdWx0cyB3aWxsIGVpdGhlciBiZSBhIEphdmFTY3JpcHQgc3RyaW5nIG9yIGFcbiAgICAvLyAgICAgIHBvc2l0aXZlIGludGVnZXIgKGEgcmVxdWlyZWQgbGluZSBicmVhayBjb3VudCkuXG4gICAgY3VycmVudCA9IGlubmVyVGV4dENvbGxlY3Rpb24oY2hpbGRyZW5baW5kZXhdLCBpbmRleCwgbm9kZSwge1xuICAgICAgd2hpdGVTcGFjZTogd2hpdGVTcGFjZSxcbiAgICAgIGJyZWFrQmVmb3JlOiBpbmRleCA9PT0gMCA/IGJsb2NrIDogZmFsc2UsXG4gICAgICBicmVha0FmdGVyOiBpbmRleCA9PT0gbGVuZ3RoIC0gMSA/IGJsb2NrIDogaXMoY2hpbGRyZW5baW5kZXggKyAxXSwgJ2JyJylcbiAgICB9KVxuXG4gICAgLy8gMy4yLiBGb3IgZWFjaCBpdGVtIGl0ZW0gaW4gY3VycmVudCwgYXBwZW5kIGl0ZW0gdG8gcmVzdWx0cy5cbiAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoY3VycmVudClcbiAgfVxuXG4gIC8vIDQuICBSZW1vdmUgYW55IGl0ZW1zIGZyb20gcmVzdWx0cyB0aGF0IGFyZSB0aGUgZW1wdHkgc3RyaW5nLlxuICAvLyA1LiAgUmVtb3ZlIGFueSBydW5zIG9mIGNvbnNlY3V0aXZlIHJlcXVpcmVkIGxpbmUgYnJlYWsgY291bnQgaXRlbXMgYXQgdGhlXG4gIC8vICAgICBzdGFydCBvciBlbmQgb2YgcmVzdWx0cy5cbiAgLy8gNi4gIFJlcGxhY2UgZWFjaCByZW1haW5pbmcgcnVuIG9mIGNvbnNlY3V0aXZlIHJlcXVpcmVkIGxpbmUgYnJlYWsgY291bnRcbiAgLy8gICAgIGl0ZW1zIHdpdGggYSBzdHJpbmcgY29uc2lzdGluZyBvZiBhcyBtYW55IFUrMDAwQSBMSU5FIEZFRUQgKExGKVxuICAvLyAgICAgY2hhcmFjdGVycyBhcyB0aGUgbWF4aW11bSBvZiB0aGUgdmFsdWVzIGluIHRoZSByZXF1aXJlZCBsaW5lIGJyZWFrXG4gIC8vICAgICBjb3VudCBpdGVtcy5cbiAgaW5kZXggPSAtMVxuICBsZW5ndGggPSByZXN1bHRzLmxlbmd0aFxuICByZXN1bHQgPSBbXVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFsdWUgPSByZXN1bHRzW2luZGV4XVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmIChjb3VudCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlID4gY291bnQpIHtcbiAgICAgICAgY291bnQgPSB2YWx1ZVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWUgIT09ICcnKSB7XG4gICAgICBpZiAoY291bnQpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gocmVwZWF0KGxpbmVGZWVkQ2hhciwgY291bnQpKVxuICAgICAgfVxuXG4gICAgICBjb3VudCA9IDBcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIC8vIDcuICBSZXR1cm4gdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyBpdGVtcyBpbiByZXN1bHRzLlxuICByZXR1cm4gcmVzdWx0LmpvaW4oJycpXG59XG5cbi8vIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNpbm5lci10ZXh0LWNvbGxlY3Rpb24tc3RlcHM+XG5mdW5jdGlvbiBpbm5lclRleHRDb2xsZWN0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQsIG9wdGlvbnMpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgcmV0dXJuIGNvbGxlY3RFbGVtZW50KG5vZGUsIGluZGV4LCBwYXJlbnQsIG9wdGlvbnMpXG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSAndGV4dCcpIHtcbiAgICByZXR1cm4gW1xuICAgICAgb3B0aW9ucy53aGl0ZVNwYWNlID09PSAnbm9ybWFsJ1xuICAgICAgICA/IGNvbGxlY3RUZXh0KG5vZGUsIG9wdGlvbnMpXG4gICAgICAgIDogY29sbGVjdFByZVRleHQobm9kZSwgb3B0aW9ucylcbiAgICBdXG4gIH1cblxuICByZXR1cm4gW11cbn1cblxuLy8gQ29sbGVjdCBhbiBlbGVtZW50LlxuZnVuY3Rpb24gY29sbGVjdEVsZW1lbnQobm9kZSwgaW5kZXgsIHBhcmVudCwgb3B0aW9ucykge1xuICAvLyBGaXJzdCB3ZSBpbmZlciB0aGUgYHdoaXRlLXNwYWNlYCBwcm9wZXJ0eS5cbiAgdmFyIHdoaXRlU3BhY2UgPSBpbmZlcldoaXRlU3BhY2Uobm9kZSwgb3B0aW9ucylcbiAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbiB8fCBbXVxuICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG4gIHZhciBvZmZzZXQgPSAtMVxuICB2YXIgaXRlbXMgPSBbXVxuICB2YXIgY3VycmVudFxuICB2YXIgcHJlZml4XG4gIHZhciBzdWZmaXhcblxuICAvLyBXZeKAmXJlIGlnbm9yaW5nIHBvaW50IDMsIGFuZCBleGl0aW5nIHdpdGhvdXQgYW55IGNvbnRlbnQgaGVyZSwgYmVjYXVzZSB3ZVxuICAvLyBkZXZpYXRlZCBmcm9tIHRoZSBzcGVjIGluIGB0b1RleHRgIGF0IHN0ZXAgMy5cbiAgaWYgKG5vdFJlbmRlcmVkKG5vZGUpKSB7XG4gICAgcmV0dXJuIGl0ZW1zXG4gIH1cblxuICAvLyBOb3RlOiB3ZSBmaXJzdCBkZXRlY3QgaWYgdGhlcmUgaXMgZ29pbmcgdG8gYmUgYSBicmVhayBiZWZvcmUgb3IgYWZ0ZXIgdGhlXG4gIC8vIGNvbnRlbnRzLCBhcyB0aGF0IGNoYW5nZXMgdGhlIHdoaXRlLXNwYWNlIGhhbmRsaW5nLlxuXG4gIC8vIDIuICBJZiBub2Rl4oCZcyBjb21wdXRlZCB2YWx1ZSBvZiBgdmlzaWJpbGl0eWAgaXMgbm90IGB2aXNpYmxlYCwgdGhlbiByZXR1cm5cbiAgLy8gICAgIGl0ZW1zLlxuICAvL1xuICAvLyAgICAgTm90ZTogSWdub3JlZCwgYXMgZXZlcnl0aGluZyBpcyB2aXNpYmxlIGJ5IGRlZmF1bHQgdXNlciBhZ2VudCBzdHlsZXMuXG5cbiAgLy8gMy4gIElmIG5vZGUgaXMgbm90IGJlaW5nIHJlbmRlcmVkLCB0aGVuIHJldHVybiBpdGVtcy4gWy4uLl1cbiAgLy9cbiAgLy8gICAgIE5vdGU6IFdlIGFscmVhZHkgZGlkIHRoaXMgYWJvdmUuXG5cbiAgLy8gU2VlIGBjb2xsZWN0VGV4dGAgZm9yIHN0ZXAgNC5cblxuICAvLyA1LiAgSWYgbm9kZSBpcyBhIGA8YnI+YCBlbGVtZW50LCB0aGVuIGFwcGVuZCBhIHN0cmluZyBjb250YWluaW5nIGEgc2luZ2xlXG4gIC8vICAgICBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyIHRvIGl0ZW1zLlxuICBpZiAoaXMobm9kZSwgJ2JyJykpIHtcbiAgICBzdWZmaXggPSBsaW5lRmVlZENoYXJcbiAgfVxuXG4gIC8vIDcuICBJZiBub2Rl4oCZcyBjb21wdXRlZCB2YWx1ZSBvZiBgZGlzcGxheWAgaXMgYHRhYmxlLXJvd2AsIGFuZCBub2Rl4oCZcyBDU1NcbiAgLy8gICAgIGJveCBpcyBub3QgdGhlIGxhc3QgYHRhYmxlLXJvd2AgYm94IG9mIHRoZSBuZWFyZXN0IGFuY2VzdG9yIGB0YWJsZWBcbiAgLy8gICAgIGJveCwgdGhlbiBhcHBlbmQgYSBzdHJpbmcgY29udGFpbmluZyBhIHNpbmdsZSBVKzAwMEEgTElORSBGRUVEIChMRilcbiAgLy8gICAgIGNoYXJhY3RlciB0byBpdGVtcy5cbiAgLy9cbiAgLy8gICAgIFNlZTogPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RhYmxlcy0yPlxuICAvLyAgICAgTm90ZTogbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFzIHRoaXMgZG9lcyBub3QgYWNjb3VudCBmb3IgaW1wbGljaXRcbiAgLy8gICAgIHJvd3MuXG4gIGVsc2UgaWYgKHJvdyhub2RlKSAmJiBmaW5kQWZ0ZXIocGFyZW50LCBub2RlLCByb3cpKSB7XG4gICAgc3VmZml4ID0gbGluZUZlZWRDaGFyXG4gIH1cblxuICAvLyA4LiAgSWYgbm9kZSBpcyBhIGA8cD5gIGVsZW1lbnQsIHRoZW4gYXBwZW5kIDIgKGEgcmVxdWlyZWQgbGluZSBicmVhayBjb3VudClcbiAgLy8gICAgIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBpdGVtcy5cbiAgZWxzZSBpZiAoaXMobm9kZSwgJ3AnKSkge1xuICAgIHByZWZpeCA9IDJcbiAgICBzdWZmaXggPSAyXG4gIH1cblxuICAvLyA5LiAgSWYgbm9kZeKAmXMgdXNlZCB2YWx1ZSBvZiBgZGlzcGxheWAgaXMgYmxvY2stbGV2ZWwgb3IgYHRhYmxlLWNhcHRpb25gLFxuICAvLyAgICAgdGhlbiBhcHBlbmQgMSAoYSByZXF1aXJlZCBsaW5lIGJyZWFrIGNvdW50KSBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2ZcbiAgLy8gICAgIGl0ZW1zLlxuICBlbHNlIGlmIChibG9ja09yQ2FwdGlvbihub2RlKSkge1xuICAgIHByZWZpeCA9IDFcbiAgICBzdWZmaXggPSAxXG4gIH1cblxuICAvLyAxLiAgTGV0IGl0ZW1zIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGUgaW5uZXIgdGV4dCBjb2xsZWN0aW9uIHN0ZXBzIHdpdGhcbiAgLy8gICAgIGVhY2ggY2hpbGQgbm9kZSBvZiBub2RlIGluIHRyZWUgb3JkZXIsIGFuZCB0aGVuIGNvbmNhdGVuYXRpbmcgdGhlXG4gIC8vICAgICByZXN1bHRzIHRvIGEgc2luZ2xlIGxpc3QuXG4gIHdoaWxlICgrK29mZnNldCA8IGxlbmd0aCkge1xuICAgIGN1cnJlbnQgPSBpbm5lclRleHRDb2xsZWN0aW9uKGNoaWxkcmVuW29mZnNldF0sIG9mZnNldCwgbm9kZSwge1xuICAgICAgd2hpdGVTcGFjZTogd2hpdGVTcGFjZSxcbiAgICAgIGJyZWFrQmVmb3JlOiBvZmZzZXQgPT09IDAgPyBwcmVmaXggOiBmYWxzZSxcbiAgICAgIGJyZWFrQWZ0ZXI6XG4gICAgICAgIG9mZnNldCA9PT0gbGVuZ3RoIC0gMSA/IHN1ZmZpeCA6IGlzKGNoaWxkcmVuW29mZnNldCArIDFdLCAnYnInKVxuICAgIH0pXG5cbiAgICBpdGVtcyA9IGl0ZW1zLmNvbmNhdChjdXJyZW50KVxuICB9XG5cbiAgLy8gNi4gIElmIG5vZGXigJlzIGNvbXB1dGVkIHZhbHVlIG9mIGBkaXNwbGF5YCBpcyBgdGFibGUtY2VsbGAsIGFuZCBub2Rl4oCZcyBDU1NcbiAgLy8gICAgIGJveCBpcyBub3QgdGhlIGxhc3QgYHRhYmxlLWNlbGxgIGJveCBvZiBpdHMgZW5jbG9zaW5nIGB0YWJsZS1yb3dgIGJveCxcbiAgLy8gICAgIHRoZW4gYXBwZW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBzaW5nbGUgVSswMDA5IENIQVJBQ1RFUiBUQUJVTEFUSU9OXG4gIC8vICAgICAodGFiKSBjaGFyYWN0ZXIgdG8gaXRlbXMuXG4gIC8vXG4gIC8vICAgICBTZWU6IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0YWJsZXMtMj5cbiAgaWYgKGNlbGwobm9kZSkgJiYgZmluZEFmdGVyKHBhcmVudCwgbm9kZSwgY2VsbCkpIHtcbiAgICBpdGVtcy5wdXNoKHRhYkNoYXIpXG4gIH1cblxuICAvLyBBZGQgdGhlIHByZS0gYW5kIHN1ZmZpeC5cbiAgaWYgKHByZWZpeCkge1xuICAgIGl0ZW1zLnVuc2hpZnQocHJlZml4KVxuICB9XG5cbiAgaWYgKHN1ZmZpeCkge1xuICAgIGl0ZW1zLnB1c2goc3VmZml4KVxuICB9XG5cbiAgcmV0dXJuIGl0ZW1zXG59XG5cbi8vIDQuICBJZiBub2RlIGlzIGEgVGV4dCBub2RlLCB0aGVuIGZvciBlYWNoIENTUyB0ZXh0IGJveCBwcm9kdWNlZCBieSBub2RlLFxuLy8gICAgIGluIGNvbnRlbnQgb3JkZXIsIGNvbXB1dGUgdGhlIHRleHQgb2YgdGhlIGJveCBhZnRlciBhcHBsaWNhdGlvbiBvZiB0aGVcbi8vICAgICBDU1MgYHdoaXRlLXNwYWNlYCBwcm9jZXNzaW5nIHJ1bGVzIGFuZCBgdGV4dC10cmFuc2Zvcm1gIHJ1bGVzLCBzZXRcbi8vICAgICBpdGVtcyB0byB0aGUgbGlzdCBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZ3MsIGFuZCByZXR1cm4gaXRlbXMuXG4vLyAgICAgVGhlIENTUyBgd2hpdGUtc3BhY2VgIHByb2Nlc3NpbmcgcnVsZXMgYXJlIHNsaWdodGx5IG1vZGlmaWVkOlxuLy8gICAgIGNvbGxhcHNpYmxlIHNwYWNlcyBhdCB0aGUgZW5kIG9mIGxpbmVzIGFyZSBhbHdheXMgY29sbGFwc2VkLCBidXQgdGhleVxuLy8gICAgIGFyZSBvbmx5IHJlbW92ZWQgaWYgdGhlIGxpbmUgaXMgdGhlIGxhc3QgbGluZSBvZiB0aGUgYmxvY2ssIG9yIGl0IGVuZHNcbi8vICAgICB3aXRoIGEgYnIgZWxlbWVudC5cbi8vICAgICBTb2Z0IGh5cGhlbnMgc2hvdWxkIGJlIHByZXNlcnZlZC5cbi8vXG4vLyAgICAgTm90ZTogU2VlIGBjb2xsZWN0VGV4dGAgYW5kIGBjb2xsZWN0UHJlVGV4dGAuXG4vLyAgICAgTm90ZTogd2UgZG9u4oCZdCBkZWFsIHdpdGggYHRleHQtdHJhbnNmb3JtYCwgbm8gZWxlbWVudCBoYXMgdGhhdCBieVxuLy8gICAgIGRlZmF1bHQuXG4vL1xuLy8gU2VlOiA8aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LyN3aGl0ZS1zcGFjZS1waGFzZS0xPlxuZnVuY3Rpb24gY29sbGVjdFRleHQobm9kZSwgb3B0aW9ucykge1xuICB2YXIgYnJlYWtCZWZvcmUgPSBvcHRpb25zLmJyZWFrQmVmb3JlXG4gIHZhciBicmVha0FmdGVyID0gb3B0aW9ucy5icmVha0FmdGVyXG4gIHZhciB2YWx1ZSA9IFN0cmluZyhub2RlLnZhbHVlKVxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBsaW5lcyA9IFtdXG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgbGluZVN0YXJ0XG4gIHZhciBsaW5lRW5kXG4gIHZhciBsaW5lXG4gIHZhciBuZXh0TGluZVxuICB2YXIgcXVldWVcblxuICBsaW5lU3RhcnQgPSAwXG4gIGxpbmVFbmQgPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkQ2hhcilcbiAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gdmFsdWUubGVuZ3RoIDogbGluZUVuZFxuXG4gIHdoaWxlIChsaW5lRW5kICE9PSAtMSkge1xuICAgIGxpbmUgPSB2YWx1ZS5zbGljZShsaW5lU3RhcnQsIGxpbmVFbmQpXG5cbiAgICAvLyBbLi4uXSBpZ25vcmluZyBiaWRpIGZvcm1hdHRpbmcgY2hhcmFjdGVycyAoY2hhcmFjdGVycyB3aXRoIHRoZVxuICAgIC8vIEJpZGlfQ29udHJvbCBwcm9wZXJ0eSBbVUFYOV0pIGFzIGlmIHRoZXkgd2VyZSBub3QgdGhlcmUuXG4gICAgbGluZSA9IHJlbW92ZUJpZGlDb250cm9sQ2hhcmFjdGVycyhsaW5lKVxuXG4gICAgLy8gQW55IHNlcXVlbmNlIG9mIGNvbGxhcHNpYmxlIHNwYWNlcyBhbmQgdGFicyBpbW1lZGlhdGVseSBwcmVjZWRpbmcgb3JcbiAgICAvLyBmb2xsb3dpbmcgYSBzZWdtZW50IGJyZWFrIGlzIHJlbW92ZWQuXG4gICAgbGluZSA9IHRyaW1BbmRjb2xsYXBzZVNwYWNlc0FuZFRhYnMobGluZSwgYnJlYWtCZWZvcmUsIGJyZWFrQWZ0ZXIpXG5cbiAgICAvLyBBZGQgdGhlIGxpbmUuXG4gICAgbGluZXMucHVzaChsaW5lKVxuXG4gICAgLy8gU3RvcC5cbiAgICBpZiAobGluZUVuZCA9PT0gdmFsdWUubGVuZ3RoKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGxpbmVTdGFydCA9IGxpbmVFbmQgKyAxXG4gICAgbGluZUVuZCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWRDaGFyLCBsaW5lU3RhcnQpXG4gICAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gdmFsdWUubGVuZ3RoIDogbGluZUVuZFxuICB9XG5cbiAgaW5kZXggPSAtMVxuICBsZW5ndGggPSBsaW5lcy5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuXG4gIC8vIENvbGxhcHNpYmxlIHNlZ21lbnQgYnJlYWtzIGFyZSB0cmFuc2Zvcm1lZCBmb3IgcmVuZGVyaW5nIGFjY29yZGluZyB0byB0aGVcbiAgLy8gc2VnbWVudCBicmVhayB0cmFuc2Zvcm1hdGlvbiBydWxlcy5cbiAgLy8gU28gaGVyZSB3ZSBqdW1wIHRvIDQuMS4yIG9mIFtDU1NURVhUXTpcbiAgLy8gQW55IGNvbGxhcHNpYmxlIHNlZ21lbnQgYnJlYWsgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGFub3RoZXIgY29sbGFwc2libGVcbiAgLy8gc2VnbWVudCBicmVhayBpcyByZW1vdmVkXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgbGluZSA9IGxpbmVzW2luZGV4XVxuICAgIG5leHRMaW5lID0gbGluZXNbaW5kZXggKyAxXSB8fCAnJ1xuXG4gICAgLy8gKiAgIElmIHRoZSBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIG9yIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzZWdtZW50XG4gICAgLy8gICAgIGJyZWFrIGlzIHRoZSB6ZXJvLXdpZHRoIHNwYWNlIGNoYXJhY3RlciAoVSsyMDBCKSwgdGhlbiB0aGUgYnJlYWsgaXNcbiAgICAvLyAgICAgcmVtb3ZlZCwgbGVhdmluZyBiZWhpbmQgdGhlIHplcm8td2lkdGggc3BhY2UuXG4gICAgaWYgKFxuICAgICAgbGluZS5jaGFyQ29kZUF0KGxpbmUubGVuZ3RoIC0gMSkgPT09IHplcm9XaWR0aFNwYWNlIHx8XG4gICAgICBuZXh0TGluZS5jaGFyQ29kZUF0KDApID09PSB6ZXJvV2lkdGhTcGFjZVxuICAgICkge1xuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICAgIHF1ZXVlID0gJydcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gKiAgIE90aGVyd2lzZSwgaWYgdGhlIEVhc3QgQXNpYW4gV2lkdGggcHJvcGVydHkgW1VBWDExXSBvZiBib3RoIHRoZVxuICAgIC8vICAgICBjaGFyYWN0ZXIgYmVmb3JlIGFuZCBhZnRlciB0aGUgc2VnbWVudCBicmVhayBpcyBGdWxsd2lkdGgsIFdpZGUsIG9yXG4gICAgLy8gICAgIEhhbGZ3aWR0aCAobm90IEFtYmlndW91cyksIGFuZCBuZWl0aGVyIHNpZGUgaXMgSGFuZ3VsLCB0aGVuIHRoZVxuICAgIC8vICAgICBzZWdtZW50IGJyZWFrIGlzIHJlbW92ZWQuXG4gICAgLy9cbiAgICAvLyAgICAgTm90ZTogaWdub3JlZC5cblxuICAgIC8vICogICBPdGhlcndpc2UsIGlmIHRoZSB3cml0aW5nIHN5c3RlbSBvZiB0aGUgc2VnbWVudCBicmVhayBpcyBDaGluZXNlLFxuICAgIC8vICAgICBKYXBhbmVzZSwgb3IgWWksIGFuZCB0aGUgY2hhcmFjdGVyIGJlZm9yZSBvciBhZnRlciB0aGUgc2VnbWVudCBicmVha1xuICAgIC8vICAgICBpcyBwdW5jdHVhdGlvbiBvciBhIHN5bWJvbCAoVW5pY29kZSBnZW5lcmFsIGNhdGVnb3J5IFAqIG9yIFMqKSBhbmRcbiAgICAvLyAgICAgaGFzIGFuIEVhc3QgQXNpYW4gV2lkdGggcHJvcGVydHkgb2YgQW1iaWd1b3VzLCBhbmQgdGhlIGNoYXJhY3RlciBvblxuICAgIC8vICAgICB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgc2VnbWVudCBicmVhayBpcyBGdWxsd2lkdGgsIFdpZGUsIG9yIEhhbGZ3aWR0aCxcbiAgICAvLyAgICAgYW5kIG5vdCBIYW5ndWwsIHRoZW4gdGhlIHNlZ21lbnQgYnJlYWsgaXMgcmVtb3ZlZC5cbiAgICAvL1xuICAgIC8vICAgICBOb3RlOiBpZ25vcmVkLlxuXG4gICAgLy8gKiAgIE90aGVyd2lzZSwgdGhlIHNlZ21lbnQgYnJlYWsgaXMgY29udmVydGVkIHRvIGEgc3BhY2UgKFUrMDAyMCkuXG4gICAgaWYgKGxpbmUpIHtcbiAgICAgIGlmIChxdWV1ZSkge1xuICAgICAgICByZXN1bHQucHVzaChxdWV1ZSlcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICAgIHF1ZXVlID0gc3BhY2VDaGFyXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBjb2xsZWN0UHJlVGV4dChub2RlKSB7XG4gIHJldHVybiBTdHJpbmcobm9kZS52YWx1ZSlcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQmlkaUNvbnRyb2xDaGFyYWN0ZXJzKHZhbHVlKSB7XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHJlc3VsdCA9ICcnXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXNCaWRpQ29udHJvbENoYXJhY3Rlcih2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgcmVzdWx0ICs9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLy8gMy4gIEV2ZXJ5IGNvbGxhcHNpYmxlIHRhYiBpcyBjb252ZXJ0ZWQgdG8gYSBjb2xsYXBzaWJsZSBzcGFjZSAoVSswMDIwKS5cbi8vIDQuICBBbnkgY29sbGFwc2libGUgc3BhY2UgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGFub3RoZXIgY29sbGFwc2libGVcbi8vICAgICBzcGFjZeKAlGV2ZW4gb25lIG91dHNpZGUgdGhlIGJvdW5kYXJ5IG9mIHRoZSBpbmxpbmUgY29udGFpbmluZyB0aGF0XG4vLyAgICAgc3BhY2UsIHByb3ZpZGVkIGJvdGggc3BhY2VzIGFyZSB3aXRoaW4gdGhlIHNhbWUgaW5saW5lIGZvcm1hdHRpbmdcbi8vICAgICBjb250ZXh04oCUaXMgY29sbGFwc2VkIHRvIGhhdmUgemVybyBhZHZhbmNlIHdpZHRoLiAoSXQgaXMgaW52aXNpYmxlLFxuLy8gICAgIGJ1dCByZXRhaW5zIGl0cyBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHksIGlmIGFueS4pXG5mdW5jdGlvbiB0cmltQW5kY29sbGFwc2VTcGFjZXNBbmRUYWJzKHZhbHVlLCBicmVha0JlZm9yZSwgYnJlYWtBZnRlcikge1xuICB2YXIgc3RhcnQgPSAwXG4gIHZhciBlbmRcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGNoYXJcblxuICAvLyBNb3ZlIGZvcndhcmQgcGFzdCBpbml0aWFsIHdoaXRlIHNwYWNlLlxuICB3aGlsZSAoc3RhcnQgPD0gbGVuZ3RoKSB7XG4gICAgY2hhciA9IHZhbHVlLmNoYXJDb2RlQXQoc3RhcnQpXG5cbiAgICBpZiAoY2hhciAhPT0gc3BhY2UgJiYgY2hhciAhPT0gdGFiKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN0YXJ0KytcbiAgfVxuXG4gIC8vIElmIHdl4oCZcmUgbm90IGRpcmVjdGx5IGFmdGVyIGEgc2VnbWVudCBicmVhaywgYnV0IHRoZXJlIHdhcyB3aGl0ZSBzcGFjZSxcbiAgLy8gYWRkIGFuIGVtcHR5IHZhbHVlIHRoYXQgd2lsbCBiZSB0dXJuZWQgaW50byBhIHNwYWNlLlxuICBpZiAoc3RhcnQgIT09IDAgJiYgIWJyZWFrQmVmb3JlKSB7XG4gICAgcmVzdWx0LnB1c2goJycpXG4gIH1cblxuICBlbmQgPSBuZXh0KHN0YXJ0IC0gMSlcblxuICB3aGlsZSAoc3RhcnQgPCBsZW5ndGgpIHtcbiAgICBlbmQgPSBlbmQgPT09IC0xID8gbGVuZ3RoIDogZW5kXG4gICAgcmVzdWx0LnB1c2godmFsdWUuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gICAgc3RhcnQgPSBlbmRcblxuICAgIHdoaWxlIChzdGFydCA8PSBsZW5ndGgpIHtcbiAgICAgIGNoYXIgPSB2YWx1ZS5jaGFyQ29kZUF0KHN0YXJ0KVxuXG4gICAgICBpZiAoY2hhciAhPT0gc3BhY2UgJiYgY2hhciAhPT0gdGFiKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHN0YXJ0KytcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSByZWFjaGVkIHRoZSBlbmQsIHRoZXJlIHdhcyB0cmFpbGluZyB3aGl0ZSBzcGFjZSwgYW5kIHRoZXJl4oCZcyBub1xuICAgIC8vIHNlZ21lbnQgYnJlYWsgYWZ0ZXIgdGhpcyBub2RlLCBhZGQgYW4gZW1wdHkgdmFsdWUgdGhhdCB3aWxsIGJlIHR1cm5lZFxuICAgIC8vIGludG8gYSBzcGFjZS5cbiAgICBpZiAoc3RhcnQgPT09IGxlbmd0aCAmJiBzdGFydCAhPT0gZW5kICYmICFicmVha0FmdGVyKSB7XG4gICAgICByZXN1bHQucHVzaCgnJylcbiAgICB9XG5cbiAgICBlbmQgPSBuZXh0KHN0YXJ0KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJylcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4KSB7XG4gICAgdmFyIHNwYWNlSW5kZXggPSB2YWx1ZS5pbmRleE9mKHNwYWNlQ2hhciwgaW5kZXggKyAxKVxuICAgIHZhciB0YWJJbmRleCA9IHZhbHVlLmluZGV4T2YodGFiQ2hhciwgaW5kZXggKyAxKVxuICAgIHZhciBmbiA9IHNwYWNlSW5kZXggPT09IC0xIHx8IHRhYkluZGV4ID09PSAtMSA/IG1heCA6IG1pblxuICAgIHJldHVybiBmbihzcGFjZUluZGV4LCB0YWJJbmRleClcbiAgfVxufVxuXG4vLyBXZSBkb27igJl0IHN1cHBvcnQgdm9pZCBlbGVtZW50cyBoZXJlIChzbyBgbm9iciB3YnJgIC0+IGBub3JtYWxgIGlzIGlnbm9yZWQpLlxuZnVuY3Rpb24gaW5mZXJXaGl0ZVNwYWNlKG5vZGUsIG9wdGlvbnMpIHtcbiAgdmFyIHByb3BzID0gbm9kZS5wcm9wZXJ0aWVzIHx8IHt9XG4gIHZhciBpbmhlcml0ID0gb3B0aW9ucy53aGl0ZVNwYWNlIHx8ICdub3JtYWwnXG5cbiAgc3dpdGNoIChub2RlLnRhZ05hbWUpIHtcbiAgICBjYXNlICdsaXN0aW5nJzpcbiAgICBjYXNlICdwbGFpbnRleHQnOlxuICAgIGNhc2UgJ3htcCc6XG4gICAgICByZXR1cm4gJ3ByZSdcbiAgICBjYXNlICdub2JyJzpcbiAgICAgIHJldHVybiAnbm93cmFwJ1xuICAgIGNhc2UgJ3ByZSc6XG4gICAgICByZXR1cm4gcHJvcHMud3JhcCA/ICdwcmUtd3JhcCcgOiAncHJlJ1xuICAgIGNhc2UgJ3RkJzpcbiAgICBjYXNlICd0aCc6XG4gICAgICByZXR1cm4gcHJvcHMubm9XcmFwID8gJ25vd3JhcCcgOiBpbmhlcml0XG4gICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgcmV0dXJuICdwcmUtd3JhcCdcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGluaGVyaXRcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0JpZGlDb250cm9sQ2hhcmFjdGVyKGNoYXIpIHtcbiAgc3dpdGNoIChjaGFyKSB7XG4gICAgY2FzZSBhbG06XG4gICAgY2FzZSBsdHI6XG4gICAgY2FzZSBydGw6XG4gICAgY2FzZSBscmU6XG4gICAgY2FzZSBybGU6XG4gICAgY2FzZSBwZGY6XG4gICAgY2FzZSBscm86XG4gICAgY2FzZSBybG86XG4gICAgY2FzZSBscmk6XG4gICAgY2FzZSBybGk6XG4gICAgY2FzZSBmc2k6XG4gICAgY2FzZSBwZGk6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBjZWxsKG5vZGUpIHtcbiAgcmV0dXJuIGlzKG5vZGUsIFsndGgnLCAndGQnXSlcbn1cblxuZnVuY3Rpb24gcm93KG5vZGUpIHtcbiAgcmV0dXJuIGlzKG5vZGUsIFsndHInXSlcbn1cblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdGhlLWNzcy11c2VyLWFnZW50LXN0eWxlLXNoZWV0LWFuZC1wcmVzZW50YXRpb25hbC1oaW50cz5cbmZ1bmN0aW9uIGJsb2NrT3JDYXB0aW9uKG5vZGUpIHtcbiAgcmV0dXJuIGlzKG5vZGUsIFtcbiAgICAnY2FwdGlvbicsIC8vIGB0YWJsZS1jYXB0aW9uYFxuICAgIC8vIFBhZ2VcbiAgICAnaHRtbCcsXG4gICAgJ2JvZHknLFxuICAgIC8vIEZsb3cgY29udGVudFxuICAgICdhZGRyZXNzJyxcbiAgICAnYmxvY2txdW90ZScsXG4gICAgJ2NlbnRlcicsIC8vIExlZ2FjeVxuICAgICdkaWFsb2cnLFxuICAgICdkaXYnLFxuICAgICdmaWd1cmUnLFxuICAgICdmaWdjYXB0aW9uJyxcbiAgICAnZm9vdGVyJyxcbiAgICAnZm9ybSwnLFxuICAgICdoZWFkZXInLFxuICAgICdocicsXG4gICAgJ2xlZ2VuZCcsXG4gICAgJ2xpc3RpbmcnLCAvLyBMZWdhY3lcbiAgICAnbWFpbicsXG4gICAgJ3AnLFxuICAgICdwbGFpbnRleHQnLCAvLyBMZWdhY3lcbiAgICAncHJlJyxcbiAgICAneG1wJywgLy8gTGVnYWN5XG4gICAgLy8gU2VjdGlvbnMgYW5kIGhlYWRpbmdzXG4gICAgJ2FydGljbGUnLFxuICAgICdhc2lkZScsXG4gICAgJ2gxJyxcbiAgICAnaDInLFxuICAgICdoMycsXG4gICAgJ2g0JyxcbiAgICAnaDUnLFxuICAgICdoNicsXG4gICAgJ2hncm91cCcsXG4gICAgJ25hdicsXG4gICAgJ3NlY3Rpb24nLFxuICAgIC8vIExpc3RzXG4gICAgJ2RpcicsIC8vIExlZ2FjeVxuICAgICdkZCcsXG4gICAgJ2RsJyxcbiAgICAnZHQnLFxuICAgICdtZW51JyxcbiAgICAnb2wnLFxuICAgICd1bCdcbiAgXSlcbn1cblxuLy8gTm90ZSB0aGF0IHdlIGRvbuKAmXQgbmVlZCB0byBpbmNsdWRlIHZvaWQgZWxlbWVudHMgaGVyZSBhcyB0aGV5IGRvbuKAmXQgaGF2ZSB0ZXh0LlxuLy9cbi8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS93b29vcm0vaHRtbC12b2lkLWVsZW1lbnRzPlxuZnVuY3Rpb24gbm90UmVuZGVyZWQobm9kZSkge1xuICB2YXIgcHJvcGVydGllcyA9IG5vZGUucHJvcGVydGllcyB8fCB7fVxuXG4gIHJldHVybiAoXG4gICAgLy8gTGlzdCBmcm9tOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jaGlkZGVuLWVsZW1lbnRzPlxuICAgIGlzKG5vZGUsIFtcbiAgICAgICdkYXRhbGlzdCcsXG4gICAgICAnaGVhZCcsXG4gICAgICAnbm9lbWJlZCcsXG4gICAgICAnbm9mcmFtZXMnLFxuICAgICAgJ3JwJyxcbiAgICAgICdzY3JpcHQnLFxuICAgICAgJ3N0eWxlJyxcbiAgICAgICd0ZW1wbGF0ZScsXG4gICAgICAndGl0bGUnLFxuICAgICAgLy8gQWN0IGFzIGlmIHdlIHN1cHBvcnQgc2NyaXB0aW5nLlxuICAgICAgJ25vc2NyaXB0J1xuICAgIF0pIHx8XG4gICAgLy8gSGlkZGVuIGF0dHJpYnV0ZS5cbiAgICBwcm9wZXJ0aWVzLmhpZGRlbiB8fFxuICAgIC8vIEZyb206IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNmbG93LWNvbnRlbnQtMz5cbiAgICAoaXMobm9kZSwgJ2RpYWxvZycpICYmICFwcm9wZXJ0aWVzLm9wZW4pXG4gIClcbn1cbiIsImNvbnN0IHZpc2l0ID0gcmVxdWlyZSgndW5pc3QtdXRpbC12aXNpdCcpXG5jb25zdCBrYXRleCA9IHJlcXVpcmUoJ2thdGV4JykucmVuZGVyVG9TdHJpbmdcbmNvbnN0IHVuaWZpZWQgPSByZXF1aXJlKCd1bmlmaWVkJylcbmNvbnN0IHBhcnNlID0gcmVxdWlyZSgncmVoeXBlLXBhcnNlJylcbmNvbnN0IHRvVGV4dCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC10by10ZXh0JylcblxubW9kdWxlLmV4cG9ydHMgPSByZWh5cGVLYXRleFxuXG5jb25zdCBhc3NpZ24gPSBPYmplY3QuYXNzaWduXG5cbmNvbnN0IHBhcnNlSHRtbCA9IHVuaWZpZWQoKS51c2UocGFyc2UsIHtmcmFnbWVudDogdHJ1ZSwgcG9zaXRpb246IGZhbHNlfSlcblxuY29uc3Qgc291cmNlID0gJ3JlaHlwZS1rYXRleCdcblxuZnVuY3Rpb24gcmVoeXBlS2F0ZXgob3B0aW9ucykge1xuICBjb25zdCBvcHRzID0gb3B0aW9ucyB8fCB7fVxuICBjb25zdCB0aHJvd09uRXJyb3IgPSBvcHRzLnRocm93T25FcnJvciB8fCBmYWxzZVxuXG4gIHJldHVybiB0cmFuc2Zvcm1NYXRoXG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtTWF0aCh0cmVlLCBmaWxlKSB7XG4gICAgdmlzaXQodHJlZSwgJ2VsZW1lbnQnLCBvbmVsZW1lbnQpXG5cbiAgICBmdW5jdGlvbiBvbmVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgY29uc3QgY2xhc3NlcyA9IGVsZW1lbnQucHJvcGVydGllcy5jbGFzc05hbWUgfHwgW11cbiAgICAgIGNvbnN0IGlubGluZSA9IGNsYXNzZXMuaW5jbHVkZXMoJ21hdGgtaW5saW5lJylcbiAgICAgIGNvbnN0IGRpc3BsYXlNb2RlID0gY2xhc3Nlcy5pbmNsdWRlcygnbWF0aC1kaXNwbGF5JylcblxuICAgICAgaWYgKCFpbmxpbmUgJiYgIWRpc3BsYXlNb2RlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZSA9IHRvVGV4dChlbGVtZW50KVxuXG4gICAgICBsZXQgcmVzdWx0XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGthdGV4KFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGFzc2lnbih7fSwgb3B0aW9ucywge2Rpc3BsYXlNb2RlOiBkaXNwbGF5TW9kZSwgdGhyb3dPbkVycm9yOiB0cnVlfSlcbiAgICAgICAgKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZm4gPSB0aHJvd09uRXJyb3IgPyAnZmFpbCcgOiAnbWVzc2FnZSdcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gW3NvdXJjZSwgZXJyb3IubmFtZS50b0xvd2VyQ2FzZSgpXS5qb2luKCc6JylcblxuICAgICAgICBmaWxlW2ZuXShlcnJvci5tZXNzYWdlLCBlbGVtZW50LnBvc2l0aW9uLCBvcmlnaW4pXG5cbiAgICAgICAgcmVzdWx0ID0ga2F0ZXgoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgYXNzaWduKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICBkaXNwbGF5TW9kZTogZGlzcGxheU1vZGUsXG4gICAgICAgICAgICB0aHJvd09uRXJyb3I6IGZhbHNlLFxuICAgICAgICAgICAgc3RyaWN0OiAnaWdub3JlJ1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgZWxlbWVudC5jaGlsZHJlbiA9IHBhcnNlSHRtbC5wYXJzZShyZXN1bHQpLmNoaWxkcmVuXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBpbnRlckVsZW1lbnRXaGl0ZVNwYWNlXG5cbi8vIEhUTUwgd2hpdGUtc3BhY2UgZXhwcmVzc2lvbi5cbi8vIFNlZSA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3BhY2UtY2hhcmFjdGVyPi5cbnZhciByZSA9IC9bIFxcdFxcblxcZlxccl0vZ1xuXG5mdW5jdGlvbiBpbnRlckVsZW1lbnRXaGl0ZVNwYWNlKG5vZGUpIHtcbiAgdmFyIHZhbHVlXG5cbiAgaWYgKG5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGUudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgdmFsdWUgPSBub2RlLnZhbHVlIHx8ICcnXG4gIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBub2RlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdmFsdWUucmVwbGFjZShyZSwgJycpID09PSAnJ1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZVNwYWNlID0gcmVxdWlyZSgnaGFzdC11dGlsLXdoaXRlc3BhY2UnKVxuXG5leHBvcnRzLmJlZm9yZSA9IHNpYmxpbmdzKC0xKVxuZXhwb3J0cy5hZnRlciA9IHNpYmxpbmdzKDEpXG5cbi8vIEZhY3RvcnkgdG8gY2hlY2sgc2libGluZ3MgaW4gYSBkaXJlY3Rpb24uXG5mdW5jdGlvbiBzaWJsaW5ncyhpbmNyZW1lbnQpIHtcbiAgcmV0dXJuIHNpYmxpbmdcblxuICAvLyBGaW5kIGFwcGxpY2FibGUgc2libGluZ3MgaW4gYSBkaXJlY3Rpb24uXG4gIGZ1bmN0aW9uIHNpYmxpbmcocGFyZW50LCBpbmRleCwgaW5jbHVkZVdoaXRlU3BhY2UpIHtcbiAgICB2YXIgc2libGluZ3MgPSBwYXJlbnQgJiYgcGFyZW50LmNoaWxkcmVuXG4gICAgdmFyIG5leHRcblxuICAgIGluZGV4ICs9IGluY3JlbWVudFxuICAgIG5leHQgPSBzaWJsaW5ncyAmJiBzaWJsaW5nc1tpbmRleF1cblxuICAgIGlmICghaW5jbHVkZVdoaXRlU3BhY2UpIHtcbiAgICAgIHdoaWxlIChuZXh0ICYmIHdoaXRlU3BhY2UobmV4dCkpIHtcbiAgICAgICAgaW5kZXggKz0gaW5jcmVtZW50XG4gICAgICAgIG5leHQgPSBzaWJsaW5nc1tpbmRleF1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dFxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGFmdGVyID0gcmVxdWlyZSgnLi9zaWJsaW5ncycpLmFmdGVyXG5cbm1vZHVsZS5leHBvcnRzID0gZmlyc3RcblxuLy8gR2V0IHRoZSBmaXJzdCBjaGlsZCBpbiBgcGFyZW50YC5cbmZ1bmN0aW9uIGZpcnN0KHBhcmVudCwgaW5jbHVkZVdoaXRlU3BhY2UpIHtcbiAgcmV0dXJuIGFmdGVyKHBhcmVudCwgLTEsIGluY2x1ZGVXaGl0ZVNwYWNlKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gcGxhY2VcblxuLy8gR2V0IHRoZSBwb3NpdGlvbiBvZiBgbm9kZWAgaW4gYHBhcmVudGAuXG5mdW5jdGlvbiBwbGFjZShwYXJlbnQsIGNoaWxkKSB7XG4gIHJldHVybiBwYXJlbnQgJiYgcGFyZW50LmNoaWxkcmVuICYmIHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGNoaWxkKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjb252ZXJ0ID0gcmVxdWlyZSgndW5pc3QtdXRpbC1pcy9jb252ZXJ0JylcbnZhciB3aGl0ZVNwYWNlID0gcmVxdWlyZSgnaGFzdC11dGlsLXdoaXRlc3BhY2UnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdoaXRlU3BhY2VMZWZ0XG5cbnZhciBpc1RleHQgPSBjb252ZXJ0KCd0ZXh0JylcblxuLy8gQ2hlY2sgaWYgYG5vZGVgIHN0YXJ0cyB3aXRoIHdoaXRlLXNwYWNlLlxuZnVuY3Rpb24gd2hpdGVTcGFjZUxlZnQobm9kZSkge1xuICByZXR1cm4gaXNUZXh0KG5vZGUpICYmIHdoaXRlU3BhY2Uobm9kZS52YWx1ZS5jaGFyQXQoMCkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBvbWlzc2lvblxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gRmFjdG9yeSB0byBjaGVjayBpZiBhIGdpdmVuIG5vZGUgY2FuIGhhdmUgYSB0YWcgb21pdHRlZC5cbmZ1bmN0aW9uIG9taXNzaW9uKGhhbmRsZXJzKSB7XG4gIHJldHVybiBvbWl0XG5cbiAgLy8gQ2hlY2sgaWYgYSBnaXZlbiBub2RlIGNhbiBoYXZlIGEgdGFnIG9taXR0ZWQuXG4gIGZ1bmN0aW9uIG9taXQobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICAgIHZhciBuYW1lID0gbm9kZS50YWdOYW1lXG4gICAgdmFyIGZuID0gb3duLmNhbGwoaGFuZGxlcnMsIG5hbWUpID8gaGFuZGxlcnNbbmFtZV0gOiBmYWxzZVxuXG4gICAgcmV0dXJuIGZuID8gZm4obm9kZSwgaW5kZXgsIHBhcmVudCkgOiBmYWxzZVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxudmFyIGVsZW1lbnQgPSByZXF1aXJlKCdoYXN0LXV0aWwtaXMtZWxlbWVudCcpXG52YXIgd2hpdGVTcGFjZUxlZnQgPSByZXF1aXJlKCcuL3V0aWwvd2hpdGUtc3BhY2UtbGVmdCcpXG52YXIgYWZ0ZXIgPSByZXF1aXJlKCcuL3V0aWwvc2libGluZ3MnKS5hZnRlclxudmFyIG9taXNzaW9uID0gcmVxdWlyZSgnLi9vbWlzc2lvbicpXG5cbnZhciBpc0NvbW1lbnQgPSBjb252ZXJ0KCdjb21tZW50JylcblxudmFyIG9wdGlvbkdyb3VwID0gJ29wdGdyb3VwJ1xudmFyIG9wdGlvbnMgPSBbJ29wdGlvbiddLmNvbmNhdChvcHRpb25Hcm91cClcbnZhciBkYXRhTGlzdEl0ZW0gPSBbJ2R0JywgJ2RkJ11cbnZhciBsaXN0SXRlbSA9ICdsaSdcbnZhciBtZW51Q29udGVudCA9IFsnbWVudWl0ZW0nLCAnaHInLCAnbWVudSddXG52YXIgcnVieSA9IFsncnAnLCAncnQnXVxudmFyIHRhYmxlQ29udGFpbmVyID0gWyd0Ym9keScsICd0Zm9vdCddXG52YXIgdGFibGVSb3cgPSAndHInXG52YXIgdGFibGVDZWxsID0gWyd0ZCcsICd0aCddXG5cbnZhciBjb25mdXNpbmdQYXJhZ3JhcGhQYXJlbnQgPSBbXG4gICdhJyxcbiAgJ2F1ZGlvJyxcbiAgJ2RlbCcsXG4gICdpbnMnLFxuICAnbWFwJyxcbiAgJ25vc2NyaXB0JyxcbiAgJ3ZpZGVvJ1xuXVxuXG52YXIgY2xlYXJQYXJhZ3JhcGhTaWJsaW5nID0gW1xuICAnYWRkcmVzcycsXG4gICdhcnRpY2xlJyxcbiAgJ2FzaWRlJyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnZGV0YWlscycsXG4gICdkaXYnLFxuICAnZGwnLFxuICAnZmllbGRzZXQnLFxuICAnZmlnY2FwdGlvbicsXG4gICdmaWd1cmUnLFxuICAnZm9vdGVyJyxcbiAgJ2Zvcm0nLFxuICAnaDEnLFxuICAnaDInLFxuICAnaDMnLFxuICAnaDQnLFxuICAnaDUnLFxuICAnaDYnLFxuICAnaGVhZGVyJyxcbiAgJ2hncm91cCcsXG4gICdocicsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbmF2JyxcbiAgJ29sJyxcbiAgJ3AnLFxuICAncHJlJyxcbiAgJ3NlY3Rpb24nLFxuICAndGFibGUnLFxuICAndWwnXG5dXG5cbm1vZHVsZS5leHBvcnRzID0gb21pc3Npb24oe1xuICBodG1sOiBodG1sLFxuICBoZWFkOiBoZWFkT3JDb2xncm91cE9yQ2FwdGlvbixcbiAgYm9keTogYm9keSxcbiAgcDogcCxcbiAgbGk6IGxpLFxuICBkdDogZHQsXG4gIGRkOiBkZCxcbiAgcnQ6IHJ1YnlFbGVtZW50LFxuICBycDogcnVieUVsZW1lbnQsXG4gIG9wdGdyb3VwOiBvcHRncm91cCxcbiAgb3B0aW9uOiBvcHRpb24sXG4gIG1lbnVpdGVtOiBtZW51aXRlbSxcbiAgY29sZ3JvdXA6IGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uLFxuICBjYXB0aW9uOiBoZWFkT3JDb2xncm91cE9yQ2FwdGlvbixcbiAgdGhlYWQ6IHRoZWFkLFxuICB0Ym9keTogdGJvZHksXG4gIHRmb290OiB0Zm9vdCxcbiAgdHI6IHRyLFxuICB0ZDogY2VsbHMsXG4gIHRoOiBjZWxsc1xufSlcblxuLy8gTWFjcm8gZm9yIGA8L2hlYWQ+YCwgYDwvY29sZ3JvdXA+YCwgYW5kIGA8L2NhcHRpb24+YC5cbmZ1bmN0aW9uIGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4LCB0cnVlKVxuICByZXR1cm4gIW5leHQgfHwgKCFpc0NvbW1lbnQobmV4dCkgJiYgIXdoaXRlU3BhY2VMZWZ0KG5leHQpKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvaHRtbD5gLlxuZnVuY3Rpb24gaHRtbChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuICFuZXh0IHx8ICFpc0NvbW1lbnQobmV4dClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L2JvZHk+YC5cbmZ1bmN0aW9uIGJvZHkobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCAhaXNDb21tZW50KG5leHQpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC9wPmAuXG5mdW5jdGlvbiBwKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gbmV4dFxuICAgID8gZWxlbWVudChuZXh0LCBjbGVhclBhcmFncmFwaFNpYmxpbmcpXG4gICAgOiAhcGFyZW50IHx8ICFlbGVtZW50KHBhcmVudCwgY29uZnVzaW5nUGFyYWdyYXBoUGFyZW50KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvbGk+YC5cbmZ1bmN0aW9uIGxpKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBsaXN0SXRlbSlcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L2R0PmAuXG5mdW5jdGlvbiBkdChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuIG5leHQgJiYgZWxlbWVudChuZXh0LCBkYXRhTGlzdEl0ZW0pXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC9kZD5gLlxuZnVuY3Rpb24gZGQobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIGRhdGFMaXN0SXRlbSlcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3J0PmAgb3IgYDwvcnA+YC5cbmZ1bmN0aW9uIHJ1YnlFbGVtZW50KG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBydWJ5KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvb3B0Z3JvdXA+YC5cbmZ1bmN0aW9uIG9wdGdyb3VwKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBvcHRpb25Hcm91cClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L29wdGlvbj5gLlxuZnVuY3Rpb24gb3B0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBvcHRpb25zKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvbWVudWl0ZW0+YC5cbmZ1bmN0aW9uIG1lbnVpdGVtKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBtZW51Q29udGVudClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3RoZWFkPmAuXG5mdW5jdGlvbiB0aGVhZChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuIG5leHQgJiYgZWxlbWVudChuZXh0LCB0YWJsZUNvbnRhaW5lcilcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3Rib2R5PmAuXG5mdW5jdGlvbiB0Ym9keShub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuICFuZXh0IHx8IGVsZW1lbnQobmV4dCwgdGFibGVDb250YWluZXIpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC90Zm9vdD5gLlxuZnVuY3Rpb24gdGZvb3Qobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICByZXR1cm4gIWFmdGVyKHBhcmVudCwgaW5kZXgpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC90cj5gLlxuZnVuY3Rpb24gdHIobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIHRhYmxlUm93KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvdGQ+YCBvciBgPC90aD5gLlxuZnVuY3Rpb24gY2VsbHMobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIHRhYmxlQ2VsbClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgY29udmVydCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtaXMvY29udmVydCcpXG52YXIgZWxlbWVudCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1pcy1lbGVtZW50JylcbnZhciBiZWZvcmUgPSByZXF1aXJlKCcuL3V0aWwvc2libGluZ3MnKS5iZWZvcmVcbnZhciBmaXJzdCA9IHJlcXVpcmUoJy4vdXRpbC9maXJzdCcpXG52YXIgcGxhY2UgPSByZXF1aXJlKCcuL3V0aWwvcGxhY2UnKVxudmFyIHdoaXRlU3BhY2VMZWZ0ID0gcmVxdWlyZSgnLi91dGlsL3doaXRlLXNwYWNlLWxlZnQnKVxudmFyIGNsb3NpbmcgPSByZXF1aXJlKCcuL2Nsb3NpbmcnKVxudmFyIG9taXNzaW9uID0gcmVxdWlyZSgnLi9vbWlzc2lvbicpXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG52YXIgaXNDb21tZW50ID0gY29udmVydCgnY29tbWVudCcpXG5cbnZhciB1bmlxdWVIZWFkTWV0YWRhdGEgPSBbJ3RpdGxlJywgJ2Jhc2UnXVxudmFyIG1ldGEgPSBbJ21ldGEnLCAnbGluaycsICdzY3JpcHQnLCAnc3R5bGUnLCAndGVtcGxhdGUnXVxudmFyIHRhYmxlQ29udGFpbmVycyA9IFsndGhlYWQnLCAndGJvZHknXVxudmFyIHRhYmxlUm93ID0gJ3RyJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9taXNzaW9uKHtcbiAgaHRtbDogaHRtbCxcbiAgaGVhZDogaGVhZCxcbiAgYm9keTogYm9keSxcbiAgY29sZ3JvdXA6IGNvbGdyb3VwLFxuICB0Ym9keTogdGJvZHlcbn0pXG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPGh0bWw+YC5cbmZ1bmN0aW9uIGh0bWwobm9kZSkge1xuICB2YXIgaGVhZCA9IGZpcnN0KG5vZGUpXG4gIHJldHVybiAhaGVhZCB8fCAhaXNDb21tZW50KGhlYWQpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPGhlYWQ+YC5cbmZ1bmN0aW9uIGhlYWQobm9kZSkge1xuICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuXG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcbiAgdmFyIG1hcCA9IHt9XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBjaGlsZFxuICB2YXIgbmFtZVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hpbGQgPSBjaGlsZHJlbltpbmRleF1cbiAgICBuYW1lID0gY2hpbGQudGFnTmFtZVxuXG4gICAgaWYgKGVsZW1lbnQoY2hpbGQsIHVuaXF1ZUhlYWRNZXRhZGF0YSkpIHtcbiAgICAgIGlmIChvd24uY2FsbChtYXAsIG5hbWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICBtYXBbbmFtZV0gPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIEJvb2xlYW4obGVuZ3RoKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDxib2R5PmAuXG5mdW5jdGlvbiBib2R5KG5vZGUpIHtcbiAgdmFyIGhlYWQgPSBmaXJzdChub2RlLCB0cnVlKVxuXG4gIHJldHVybiAoXG4gICAgIWhlYWQgfHwgKCFpc0NvbW1lbnQoaGVhZCkgJiYgIXdoaXRlU3BhY2VMZWZ0KGhlYWQpICYmICFlbGVtZW50KGhlYWQsIG1ldGEpKVxuICApXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPGNvbGdyb3VwPmAuXG4vLyBUaGUgc3BlYyBkZXNjcmliZXMgc29tZSBsb2dpYyBmb3IgdGhlIG9wZW5pbmcgdGFnLCBidXQgaXTigJlzIGVhc2llciB0b1xuLy8gaW1wbGVtZW50IGluIHRoZSBjbG9zaW5nIHRhZywgdG8gdGhlIHNhbWUgZWZmZWN0LCBzbyB3ZSBoYW5kbGUgaXQgdGhlcmVcbi8vIGluc3RlYWQuXG5mdW5jdGlvbiBjb2xncm91cChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBwcmV2ID0gYmVmb3JlKHBhcmVudCwgaW5kZXgpXG4gIHZhciBoZWFkID0gZmlyc3Qobm9kZSwgdHJ1ZSlcblxuICAvLyBQcmV2aW91cyBjb2xncm91cCB3YXMgYWxyZWFkeSBvbWl0dGVkLlxuICBpZiAoZWxlbWVudChwcmV2LCAnY29sZ3JvdXAnKSAmJiBjbG9zaW5nKHByZXYsIHBsYWNlKHBhcmVudCwgcHJldiksIHBhcmVudCkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBoZWFkICYmIGVsZW1lbnQoaGVhZCwgJ2NvbCcpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPHRib2R5PmAuXG5mdW5jdGlvbiB0Ym9keShub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBwcmV2ID0gYmVmb3JlKHBhcmVudCwgaW5kZXgpXG4gIHZhciBoZWFkID0gZmlyc3Qobm9kZSlcblxuICAvLyBQcmV2aW91cyB0YWJsZSBzZWN0aW9uIHdhcyBhbHJlYWR5IG9taXR0ZWQuXG4gIGlmIChcbiAgICBlbGVtZW50KHByZXYsIHRhYmxlQ29udGFpbmVycykgJiZcbiAgICBjbG9zaW5nKHByZXYsIHBsYWNlKHBhcmVudCwgcHJldiksIHBhcmVudClcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gaGVhZCAmJiBlbGVtZW50KGhlYWQsIHRhYmxlUm93KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5leHBvcnRzLm9wZW5pbmcgPSByZXF1aXJlKCcuL29wZW5pbmcnKVxuZXhwb3J0cy5jbG9zaW5nID0gcmVxdWlyZSgnLi9jbG9zaW5nJylcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgb25lID0gcmVxdWlyZSgnLi9vbmUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFsbFxuXG4vLyBTdHJpbmdpZnkgYWxsIGNoaWxkcmVuIG9mIGBwYXJlbnRgLlxuZnVuY3Rpb24gYWxsKGN0eCwgcGFyZW50KSB7XG4gIHZhciBjaGlsZHJlbiA9IHBhcmVudCAmJiBwYXJlbnQuY2hpbGRyZW5cbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcmVzdWx0cyA9IFtdXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRzW2luZGV4XSA9IG9uZShjdHgsIGNoaWxkcmVuW2luZGV4XSwgaW5kZXgsIHBhcmVudClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJycpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBoZXhhZGVjaW1hbFxuXG4vLyBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXIgY29kZSBhdCB0aGUgZmlyc3Rcbi8vIGNoYXJhY3RlciwgaXMgaGV4YWRlY2ltYWwuXG5mdW5jdGlvbiBoZXhhZGVjaW1hbChjaGFyYWN0ZXIpIHtcbiAgdmFyIGNvZGUgPSB0eXBlb2YgY2hhcmFjdGVyID09PSAnc3RyaW5nJyA/IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApIDogY2hhcmFjdGVyXG5cbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSA5NyAvKiBhICovICYmIGNvZGUgPD0gMTAyKSAvKiB6ICovIHx8XG4gICAgKGNvZGUgPj0gNjUgLyogQSAqLyAmJiBjb2RlIDw9IDcwKSAvKiBaICovIHx8XG4gICAgKGNvZGUgPj0gNDggLyogQSAqLyAmJiBjb2RlIDw9IDU3KSAvKiBaICovXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY2ltYWxcblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyIGNvZGUgYXQgdGhlIGZpcnN0XG4vLyBjaGFyYWN0ZXIsIGlzIGRlY2ltYWwuXG5mdW5jdGlvbiBkZWNpbWFsKGNoYXJhY3Rlcikge1xuICB2YXIgY29kZSA9IHR5cGVvZiBjaGFyYWN0ZXIgPT09ICdzdHJpbmcnID8gY2hhcmFjdGVyLmNoYXJDb2RlQXQoMCkgOiBjaGFyYWN0ZXJcblxuICByZXR1cm4gY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3IC8qIDAtOSAqL1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYWxwaGFiZXRpY2FsXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhbHBoYWJldGljYWwuXG5mdW5jdGlvbiBhbHBoYWJldGljYWwoY2hhcmFjdGVyKSB7XG4gIHZhciBjb2RlID0gdHlwZW9mIGNoYXJhY3RlciA9PT0gJ3N0cmluZycgPyBjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKSA6IGNoYXJhY3RlclxuXG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMjIpIC8qIGEteiAqLyB8fFxuICAgIChjb2RlID49IDY1ICYmIGNvZGUgPD0gOTApIC8qIEEtWiAqL1xuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGFscGhhYmV0aWNhbCA9IHJlcXVpcmUoJ2lzLWFscGhhYmV0aWNhbCcpXG52YXIgZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWRlY2ltYWwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFscGhhbnVtZXJpY2FsXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhbHBoYW51bWVyaWNhbC5cbmZ1bmN0aW9uIGFscGhhbnVtZXJpY2FsKGNoYXJhY3Rlcikge1xuICByZXR1cm4gYWxwaGFiZXRpY2FsKGNoYXJhY3RlcikgfHwgZGVjaW1hbChjaGFyYWN0ZXIpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGVudGl0aWVzID0gcmVxdWlyZSgnY2hhcmFjdGVyLWVudGl0aWVzLWh0bWw0JylcbnZhciBsZWdhY3kgPSByZXF1aXJlKCdjaGFyYWN0ZXItZW50aXRpZXMtbGVnYWN5JylcbnZhciBoZXhhZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWhleGFkZWNpbWFsJylcbnZhciBkZWNpbWFsID0gcmVxdWlyZSgnaXMtZGVjaW1hbCcpXG52YXIgYWxwaGFudW1lcmljYWwgPSByZXF1aXJlKCdpcy1hbHBoYW51bWVyaWNhbCcpXG52YXIgZGFuZ2Vyb3VzID0gcmVxdWlyZSgnLi9kYW5nZXJvdXMuanNvbicpXG5cbm1vZHVsZS5leHBvcnRzID0gZW5jb2RlXG5lbmNvZGUuZXNjYXBlID0gZXNjYXBlXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBMaXN0IG9mIGVuZm9yY2VkIGVzY2FwZXMuXG52YXIgZXNjYXBlcyA9IFsnXCInLCBcIidcIiwgJzwnLCAnPicsICcmJywgJ2AnXVxuXG4vLyBNYXAgb2YgY2hhcmFjdGVycyB0byBuYW1lcy5cbnZhciBjaGFyYWN0ZXJzID0gY29uc3RydWN0KClcblxuLy8gRGVmYXVsdCBlc2NhcGVzLlxudmFyIGRlZmF1bHRFc2NhcGVzID0gdG9FeHByZXNzaW9uKGVzY2FwZXMpXG5cbi8vIFN1cnJvZ2F0ZSBwYWlycy5cbnZhciBzdXJyb2dhdGVQYWlyID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl0vZ1xuXG4vLyBOb24tQVNDSUkgY2hhcmFjdGVycy5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4LCB1bmljb3JuL25vLWhleC1lc2NhcGVcbnZhciBibXAgPSAvW1xceDAxLVxcdFxceDBCXFxmXFx4MEUtXFx4MUZcXHg3RlxceDgxXFx4OERcXHg4RlxceDkwXFx4OURcXHhBMC1cXHVGRkZGXS9nXG5cbi8vIEVuY29kZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYHZhbHVlYC5cbmZ1bmN0aW9uIGVuY29kZSh2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBzdWJzZXQgPSBzZXR0aW5ncy5zdWJzZXRcbiAgdmFyIHNldCA9IHN1YnNldCA/IHRvRXhwcmVzc2lvbihzdWJzZXQpIDogZGVmYXVsdEVzY2FwZXNcbiAgdmFyIGVzY2FwZU9ubHkgPSBzZXR0aW5ncy5lc2NhcGVPbmx5XG4gIHZhciBvbWl0ID0gc2V0dGluZ3Mub21pdE9wdGlvbmFsU2VtaWNvbG9uc1xuXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShzZXQsIHJlcGxhY2UpXG5cbiAgaWYgKHN1YnNldCB8fCBlc2NhcGVPbmx5KSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByZXR1cm4gdmFsdWVcbiAgICAucmVwbGFjZShzdXJyb2dhdGVQYWlyLCByZXBsYWNlU3Vycm9nYXRlUGFpcilcbiAgICAucmVwbGFjZShibXAsIHJlcGxhY2UpXG5cbiAgZnVuY3Rpb24gcmVwbGFjZVN1cnJvZ2F0ZVBhaXIocGFpciwgcG9zLCB2YWwpIHtcbiAgICByZXR1cm4gdG9IZXhSZWZlcmVuY2UoXG4gICAgICAocGFpci5jaGFyQ29kZUF0KDApIC0gMHhkODAwKSAqIDB4NDAwICtcbiAgICAgICAgcGFpci5jaGFyQ29kZUF0KDEpIC1cbiAgICAgICAgMHhkYzAwICtcbiAgICAgICAgMHgxMDAwMCxcbiAgICAgIHZhbC5jaGFyQXQocG9zICsgMiksXG4gICAgICBvbWl0XG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZShjaGFyLCBwb3MsIHZhbCkge1xuICAgIHJldHVybiBvbmUoY2hhciwgdmFsLmNoYXJBdChwb3MgKyAxKSwgc2V0dGluZ3MpXG4gIH1cbn1cblxuLy8gU2hvcnRjdXQgdG8gZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBIVE1MLlxuZnVuY3Rpb24gZXNjYXBlKHZhbHVlKSB7XG4gIHJldHVybiBlbmNvZGUodmFsdWUsIHtlc2NhcGVPbmx5OiB0cnVlLCB1c2VOYW1lZFJlZmVyZW5jZXM6IHRydWV9KVxufVxuXG4vLyBFbmNvZGUgYGNoYXJgIGFjY29yZGluZyB0byBgb3B0aW9uc2AuXG5mdW5jdGlvbiBvbmUoY2hhciwgbmV4dCwgb3B0aW9ucykge1xuICB2YXIgc2hvcnRlc3QgPSBvcHRpb25zLnVzZVNob3J0ZXN0UmVmZXJlbmNlc1xuICB2YXIgb21pdCA9IG9wdGlvbnMub21pdE9wdGlvbmFsU2VtaWNvbG9uc1xuICB2YXIgbmFtZWRcbiAgdmFyIGNvZGVcbiAgdmFyIG51bWVyaWNcbiAgdmFyIGRlY2ltYWxcblxuICBpZiAoKHNob3J0ZXN0IHx8IG9wdGlvbnMudXNlTmFtZWRSZWZlcmVuY2VzKSAmJiBvd24uY2FsbChjaGFyYWN0ZXJzLCBjaGFyKSkge1xuICAgIG5hbWVkID0gdG9OYW1lZChjaGFyYWN0ZXJzW2NoYXJdLCBuZXh0LCBvbWl0LCBvcHRpb25zLmF0dHJpYnV0ZSlcbiAgfVxuXG4gIGlmIChzaG9ydGVzdCB8fCAhbmFtZWQpIHtcbiAgICBjb2RlID0gY2hhci5jaGFyQ29kZUF0KDApXG4gICAgbnVtZXJpYyA9IHRvSGV4UmVmZXJlbmNlKGNvZGUsIG5leHQsIG9taXQpXG5cbiAgICAvLyBVc2UgdGhlIHNob3J0ZXN0IG51bWVyaWMgcmVmZXJlbmNlIHdoZW4gcmVxdWVzdGVkLlxuICAgIC8vIEEgc2ltcGxlIGFsZ29yaXRobSB3b3VsZCB1c2UgZGVjaW1hbCBmb3IgYWxsIGNvZGUgcG9pbnRzIHVuZGVyIDEwMCwgYXNcbiAgICAvLyB0aG9zZSBhcmUgc2hvcnRlciB0aGFuIGhleGFkZWNpbWFsOlxuICAgIC8vXG4gICAgLy8gKiBgJiM5OTtgIHZzIGAmI3g2MztgIChkZWNpbWFsIHNob3J0ZXIpXG4gICAgLy8gKiBgJiMxMDA7YCB2cyBgJiN4NjQ7YCAoZXF1YWwpXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCBiZWNhdXNlIHdlIHRha2UgYG5leHRgIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGBvbWl0YCBpcyB1c2VkLFxuICAgIC8vIEFuZCBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0aGF0IGRlY2ltYWxzIGFyZSBzaG9ydGVyIG9uIGJpZ2dlciB2YWx1ZXMgYXNcbiAgICAvLyB3ZWxsIGlmIGBuZXh0YCBpcyBoZXhhZGVjaW1hbCBidXQgbm90IGRlY2ltYWwsIHdlIGluc3RlYWQgY29tcGFyZSBib3RoLlxuICAgIGlmIChzaG9ydGVzdCkge1xuICAgICAgZGVjaW1hbCA9IHRvRGVjaW1hbFJlZmVyZW5jZShjb2RlLCBuZXh0LCBvbWl0KVxuXG4gICAgICBpZiAoZGVjaW1hbC5sZW5ndGggPCBudW1lcmljLmxlbmd0aCkge1xuICAgICAgICBudW1lcmljID0gZGVjaW1hbFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChuYW1lZCAmJiAoIXNob3J0ZXN0IHx8IG5hbWVkLmxlbmd0aCA8IG51bWVyaWMubGVuZ3RoKSkge1xuICAgIHJldHVybiBuYW1lZFxuICB9XG5cbiAgcmV0dXJuIG51bWVyaWNcbn1cblxuLy8gVHJhbnNmb3JtIGBjb2RlYCBpbnRvIGFuIGVudGl0eS5cbmZ1bmN0aW9uIHRvTmFtZWQobmFtZSwgbmV4dCwgb21pdCwgYXR0cmlidXRlKSB7XG4gIHZhciB2YWx1ZSA9ICcmJyArIG5hbWVcblxuICBpZiAoXG4gICAgb21pdCAmJlxuICAgIG93bi5jYWxsKGxlZ2FjeSwgbmFtZSkgJiZcbiAgICBkYW5nZXJvdXMuaW5kZXhPZihuYW1lKSA9PT0gLTEgJiZcbiAgICAoIWF0dHJpYnV0ZSB8fCAobmV4dCAmJiBuZXh0ICE9PSAnPScgJiYgIWFscGhhbnVtZXJpY2FsKG5leHQpKSlcbiAgKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByZXR1cm4gdmFsdWUgKyAnOydcbn1cblxuLy8gVHJhbnNmb3JtIGBjb2RlYCBpbnRvIGEgaGV4YWRlY2ltYWwgY2hhcmFjdGVyIHJlZmVyZW5jZS5cbmZ1bmN0aW9uIHRvSGV4UmVmZXJlbmNlKGNvZGUsIG5leHQsIG9taXQpIHtcbiAgdmFyIHZhbHVlID0gJyYjeCcgKyBjb2RlLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBvbWl0ICYmIG5leHQgJiYgIWhleGFkZWNpbWFsKG5leHQpID8gdmFsdWUgOiB2YWx1ZSArICc7J1xufVxuXG4vLyBUcmFuc2Zvcm0gYGNvZGVgIGludG8gYSBkZWNpbWFsIGNoYXJhY3RlciByZWZlcmVuY2UuXG5mdW5jdGlvbiB0b0RlY2ltYWxSZWZlcmVuY2UoY29kZSwgbmV4dCwgb21pdCkge1xuICB2YXIgdmFsdWUgPSAnJiMnICsgU3RyaW5nKGNvZGUpXG4gIHJldHVybiBvbWl0ICYmIG5leHQgJiYgIWRlY2ltYWwobmV4dCkgPyB2YWx1ZSA6IHZhbHVlICsgJzsnXG59XG5cbi8vIENyZWF0ZSBhbiBleHByZXNzaW9uIGZvciBgY2hhcmFjdGVyc2AuXG5mdW5jdGlvbiB0b0V4cHJlc3Npb24oY2hhcmFjdGVycykge1xuICByZXR1cm4gbmV3IFJlZ0V4cCgnWycgKyBjaGFyYWN0ZXJzLmpvaW4oJycpICsgJ10nLCAnZycpXG59XG5cbi8vIENvbnN0cnVjdCB0aGUgbWFwLlxuZnVuY3Rpb24gY29uc3RydWN0KCkge1xuICB2YXIgY2hhcnMgPSB7fVxuICB2YXIgbmFtZVxuXG4gIGZvciAobmFtZSBpbiBlbnRpdGllcykge1xuICAgIGNoYXJzW2VudGl0aWVzW25hbWVdXSA9IG5hbWVcbiAgfVxuXG4gIHJldHVybiBjaGFyc1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJ3N0cmluZ2lmeS1lbnRpdGllcycpXG5cbm1vZHVsZS5leHBvcnRzID0gdGV4dFxuXG4vLyBTdHJpbmdpZnkgYHRleHRgLlxuZnVuY3Rpb24gdGV4dChjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHZhbHVlID0gbm9kZS52YWx1ZVxuXG4gIHJldHVybiBpc0xpdGVyYWwocGFyZW50KVxuICAgID8gdmFsdWVcbiAgICA6IGVudGl0aWVzKHZhbHVlLCB4dGVuZChjdHguZW50aXRpZXMsIHtzdWJzZXQ6IFsnPCcsICcmJ119KSlcbn1cblxuLy8gQ2hlY2sgaWYgY29udGVudCBvZiBgbm9kZWAgc2hvdWxkIGJlIGVzY2FwZWQuXG5mdW5jdGlvbiBpc0xpdGVyYWwobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiAobm9kZS50YWdOYW1lID09PSAnc2NyaXB0JyB8fCBub2RlLnRhZ05hbWUgPT09ICdzdHlsZScpXG59XG4iLCIndXNlIHN0cmljdCdcblxuLy8gQ2hhcmFjdGVycy5cbnZhciBuaWwgPSAnXFwwJ1xudmFyIGFtcGVyc2FuZCA9ICcmJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgdGFiID0gJ1xcdCdcbnZhciBncmF2ZUFjY2VudCA9ICdgJ1xudmFyIHF1b3RhdGlvbk1hcmsgPSAnXCInXG52YXIgYXBvc3Ryb3BoZSA9IFwiJ1wiXG52YXIgZXF1YWxzVG8gPSAnPSdcbnZhciBsZXNzVGhhbiA9ICc8J1xudmFyIGdyZWF0ZXJUaGFuID0gJz4nXG52YXIgc2xhc2ggPSAnLydcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgY2FycmlhZ2VSZXR1cm4gPSAnXFxyJ1xudmFyIGZvcm1GZWVkID0gJ1xcZidcblxudmFyIHdoaXRlc3BhY2UgPSBbc3BhY2UsIHRhYiwgbGluZUZlZWQsIGNhcnJpYWdlUmV0dXJuLCBmb3JtRmVlZF1cblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLW5hbWUtc3RhdGU+LlxudmFyIG5hbWUgPSB3aGl0ZXNwYWNlLmNvbmNhdChhbXBlcnNhbmQsIHNsYXNoLCBncmVhdGVyVGhhbiwgZXF1YWxzVG8pXG5cbi8vIFNlZTogPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2F0dHJpYnV0ZS12YWx1ZS0odW5xdW90ZWQpLXN0YXRlPi5cbnZhciB1bnF1b3RlZCA9IHdoaXRlc3BhY2UuY29uY2F0KGFtcGVyc2FuZCwgZ3JlYXRlclRoYW4pXG52YXIgdW5xdW90ZWRTYWZlID0gdW5xdW90ZWQuY29uY2F0KFxuICBuaWwsXG4gIHF1b3RhdGlvbk1hcmssXG4gIGFwb3N0cm9waGUsXG4gIGxlc3NUaGFuLFxuICBlcXVhbHNUbyxcbiAgZ3JhdmVBY2NlbnRcbilcblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLXZhbHVlLShzaW5nbGUtcXVvdGVkKS1zdGF0ZT4uXG52YXIgc2luZ2xlUXVvdGVkID0gW2FtcGVyc2FuZCwgYXBvc3Ryb3BoZV1cblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLXZhbHVlLShkb3VibGUtcXVvdGVkKS1zdGF0ZT4uXG52YXIgZG91YmxlUXVvdGVkID0gW2FtcGVyc2FuZCwgcXVvdGF0aW9uTWFya11cblxuLy8gTWFwcyBvZiBzdWJzZXRzLlxuLy8gRWFjaCB2YWx1ZSBpcyBhIG1hdHJpeCBvZiB0dXBsZXMuXG4vLyBUaGUgZmlyc3QgdmFsdWUgY2F1c2VzIHBhcnNlIGVycm9ycywgdGhlIHNlY29uZCBpcyB2YWxpZC5cbi8vIE9mIGJvdGggdmFsdWVzLCB0aGUgZmlyc3QgdmFsdWUgaXMgdW5zYWZlLCBhbmQgdGhlIHNlY29uZCBpcyBzYWZlLlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG5hbWU6IFtcbiAgICBbbmFtZSwgbmFtZS5jb25jYXQocXVvdGF0aW9uTWFyaywgYXBvc3Ryb3BoZSwgZ3JhdmVBY2NlbnQpXSxcbiAgICBbXG4gICAgICBuYW1lLmNvbmNhdChuaWwsIHF1b3RhdGlvbk1hcmssIGFwb3N0cm9waGUsIGxlc3NUaGFuKSxcbiAgICAgIG5hbWUuY29uY2F0KG5pbCwgcXVvdGF0aW9uTWFyaywgYXBvc3Ryb3BoZSwgbGVzc1RoYW4sIGdyYXZlQWNjZW50KVxuICAgIF1cbiAgXSxcbiAgdW5xdW90ZWQ6IFtbdW5xdW90ZWQsIHVucXVvdGVkU2FmZV0sIFt1bnF1b3RlZFNhZmUsIHVucXVvdGVkU2FmZV1dLFxuICBzaW5nbGU6IFtcbiAgICBbc2luZ2xlUXVvdGVkLCBzaW5nbGVRdW90ZWQuY29uY2F0KHF1b3RhdGlvbk1hcmssIGdyYXZlQWNjZW50KV0sXG4gICAgW1xuICAgICAgc2luZ2xlUXVvdGVkLmNvbmNhdChuaWwpLFxuICAgICAgc2luZ2xlUXVvdGVkLmNvbmNhdChuaWwsIHF1b3RhdGlvbk1hcmssIGdyYXZlQWNjZW50KVxuICAgIF1cbiAgXSxcbiAgZG91YmxlOiBbXG4gICAgW2RvdWJsZVF1b3RlZCwgZG91YmxlUXVvdGVkLmNvbmNhdChhcG9zdHJvcGhlLCBncmF2ZUFjY2VudCldLFxuICAgIFtcbiAgICAgIGRvdWJsZVF1b3RlZC5jb25jYXQobmlsKSxcbiAgICAgIGRvdWJsZVF1b3RlZC5jb25jYXQobmlsLCBhcG9zdHJvcGhlLCBncmF2ZUFjY2VudClcbiAgICBdXG4gIF1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgc3ZnID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vc3ZnJylcbnZhciBmaW5kID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vZmluZCcpXG52YXIgc3BhY2VzID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpLnN0cmluZ2lmeVxudmFyIGNvbW1hcyA9IHJlcXVpcmUoJ2NvbW1hLXNlcGFyYXRlZC10b2tlbnMnKS5zdHJpbmdpZnlcbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJ3N0cmluZ2lmeS1lbnRpdGllcycpXG52YXIgY2NvdW50ID0gcmVxdWlyZSgnY2NvdW50JylcbnZhciBhbGwgPSByZXF1aXJlKCcuL2FsbCcpXG52YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVsZW1lbnRcblxudmFyIHNwYWNlID0gJyAnXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcbnZhciBlcXVhbHNUbyA9ICc9J1xudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBzbGFzaCA9ICcvJ1xuXG4vLyBTdHJpbmdpZnkgYW4gZWxlbWVudCBgbm9kZWAuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZnVuY3Rpb24gZWxlbWVudChjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHBhcmVudFNjaGVtYSA9IGN0eC5zY2hlbWFcbiAgdmFyIG5hbWUgPSBub2RlLnRhZ05hbWVcbiAgdmFyIHZhbHVlID0gJydcbiAgdmFyIHNlbGZDbG9zaW5nXG4gIHZhciBjbG9zZVxuICB2YXIgb21pdFxuICB2YXIgcm9vdCA9IG5vZGVcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGF0dHJzXG4gIHZhciBsYXN0XG5cbiAgaWYgKHBhcmVudFNjaGVtYS5zcGFjZSA9PT0gJ2h0bWwnICYmIG5hbWUgPT09ICdzdmcnKSB7XG4gICAgY3R4LnNjaGVtYSA9IHN2Z1xuICB9XG5cbiAgYXR0cnMgPSBhdHRyaWJ1dGVzKGN0eCwgbm9kZS5wcm9wZXJ0aWVzKVxuXG4gIGlmIChjdHguc2NoZW1hLnNwYWNlID09PSAnc3ZnJykge1xuICAgIG9taXQgPSBmYWxzZVxuICAgIGNsb3NlID0gdHJ1ZVxuICAgIHNlbGZDbG9zaW5nID0gY3R4LmNsb3NlRW1wdHlcbiAgfSBlbHNlIHtcbiAgICBvbWl0ID0gY3R4Lm9taXRcbiAgICBjbG9zZSA9IGN0eC5jbG9zZVxuICAgIHNlbGZDbG9zaW5nID0gY3R4LnZvaWRzLmluZGV4T2YobmFtZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTFcblxuICAgIGlmIChuYW1lID09PSAndGVtcGxhdGUnKSB7XG4gICAgICByb290ID0gbm9kZS5jb250ZW50XG4gICAgfVxuICB9XG5cbiAgY29udGVudCA9IGFsbChjdHgsIHJvb3QpXG5cbiAgLy8gSWYgdGhlIG5vZGUgaXMgY2F0ZWdvcmlzZWQgYXMgdm9pZCwgYnV0IGl0IGhhcyBjaGlsZHJlbiwgcmVtb3ZlIHRoZVxuICAvLyBjYXRlZ29yaXNhdGlvbi5cbiAgLy8gVGhpcyBlbmFibGVzIGZvciBleGFtcGxlIGBtZW51aXRlbWBzLCB3aGljaCBhcmUgdm9pZCBpbiBXM0MgSFRNTCBidXQgbm90XG4gIC8vIHZvaWQgaW4gV0hBVFdHIEhUTUwsIHRvIGJlIHN0cmluZ2lmaWVkIHByb3Blcmx5LlxuICBzZWxmQ2xvc2luZyA9IGNvbnRlbnQgPyBmYWxzZSA6IHNlbGZDbG9zaW5nXG5cbiAgaWYgKGF0dHJzIHx8ICFvbWl0IHx8ICFvbWl0Lm9wZW5pbmcobm9kZSwgaW5kZXgsIHBhcmVudCkpIHtcbiAgICB2YWx1ZSA9IGxlc3NUaGFuICsgbmFtZSArIChhdHRycyA/IHNwYWNlICsgYXR0cnMgOiAnJylcblxuICAgIGlmIChzZWxmQ2xvc2luZyAmJiBjbG9zZSkge1xuICAgICAgbGFzdCA9IGF0dHJzLmNoYXJBdChhdHRycy5sZW5ndGggLSAxKVxuICAgICAgaWYgKFxuICAgICAgICAhY3R4LnRpZ2h0Q2xvc2UgfHxcbiAgICAgICAgbGFzdCA9PT0gc2xhc2ggfHxcbiAgICAgICAgKGN0eC5zY2hlbWEuc3BhY2UgPT09ICdzdmcnICYmXG4gICAgICAgICAgbGFzdCAmJlxuICAgICAgICAgIGxhc3QgIT09IHF1b3RhdGlvbk1hcmsgJiZcbiAgICAgICAgICBsYXN0ICE9PSBhcG9zdHJvcGhlKVxuICAgICAgKSB7XG4gICAgICAgIHZhbHVlICs9IHNwYWNlXG4gICAgICB9XG5cbiAgICAgIHZhbHVlICs9IHNsYXNoXG4gICAgfVxuXG4gICAgdmFsdWUgKz0gZ3JlYXRlclRoYW5cbiAgfVxuXG4gIHZhbHVlICs9IGNvbnRlbnRcblxuICBpZiAoIXNlbGZDbG9zaW5nICYmICghb21pdCB8fCAhb21pdC5jbG9zaW5nKG5vZGUsIGluZGV4LCBwYXJlbnQpKSkge1xuICAgIHZhbHVlICs9IGxlc3NUaGFuICsgc2xhc2ggKyBuYW1lICsgZ3JlYXRlclRoYW5cbiAgfVxuXG4gIGN0eC5zY2hlbWEgPSBwYXJlbnRTY2hlbWFcblxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gU3RyaW5naWZ5IGFsbCBhdHRyaWJ1dGVzLlxuZnVuY3Rpb24gYXR0cmlidXRlcyhjdHgsIHByb3BzKSB7XG4gIHZhciB2YWx1ZXMgPSBbXVxuICB2YXIga2V5XG4gIHZhciB2YWx1ZVxuICB2YXIgcmVzdWx0XG4gIHZhciBsZW5ndGhcbiAgdmFyIGluZGV4XG4gIHZhciBsYXN0XG5cbiAgZm9yIChrZXkgaW4gcHJvcHMpIHtcbiAgICB2YWx1ZSA9IHByb3BzW2tleV1cblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHJlc3VsdCA9IGF0dHJpYnV0ZShjdHgsIGtleSwgdmFsdWUpXG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICB2YWx1ZXMucHVzaChyZXN1bHQpXG4gICAgfVxuICB9XG5cbiAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aFxuICBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHQgPSB2YWx1ZXNbaW5kZXhdXG4gICAgbGFzdCA9IG51bGxcblxuICAgIGlmIChjdHgudGlnaHQpIHtcbiAgICAgIGxhc3QgPSByZXN1bHQuY2hhckF0KHJlc3VsdC5sZW5ndGggLSAxKVxuICAgIH1cblxuICAgIC8vIEluIHRpZ2h0IG1vZGUsIGRvbuKAmXQgYWRkIGEgc3BhY2UgYWZ0ZXIgcXVvdGVkIGF0dHJpYnV0ZXMuXG4gICAgaWYgKGluZGV4ICE9PSBsZW5ndGggLSAxICYmIGxhc3QgIT09IHF1b3RhdGlvbk1hcmsgJiYgbGFzdCAhPT0gYXBvc3Ryb3BoZSkge1xuICAgICAgdmFsdWVzW2luZGV4XSA9IHJlc3VsdCArIHNwYWNlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlcy5qb2luKCcnKVxufVxuXG4vLyBTdHJpbmdpZnkgb25lIGF0dHJpYnV0ZS5cbmZ1bmN0aW9uIGF0dHJpYnV0ZShjdHgsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHNjaGVtYSA9IGN0eC5zY2hlbWFcbiAgdmFyIGluZm8gPSBmaW5kKHNjaGVtYSwga2V5KVxuICB2YXIgbmFtZSA9IGluZm8uYXR0cmlidXRlXG5cbiAgaWYgKGluZm8ub3ZlcmxvYWRlZEJvb2xlYW4gJiYgKHZhbHVlID09PSBuYW1lIHx8IHZhbHVlID09PSAnJykpIHtcbiAgICB2YWx1ZSA9IHRydWVcbiAgfSBlbHNlIGlmIChcbiAgICBpbmZvLmJvb2xlYW4gfHxcbiAgICAoaW5mby5vdmVybG9hZGVkQm9vbGVhbiAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKVxuICApIHtcbiAgICB2YWx1ZSA9IEJvb2xlYW4odmFsdWUpXG4gIH1cblxuICBpZiAoXG4gICAgdmFsdWUgPT0gbnVsbCB8fFxuICAgIHZhbHVlID09PSBmYWxzZSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzTmFOKHZhbHVlKSlcbiAgKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBuYW1lID0gYXR0cmlidXRlTmFtZShjdHgsIG5hbWUpXG5cbiAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgLy8gVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIGJvb2xlYW4gcHJvcGVydHkgaW4gU1ZHOiBgW2Rvd25sb2FkXWAgb25cbiAgICAvLyBgPGE+YC5cbiAgICAvLyBUaGlzIHByb3BlcnR5IGRvZXMgbm90IHNlZW0gdG8gd29yayBpbiBicm93c2VycyAoRkYsIFNhLCBDaCksIHNvIEkgY2Fu4oCZdFxuICAgIC8vIHRlc3QgaWYgZHJvcHBpbmcgdGhlIHZhbHVlIHdvcmtzLlxuICAgIC8vIEJ1dCBJIGFzc3VtZSB0aGF0IGl0IHNob3VsZDpcbiAgICAvL1xuICAgIC8vIGBgYGh0bWxcbiAgICAvLyA8IWRvY3R5cGUgaHRtbD5cbiAgICAvLyA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiPlxuICAgIC8vICAgPGEgaHJlZj1odHRwczovL2V4YW1wbGUuY29tIGRvd25sb2FkPlxuICAgIC8vICAgICA8Y2lyY2xlIGN4PTUwIGN5PTQwIHI9MzUgLz5cbiAgICAvLyAgIDwvYT5cbiAgICAvLyA8L3N2Zz5cbiAgICAvLyBgYGBcbiAgICAvL1xuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS93b29vcm0vcHJvcGVydHktaW5mb3JtYXRpb24vYmxvYi9tYXN0ZXIvbGliL3N2Zy5qcz5cbiAgICByZXR1cm4gbmFtZVxuICB9XG5cbiAgcmV0dXJuIG5hbWUgKyBhdHRyaWJ1dGVWYWx1ZShjdHgsIGtleSwgdmFsdWUsIGluZm8pXG59XG5cbi8vIFN0cmluZ2lmeSB0aGUgYXR0cmlidXRlIG5hbWUuXG5mdW5jdGlvbiBhdHRyaWJ1dGVOYW1lKGN0eCwgbmFtZSkge1xuICAvLyBBbHdheXMgZW5jb2RlIHdpdGhvdXQgcGFyc2UgZXJyb3JzIGluIG5vbi1IVE1MLlxuICB2YXIgdmFsaWQgPSBjdHguc2NoZW1hLnNwYWNlID09PSAnaHRtbCcgPyBjdHgudmFsaWQgOiAxXG4gIHZhciBzdWJzZXQgPSBjb25zdGFudHMubmFtZVt2YWxpZF1bY3R4LnNhZmVdXG5cbiAgcmV0dXJuIGVudGl0aWVzKG5hbWUsIHh0ZW5kKGN0eC5lbnRpdGllcywge3N1YnNldDogc3Vic2V0fSkpXG59XG5cbi8vIFN0cmluZ2lmeSB0aGUgYXR0cmlidXRlIHZhbHVlLlxuZnVuY3Rpb24gYXR0cmlidXRlVmFsdWUoY3R4LCBrZXksIHZhbHVlLCBpbmZvKSB7XG4gIHZhciBvcHRpb25zID0gY3R4LmVudGl0aWVzXG4gIHZhciBxdW90ZSA9IGN0eC5xdW90ZVxuICB2YXIgYWx0ZXJuYXRpdmUgPSBjdHguYWx0ZXJuYXRpdmVcbiAgdmFyIHVucXVvdGVkXG4gIHZhciBzdWJzZXRcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgIC8vIGBzcGFjZXNgIGRvZXNu4oCZdCBhY2NlcHQgYSBzZWNvbmQgYXJndW1lbnQsIGJ1dCBpdOKAmXMgZ2l2ZW4gaGVyZSBqdXN0IHRvXG4gICAgLy8ga2VlcCB0aGUgY29kZSBjbGVhbmVyLlxuICAgIHZhbHVlID0gKGluZm8uY29tbWFTZXBhcmF0ZWQgPyBjb21tYXMgOiBzcGFjZXMpKHZhbHVlLCB7XG4gICAgICBwYWRMZWZ0OiAhY3R4LnRpZ2h0TGlzdHNcbiAgICB9KVxuICB9XG5cbiAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG5cbiAgaWYgKHZhbHVlIHx8ICFjdHguY29sbGFwc2VFbXB0eSkge1xuICAgIHVucXVvdGVkID0gdmFsdWVcblxuICAgIC8vIENoZWNrIHVucXVvdGVkIHZhbHVlLlxuICAgIGlmIChjdHgudW5xdW90ZWQpIHtcbiAgICAgIHN1YnNldCA9IGNvbnN0YW50cy51bnF1b3RlZFtjdHgudmFsaWRdW2N0eC5zYWZlXVxuICAgICAgdW5xdW90ZWQgPSBlbnRpdGllcyhcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHh0ZW5kKG9wdGlvbnMsIHtzdWJzZXQ6IHN1YnNldCwgYXR0cmlidXRlOiB0cnVlfSlcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBJZiBgdmFsdWVgIGNvbnRhaW5zIGVudGl0aWVzIHdoZW4gdW5xdW90ZWTigKZcbiAgICBpZiAoIWN0eC51bnF1b3RlZCB8fCB1bnF1b3RlZCAhPT0gdmFsdWUpIHtcbiAgICAgIC8vIElmIHRoZSBhbHRlcm5hdGl2ZSBpcyBsZXNzIGNvbW1vbiB0aGFuIGBxdW90ZWAsIHN3aXRjaC5cbiAgICAgIGlmIChhbHRlcm5hdGl2ZSAmJiBjY291bnQodmFsdWUsIHF1b3RlKSA+IGNjb3VudCh2YWx1ZSwgYWx0ZXJuYXRpdmUpKSB7XG4gICAgICAgIHF1b3RlID0gYWx0ZXJuYXRpdmVcbiAgICAgIH1cblxuICAgICAgc3Vic2V0ID0gcXVvdGUgPT09IGFwb3N0cm9waGUgPyBjb25zdGFudHMuc2luZ2xlIDogY29uc3RhbnRzLmRvdWJsZVxuICAgICAgLy8gQWx3YXlzIGVuY29kZSB3aXRob3V0IHBhcnNlIGVycm9ycyBpbiBub24tSFRNTC5cbiAgICAgIHN1YnNldCA9IHN1YnNldFtjdHguc2NoZW1hLnNwYWNlID09PSAnaHRtbCcgPyBjdHgudmFsaWQgOiAxXVtjdHguc2FmZV1cblxuICAgICAgdmFsdWUgPSBlbnRpdGllcyh2YWx1ZSwgeHRlbmQob3B0aW9ucywge3N1YnNldDogc3Vic2V0LCBhdHRyaWJ1dGU6IHRydWV9KSlcblxuICAgICAgdmFsdWUgPSBxdW90ZSArIHZhbHVlICsgcXVvdGVcbiAgICB9XG5cbiAgICAvLyBEb27igJl0IGFkZCBhIGA9YCBmb3IgdW5xdW90ZWQgZW1wdGllcy5cbiAgICB2YWx1ZSA9IHZhbHVlID8gZXF1YWxzVG8gKyB2YWx1ZSA6IHZhbHVlXG4gIH1cblxuICByZXR1cm4gdmFsdWVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRvY3R5cGVcblxuLy8gU3RyaW5naWZ5IGEgZG9jdHlwZSBgbm9kZWAuXG5mdW5jdGlvbiBkb2N0eXBlKGN0eCwgbm9kZSkge1xuICB2YXIgc2VwID0gY3R4LnRpZ2h0RG9jdHlwZSA/ICcnIDogJyAnXG4gIHZhciBuYW1lID0gbm9kZS5uYW1lXG4gIHZhciBwdWIgPSBub2RlLnB1YmxpY1xuICB2YXIgc3lzID0gbm9kZS5zeXN0ZW1cbiAgdmFyIHZhbCA9IFsnPCFkb2N0eXBlJ11cblxuICBpZiAobmFtZSkge1xuICAgIHZhbC5wdXNoKHNlcCwgbmFtZSlcblxuICAgIGlmIChwdWIgIT0gbnVsbCkge1xuICAgICAgdmFsLnB1c2goJyBwdWJsaWMnLCBzZXAsIHNtYXJ0KHB1YikpXG4gICAgfSBlbHNlIGlmIChzeXMgIT0gbnVsbCkge1xuICAgICAgdmFsLnB1c2goJyBzeXN0ZW0nKVxuICAgIH1cblxuICAgIGlmIChzeXMgIT0gbnVsbCkge1xuICAgICAgdmFsLnB1c2goc2VwLCBzbWFydChzeXMpKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWwuam9pbignJykgKyAnPidcbn1cblxuZnVuY3Rpb24gc21hcnQodmFsdWUpIHtcbiAgdmFyIHF1b3RlID0gdmFsdWUuaW5kZXhPZignXCInKSA9PT0gLTEgPyAnXCInIDogXCInXCJcbiAgcmV0dXJuIHF1b3RlICsgdmFsdWUgKyBxdW90ZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY29tbWVudFxuXG4vLyBTdHJpbmdpZnkgYSBjb21tZW50IGBub2RlYC5cbmZ1bmN0aW9uIGNvbW1lbnQoY3R4LCBub2RlKSB7XG4gIHJldHVybiAnPCEtLScgKyBub2RlLnZhbHVlICsgJy0tPidcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdGV4dCA9IHJlcXVpcmUoJy4vdGV4dCcpXG5cbm1vZHVsZS5leHBvcnRzID0gcmF3XG5cbi8vIFN0cmluZ2lmeSBgcmF3YC5cbmZ1bmN0aW9uIHJhdyhjdHgsIG5vZGUpIHtcbiAgcmV0dXJuIGN0eC5kYW5nZXJvdXMgPyBub2RlLnZhbHVlIDogdGV4dChjdHgsIG5vZGUpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBvbmVcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbnZhciBoYW5kbGVycyA9IHt9XG5cbmhhbmRsZXJzLnJvb3QgPSByZXF1aXJlKCcuL2FsbCcpXG5oYW5kbGVycy50ZXh0ID0gcmVxdWlyZSgnLi90ZXh0JylcbmhhbmRsZXJzLmVsZW1lbnQgPSByZXF1aXJlKCcuL2VsZW1lbnQnKVxuaGFuZGxlcnMuZG9jdHlwZSA9IHJlcXVpcmUoJy4vZG9jdHlwZScpXG5oYW5kbGVycy5jb21tZW50ID0gcmVxdWlyZSgnLi9jb21tZW50JylcbmhhbmRsZXJzLnJhdyA9IHJlcXVpcmUoJy4vcmF3JylcblxuLy8gU3RyaW5naWZ5IGBub2RlYC5cbmZ1bmN0aW9uIG9uZShjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHR5cGUgPSBub2RlICYmIG5vZGUudHlwZVxuXG4gIGlmICghdHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgbm9kZSwgbm90IGAnICsgbm9kZSArICdgJylcbiAgfVxuXG4gIGlmICghb3duLmNhbGwoaGFuZGxlcnMsIHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29tcGlsZSB1bmtub3duIG5vZGUgYCcgKyB0eXBlICsgJ2AnKVxuICB9XG5cbiAgcmV0dXJuIGhhbmRsZXJzW3R5cGVdKGN0eCwgbm9kZSwgaW5kZXgsIHBhcmVudClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgaHRtbCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2h0bWwnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgdm9pZHMgPSByZXF1aXJlKCdodG1sLXZvaWQtZWxlbWVudHMnKVxudmFyIG9taXNzaW9uID0gcmVxdWlyZSgnLi9vbWlzc2lvbicpXG52YXIgb25lID0gcmVxdWlyZSgnLi9vbmUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvSHRtbFxuXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcblxuLy8gU3RyaW5naWZ5IHRoZSBnaXZlbiBoYXN0IG5vZGUuXG5mdW5jdGlvbiB0b0h0bWwobm9kZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBxdW90ZSA9IHNldHRpbmdzLnF1b3RlIHx8IHF1b3RhdGlvbk1hcmtcbiAgdmFyIGFsdGVybmF0aXZlID0gcXVvdGUgPT09IHF1b3RhdGlvbk1hcmsgPyBhcG9zdHJvcGhlIDogcXVvdGF0aW9uTWFya1xuICB2YXIgc21hcnQgPSBzZXR0aW5ncy5xdW90ZVNtYXJ0XG5cbiAgaWYgKHF1b3RlICE9PSBxdW90YXRpb25NYXJrICYmIHF1b3RlICE9PSBhcG9zdHJvcGhlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0ludmFsaWQgcXVvdGUgYCcgK1xuICAgICAgICBxdW90ZSArXG4gICAgICAgICdgLCBleHBlY3RlZCBgJyArXG4gICAgICAgIGFwb3N0cm9waGUgK1xuICAgICAgICAnYCBvciBgJyArXG4gICAgICAgIHF1b3RhdGlvbk1hcmsgK1xuICAgICAgICAnYCdcbiAgICApXG4gIH1cblxuICByZXR1cm4gb25lKFxuICAgIHtcbiAgICAgIHZhbGlkOiBzZXR0aW5ncy5hbGxvd1BhcnNlRXJyb3JzID8gMCA6IDEsXG4gICAgICBzYWZlOiBzZXR0aW5ncy5hbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnMgPyAwIDogMSxcbiAgICAgIHNjaGVtYTogc2V0dGluZ3Muc3BhY2UgPT09ICdzdmcnID8gc3ZnIDogaHRtbCxcbiAgICAgIG9taXQ6IHNldHRpbmdzLm9taXRPcHRpb25hbFRhZ3MgJiYgb21pc3Npb24sXG4gICAgICBxdW90ZTogcXVvdGUsXG4gICAgICBhbHRlcm5hdGl2ZTogc21hcnQgPyBhbHRlcm5hdGl2ZSA6IG51bGwsXG4gICAgICB1bnF1b3RlZDogQm9vbGVhbihzZXR0aW5ncy5wcmVmZXJVbnF1b3RlZCksXG4gICAgICB0aWdodDogc2V0dGluZ3MudGlnaHRBdHRyaWJ1dGVzLFxuICAgICAgdGlnaHREb2N0eXBlOiBCb29sZWFuKHNldHRpbmdzLnRpZ2h0RG9jdHlwZSksXG4gICAgICB0aWdodExpc3RzOiBzZXR0aW5ncy50aWdodENvbW1hU2VwYXJhdGVkTGlzdHMsXG4gICAgICB0aWdodENsb3NlOiBzZXR0aW5ncy50aWdodFNlbGZDbG9zaW5nLFxuICAgICAgY29sbGFwc2VFbXB0eTogc2V0dGluZ3MuY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXMsXG4gICAgICBkYW5nZXJvdXM6IHNldHRpbmdzLmFsbG93RGFuZ2Vyb3VzSFRNTCxcbiAgICAgIHZvaWRzOiBzZXR0aW5ncy52b2lkcyB8fCB2b2lkcy5jb25jYXQoKSxcbiAgICAgIGVudGl0aWVzOiBzZXR0aW5ncy5lbnRpdGllcyB8fCB7fSxcbiAgICAgIGNsb3NlOiBzZXR0aW5ncy5jbG9zZVNlbGZDbG9zaW5nLFxuICAgICAgY2xvc2VFbXB0eTogc2V0dGluZ3MuY2xvc2VFbXB0eUVsZW1lbnRzXG4gICAgfSxcbiAgICBub2RlXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYicpXG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIHRvSFRNTCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC10by1odG1sJylcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdpZnlcblxuZnVuY3Rpb24gc3RyaW5naWZ5KGNvbmZpZykge1xuICB2YXIgc2V0dGluZ3MgPSB4dGVuZChjb25maWcsIHRoaXMuZGF0YSgnc2V0dGluZ3MnKSlcblxuICB0aGlzLkNvbXBpbGVyID0gY29tcGlsZXJcblxuICBmdW5jdGlvbiBjb21waWxlcih0cmVlKSB7XG4gICAgcmV0dXJuIHRvSFRNTCh0cmVlLCBzZXR0aW5ncylcbiAgfVxufVxuIiwiaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaGVyaXRcblxuLy8gQ3JlYXRlIGEgY3VzdG9tIGNvbnN0cnVjdG9yIHdoaWNoIGNhbiBiZSBtb2RpZmllZCB3aXRob3V0IGFmZmVjdGluZyB0aGVcbi8vIG9yaWdpbmFsIGNsYXNzLlxuZnVuY3Rpb24gdW5oZXJpdChTdXBlcikge1xuICB2YXIgcmVzdWx0XG4gIHZhciBrZXlcbiAgdmFyIHZhbHVlXG5cbiAgaW5oZXJpdHMoT2YsIFN1cGVyKVxuICBpbmhlcml0cyhGcm9tLCBPZilcblxuICAvLyBDbG9uZSB2YWx1ZXMuXG4gIHJlc3VsdCA9IE9mLnByb3RvdHlwZVxuXG4gIGZvciAoa2V5IGluIHJlc3VsdCkge1xuICAgIHZhbHVlID0gcmVzdWx0W2tleV1cblxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXN1bHRba2V5XSA9ICdjb25jYXQnIGluIHZhbHVlID8gdmFsdWUuY29uY2F0KCkgOiB4dGVuZCh2YWx1ZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gT2ZcblxuICAvLyBDb25zdHJ1Y3RvciBhY2NlcHRpbmcgYSBzaW5nbGUgYXJndW1lbnQsIHdoaWNoIGl0c2VsZiBpcyBhbiBgYXJndW1lbnRzYFxuICAvLyBvYmplY3QuXG4gIGZ1bmN0aW9uIEZyb20ocGFyYW1ldGVycykge1xuICAgIHJldHVybiBTdXBlci5hcHBseSh0aGlzLCBwYXJhbWV0ZXJzKVxuICB9XG5cbiAgLy8gQ29uc3RydWN0b3IgYWNjZXB0aW5nIHZhcmlhZGljIGFyZ3VtZW50cy5cbiAgZnVuY3Rpb24gT2YoKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIE9mKSkge1xuICAgICAgcmV0dXJuIG5ldyBGcm9tKGFyZ3VtZW50cylcbiAgICB9XG5cbiAgICByZXR1cm4gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG5cbi8vIENvbnN0cnVjdCBhIHN0YXRlIGB0b2dnbGVyYDogYSBmdW5jdGlvbiB3aGljaCBpbnZlcnNlcyBgcHJvcGVydHlgIGluIGNvbnRleHRcbi8vIGJhc2VkIG9uIGl0cyBjdXJyZW50IHZhbHVlLlxuLy8gVGhlIGJ5IGB0b2dnbGVyYCByZXR1cm5lZCBmdW5jdGlvbiByZXN0b3JlcyB0aGF0IHZhbHVlLlxuZnVuY3Rpb24gZmFjdG9yeShrZXksIHN0YXRlLCBjdHgpIHtcbiAgcmV0dXJuIGVudGVyXG5cbiAgZnVuY3Rpb24gZW50ZXIoKSB7XG4gICAgdmFyIGNvbnRleHQgPSBjdHggfHwgdGhpc1xuICAgIHZhciBjdXJyZW50ID0gY29udGV4dFtrZXldXG5cbiAgICBjb250ZXh0W2tleV0gPSAhc3RhdGVcblxuICAgIHJldHVybiBleGl0XG5cbiAgICBmdW5jdGlvbiBleGl0KCkge1xuICAgICAgY29udGV4dFtrZXldID0gY3VycmVudFxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeVxuXG5mdW5jdGlvbiBmYWN0b3J5KGZpbGUpIHtcbiAgdmFyIGNvbnRlbnRzID0gaW5kaWNlcyhTdHJpbmcoZmlsZSkpXG5cbiAgcmV0dXJuIHtcbiAgICB0b1Bvc2l0aW9uOiBvZmZzZXRUb1Bvc2l0aW9uRmFjdG9yeShjb250ZW50cyksXG4gICAgdG9PZmZzZXQ6IHBvc2l0aW9uVG9PZmZzZXRGYWN0b3J5KGNvbnRlbnRzKVxuICB9XG59XG5cbi8vIEZhY3RvcnkgdG8gZ2V0IHRoZSBsaW5lIGFuZCBjb2x1bW4tYmFzZWQgYHBvc2l0aW9uYCBmb3IgYG9mZnNldGAgaW4gdGhlIGJvdW5kXG4vLyBpbmRpY2VzLlxuZnVuY3Rpb24gb2Zmc2V0VG9Qb3NpdGlvbkZhY3RvcnkoaW5kaWNlcykge1xuICByZXR1cm4gb2Zmc2V0VG9Qb3NpdGlvblxuXG4gIC8vIEdldCB0aGUgbGluZSBhbmQgY29sdW1uLWJhc2VkIGBwb3NpdGlvbmAgZm9yIGBvZmZzZXRgIGluIHRoZSBib3VuZCBpbmRpY2VzLlxuICBmdW5jdGlvbiBvZmZzZXRUb1Bvc2l0aW9uKG9mZnNldCkge1xuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIGxlbmd0aCA9IGluZGljZXMubGVuZ3RoXG5cbiAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChpbmRpY2VzW2luZGV4XSA+IG9mZnNldCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IGluZGV4ICsgMSxcbiAgICAgICAgICBjb2x1bW46IG9mZnNldCAtIChpbmRpY2VzW2luZGV4IC0gMV0gfHwgMCkgKyAxLFxuICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG4vLyBGYWN0b3J5IHRvIGdldCB0aGUgYG9mZnNldGAgZm9yIGEgbGluZSBhbmQgY29sdW1uLWJhc2VkIGBwb3NpdGlvbmAgaW4gdGhlXG4vLyBib3VuZCBpbmRpY2VzLlxuZnVuY3Rpb24gcG9zaXRpb25Ub09mZnNldEZhY3RvcnkoaW5kaWNlcykge1xuICByZXR1cm4gcG9zaXRpb25Ub09mZnNldFxuXG4gIC8vIEdldCB0aGUgYG9mZnNldGAgZm9yIGEgbGluZSBhbmQgY29sdW1uLWJhc2VkIGBwb3NpdGlvbmAgaW4gdGhlIGJvdW5kXG4gIC8vIGluZGljZXMuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uVG9PZmZzZXQocG9zaXRpb24pIHtcbiAgICB2YXIgbGluZSA9IHBvc2l0aW9uICYmIHBvc2l0aW9uLmxpbmVcbiAgICB2YXIgY29sdW1uID0gcG9zaXRpb24gJiYgcG9zaXRpb24uY29sdW1uXG5cbiAgICBpZiAoIWlzTmFOKGxpbmUpICYmICFpc05hTihjb2x1bW4pICYmIGxpbmUgLSAxIGluIGluZGljZXMpIHtcbiAgICAgIHJldHVybiAoaW5kaWNlc1tsaW5lIC0gMl0gfHwgMCkgKyBjb2x1bW4gLSAxIHx8IDBcbiAgICB9XG5cbiAgICByZXR1cm4gLTFcbiAgfVxufVxuXG4vLyBHZXQgaW5kaWNlcyBvZiBsaW5lLWJyZWFrcyBpbiBgdmFsdWVgLlxuZnVuY3Rpb24gaW5kaWNlcyh2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZignXFxuJylcblxuICB3aGlsZSAoaW5kZXggIT09IC0xKSB7XG4gICAgcmVzdWx0LnB1c2goaW5kZXggKyAxKVxuICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZignXFxuJywgaW5kZXggKyAxKVxuICB9XG5cbiAgcmVzdWx0LnB1c2godmFsdWUubGVuZ3RoICsgMSlcblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG5cbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcblxuLy8gRmFjdG9yeSB0byBkZS1lc2NhcGUgYSB2YWx1ZSwgYmFzZWQgb24gYSBsaXN0IGF0IGBrZXlgIGluIGBjdHhgLlxuZnVuY3Rpb24gZmFjdG9yeShjdHgsIGtleSkge1xuICByZXR1cm4gdW5lc2NhcGVcblxuICAvLyBEZS1lc2NhcGUgYSBzdHJpbmcgdXNpbmcgdGhlIGV4cHJlc3Npb24gYXQgYGtleWAgaW4gYGN0eGAuXG4gIGZ1bmN0aW9uIHVuZXNjYXBlKHZhbHVlKSB7XG4gICAgdmFyIHByZXYgPSAwXG4gICAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZihiYWNrc2xhc2gpXG4gICAgdmFyIGVzY2FwZSA9IGN0eFtrZXldXG4gICAgdmFyIHF1ZXVlID0gW11cbiAgICB2YXIgY2hhcmFjdGVyXG5cbiAgICB3aGlsZSAoaW5kZXggIT09IC0xKSB7XG4gICAgICBxdWV1ZS5wdXNoKHZhbHVlLnNsaWNlKHByZXYsIGluZGV4KSlcbiAgICAgIHByZXYgPSBpbmRleCArIDFcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChwcmV2KVxuXG4gICAgICAvLyBJZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpcyBub3QgYSB2YWxpZCBlc2NhcGUsIGFkZCB0aGUgc2xhc2guXG4gICAgICBpZiAoIWNoYXJhY3RlciB8fCBlc2NhcGUuaW5kZXhPZihjaGFyYWN0ZXIpID09PSAtMSkge1xuICAgICAgICBxdWV1ZS5wdXNoKGJhY2tzbGFzaClcbiAgICAgIH1cblxuICAgICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGJhY2tzbGFzaCwgcHJldiArIDEpXG4gICAgfVxuXG4gICAgcXVldWUucHVzaCh2YWx1ZS5zbGljZShwcmV2KSlcblxuICAgIHJldHVybiBxdWV1ZS5qb2luKCcnKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxuLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbnZhciBlbFxuXG52YXIgc2VtaWNvbG9uID0gNTkgLy8gICc7J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29kZUVudGl0eVxuXG5mdW5jdGlvbiBkZWNvZGVFbnRpdHkoY2hhcmFjdGVycykge1xuICB2YXIgZW50aXR5ID0gJyYnICsgY2hhcmFjdGVycyArICc7J1xuICB2YXIgY2hhclxuXG4gIGVsID0gZWwgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpXG4gIGVsLmlubmVySFRNTCA9IGVudGl0eVxuICBjaGFyID0gZWwudGV4dENvbnRlbnRcblxuICAvLyBTb21lIGVudGl0aWVzIGRvIG5vdCByZXF1aXJlIHRoZSBjbG9zaW5nIHNlbWljb2xvbiAoYCZub3RgIC0gZm9yIGluc3RhbmNlKSxcbiAgLy8gd2hpY2ggbGVhZHMgdG8gc2l0dWF0aW9ucyB3aGVyZSBwYXJzaW5nIHRoZSBhc3N1bWVkIGVudGl0eSBvZiAmbm90aXQ7IHdpbGxcbiAgLy8gcmVzdWx0IGluIHRoZSBzdHJpbmcgYMKsaXQ7YC4gIFdoZW4gd2UgZW5jb3VudGVyIGEgdHJhaWxpbmcgc2VtaWNvbG9uIGFmdGVyXG4gIC8vIHBhcnNpbmcgYW5kIHRoZSBlbnRpdHkgdG8gZGVjb2RlIHdhcyBub3QgYSBzZW1pY29sb24gKGAmc2VtaTtgKSwgd2UgY2FuXG4gIC8vIGFzc3VtZSB0aGF0IHRoZSBtYXRjaGluZyB3YXMgaW5jb21wbGV0ZVxuICBpZiAoY2hhci5jaGFyQ29kZUF0KGNoYXIubGVuZ3RoIC0gMSkgPT09IHNlbWljb2xvbiAmJiBjaGFyYWN0ZXJzICE9PSAnc2VtaScpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIElmIHRoZSBkZWNvZGVkIHN0cmluZyBpcyBlcXVhbCB0byB0aGUgaW5wdXQsIHRoZSBlbnRpdHkgd2FzIG5vdCB2YWxpZFxuICByZXR1cm4gY2hhciA9PT0gZW50aXR5ID8gZmFsc2UgOiBjaGFyXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGxlZ2FjeSA9IHJlcXVpcmUoJ2NoYXJhY3Rlci1lbnRpdGllcy1sZWdhY3knKVxudmFyIGludmFsaWQgPSByZXF1aXJlKCdjaGFyYWN0ZXItcmVmZXJlbmNlLWludmFsaWQnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBoZXhhZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWhleGFkZWNpbWFsJylcbnZhciBhbHBoYW51bWVyaWNhbCA9IHJlcXVpcmUoJ2lzLWFscGhhbnVtZXJpY2FsJylcbnZhciBkZWNvZGVFbnRpdHkgPSByZXF1aXJlKCcuL2RlY29kZS1lbnRpdHknKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlRW50aXRpZXNcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZVxudmFyIG5vb3AgPSBGdW5jdGlvbi5wcm90b3R5cGVcblxuLy8gRGVmYXVsdCBzZXR0aW5ncy5cbnZhciBkZWZhdWx0cyA9IHtcbiAgd2FybmluZzogbnVsbCxcbiAgcmVmZXJlbmNlOiBudWxsLFxuICB0ZXh0OiBudWxsLFxuICB3YXJuaW5nQ29udGV4dDogbnVsbCxcbiAgcmVmZXJlbmNlQ29udGV4dDogbnVsbCxcbiAgdGV4dENvbnRleHQ6IG51bGwsXG4gIHBvc2l0aW9uOiB7fSxcbiAgYWRkaXRpb25hbDogbnVsbCxcbiAgYXR0cmlidXRlOiBmYWxzZSxcbiAgbm9uVGVybWluYXRlZDogdHJ1ZVxufVxuXG4vLyBDaGFyYWN0ZXJzLlxudmFyIHRhYiA9IDkgLy8gJ1xcdCdcbnZhciBsaW5lRmVlZCA9IDEwIC8vICdcXG4nXG52YXIgZm9ybUZlZWQgPSAxMiAvLyAgJ1xcZidcbnZhciBzcGFjZSA9IDMyIC8vICcgJ1xudmFyIGFtcGVyc2FuZCA9IDM4IC8vICAnJidcbnZhciBzZW1pY29sb24gPSA1OSAvLyAgJzsnXG52YXIgbGVzc1RoYW4gPSA2MCAvLyAgJzwnXG52YXIgZXF1YWxzVG8gPSA2MSAvLyAgJz0nXG52YXIgbnVtYmVyU2lnbiA9IDM1IC8vICAnIydcbnZhciB1cHBlcmNhc2VYID0gODggLy8gICdYJ1xudmFyIGxvd2VyY2FzZVggPSAxMjAgLy8gICd4J1xudmFyIHJlcGxhY2VtZW50Q2hhcmFjdGVyID0gNjU1MzMgLy8gJ++/vSdcblxuLy8gUmVmZXJlbmNlIHR5cGVzLlxudmFyIG5hbWUgPSAnbmFtZWQnXG52YXIgaGV4YSA9ICdoZXhhZGVjaW1hbCdcbnZhciBkZWNpID0gJ2RlY2ltYWwnXG5cbi8vIE1hcCBvZiBiYXNlcy5cbnZhciBiYXNlcyA9IHt9XG5cbmJhc2VzW2hleGFdID0gMTZcbmJhc2VzW2RlY2ldID0gMTBcblxuLy8gTWFwIG9mIHR5cGVzIHRvIHRlc3RzLlxuLy8gRWFjaCB0eXBlIG9mIGNoYXJhY3RlciByZWZlcmVuY2UgYWNjZXB0cyBkaWZmZXJlbnQgY2hhcmFjdGVycy5cbi8vIFRoaXMgdGVzdCBpcyB1c2VkIHRvIGRldGVjdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGhhcyBlbmRlZCAoYXMgdGhlIHNlbWljb2xvblxuLy8gaXMgbm90IHN0cmljdGx5IG5lZWRlZCkuXG52YXIgdGVzdHMgPSB7fVxuXG50ZXN0c1tuYW1lXSA9IGFscGhhbnVtZXJpY2FsXG50ZXN0c1tkZWNpXSA9IGRlY2ltYWxcbnRlc3RzW2hleGFdID0gaGV4YWRlY2ltYWxcblxuLy8gV2FybmluZyB0eXBlcy5cbnZhciBuYW1lZE5vdFRlcm1pbmF0ZWQgPSAxXG52YXIgbnVtZXJpY05vdFRlcm1pbmF0ZWQgPSAyXG52YXIgbmFtZWRFbXB0eSA9IDNcbnZhciBudW1lcmljRW1wdHkgPSA0XG52YXIgbmFtZWRVbmtub3duID0gNVxudmFyIG51bWVyaWNEaXNhbGxvd2VkID0gNlxudmFyIG51bWVyaWNQcm9oaWJpdGVkID0gN1xuXG4vLyBXYXJuaW5nIG1lc3NhZ2VzLlxudmFyIG1lc3NhZ2VzID0ge31cblxubWVzc2FnZXNbbmFtZWROb3RUZXJtaW5hdGVkXSA9XG4gICdOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgYSBzZW1pY29sb24nXG5tZXNzYWdlc1tudW1lcmljTm90VGVybWluYXRlZF0gPVxuICAnTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgYSBzZW1pY29sb24nXG5tZXNzYWdlc1tuYW1lZEVtcHR5XSA9ICdOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgZW1wdHknXG5tZXNzYWdlc1tudW1lcmljRW1wdHldID0gJ051bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIGVtcHR5J1xubWVzc2FnZXNbbmFtZWRVbmtub3duXSA9ICdOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIGtub3duJ1xubWVzc2FnZXNbbnVtZXJpY0Rpc2FsbG93ZWRdID1cbiAgJ051bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIGRpc2FsbG93ZWQnXG5tZXNzYWdlc1tudW1lcmljUHJvaGliaXRlZF0gPVxuICAnTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgb3V0c2lkZSB0aGUgcGVybWlzc2libGUgVW5pY29kZSByYW5nZSdcblxuLy8gV3JhcCB0byBlbnN1cmUgY2xlYW4gcGFyYW1ldGVycyBhcmUgZ2l2ZW4gdG8gYHBhcnNlYC5cbmZ1bmN0aW9uIHBhcnNlRW50aXRpZXModmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0ge31cbiAgdmFyIG9wdGlvblxuICB2YXIga2V5XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICBmb3IgKGtleSBpbiBkZWZhdWx0cykge1xuICAgIG9wdGlvbiA9IG9wdGlvbnNba2V5XVxuICAgIHNldHRpbmdzW2tleV0gPVxuICAgICAgb3B0aW9uID09PSBudWxsIHx8IG9wdGlvbiA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdHNba2V5XSA6IG9wdGlvblxuICB9XG5cbiAgaWYgKHNldHRpbmdzLnBvc2l0aW9uLmluZGVudCB8fCBzZXR0aW5ncy5wb3NpdGlvbi5zdGFydCkge1xuICAgIHNldHRpbmdzLmluZGVudCA9IHNldHRpbmdzLnBvc2l0aW9uLmluZGVudCB8fCBbXVxuICAgIHNldHRpbmdzLnBvc2l0aW9uID0gc2V0dGluZ3MucG9zaXRpb24uc3RhcnRcbiAgfVxuXG4gIHJldHVybiBwYXJzZSh2YWx1ZSwgc2V0dGluZ3MpXG59XG5cbi8vIFBhcnNlIGVudGl0aWVzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmZ1bmN0aW9uIHBhcnNlKHZhbHVlLCBzZXR0aW5ncykge1xuICB2YXIgYWRkaXRpb25hbCA9IHNldHRpbmdzLmFkZGl0aW9uYWxcbiAgdmFyIG5vblRlcm1pbmF0ZWQgPSBzZXR0aW5ncy5ub25UZXJtaW5hdGVkXG4gIHZhciBoYW5kbGVUZXh0ID0gc2V0dGluZ3MudGV4dFxuICB2YXIgaGFuZGxlUmVmZXJlbmNlID0gc2V0dGluZ3MucmVmZXJlbmNlXG4gIHZhciBoYW5kbGVXYXJuaW5nID0gc2V0dGluZ3Mud2FybmluZ1xuICB2YXIgdGV4dENvbnRleHQgPSBzZXR0aW5ncy50ZXh0Q29udGV4dFxuICB2YXIgcmVmZXJlbmNlQ29udGV4dCA9IHNldHRpbmdzLnJlZmVyZW5jZUNvbnRleHRcbiAgdmFyIHdhcm5pbmdDb250ZXh0ID0gc2V0dGluZ3Mud2FybmluZ0NvbnRleHRcbiAgdmFyIHBvcyA9IHNldHRpbmdzLnBvc2l0aW9uXG4gIHZhciBpbmRlbnQgPSBzZXR0aW5ncy5pbmRlbnQgfHwgW11cbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsaW5lcyA9IC0xXG4gIHZhciBjb2x1bW4gPSBwb3MuY29sdW1uIHx8IDFcbiAgdmFyIGxpbmUgPSBwb3MubGluZSB8fCAxXG4gIHZhciBxdWV1ZSA9ICcnXG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgZW50aXR5Q2hhcmFjdGVyc1xuICB2YXIgbmFtZWRFbnRpdHlcbiAgdmFyIHRlcm1pbmF0ZWRcbiAgdmFyIGNoYXJhY3RlcnNcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgcmVmZXJlbmNlXG4gIHZhciBmb2xsb3dpbmdcbiAgdmFyIHdhcm5pbmdcbiAgdmFyIHJlYXNvblxuICB2YXIgb3V0cHV0XG4gIHZhciBlbnRpdHlcbiAgdmFyIGJlZ2luXG4gIHZhciBzdGFydFxuICB2YXIgdHlwZVxuICB2YXIgdGVzdFxuICB2YXIgcHJldlxuICB2YXIgbmV4dFxuICB2YXIgZGlmZlxuICB2YXIgZW5kXG5cbiAgaWYgKHR5cGVvZiBhZGRpdGlvbmFsID09PSAnc3RyaW5nJykge1xuICAgIGFkZGl0aW9uYWwgPSBhZGRpdGlvbmFsLmNoYXJDb2RlQXQoMClcbiAgfVxuXG4gIC8vIENhY2hlIHRoZSBjdXJyZW50IHBvaW50LlxuICBwcmV2ID0gbm93KClcblxuICAvLyBXcmFwIGBoYW5kbGVXYXJuaW5nYC5cbiAgd2FybmluZyA9IGhhbmRsZVdhcm5pbmcgPyBwYXJzZUVycm9yIDogbm9vcFxuXG4gIC8vIEVuc3VyZSB0aGUgYWxnb3JpdGhtIHdhbGtzIG92ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgdGhlIGVuZCAoaW5jbHVzaXZlKS5cbiAgaW5kZXgtLVxuICBsZW5ndGgrK1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgLy8gSWYgdGhlIHByZXZpb3VzIGNoYXJhY3RlciB3YXMgYSBuZXdsaW5lLlxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBjb2x1bW4gPSBpbmRlbnRbbGluZXNdIHx8IDFcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gYW1wZXJzYW5kKSB7XG4gICAgICBmb2xsb3dpbmcgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4ICsgMSlcblxuICAgICAgLy8gVGhlIGJlaGF2aW91ciBkZXBlbmRzIG9uIHRoZSBpZGVudGl0eSBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICBpZiAoXG4gICAgICAgIGZvbGxvd2luZyA9PT0gdGFiIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gbGluZUZlZWQgfHxcbiAgICAgICAgZm9sbG93aW5nID09PSBmb3JtRmVlZCB8fFxuICAgICAgICBmb2xsb3dpbmcgPT09IHNwYWNlIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gYW1wZXJzYW5kIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gbGVzc1RoYW4gfHxcbiAgICAgICAgZm9sbG93aW5nICE9PSBmb2xsb3dpbmcgfHxcbiAgICAgICAgKGFkZGl0aW9uYWwgJiYgZm9sbG93aW5nID09PSBhZGRpdGlvbmFsKVxuICAgICAgKSB7XG4gICAgICAgIC8vIE5vdCBhIGNoYXJhY3RlciByZWZlcmVuY2UuXG4gICAgICAgIC8vIE5vIGNoYXJhY3RlcnMgYXJlIGNvbnN1bWVkLCBhbmQgbm90aGluZyBpcyByZXR1cm5lZC5cbiAgICAgICAgLy8gVGhpcyBpcyBub3QgYW4gZXJyb3IsIGVpdGhlci5cbiAgICAgICAgcXVldWUgKz0gZnJvbUNoYXJDb2RlKGNoYXJhY3RlcilcbiAgICAgICAgY29sdW1uKytcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBzdGFydCA9IGluZGV4ICsgMVxuICAgICAgYmVnaW4gPSBzdGFydFxuICAgICAgZW5kID0gc3RhcnRcblxuICAgICAgaWYgKGZvbGxvd2luZyA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgICAvLyBOdW1lcmljYWwgZW50aXR5LlxuICAgICAgICBlbmQgPSArK2JlZ2luXG5cbiAgICAgICAgLy8gVGhlIGJlaGF2aW91ciBmdXJ0aGVyIGRlcGVuZHMgb24gdGhlIG5leHQgY2hhcmFjdGVyLlxuICAgICAgICBmb2xsb3dpbmcgPSB2YWx1ZS5jaGFyQ29kZUF0KGVuZClcblxuICAgICAgICBpZiAoZm9sbG93aW5nID09PSB1cHBlcmNhc2VYIHx8IGZvbGxvd2luZyA9PT0gbG93ZXJjYXNlWCkge1xuICAgICAgICAgIC8vIEFTQ0lJIGhleCBkaWdpdHMuXG4gICAgICAgICAgdHlwZSA9IGhleGFcbiAgICAgICAgICBlbmQgPSArK2JlZ2luXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQVNDSUkgZGlnaXRzLlxuICAgICAgICAgIHR5cGUgPSBkZWNpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5hbWVkIGVudGl0eS5cbiAgICAgICAgdHlwZSA9IG5hbWVcbiAgICAgIH1cblxuICAgICAgZW50aXR5Q2hhcmFjdGVycyA9ICcnXG4gICAgICBlbnRpdHkgPSAnJ1xuICAgICAgY2hhcmFjdGVycyA9ICcnXG4gICAgICB0ZXN0ID0gdGVzdHNbdHlwZV1cbiAgICAgIGVuZC0tXG5cbiAgICAgIHdoaWxlICgrK2VuZCA8IGxlbmd0aCkge1xuICAgICAgICBmb2xsb3dpbmcgPSB2YWx1ZS5jaGFyQ29kZUF0KGVuZClcblxuICAgICAgICBpZiAoIXRlc3QoZm9sbG93aW5nKSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBjaGFyYWN0ZXJzICs9IGZyb21DaGFyQ29kZShmb2xsb3dpbmcpXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgd2UgY2FuIG1hdGNoIGEgbGVnYWN5IG5hbWVkIHJlZmVyZW5jZS5cbiAgICAgICAgLy8gSWYgc28sIHdlIGNhY2hlIHRoYXQgYXMgdGhlIGxhc3QgdmlhYmxlIG5hbWVkIHJlZmVyZW5jZS5cbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHdlIGRvIG5vdCBuZWVkIHRvIHdhbGsgYmFja3dhcmRzIGxhdGVyLlxuICAgICAgICBpZiAodHlwZSA9PT0gbmFtZSAmJiBvd24uY2FsbChsZWdhY3ksIGNoYXJhY3RlcnMpKSB7XG4gICAgICAgICAgZW50aXR5Q2hhcmFjdGVycyA9IGNoYXJhY3RlcnNcbiAgICAgICAgICBlbnRpdHkgPSBsZWdhY3lbY2hhcmFjdGVyc11cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0ZXJtaW5hdGVkID0gdmFsdWUuY2hhckNvZGVBdChlbmQpID09PSBzZW1pY29sb25cblxuICAgICAgaWYgKHRlcm1pbmF0ZWQpIHtcbiAgICAgICAgZW5kKytcblxuICAgICAgICBuYW1lZEVudGl0eSA9IHR5cGUgPT09IG5hbWUgPyBkZWNvZGVFbnRpdHkoY2hhcmFjdGVycykgOiBmYWxzZVxuXG4gICAgICAgIGlmIChuYW1lZEVudGl0eSkge1xuICAgICAgICAgIGVudGl0eUNoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzXG4gICAgICAgICAgZW50aXR5ID0gbmFtZWRFbnRpdHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkaWZmID0gMSArIGVuZCAtIHN0YXJ0XG5cbiAgICAgIGlmICghdGVybWluYXRlZCAmJiAhbm9uVGVybWluYXRlZCkge1xuICAgICAgICAvLyBFbXB0eS5cbiAgICAgIH0gZWxzZSBpZiAoIWNoYXJhY3RlcnMpIHtcbiAgICAgICAgLy8gQW4gZW1wdHkgKHBvc3NpYmxlKSBlbnRpdHkgaXMgdmFsaWQsIHVubGVzcyBpdOKAmXMgbnVtZXJpYyAodGh1cyBhblxuICAgICAgICAvLyBhbXBlcnNhbmQgZm9sbG93ZWQgYnkgYW4gb2N0b3Rob3JwKS5cbiAgICAgICAgaWYgKHR5cGUgIT09IG5hbWUpIHtcbiAgICAgICAgICB3YXJuaW5nKG51bWVyaWNFbXB0eSwgZGlmZilcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBuYW1lKSB7XG4gICAgICAgIC8vIEFuIGFtcGVyc2FuZCBmb2xsb3dlZCBieSBhbnl0aGluZyB1bmtub3duLCBhbmQgbm90IHRlcm1pbmF0ZWQsIGlzXG4gICAgICAgIC8vIGludmFsaWQuXG4gICAgICAgIGlmICh0ZXJtaW5hdGVkICYmICFlbnRpdHkpIHtcbiAgICAgICAgICB3YXJuaW5nKG5hbWVkVW5rbm93biwgMSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiB0aGVyZXMgc29tZXRoaW5nIGFmdGVyIGFuIGVudGl0eSBuYW1lIHdoaWNoIGlzIG5vdCBrbm93biwgY2FwXG4gICAgICAgICAgLy8gdGhlIHJlZmVyZW5jZS5cbiAgICAgICAgICBpZiAoZW50aXR5Q2hhcmFjdGVycyAhPT0gY2hhcmFjdGVycykge1xuICAgICAgICAgICAgZW5kID0gYmVnaW4gKyBlbnRpdHlDaGFyYWN0ZXJzLmxlbmd0aFxuICAgICAgICAgICAgZGlmZiA9IDEgKyBlbmQgLSBiZWdpblxuICAgICAgICAgICAgdGVybWluYXRlZCA9IGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBub3QgdGVybWluYXRlZCwgd2Fybi5cbiAgICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHtcbiAgICAgICAgICAgIHJlYXNvbiA9IGVudGl0eUNoYXJhY3RlcnMgPyBuYW1lZE5vdFRlcm1pbmF0ZWQgOiBuYW1lZEVtcHR5XG5cbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgZm9sbG93aW5nID0gdmFsdWUuY2hhckNvZGVBdChlbmQpXG5cbiAgICAgICAgICAgICAgaWYgKGZvbGxvd2luZyA9PT0gZXF1YWxzVG8pIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nKHJlYXNvbiwgZGlmZilcbiAgICAgICAgICAgICAgICBlbnRpdHkgPSBudWxsXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxwaGFudW1lcmljYWwoZm9sbG93aW5nKSkge1xuICAgICAgICAgICAgICAgIGVudGl0eSA9IG51bGxcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nKHJlYXNvbiwgZGlmZilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgd2FybmluZyhyZWFzb24sIGRpZmYpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmVmZXJlbmNlID0gZW50aXR5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHtcbiAgICAgICAgICAvLyBBbGwgbm9uLXRlcm1pbmF0ZWQgbnVtZXJpYyBlbnRpdGllcyBhcmUgbm90IHJlbmRlcmVkLCBhbmQgdHJpZ2dlciBhXG4gICAgICAgICAgLy8gd2FybmluZy5cbiAgICAgICAgICB3YXJuaW5nKG51bWVyaWNOb3RUZXJtaW5hdGVkLCBkaWZmKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiB0ZXJtaW5hdGVkIGFuZCBudW1iZXIsIHBhcnNlIGFzIGVpdGhlciBoZXhhZGVjaW1hbCBvciBkZWNpbWFsLlxuICAgICAgICByZWZlcmVuY2UgPSBwYXJzZUludChjaGFyYWN0ZXJzLCBiYXNlc1t0eXBlXSlcblxuICAgICAgICAvLyBUcmlnZ2VyIGEgd2FybmluZyB3aGVuIHRoZSBwYXJzZWQgbnVtYmVyIGlzIHByb2hpYml0ZWQsIGFuZCByZXBsYWNlXG4gICAgICAgIC8vIHdpdGggcmVwbGFjZW1lbnQgY2hhcmFjdGVyLlxuICAgICAgICBpZiAocHJvaGliaXRlZChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgd2FybmluZyhudW1lcmljUHJvaGliaXRlZCwgZGlmZilcbiAgICAgICAgICByZWZlcmVuY2UgPSBmcm9tQ2hhckNvZGUocmVwbGFjZW1lbnRDaGFyYWN0ZXIpXG4gICAgICAgIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluIGludmFsaWQpIHtcbiAgICAgICAgICAvLyBUcmlnZ2VyIGEgd2FybmluZyB3aGVuIHRoZSBwYXJzZWQgbnVtYmVyIGlzIGRpc2FsbG93ZWQsIGFuZCByZXBsYWNlXG4gICAgICAgICAgLy8gYnkgYW4gYWx0ZXJuYXRpdmUuXG4gICAgICAgICAgd2FybmluZyhudW1lcmljRGlzYWxsb3dlZCwgZGlmZilcbiAgICAgICAgICByZWZlcmVuY2UgPSBpbnZhbGlkW3JlZmVyZW5jZV1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBQYXJzZSB0aGUgbnVtYmVyLlxuICAgICAgICAgIG91dHB1dCA9ICcnXG5cbiAgICAgICAgICAvLyBUcmlnZ2VyIGEgd2FybmluZyB3aGVuIHRoZSBwYXJzZWQgbnVtYmVyIHNob3VsZCBub3QgYmUgdXNlZC5cbiAgICAgICAgICBpZiAoZGlzYWxsb3dlZChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICB3YXJuaW5nKG51bWVyaWNEaXNhbGxvd2VkLCBkaWZmKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFN0cmluZ2lmeSB0aGUgbnVtYmVyLlxuICAgICAgICAgIGlmIChyZWZlcmVuY2UgPiAweGZmZmYpIHtcbiAgICAgICAgICAgIHJlZmVyZW5jZSAtPSAweDEwMDAwXG4gICAgICAgICAgICBvdXRwdXQgKz0gZnJvbUNoYXJDb2RlKChyZWZlcmVuY2UgPj4+ICgxMCAmIDB4M2ZmKSkgfCAweGQ4MDApXG4gICAgICAgICAgICByZWZlcmVuY2UgPSAweGRjMDAgfCAocmVmZXJlbmNlICYgMHgzZmYpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVmZXJlbmNlID0gb3V0cHV0ICsgZnJvbUNoYXJDb2RlKHJlZmVyZW5jZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBGb3VuZCBpdCFcbiAgICAgIC8vIEZpcnN0IGVhdCB0aGUgcXVldWVkIGNoYXJhY3RlcnMgYXMgbm9ybWFsIHRleHQsIHRoZW4gZWF0IGFuIGVudGl0eS5cbiAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgZmx1c2goKVxuXG4gICAgICAgIHByZXYgPSBub3coKVxuICAgICAgICBpbmRleCA9IGVuZCAtIDFcbiAgICAgICAgY29sdW1uICs9IGVuZCAtIHN0YXJ0ICsgMVxuICAgICAgICByZXN1bHQucHVzaChyZWZlcmVuY2UpXG4gICAgICAgIG5leHQgPSBub3coKVxuICAgICAgICBuZXh0Lm9mZnNldCsrXG5cbiAgICAgICAgaWYgKGhhbmRsZVJlZmVyZW5jZSkge1xuICAgICAgICAgIGhhbmRsZVJlZmVyZW5jZS5jYWxsKFxuICAgICAgICAgICAgcmVmZXJlbmNlQ29udGV4dCxcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIHtzdGFydDogcHJldiwgZW5kOiBuZXh0fSxcbiAgICAgICAgICAgIHZhbHVlLnNsaWNlKHN0YXJ0IC0gMSwgZW5kKVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXYgPSBuZXh0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB3ZSBjb3VsZCBub3QgZmluZCBhIHJlZmVyZW5jZSwgcXVldWUgdGhlIGNoZWNrZWQgY2hhcmFjdGVycyAoYXNcbiAgICAgICAgLy8gbm9ybWFsIGNoYXJhY3RlcnMpLCBhbmQgbW92ZSB0aGUgcG9pbnRlciB0byB0aGVpciBlbmQuXG4gICAgICAgIC8vIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSB3ZSBjYW4gYmUgY2VydGFpbiBuZWl0aGVyIG5ld2xpbmVzIG5vclxuICAgICAgICAvLyBhbXBlcnNhbmRzIGFyZSBpbmNsdWRlZC5cbiAgICAgICAgY2hhcmFjdGVycyA9IHZhbHVlLnNsaWNlKHN0YXJ0IC0gMSwgZW5kKVxuICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJzXG4gICAgICAgIGNvbHVtbiArPSBjaGFyYWN0ZXJzLmxlbmd0aFxuICAgICAgICBpbmRleCA9IGVuZCAtIDFcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIGFueXRoaW5nIG90aGVyIHRoYW4gYW4gYW1wZXJzYW5kLCBpbmNsdWRpbmcgbmV3bGluZXMgYW5kIEVPRi5cbiAgICAgIGlmIChcbiAgICAgICAgY2hhcmFjdGVyID09PSAxMCAvLyBMaW5lIGZlZWRcbiAgICAgICkge1xuICAgICAgICBsaW5lKytcbiAgICAgICAgbGluZXMrK1xuICAgICAgICBjb2x1bW4gPSAwXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGNoYXJhY3Rlcikge1xuICAgICAgICBxdWV1ZSArPSBmcm9tQ2hhckNvZGUoY2hhcmFjdGVyKVxuICAgICAgICBjb2x1bW4rK1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmx1c2goKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgcmVkdWNlZCBub2RlcywgYW5kIGFueSBwb3NzaWJsZSB3YXJuaW5ncy5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKVxuXG4gIC8vIEdldCBjdXJyZW50IHBvc2l0aW9uLlxuICBmdW5jdGlvbiBub3coKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IGxpbmUsXG4gICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgIG9mZnNldDogaW5kZXggKyAocG9zLm9mZnNldCB8fCAwKVxuICAgIH1cbiAgfVxuXG4gIC8vIOKAnFRocm934oCdIGEgcGFyc2UtZXJyb3I6IGEgd2FybmluZy5cbiAgZnVuY3Rpb24gcGFyc2VFcnJvcihjb2RlLCBvZmZzZXQpIHtcbiAgICB2YXIgcG9zaXRpb24gPSBub3coKVxuXG4gICAgcG9zaXRpb24uY29sdW1uICs9IG9mZnNldFxuICAgIHBvc2l0aW9uLm9mZnNldCArPSBvZmZzZXRcblxuICAgIGhhbmRsZVdhcm5pbmcuY2FsbCh3YXJuaW5nQ29udGV4dCwgbWVzc2FnZXNbY29kZV0sIHBvc2l0aW9uLCBjb2RlKVxuICB9XG5cbiAgLy8gRmx1c2ggYHF1ZXVlYCAobm9ybWFsIHRleHQpLlxuICAvLyBNYWNybyBpbnZva2VkIGJlZm9yZSBlYWNoIGVudGl0eSBhbmQgYXQgdGhlIGVuZCBvZiBgdmFsdWVgLlxuICAvLyBEb2VzIG5vdGhpbmcgd2hlbiBgcXVldWVgIGlzIGVtcHR5LlxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICBpZiAocXVldWUpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHF1ZXVlKVxuXG4gICAgICBpZiAoaGFuZGxlVGV4dCkge1xuICAgICAgICBoYW5kbGVUZXh0LmNhbGwodGV4dENvbnRleHQsIHF1ZXVlLCB7c3RhcnQ6IHByZXYsIGVuZDogbm93KCl9KVxuICAgICAgfVxuXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrIGlmIGBjaGFyYWN0ZXJgIGlzIG91dHNpZGUgdGhlIHBlcm1pc3NpYmxlIHVuaWNvZGUgcmFuZ2UuXG5mdW5jdGlvbiBwcm9oaWJpdGVkKGNvZGUpIHtcbiAgcmV0dXJuIChjb2RlID49IDB4ZDgwMCAmJiBjb2RlIDw9IDB4ZGZmZikgfHwgY29kZSA+IDB4MTBmZmZmXG59XG5cbi8vIENoZWNrIGlmIGBjaGFyYWN0ZXJgIGlzIGRpc2FsbG93ZWQuXG5mdW5jdGlvbiBkaXNhbGxvd2VkKGNvZGUpIHtcbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSAweDAwMDEgJiYgY29kZSA8PSAweDAwMDgpIHx8XG4gICAgY29kZSA9PT0gMHgwMDBiIHx8XG4gICAgKGNvZGUgPj0gMHgwMDBkICYmIGNvZGUgPD0gMHgwMDFmKSB8fFxuICAgIChjb2RlID49IDB4MDA3ZiAmJiBjb2RlIDw9IDB4MDA5ZikgfHxcbiAgICAoY29kZSA+PSAweGZkZDAgJiYgY29kZSA8PSAweGZkZWYpIHx8XG4gICAgKGNvZGUgJiAweGZmZmYpID09PSAweGZmZmYgfHxcbiAgICAoY29kZSAmIDB4ZmZmZikgPT09IDB4ZmZmZVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGVudGl0aWVzID0gcmVxdWlyZSgncGFyc2UtZW50aXRpZXMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLy8gRmFjdG9yeSB0byBjcmVhdGUgYW4gZW50aXR5IGRlY29kZXIuXG5mdW5jdGlvbiBmYWN0b3J5KGN0eCkge1xuICBkZWNvZGVyLnJhdyA9IGRlY29kZVJhd1xuXG4gIHJldHVybiBkZWNvZGVyXG5cbiAgLy8gTm9ybWFsaXplIGBwb3NpdGlvbmAgdG8gYWRkIGFuIGBpbmRlbnRgLlxuICBmdW5jdGlvbiBub3JtYWxpemUocG9zaXRpb24pIHtcbiAgICB2YXIgb2Zmc2V0cyA9IGN0eC5vZmZzZXRcbiAgICB2YXIgbGluZSA9IHBvc2l0aW9uLmxpbmVcbiAgICB2YXIgcmVzdWx0ID0gW11cblxuICAgIHdoaWxlICgrK2xpbmUpIHtcbiAgICAgIGlmICghKGxpbmUgaW4gb2Zmc2V0cykpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LnB1c2goKG9mZnNldHNbbGluZV0gfHwgMCkgKyAxKVxuICAgIH1cblxuICAgIHJldHVybiB7c3RhcnQ6IHBvc2l0aW9uLCBpbmRlbnQ6IHJlc3VsdH1cbiAgfVxuXG4gIC8vIERlY29kZSBgdmFsdWVgIChhdCBgcG9zaXRpb25gKSBpbnRvIHRleHQtbm9kZXMuXG4gIGZ1bmN0aW9uIGRlY29kZXIodmFsdWUsIHBvc2l0aW9uLCBoYW5kbGVyKSB7XG4gICAgZW50aXRpZXModmFsdWUsIHtcbiAgICAgIHBvc2l0aW9uOiBub3JtYWxpemUocG9zaXRpb24pLFxuICAgICAgd2FybmluZzogaGFuZGxlV2FybmluZyxcbiAgICAgIHRleHQ6IGhhbmRsZXIsXG4gICAgICByZWZlcmVuY2U6IGhhbmRsZXIsXG4gICAgICB0ZXh0Q29udGV4dDogY3R4LFxuICAgICAgcmVmZXJlbmNlQ29udGV4dDogY3R4XG4gICAgfSlcbiAgfVxuXG4gIC8vIERlY29kZSBgdmFsdWVgIChhdCBgcG9zaXRpb25gKSBpbnRvIGEgc3RyaW5nLlxuICBmdW5jdGlvbiBkZWNvZGVSYXcodmFsdWUsIHBvc2l0aW9uLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGVudGl0aWVzKFxuICAgICAgdmFsdWUsXG4gICAgICB4dGVuZChvcHRpb25zLCB7cG9zaXRpb246IG5vcm1hbGl6ZShwb3NpdGlvbiksIHdhcm5pbmc6IGhhbmRsZVdhcm5pbmd9KVxuICAgIClcbiAgfVxuXG4gIC8vIEhhbmRsZSBhIHdhcm5pbmcuXG4gIC8vIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9wYXJzZS1lbnRpdGllcz4gZm9yIHRoZSB3YXJuaW5ncy5cbiAgZnVuY3Rpb24gaGFuZGxlV2FybmluZyhyZWFzb24sIHBvc2l0aW9uLCBjb2RlKSB7XG4gICAgaWYgKGNvZGUgIT09IDMpIHtcbiAgICAgIGN0eC5maWxlLm1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbilcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLy8gQ29uc3RydWN0IGEgdG9rZW5pemVyLiAgVGhpcyBjcmVhdGVzIGJvdGggYHRva2VuaXplSW5saW5lYCBhbmQgYHRva2VuaXplQmxvY2tgLlxuZnVuY3Rpb24gZmFjdG9yeSh0eXBlKSB7XG4gIHJldHVybiB0b2tlbml6ZVxuXG4gIC8vIFRva2VuaXplciBmb3IgYSBib3VuZCBgdHlwZWAuXG4gIGZ1bmN0aW9uIHRva2VuaXplKHZhbHVlLCBsb2NhdGlvbikge1xuICAgIHZhciBzZWxmID0gdGhpc1xuICAgIHZhciBvZmZzZXQgPSBzZWxmLm9mZnNldFxuICAgIHZhciB0b2tlbnMgPSBbXVxuICAgIHZhciBtZXRob2RzID0gc2VsZlt0eXBlICsgJ01ldGhvZHMnXVxuICAgIHZhciB0b2tlbml6ZXJzID0gc2VsZlt0eXBlICsgJ1Rva2VuaXplcnMnXVxuICAgIHZhciBsaW5lID0gbG9jYXRpb24ubGluZVxuICAgIHZhciBjb2x1bW4gPSBsb2NhdGlvbi5jb2x1bW5cbiAgICB2YXIgaW5kZXhcbiAgICB2YXIgbGVuZ3RoXG4gICAgdmFyIG1ldGhvZFxuICAgIHZhciBuYW1lXG4gICAgdmFyIG1hdGNoZWRcbiAgICB2YXIgdmFsdWVMZW5ndGhcblxuICAgIC8vIFRyaW0gd2hpdGUgc3BhY2Ugb25seSBsaW5lcy5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gdG9rZW5zXG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIG9uIGBlYXRgLlxuICAgIGVhdC5ub3cgPSBub3dcbiAgICBlYXQuZmlsZSA9IHNlbGYuZmlsZVxuXG4gICAgLy8gU3luYyBpbml0aWFsIG9mZnNldC5cbiAgICB1cGRhdGVQb3NpdGlvbignJylcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciBgdmFsdWVgLCBhbmQgaXRlcmF0ZSBvdmVyIGFsbCB0b2tlbml6ZXJzLiAgV2hlbiBvbmUgZWF0c1xuICAgIC8vIHNvbWV0aGluZywgcmUtaXRlcmF0ZSB3aXRoIHRoZSByZW1haW5pbmcgdmFsdWUuICBJZiBubyB0b2tlbml6ZXIgZWF0cyxcbiAgICAvLyBzb21ldGhpbmcgZmFpbGVkIChzaG91bGQgbm90IGhhcHBlbikgYW5kIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG4gICAgd2hpbGUgKHZhbHVlKSB7XG4gICAgICBpbmRleCA9IC0xXG4gICAgICBsZW5ndGggPSBtZXRob2RzLmxlbmd0aFxuICAgICAgbWF0Y2hlZCA9IGZhbHNlXG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG5hbWUgPSBtZXRob2RzW2luZGV4XVxuICAgICAgICBtZXRob2QgPSB0b2tlbml6ZXJzW25hbWVdXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1ldGhvZCAmJlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovICghbWV0aG9kLm9ubHlBdFN0YXJ0IHx8IHNlbGYuYXRTdGFydCkgJiZcbiAgICAgICAgICAoIW1ldGhvZC5ub3RJbkxpc3QgfHwgIXNlbGYuaW5MaXN0KSAmJlxuICAgICAgICAgICghbWV0aG9kLm5vdEluQmxvY2sgfHwgIXNlbGYuaW5CbG9jaykgJiZcbiAgICAgICAgICAoIW1ldGhvZC5ub3RJbkxpbmsgfHwgIXNlbGYuaW5MaW5rKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuXG4gICAgICAgICAgbWV0aG9kLmFwcGx5KHNlbGYsIFtlYXQsIHZhbHVlXSlcblxuICAgICAgICAgIG1hdGNoZWQgPSB2YWx1ZUxlbmd0aCAhPT0gdmFsdWUubGVuZ3RoXG5cbiAgICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIW1hdGNoZWQpIHtcbiAgICAgICAgc2VsZi5maWxlLmZhaWwobmV3IEVycm9yKCdJbmZpbml0ZSBsb29wJyksIGVhdC5ub3coKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxmLmVvZiA9IG5vdygpXG5cbiAgICByZXR1cm4gdG9rZW5zXG5cbiAgICAvLyBVcGRhdGUgbGluZSwgY29sdW1uLCBhbmQgb2Zmc2V0IGJhc2VkIG9uIGB2YWx1ZWAuXG4gICAgZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24oc3VidmFsdWUpIHtcbiAgICAgIHZhciBsYXN0SW5kZXggPSAtMVxuICAgICAgdmFyIGluZGV4ID0gc3VidmFsdWUuaW5kZXhPZignXFxuJylcblxuICAgICAgd2hpbGUgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaW5lKytcbiAgICAgICAgbGFzdEluZGV4ID0gaW5kZXhcbiAgICAgICAgaW5kZXggPSBzdWJ2YWx1ZS5pbmRleE9mKCdcXG4nLCBpbmRleCArIDEpXG4gICAgICB9XG5cbiAgICAgIGlmIChsYXN0SW5kZXggPT09IC0xKSB7XG4gICAgICAgIGNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbHVtbiA9IHN1YnZhbHVlLmxlbmd0aCAtIGxhc3RJbmRleFxuICAgICAgfVxuXG4gICAgICBpZiAobGluZSBpbiBvZmZzZXQpIHtcbiAgICAgICAgaWYgKGxhc3RJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBjb2x1bW4gKz0gb2Zmc2V0W2xpbmVdXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uIDw9IG9mZnNldFtsaW5lXSkge1xuICAgICAgICAgIGNvbHVtbiA9IG9mZnNldFtsaW5lXSArIDFcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCBvZmZzZXQuICBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgZWF0ZW4gdG8gcmV0cmlldmUgdGhlXG4gICAgLy8gcmFuZ2XigJlzIG9mZnNldHMuXG4gICAgZnVuY3Rpb24gZ2V0T2Zmc2V0KCkge1xuICAgICAgdmFyIGluZGVudGF0aW9uID0gW11cbiAgICAgIHZhciBwb3MgPSBsaW5lICsgMVxuXG4gICAgICAvLyBEb25lLiAgQ2FsbGVkIHdoZW4gdGhlIGxhc3QgY2hhcmFjdGVyIGlzIGVhdGVuIHRvIHJldHJpZXZlIHRoZSByYW5nZeKAmXNcbiAgICAgIC8vIG9mZnNldHMuXG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBsYXN0ID0gbGluZSArIDFcblxuICAgICAgICB3aGlsZSAocG9zIDwgbGFzdCkge1xuICAgICAgICAgIGluZGVudGF0aW9uLnB1c2goKG9mZnNldFtwb3NdIHx8IDApICsgMSlcblxuICAgICAgICAgIHBvcysrXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZW50YXRpb25cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uXG4gICAgZnVuY3Rpb24gbm93KCkge1xuICAgICAgdmFyIHBvcyA9IHtsaW5lOiBsaW5lLCBjb2x1bW46IGNvbHVtbn1cblxuICAgICAgcG9zLm9mZnNldCA9IHNlbGYudG9PZmZzZXQocG9zKVxuXG4gICAgICByZXR1cm4gcG9zXG4gICAgfVxuXG4gICAgLy8gU3RvcmUgcG9zaXRpb24gaW5mb3JtYXRpb24gZm9yIGEgbm9kZS5cbiAgICBmdW5jdGlvbiBQb3NpdGlvbihzdGFydCkge1xuICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0XG4gICAgICB0aGlzLmVuZCA9IG5vdygpXG4gICAgfVxuXG4gICAgLy8gVGhyb3cgd2hlbiBhIHZhbHVlIGlzIGluY29ycmVjdGx5IGVhdGVuLiAgVGhpcyBzaG91bGRu4oCZdCBoYXBwZW4gYnV0IHdpbGxcbiAgICAvLyB0aHJvdyBvbiBuZXcsIGluY29ycmVjdCBydWxlcy5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZUVhdChzdWJ2YWx1ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAodmFsdWUuc2xpY2UoMCwgc3VidmFsdWUubGVuZ3RoKSAhPT0gc3VidmFsdWUpIHtcbiAgICAgICAgLy8gQ2FwdHVyZSBzdGFjay10cmFjZS5cbiAgICAgICAgc2VsZi5maWxlLmZhaWwoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ0luY29ycmVjdGx5IGVhdGVuIHZhbHVlOiBwbGVhc2UgcmVwb3J0IHRoaXMgd2FybmluZyBvbiBodHRwczovL2dpdC5pby92ZzVGdCdcbiAgICAgICAgICApLFxuICAgICAgICAgIG5vdygpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYXJrIHBvc2l0aW9uIGFuZCBwYXRjaCBgbm9kZS5wb3NpdGlvbmAuXG4gICAgZnVuY3Rpb24gcG9zaXRpb24oKSB7XG4gICAgICB2YXIgYmVmb3JlID0gbm93KClcblxuICAgICAgcmV0dXJuIHVwZGF0ZVxuXG4gICAgICAvLyBBZGQgdGhlIHBvc2l0aW9uIHRvIGEgbm9kZS5cbiAgICAgIGZ1bmN0aW9uIHVwZGF0ZShub2RlLCBpbmRlbnQpIHtcbiAgICAgICAgdmFyIHByZXYgPSBub2RlLnBvc2l0aW9uXG4gICAgICAgIHZhciBzdGFydCA9IHByZXYgPyBwcmV2LnN0YXJ0IDogYmVmb3JlXG4gICAgICAgIHZhciBjb21iaW5lZCA9IFtdXG4gICAgICAgIHZhciBuID0gcHJldiAmJiBwcmV2LmVuZC5saW5lXG4gICAgICAgIHZhciBsID0gYmVmb3JlLmxpbmVcblxuICAgICAgICBub2RlLnBvc2l0aW9uID0gbmV3IFBvc2l0aW9uKHN0YXJ0KVxuXG4gICAgICAgIC8vIElmIHRoZXJlIHdhcyBhbHJlYWR5IGEgYHBvc2l0aW9uYCwgdGhpcyBub2RlIHdhcyBtZXJnZWQuICBGaXhpbmdcbiAgICAgICAgLy8gYHN0YXJ0YCB3YXNu4oCZdCBoYXJkLCBidXQgdGhlIGluZGVudCBpcyBkaWZmZXJlbnQuICBFc3BlY2lhbGx5XG4gICAgICAgIC8vIGJlY2F1c2Ugc29tZSBpbmZvcm1hdGlvbiwgdGhlIGluZGVudCBiZXR3ZWVuIGBuYCBhbmQgYGxgIHdhc27igJl0XG4gICAgICAgIC8vIHRyYWNrZWQuICBMdWNraWx5LCB0aGF0IHNwYWNlIGlzIChzaG91bGQgYmU/KSBlbXB0eSwgc28gd2UgY2FuXG4gICAgICAgIC8vIHNhZmVseSBjaGVjayBmb3IgaXQgbm93LlxuICAgICAgICBpZiAocHJldiAmJiBpbmRlbnQgJiYgcHJldi5pbmRlbnQpIHtcbiAgICAgICAgICBjb21iaW5lZCA9IHByZXYuaW5kZW50XG5cbiAgICAgICAgICBpZiAobiA8IGwpIHtcbiAgICAgICAgICAgIHdoaWxlICgrK24gPCBsKSB7XG4gICAgICAgICAgICAgIGNvbWJpbmVkLnB1c2goKG9mZnNldFtuXSB8fCAwKSArIDEpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbWJpbmVkLnB1c2goYmVmb3JlLmNvbHVtbilcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpbmRlbnQgPSBjb21iaW5lZC5jb25jYXQoaW5kZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5wb3NpdGlvbi5pbmRlbnQgPSBpbmRlbnQgfHwgW11cblxuICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBgbm9kZWAgdG8gYHBhcmVudGBzIGNoaWxkcmVuIG9yIHRvIGB0b2tlbnNgLiAgUGVyZm9ybXMgbWVyZ2VzIHdoZXJlXG4gICAgLy8gcG9zc2libGUuXG4gICAgZnVuY3Rpb24gYWRkKG5vZGUsIHBhcmVudCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50ID8gcGFyZW50LmNoaWxkcmVuIDogdG9rZW5zXG4gICAgICB2YXIgcHJldiA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgICB2YXIgZm5cblxuICAgICAgaWYgKFxuICAgICAgICBwcmV2ICYmXG4gICAgICAgIG5vZGUudHlwZSA9PT0gcHJldi50eXBlICYmXG4gICAgICAgIChub2RlLnR5cGUgPT09ICd0ZXh0JyB8fCBub2RlLnR5cGUgPT09ICdibG9ja3F1b3RlJykgJiZcbiAgICAgICAgbWVyZ2VhYmxlKHByZXYpICYmXG4gICAgICAgIG1lcmdlYWJsZShub2RlKVxuICAgICAgKSB7XG4gICAgICAgIGZuID0gbm9kZS50eXBlID09PSAndGV4dCcgPyBtZXJnZVRleHQgOiBtZXJnZUJsb2NrcXVvdGVcbiAgICAgICAgbm9kZSA9IGZuLmNhbGwoc2VsZiwgcHJldiwgbm9kZSlcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUgIT09IHByZXYpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChub2RlKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZi5hdFN0YXJ0ICYmIHRva2Vucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgc2VsZi5leGl0U3RhcnQoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBgc3VidmFsdWVgIGZyb20gYHZhbHVlYC4gIGBzdWJ2YWx1ZWAgbXVzdCBiZSBhdCB0aGUgc3RhcnQgb2ZcbiAgICAvLyBgdmFsdWVgLlxuICAgIGZ1bmN0aW9uIGVhdChzdWJ2YWx1ZSkge1xuICAgICAgdmFyIGluZGVudCA9IGdldE9mZnNldCgpXG4gICAgICB2YXIgcG9zID0gcG9zaXRpb24oKVxuICAgICAgdmFyIGN1cnJlbnQgPSBub3coKVxuXG4gICAgICB2YWxpZGF0ZUVhdChzdWJ2YWx1ZSlcblxuICAgICAgYXBwbHkucmVzZXQgPSByZXNldFxuICAgICAgcmVzZXQudGVzdCA9IHRlc3RcbiAgICAgIGFwcGx5LnRlc3QgPSB0ZXN0XG5cbiAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2Uoc3VidmFsdWUubGVuZ3RoKVxuXG4gICAgICB1cGRhdGVQb3NpdGlvbihzdWJ2YWx1ZSlcblxuICAgICAgaW5kZW50ID0gaW5kZW50KClcblxuICAgICAgcmV0dXJuIGFwcGx5XG5cbiAgICAgIC8vIEFkZCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhZGQgYHBvc2l0aW9uYCB0byB0aGUgcmV0dXJuZWQgbm9kZSwgYW5kXG4gICAgICAvLyByZXR1cm4gdGhlIG5vZGUuXG4gICAgICBmdW5jdGlvbiBhcHBseShub2RlLCBwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHBvcyhhZGQocG9zKG5vZGUpLCBwYXJlbnQpLCBpbmRlbnQpXG4gICAgICB9XG5cbiAgICAgIC8vIEZ1bmN0aW9ucyBqdXN0IGxpa2UgYXBwbHksIGJ1dCByZXNldHMgdGhlIGNvbnRlbnQ6IHRoZSBsaW5lIGFuZFxuICAgICAgLy8gY29sdW1uIGFyZSByZXZlcnNlZCwgYW5kIHRoZSBlYXRlbiB2YWx1ZSBpcyByZS1hZGRlZC4gICBUaGlzIGlzXG4gICAgICAvLyB1c2VmdWwgZm9yIG5vZGVzIHdpdGggYSBzaW5nbGUgdHlwZSBvZiBjb250ZW50LCBzdWNoIGFzIGxpc3RzIGFuZFxuICAgICAgLy8gdGFibGVzLiAgU2VlIGBhcHBseWAgYWJvdmUgZm9yIHdoYXQgcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuXG4gICAgICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBhcHBseS5hcHBseShudWxsLCBhcmd1bWVudHMpXG5cbiAgICAgICAgbGluZSA9IGN1cnJlbnQubGluZVxuICAgICAgICBjb2x1bW4gPSBjdXJyZW50LmNvbHVtblxuICAgICAgICB2YWx1ZSA9IHN1YnZhbHVlICsgdmFsdWVcblxuICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgfVxuXG4gICAgICAvLyBUZXN0IHRoZSBwb3NpdGlvbiwgYWZ0ZXIgZWF0aW5nLCBhbmQgcmV2ZXJzZSB0byBhIG5vdC1lYXRlbiBzdGF0ZS5cbiAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBwb3Moe30pXG5cbiAgICAgICAgbGluZSA9IGN1cnJlbnQubGluZVxuICAgICAgICBjb2x1bW4gPSBjdXJyZW50LmNvbHVtblxuICAgICAgICB2YWx1ZSA9IHN1YnZhbHVlICsgdmFsdWVcblxuICAgICAgICByZXR1cm4gcmVzdWx0LnBvc2l0aW9uXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrIHdoZXRoZXIgYSBub2RlIGlzIG1lcmdlYWJsZSB3aXRoIGFkamFjZW50IG5vZGVzLlxuZnVuY3Rpb24gbWVyZ2VhYmxlKG5vZGUpIHtcbiAgdmFyIHN0YXJ0XG4gIHZhciBlbmRcblxuICBpZiAobm9kZS50eXBlICE9PSAndGV4dCcgfHwgIW5vZGUucG9zaXRpb24pIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgc3RhcnQgPSBub2RlLnBvc2l0aW9uLnN0YXJ0XG4gIGVuZCA9IG5vZGUucG9zaXRpb24uZW5kXG5cbiAgLy8gT25seSBtZXJnZSBub2RlcyB3aGljaCBvY2N1cHkgdGhlIHNhbWUgc2l6ZSBhcyB0aGVpciBgdmFsdWVgLlxuICByZXR1cm4gKFxuICAgIHN0YXJ0LmxpbmUgIT09IGVuZC5saW5lIHx8IGVuZC5jb2x1bW4gLSBzdGFydC5jb2x1bW4gPT09IG5vZGUudmFsdWUubGVuZ3RoXG4gIClcbn1cblxuLy8gTWVyZ2UgdHdvIHRleHQgbm9kZXM6IGBub2RlYCBpbnRvIGBwcmV2YC5cbmZ1bmN0aW9uIG1lcmdlVGV4dChwcmV2LCBub2RlKSB7XG4gIHByZXYudmFsdWUgKz0gbm9kZS52YWx1ZVxuXG4gIHJldHVybiBwcmV2XG59XG5cbi8vIE1lcmdlIHR3byBibG9ja3F1b3RlczogYG5vZGVgIGludG8gYHByZXZgLCB1bmxlc3MgaW4gQ29tbW9uTWFyayBvciBnZm0gbW9kZXMuXG5mdW5jdGlvbiBtZXJnZUJsb2NrcXVvdGUocHJldiwgbm9kZSkge1xuICBpZiAodGhpcy5vcHRpb25zLmNvbW1vbm1hcmsgfHwgdGhpcy5vcHRpb25zLmdmbSkge1xuICAgIHJldHVybiBub2RlXG4gIH1cblxuICBwcmV2LmNoaWxkcmVuID0gcHJldi5jaGlsZHJlbi5jb25jYXQobm9kZS5jaGlsZHJlbilcblxuICByZXR1cm4gcHJldlxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZXNjYXBlc1xuXG52YXIgZGVmYXVsdHMgPSBbXG4gICdcXFxcJyxcbiAgJ2AnLFxuICAnKicsXG4gICd7JyxcbiAgJ30nLFxuICAnWycsXG4gICddJyxcbiAgJygnLFxuICAnKScsXG4gICcjJyxcbiAgJysnLFxuICAnLScsXG4gICcuJyxcbiAgJyEnLFxuICAnXycsXG4gICc+J1xuXVxuXG52YXIgZ2ZtID0gZGVmYXVsdHMuY29uY2F0KFsnficsICd8J10pXG5cbnZhciBjb21tb25tYXJrID0gZ2ZtLmNvbmNhdChbXG4gICdcXG4nLFxuICAnXCInLFxuICAnJCcsXG4gICclJyxcbiAgJyYnLFxuICBcIidcIixcbiAgJywnLFxuICAnLycsXG4gICc6JyxcbiAgJzsnLFxuICAnPCcsXG4gICc9JyxcbiAgJz8nLFxuICAnQCcsXG4gICdeJ1xuXSlcblxuZXNjYXBlcy5kZWZhdWx0ID0gZGVmYXVsdHNcbmVzY2FwZXMuZ2ZtID0gZ2ZtXG5lc2NhcGVzLmNvbW1vbm1hcmsgPSBjb21tb25tYXJrXG5cbi8vIEdldCBtYXJrZG93biBlc2NhcGVzLlxuZnVuY3Rpb24gZXNjYXBlcyhvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cblxuICBpZiAoc2V0dGluZ3MuY29tbW9ubWFyaykge1xuICAgIHJldHVybiBjb21tb25tYXJrXG4gIH1cblxuICByZXR1cm4gc2V0dGluZ3MuZ2ZtID8gZ2ZtIDogZGVmYXVsdHNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdiYXNlJyxcbiAgJ2Jhc2Vmb250JyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdjYXB0aW9uJyxcbiAgJ2NlbnRlcicsXG4gICdjb2wnLFxuICAnY29sZ3JvdXAnLFxuICAnZGQnLFxuICAnZGV0YWlscycsXG4gICdkaWFsb2cnLFxuICAnZGlyJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdmcmFtZScsXG4gICdmcmFtZXNldCcsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkJyxcbiAgJ2hlYWRlcicsXG4gICdoZ3JvdXAnLFxuICAnaHInLFxuICAnaHRtbCcsXG4gICdpZnJhbWUnLFxuICAnbGVnZW5kJyxcbiAgJ2xpJyxcbiAgJ2xpbmsnLFxuICAnbWFpbicsXG4gICdtZW51JyxcbiAgJ21lbnVpdGVtJyxcbiAgJ21ldGEnLFxuICAnbmF2JyxcbiAgJ25vZnJhbWVzJyxcbiAgJ29sJyxcbiAgJ29wdGdyb3VwJyxcbiAgJ29wdGlvbicsXG4gICdwJyxcbiAgJ3BhcmFtJyxcbiAgJ3ByZScsXG4gICdzZWN0aW9uJyxcbiAgJ3NvdXJjZScsXG4gICd0aXRsZScsXG4gICdzdW1tYXJ5JyxcbiAgJ3RhYmxlJyxcbiAgJ3Rib2R5JyxcbiAgJ3RkJyxcbiAgJ3Rmb290JyxcbiAgJ3RoJyxcbiAgJ3RoZWFkJyxcbiAgJ3RpdGxlJyxcbiAgJ3RyJyxcbiAgJ3RyYWNrJyxcbiAgJ3VsJ1xuXVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwb3NpdGlvbjogdHJ1ZSxcbiAgZ2ZtOiB0cnVlLFxuICBjb21tb25tYXJrOiBmYWxzZSxcbiAgZm9vdG5vdGVzOiBmYWxzZSxcbiAgcGVkYW50aWM6IGZhbHNlLFxuICBibG9ja3M6IHJlcXVpcmUoJy4vYmxvY2stZWxlbWVudHMnKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBlc2NhcGVzID0gcmVxdWlyZSgnbWFya2Rvd24tZXNjYXBlcycpXG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJylcblxubW9kdWxlLmV4cG9ydHMgPSBzZXRPcHRpb25zXG5cbmZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGN1cnJlbnQgPSBzZWxmLm9wdGlvbnNcbiAgdmFyIGtleVxuICB2YXIgdmFsdWVcblxuICBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucyA9IHh0ZW5kKG9wdGlvbnMpXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGAnICsgb3B0aW9ucyArICdgIGZvciBzZXR0aW5nIGBvcHRpb25zYCcpXG4gIH1cblxuICBmb3IgKGtleSBpbiBkZWZhdWx0cykge1xuICAgIHZhbHVlID0gb3B0aW9uc1trZXldXG5cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSBjdXJyZW50W2tleV1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAoa2V5ICE9PSAnYmxvY2tzJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgfHxcbiAgICAgIChrZXkgPT09ICdibG9ja3MnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJbnZhbGlkIHZhbHVlIGAnICsgdmFsdWUgKyAnYCBmb3Igc2V0dGluZyBgb3B0aW9ucy4nICsga2V5ICsgJ2AnXG4gICAgICApXG4gICAgfVxuXG4gICAgb3B0aW9uc1trZXldID0gdmFsdWVcbiAgfVxuXG4gIHNlbGYub3B0aW9ucyA9IG9wdGlvbnNcbiAgc2VsZi5lc2NhcGUgPSBlc2NhcGVzKG9wdGlvbnMpXG5cbiAgcmV0dXJuIHNlbGZcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcblxubW9kdWxlLmV4cG9ydHMgPSByZW1vdmVQb3NpdGlvblxuXG5mdW5jdGlvbiByZW1vdmVQb3NpdGlvbihub2RlLCBmb3JjZSkge1xuICB2aXNpdChub2RlLCBmb3JjZSA/IGhhcmQgOiBzb2Z0KVxuICByZXR1cm4gbm9kZVxufVxuXG5mdW5jdGlvbiBoYXJkKG5vZGUpIHtcbiAgZGVsZXRlIG5vZGUucG9zaXRpb25cbn1cblxuZnVuY3Rpb24gc29mdChub2RlKSB7XG4gIG5vZGUucG9zaXRpb24gPSB1bmRlZmluZWRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgcmVtb3ZlUG9zaXRpb24gPSByZXF1aXJlKCd1bmlzdC11dGlsLXJlbW92ZS1wb3NpdGlvbicpXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBsaW5lQnJlYWtzRXhwcmVzc2lvbiA9IC9cXHJcXG58XFxyL2dcblxuLy8gUGFyc2UgdGhlIGJvdW5kIGZpbGUuXG5mdW5jdGlvbiBwYXJzZSgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciB2YWx1ZSA9IFN0cmluZyhzZWxmLmZpbGUpXG4gIHZhciBzdGFydCA9IHtsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMH1cbiAgdmFyIGNvbnRlbnQgPSB4dGVuZChzdGFydClcbiAgdmFyIG5vZGVcblxuICAvLyBDbGVhbiBub24tdW5peCBuZXdsaW5lczogYFxcclxcbmAgYW5kIGBcXHJgIGFyZSBhbGwgY2hhbmdlZCB0byBgXFxuYC5cbiAgLy8gVGhpcyBzaG91bGQgbm90IGFmZmVjdCBwb3NpdGlvbmFsIGluZm9ybWF0aW9uLlxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UobGluZUJyZWFrc0V4cHJlc3Npb24sIGxpbmVGZWVkKVxuXG4gIC8vIEJPTS5cbiAgaWYgKHZhbHVlLmNoYXJDb2RlQXQoMCkgPT09IDB4ZmVmZikge1xuICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSlcblxuICAgIGNvbnRlbnQuY29sdW1uKytcbiAgICBjb250ZW50Lm9mZnNldCsrXG4gIH1cblxuICBub2RlID0ge1xuICAgIHR5cGU6ICdyb290JyxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUJsb2NrKHZhbHVlLCBjb250ZW50KSxcbiAgICBwb3NpdGlvbjoge3N0YXJ0OiBzdGFydCwgZW5kOiBzZWxmLmVvZiB8fCB4dGVuZChzdGFydCl9XG4gIH1cblxuICBpZiAoIXNlbGYub3B0aW9ucy5wb3NpdGlvbikge1xuICAgIHJlbW92ZVBvc2l0aW9uKG5vZGUsIHRydWUpXG4gIH1cblxuICByZXR1cm4gbm9kZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ld2xpbmVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcblxuZnVuY3Rpb24gbmV3bGluZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgwKVxuICB2YXIgbGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgcXVldWVcbiAgdmFyIGluZGV4XG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpbmRleCA9IDFcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHN1YnZhbHVlID0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGVhdChzdWJ2YWx1ZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRyaW1UcmFpbGluZ0xpbmVzXG5cbnZhciBsaW5lID0gJ1xcbidcblxuLy8gUmVtb3ZlIGZpbmFsIG5ld2xpbmUgY2hhcmFjdGVycyBmcm9tIGB2YWx1ZWAuXG5mdW5jdGlvbiB0cmltVHJhaWxpbmdMaW5lcyh2YWx1ZSkge1xuICB2YXIgdmFsID0gU3RyaW5nKHZhbHVlKVxuICB2YXIgaW5kZXggPSB2YWwubGVuZ3RoXG5cbiAgd2hpbGUgKHZhbC5jaGFyQXQoLS1pbmRleCkgPT09IGxpbmUpIHtcbiAgICAvLyBFbXB0eVxuICB9XG5cbiAgcmV0dXJuIHZhbC5zbGljZSgwLCBpbmRleCArIDEpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKVxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltLXRyYWlsaW5nLWxpbmVzJylcblxubW9kdWxlLmV4cG9ydHMgPSBpbmRlbnRlZENvZGVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG5cbnZhciB0YWJTaXplID0gNFxudmFyIGNvZGVJbmRlbnQgPSByZXBlYXQoc3BhY2UsIHRhYlNpemUpXG5cbmZ1bmN0aW9uIGluZGVudGVkQ29kZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgY29udGVudCA9ICcnXG4gIHZhciBzdWJ2YWx1ZVF1ZXVlID0gJydcbiAgdmFyIGNvbnRlbnRRdWV1ZSA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGJsYW5rUXVldWVcbiAgdmFyIGluZGVudFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGluZGVudCkge1xuICAgICAgaW5kZW50ID0gZmFsc2VcblxuICAgICAgc3VidmFsdWUgKz0gc3VidmFsdWVRdWV1ZVxuICAgICAgY29udGVudCArPSBjb250ZW50UXVldWVcbiAgICAgIHN1YnZhbHVlUXVldWUgPSAnJ1xuICAgICAgY29udGVudFF1ZXVlID0gJydcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgc3VidmFsdWVRdWV1ZSA9IGNoYXJhY3RlclxuICAgICAgICBjb250ZW50UXVldWUgPSBjaGFyYWN0ZXJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgICBjb250ZW50ICs9IGNoYXJhY3RlclxuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgICAgaWYgKCFjaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgICAgICAgY29udGVudFF1ZXVlID0gY2hhcmFjdGVyXG4gICAgICAgICAgICBzdWJ2YWx1ZVF1ZXVlID0gY2hhcmFjdGVyXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSBzcGFjZSAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IGNoYXJhY3RlciAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMikgPT09IGNoYXJhY3RlciAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMykgPT09IGNoYXJhY3RlclxuICAgICkge1xuICAgICAgc3VidmFsdWVRdWV1ZSArPSBjb2RlSW5kZW50XG4gICAgICBpbmRleCArPSAzXG4gICAgICBpbmRlbnQgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgc3VidmFsdWVRdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGVudCA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgYmxhbmtRdWV1ZSA9ICcnXG5cbiAgICAgIHdoaWxlIChjaGFyYWN0ZXIgPT09IHRhYiB8fCBjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICAgIGJsYW5rUXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBzdWJ2YWx1ZVF1ZXVlICs9IGJsYW5rUXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIGNvbnRlbnRRdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICB9XG4gIH1cblxuICBpZiAoY29udGVudCkge1xuICAgIGlmIChzaWxlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgICAgdHlwZTogJ2NvZGUnLFxuICAgICAgbGFuZzogbnVsbCxcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgICB2YWx1ZTogdHJpbShjb250ZW50KVxuICAgIH0pXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZlbmNlZENvZGVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgdGlsZGUgPSAnfidcbnZhciBncmF2ZUFjY2VudCA9ICdgJ1xuXG52YXIgbWluRmVuY2VDb3VudCA9IDNcbnZhciB0YWJTaXplID0gNFxuXG5mdW5jdGlvbiBmZW5jZWRDb2RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGdmbSA9IHNlbGYub3B0aW9ucy5nZm1cbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCArIDFcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgZmVuY2VDb3VudFxuICB2YXIgbWFya2VyXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGZsYWdcbiAgdmFyIGxhbmdcbiAgdmFyIG1ldGFcbiAgdmFyIHF1ZXVlXG4gIHZhciBjb250ZW50XG4gIHZhciBleGRlbnRlZENvbnRlbnRcbiAgdmFyIGNsb3NpbmdcbiAgdmFyIGV4ZGVudGVkQ2xvc2luZ1xuICB2YXIgaW5kZW50XG4gIHZhciBub3dcblxuICBpZiAoIWdmbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gRWF0IGluaXRpYWwgc3BhY2luZy5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaW5kZW50ID0gaW5kZXhcblxuICAvLyBFYXQgdGhlIGZlbmNlLlxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gdGlsZGUgJiYgY2hhcmFjdGVyICE9PSBncmF2ZUFjY2VudCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgZmVuY2VDb3VudCA9IDFcbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gbWFya2VyKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGZlbmNlQ291bnQrK1xuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChmZW5jZUNvdW50IDwgbWluRmVuY2VDb3VudCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gRWF0IHNwYWNpbmcgYmVmb3JlIGZsYWcuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gdGFiKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIC8vIEVhdCBmbGFnLlxuICBmbGFnID0gJydcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChcbiAgICAgIGNoYXJhY3RlciA9PT0gbGluZUZlZWQgfHxcbiAgICAgIChtYXJrZXIgPT09IGdyYXZlQWNjZW50ICYmIGNoYXJhY3RlciA9PT0gbWFya2VyKVxuICAgICkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBzcGFjZSB8fCBjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWcgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIHF1ZXVlID0gJydcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5vdyA9IGVhdC5ub3coKVxuICBub3cuY29sdW1uICs9IHN1YnZhbHVlLmxlbmd0aFxuICBub3cub2Zmc2V0ICs9IHN1YnZhbHVlLmxlbmd0aFxuXG4gIHN1YnZhbHVlICs9IGZsYWdcbiAgZmxhZyA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKGZsYWcpLCBub3cpXG5cbiAgaWYgKHF1ZXVlKSB7XG4gICAgc3VidmFsdWUgKz0gcXVldWVcbiAgfVxuXG4gIHF1ZXVlID0gJydcbiAgY2xvc2luZyA9ICcnXG4gIGV4ZGVudGVkQ2xvc2luZyA9ICcnXG4gIGNvbnRlbnQgPSAnJ1xuICBleGRlbnRlZENvbnRlbnQgPSAnJ1xuICB2YXIgc2tpcCA9IHRydWVcblxuICAvLyBFYXQgY29udGVudC5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgIGNvbnRlbnQgKz0gY2xvc2luZ1xuICAgIGV4ZGVudGVkQ29udGVudCArPSBleGRlbnRlZENsb3NpbmdcbiAgICBjbG9zaW5nID0gJydcbiAgICBleGRlbnRlZENsb3NpbmcgPSAnJ1xuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyXG4gICAgICBleGRlbnRlZENsb3NpbmcgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIFRoZSBmaXJzdCBsaW5lIGZlZWQgaXMgaWdub3JlZC4gT3RoZXJzIGFyZW7igJl0LlxuICAgIGlmIChza2lwKSB7XG4gICAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIHNraXAgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICBjbG9zaW5nICs9IGNoYXJhY3RlclxuICAgICAgZXhkZW50ZWRDbG9zaW5nICs9IGNoYXJhY3RlclxuICAgIH1cblxuICAgIHF1ZXVlID0gJydcbiAgICBpbmRleCsrXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgY2xvc2luZyArPSBxdWV1ZVxuICAgIGV4ZGVudGVkQ2xvc2luZyArPSBxdWV1ZS5zbGljZShpbmRlbnQpXG5cbiAgICBpZiAocXVldWUubGVuZ3RoID49IHRhYlNpemUpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgcXVldWUgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjbG9zaW5nICs9IHF1ZXVlXG4gICAgZXhkZW50ZWRDbG9zaW5nICs9IHF1ZXVlXG5cbiAgICBpZiAocXVldWUubGVuZ3RoIDwgZmVuY2VDb3VudCkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBxdWV1ZSA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2xvc2luZyArPSBjaGFyYWN0ZXJcbiAgICAgIGV4ZGVudGVkQ2xvc2luZyArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlICs9IGNvbnRlbnQgKyBjbG9zaW5nXG5cbiAgLy8gR2V0IGxhbmcgYW5kIG1ldGEgZnJvbSB0aGUgZmxhZy5cbiAgaW5kZXggPSAtMVxuICBsZW5ndGggPSBmbGFnLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gZmxhZy5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBzcGFjZSB8fCBjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgaWYgKCFsYW5nKSB7XG4gICAgICAgIGxhbmcgPSBmbGFnLnNsaWNlKDAsIGluZGV4KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGFuZykge1xuICAgICAgbWV0YSA9IGZsYWcuc2xpY2UoaW5kZXgpXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnY29kZScsXG4gICAgbGFuZzogbGFuZyB8fCBmbGFnIHx8IG51bGwsXG4gICAgbWV0YTogbWV0YSB8fCBudWxsLFxuICAgIHZhbHVlOiBleGRlbnRlZENvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGludGVycnVwdFxuXG5mdW5jdGlvbiBpbnRlcnJ1cHQoaW50ZXJydXB0b3JzLCB0b2tlbml6ZXJzLCBjdHgsIHBhcmFtcykge1xuICB2YXIgbGVuZ3RoID0gaW50ZXJydXB0b3JzLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgaW50ZXJydXB0b3JcbiAgdmFyIGNvbmZpZ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaW50ZXJydXB0b3IgPSBpbnRlcnJ1cHRvcnNbaW5kZXhdXG4gICAgY29uZmlnID0gaW50ZXJydXB0b3JbMV0gfHwge31cblxuICAgIGlmIChcbiAgICAgIGNvbmZpZy5wZWRhbnRpYyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBjb25maWcucGVkYW50aWMgIT09IGN0eC5vcHRpb25zLnBlZGFudGljXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNvbmZpZy5jb21tb25tYXJrICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGNvbmZpZy5jb21tb25tYXJrICE9PSBjdHgub3B0aW9ucy5jb21tb25tYXJrXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmICh0b2tlbml6ZXJzW2ludGVycnVwdG9yWzBdXS5hcHBseShjdHgsIHBhcmFtcykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciBpbnRlcnJ1cHQgPSByZXF1aXJlKCcuLi91dGlsL2ludGVycnVwdCcpXG5cbm1vZHVsZS5leHBvcnRzID0gYmxvY2txdW90ZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcbnZhciBncmVhdGVyVGhhbiA9ICc+J1xuXG5mdW5jdGlvbiBibG9ja3F1b3RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIG9mZnNldHMgPSBzZWxmLm9mZnNldFxuICB2YXIgdG9rZW5pemVycyA9IHNlbGYuYmxvY2tUb2tlbml6ZXJzXG4gIHZhciBpbnRlcnJ1cHRvcnMgPSBzZWxmLmludGVycnVwdEJsb2NrcXVvdGVcbiAgdmFyIG5vdyA9IGVhdC5ub3coKVxuICB2YXIgY3VycmVudExpbmUgPSBub3cubGluZVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciB2YWx1ZXMgPSBbXVxuICB2YXIgY29udGVudHMgPSBbXVxuICB2YXIgaW5kZW50cyA9IFtdXG4gIHZhciBhZGRcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciByZXN0XG4gIHZhciBuZXh0SW5kZXhcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGxpbmVcbiAgdmFyIHN0YXJ0SW5kZXhcbiAgdmFyIHByZWZpeGVkXG4gIHZhciBleGl0XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGluZGV4ID0gMFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIG5leHRJbmRleCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQsIGluZGV4KVxuICAgIHN0YXJ0SW5kZXggPSBpbmRleFxuICAgIHByZWZpeGVkID0gZmFsc2VcblxuICAgIGlmIChuZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBsZW5ndGhcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBncmVhdGVyVGhhbikge1xuICAgICAgaW5kZXgrK1xuICAgICAgcHJlZml4ZWQgPSB0cnVlXG5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBzcGFjZSkge1xuICAgICAgICBpbmRleCsrXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgIH1cblxuICAgIGNvbnRlbnQgPSB2YWx1ZS5zbGljZShpbmRleCwgbmV4dEluZGV4KVxuXG4gICAgaWYgKCFwcmVmaXhlZCAmJiAhdHJpbShjb250ZW50KSkge1xuICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGlmICghcHJlZml4ZWQpIHtcbiAgICAgIHJlc3QgPSB2YWx1ZS5zbGljZShpbmRleClcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZvbGxvd2luZyBjb2RlIGNvbnRhaW5zIGEgcG9zc2libGUgYmxvY2suXG4gICAgICBpZiAoaW50ZXJydXB0KGludGVycnVwdG9ycywgdG9rZW5pemVycywgc2VsZiwgW2VhdCwgcmVzdCwgdHJ1ZV0pKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGluZSA9IHN0YXJ0SW5kZXggPT09IGluZGV4ID8gY29udGVudCA6IHZhbHVlLnNsaWNlKHN0YXJ0SW5kZXgsIG5leHRJbmRleClcblxuICAgIGluZGVudHMucHVzaChpbmRleCAtIHN0YXJ0SW5kZXgpXG4gICAgdmFsdWVzLnB1c2gobGluZSlcbiAgICBjb250ZW50cy5wdXNoKGNvbnRlbnQpXG5cbiAgICBpbmRleCA9IG5leHRJbmRleCArIDFcbiAgfVxuXG4gIGluZGV4ID0gLTFcbiAgbGVuZ3RoID0gaW5kZW50cy5sZW5ndGhcbiAgYWRkID0gZWF0KHZhbHVlcy5qb2luKGxpbmVGZWVkKSlcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIG9mZnNldHNbY3VycmVudExpbmVdID0gKG9mZnNldHNbY3VycmVudExpbmVdIHx8IDApICsgaW5kZW50c1tpbmRleF1cbiAgICBjdXJyZW50TGluZSsrXG4gIH1cblxuICBleGl0ID0gc2VsZi5lbnRlckJsb2NrKClcbiAgY29udGVudHMgPSBzZWxmLnRva2VuaXplQmxvY2soY29udGVudHMuam9pbihsaW5lRmVlZCksIG5vdylcbiAgZXhpdCgpXG5cbiAgcmV0dXJuIGFkZCh7dHlwZTogJ2Jsb2NrcXVvdGUnLCBjaGlsZHJlbjogY29udGVudHN9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYXR4SGVhZGluZ1xuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcbnZhciBudW1iZXJTaWduID0gJyMnXG5cbnZhciBtYXhGZW5jZUNvdW50ID0gNlxuXG5mdW5jdGlvbiBhdHhIZWFkaW5nKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHBlZGFudGljID0gc2VsZi5vcHRpb25zLnBlZGFudGljXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBub3cgPSBlYXQubm93KClcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGNvbnRlbnQgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBxdWV1ZVxuICB2YXIgZGVwdGhcblxuICAvLyBFYXQgaW5pdGlhbCBzcGFjaW5nLlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gdGFiKSB7XG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICB9XG5cbiAgLy8gRWF0IGhhc2hlcy5cbiAgZGVwdGggPSAwXG5cbiAgd2hpbGUgKCsraW5kZXggPD0gbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gbnVtYmVyU2lnbikge1xuICAgICAgaW5kZXgtLVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICBkZXB0aCsrXG4gIH1cblxuICBpZiAoZGVwdGggPiBtYXhGZW5jZUNvdW50KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIWRlcHRoIHx8ICghcGVkYW50aWMgJiYgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IG51bWJlclNpZ24pKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxXG5cbiAgLy8gRWF0IGludGVybWVkaWF0ZSB3aGl0ZS1zcGFjZS5cbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICAvLyBFeGl0IHdoZW4gbm90IGluIHBlZGFudGljIG1vZGUgd2l0aG91dCBzcGFjaW5nLlxuICBpZiAoIXBlZGFudGljICYmIHF1ZXVlLmxlbmd0aCA9PT0gMCAmJiBjaGFyYWN0ZXIgJiYgY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBFYXQgY29udGVudC5cbiAgc3VidmFsdWUgKz0gcXVldWVcbiAgcXVldWUgPSAnJ1xuICBjb250ZW50ID0gJydcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICghY2hhcmFjdGVyIHx8IGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIgJiYgY2hhcmFjdGVyICE9PSBudW1iZXJTaWduKSB7XG4gICAgICBjb250ZW50ICs9IHF1ZXVlICsgY2hhcmFjdGVyXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHdoaWxlIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgIH1cblxuICAgIC8vIGAjYCB3aXRob3V0IGEgcXVldWUgaXMgcGFydCBvZiB0aGUgY29udGVudC5cbiAgICBpZiAoIXBlZGFudGljICYmIGNvbnRlbnQgJiYgIXF1ZXVlICYmIGNoYXJhY3RlciA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgY29udGVudCArPSBjaGFyYWN0ZXJcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgd2hpbGUgKGNoYXJhY3RlciA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICB3aGlsZSAoY2hhcmFjdGVyID09PSBzcGFjZSB8fCBjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICBpbmRleC0tXG4gIH1cblxuICBub3cuY29sdW1uICs9IHN1YnZhbHVlLmxlbmd0aFxuICBub3cub2Zmc2V0ICs9IHN1YnZhbHVlLmxlbmd0aFxuICBzdWJ2YWx1ZSArPSBjb250ZW50ICsgcXVldWVcblxuICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7XG4gICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgIGRlcHRoOiBkZXB0aCxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShjb250ZW50LCBub3cpXG4gIH0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0aGVtYXRpY0JyZWFrXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGFzdGVyaXNrID0gJyonXG52YXIgZGFzaCA9ICctJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcblxudmFyIG1heENvdW50ID0gM1xuXG5mdW5jdGlvbiB0aGVtYXRpY0JyZWFrKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoICsgMVxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBtYXJrZXJcbiAgdmFyIG1hcmtlckNvdW50XG4gIHZhciBxdWV1ZVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICBpZiAoXG4gICAgY2hhcmFjdGVyICE9PSBhc3RlcmlzayAmJlxuICAgIGNoYXJhY3RlciAhPT0gZGFzaCAmJlxuICAgIGNoYXJhY3RlciAhPT0gdW5kZXJzY29yZVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIG1hcmtlciA9IGNoYXJhY3RlclxuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgbWFya2VyQ291bnQgPSAxXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IG1hcmtlcikge1xuICAgICAgbWFya2VyQ291bnQrK1xuICAgICAgc3VidmFsdWUgKz0gcXVldWUgKyBtYXJrZXJcbiAgICAgIHF1ZXVlID0gJydcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBtYXJrZXJDb3VudCA+PSBtYXhDb3VudCAmJlxuICAgICAgKCFjaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09PSBsaW5lRmVlZClcbiAgICApIHtcbiAgICAgIHN1YnZhbHVlICs9IHF1ZXVlXG5cbiAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe3R5cGU6ICd0aGVtYXRpY0JyZWFrJ30pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaW5kZW50YXRpb25cblxudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcblxudmFyIHNwYWNlU2l6ZSA9IDFcbnZhciB0YWJTaXplID0gNFxuXG4vLyBHZXRzIGluZGVudGF0aW9uIGluZm9ybWF0aW9uIGZvciBhIGxpbmUuXG5mdW5jdGlvbiBpbmRlbnRhdGlvbih2YWx1ZSkge1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBpbmRlbnQgPSAwXG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHZhciBzdG9wcyA9IHt9XG4gIHZhciBzaXplXG5cbiAgd2hpbGUgKGNoYXJhY3RlciA9PT0gdGFiIHx8IGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICBzaXplID0gY2hhcmFjdGVyID09PSB0YWIgPyB0YWJTaXplIDogc3BhY2VTaXplXG5cbiAgICBpbmRlbnQgKz0gc2l6ZVxuXG4gICAgaWYgKHNpemUgPiAxKSB7XG4gICAgICBpbmRlbnQgPSBNYXRoLmZsb29yKGluZGVudCAvIHNpemUpICogc2l6ZVxuICAgIH1cblxuICAgIHN0b3BzW2luZGVudF0gPSBpbmRleFxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICB9XG5cbiAgcmV0dXJuIHtpbmRlbnQ6IGluZGVudCwgc3RvcHM6IHN0b3BzfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpXG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpXG52YXIgZ2V0SW5kZW50ID0gcmVxdWlyZSgnLi9nZXQtaW5kZW50YXRpb24nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluZGVudGF0aW9uXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGV4Y2xhbWF0aW9uTWFyayA9ICchJ1xuXG4vLyBSZW1vdmUgdGhlIG1pbmltdW0gaW5kZW50IGZyb20gZXZlcnkgbGluZSBpbiBgdmFsdWVgLiAgU3VwcG9ydHMgYm90aCB0YWIsXG4vLyBzcGFjZWQsIGFuZCBtaXhlZCBpbmRlbnRhdGlvbiAoYXMgd2VsbCBhcyBwb3NzaWJsZSkuXG5mdW5jdGlvbiBpbmRlbnRhdGlvbih2YWx1ZSwgbWF4aW11bSkge1xuICB2YXIgdmFsdWVzID0gdmFsdWUuc3BsaXQobGluZUZlZWQpXG4gIHZhciBwb3NpdGlvbiA9IHZhbHVlcy5sZW5ndGggKyAxXG4gIHZhciBtaW5JbmRlbnQgPSBJbmZpbml0eVxuICB2YXIgbWF0cml4ID0gW11cbiAgdmFyIGluZGV4XG4gIHZhciBpbmRlbnRhdGlvblxuICB2YXIgc3RvcHNcbiAgdmFyIHBhZGRpbmdcblxuICB2YWx1ZXMudW5zaGlmdChyZXBlYXQoc3BhY2UsIG1heGltdW0pICsgZXhjbGFtYXRpb25NYXJrKVxuXG4gIHdoaWxlIChwb3NpdGlvbi0tKSB7XG4gICAgaW5kZW50YXRpb24gPSBnZXRJbmRlbnQodmFsdWVzW3Bvc2l0aW9uXSlcblxuICAgIG1hdHJpeFtwb3NpdGlvbl0gPSBpbmRlbnRhdGlvbi5zdG9wc1xuXG4gICAgaWYgKHRyaW0odmFsdWVzW3Bvc2l0aW9uXSkubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChpbmRlbnRhdGlvbi5pbmRlbnQpIHtcbiAgICAgIGlmIChpbmRlbnRhdGlvbi5pbmRlbnQgPiAwICYmIGluZGVudGF0aW9uLmluZGVudCA8IG1pbkluZGVudCkge1xuICAgICAgICBtaW5JbmRlbnQgPSBpbmRlbnRhdGlvbi5pbmRlbnRcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWluSW5kZW50ID0gSW5maW5pdHlcblxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAobWluSW5kZW50ICE9PSBJbmZpbml0eSkge1xuICAgIHBvc2l0aW9uID0gdmFsdWVzLmxlbmd0aFxuXG4gICAgd2hpbGUgKHBvc2l0aW9uLS0pIHtcbiAgICAgIHN0b3BzID0gbWF0cml4W3Bvc2l0aW9uXVxuICAgICAgaW5kZXggPSBtaW5JbmRlbnRcblxuICAgICAgd2hpbGUgKGluZGV4ICYmICEoaW5kZXggaW4gc3RvcHMpKSB7XG4gICAgICAgIGluZGV4LS1cbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0cmltKHZhbHVlc1twb3NpdGlvbl0pLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgICBtaW5JbmRlbnQgJiZcbiAgICAgICAgaW5kZXggIT09IG1pbkluZGVudFxuICAgICAgKSB7XG4gICAgICAgIHBhZGRpbmcgPSB0YWJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhZGRpbmcgPSAnJ1xuICAgICAgfVxuXG4gICAgICB2YWx1ZXNbcG9zaXRpb25dID1cbiAgICAgICAgcGFkZGluZyArIHZhbHVlc1twb3NpdGlvbl0uc2xpY2UoaW5kZXggaW4gc3RvcHMgPyBzdG9wc1tpbmRleF0gKyAxIDogMClcbiAgICB9XG4gIH1cblxuICB2YWx1ZXMuc2hpZnQoKVxuXG4gIHJldHVybiB2YWx1ZXMuam9pbihsaW5lRmVlZClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBnZXRJbmRlbnQgPSByZXF1aXJlKCcuLi91dGlsL2dldC1pbmRlbnRhdGlvbicpXG52YXIgcmVtb3ZlSW5kZW50ID0gcmVxdWlyZSgnLi4vdXRpbC9yZW1vdmUtaW5kZW50YXRpb24nKVxudmFyIGludGVycnVwdCA9IHJlcXVpcmUoJy4uL3V0aWwvaW50ZXJydXB0JylcblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0XG5cbnZhciBhc3RlcmlzayA9ICcqJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcbnZhciBwbHVzU2lnbiA9ICcrJ1xudmFyIGRhc2ggPSAnLSdcbnZhciBkb3QgPSAnLidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHJpZ2h0UGFyZW50aGVzaXMgPSAnKSdcbnZhciBsb3dlcmNhc2VYID0gJ3gnXG5cbnZhciB0YWJTaXplID0gNFxudmFyIGxvb3NlTGlzdEl0ZW1FeHByZXNzaW9uID0gL1xcblxcbig/IVxccyokKS9cbnZhciB0YXNrSXRlbUV4cHJlc3Npb24gPSAvXlxcWyhbIFxcdF18eHxYKV1bIFxcdF0vXG52YXIgYnVsbGV0RXhwcmVzc2lvbiA9IC9eKFsgXFx0XSopKFsqKy1dfFxcZCtbLildKSggezEsNH0oPyEgKXwgfFxcdHwkfCg/PVxcbikpKFteXFxuXSopL1xudmFyIHBlZGFudGljQnVsbGV0RXhwcmVzc2lvbiA9IC9eKFsgXFx0XSopKFsqKy1dfFxcZCtbLildKShbIFxcdF0rKS9cbnZhciBpbml0aWFsSW5kZW50RXhwcmVzc2lvbiA9IC9eKCB7MSw0fXxcXHQpPy9nbVxuXG5mdW5jdGlvbiBsaXN0KGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZWxmLm9wdGlvbnMuY29tbW9ubWFya1xuICB2YXIgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgdmFyIHRva2VuaXplcnMgPSBzZWxmLmJsb2NrVG9rZW5pemVyc1xuICB2YXIgaW50ZXJ1cHRvcnMgPSBzZWxmLmludGVycnVwdExpc3RcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBzdGFydCA9IG51bGxcbiAgdmFyIHNpemUgPSAwXG4gIHZhciBxdWV1ZVxuICB2YXIgb3JkZXJlZFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBtYXJrZXJcbiAgdmFyIG5leHRJbmRleFxuICB2YXIgc3RhcnRJbmRleFxuICB2YXIgcHJlZml4ZWRcbiAgdmFyIGN1cnJlbnRNYXJrZXJcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGxpbmVcbiAgdmFyIHByZXZFbXB0eVxuICB2YXIgZW1wdHlcbiAgdmFyIGl0ZW1zXG4gIHZhciBhbGxMaW5lc1xuICB2YXIgZW1wdHlMaW5lc1xuICB2YXIgaXRlbVxuICB2YXIgZW50ZXJUb3BcbiAgdmFyIGV4aXRCbG9ja3F1b3RlXG4gIHZhciBzcHJlYWQgPSBmYWxzZVxuICB2YXIgbm9kZVxuICB2YXIgbm93XG4gIHZhciBlbmRcbiAgdmFyIGluZGVudGVkXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBzaXplICs9IHRhYlNpemUgLSAoc2l6ZSAlIHRhYlNpemUpXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICBzaXplKytcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoc2l6ZSA+PSB0YWJTaXplKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gYXN0ZXJpc2sgfHwgY2hhcmFjdGVyID09PSBwbHVzU2lnbiB8fCBjaGFyYWN0ZXIgPT09IGRhc2gpIHtcbiAgICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgICBvcmRlcmVkID0gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICBvcmRlcmVkID0gdHJ1ZVxuICAgIHF1ZXVlID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoIWRlY2ltYWwoY2hhcmFjdGVyKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICAhcXVldWUgfHxcbiAgICAgICEoY2hhcmFjdGVyID09PSBkb3QgfHwgKGNvbW1vbm1hcmsgJiYgY2hhcmFjdGVyID09PSByaWdodFBhcmVudGhlc2lzKSlcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHN0YXJ0ID0gcGFyc2VJbnQocXVldWUsIDEwKVxuICAgIG1hcmtlciA9IGNoYXJhY3RlclxuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG5cbiAgaWYgKFxuICAgIGNoYXJhY3RlciAhPT0gc3BhY2UgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHRhYiAmJlxuICAgIChwZWRhbnRpYyB8fCAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCAmJiBjaGFyYWN0ZXIgIT09ICcnKSlcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGluZGV4ID0gMFxuICBpdGVtcyA9IFtdXG4gIGFsbExpbmVzID0gW11cbiAgZW1wdHlMaW5lcyA9IFtdXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgbmV4dEluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXgpXG4gICAgc3RhcnRJbmRleCA9IGluZGV4XG4gICAgcHJlZml4ZWQgPSBmYWxzZVxuICAgIGluZGVudGVkID0gZmFsc2VcblxuICAgIGlmIChuZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBsZW5ndGhcbiAgICB9XG5cbiAgICBlbmQgPSBpbmRleCArIHRhYlNpemVcbiAgICBzaXplID0gMFxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgICBzaXplICs9IHRhYlNpemUgLSAoc2l6ZSAlIHRhYlNpemUpXG4gICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgICAgc2l6ZSsrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaWYgKHNpemUgPj0gdGFiU2l6ZSkge1xuICAgICAgaW5kZW50ZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKGl0ZW0gJiYgc2l6ZSA+PSBpdGVtLmluZGVudCkge1xuICAgICAgaW5kZW50ZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgIGN1cnJlbnRNYXJrZXIgPSBudWxsXG5cbiAgICBpZiAoIWluZGVudGVkKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGNoYXJhY3RlciA9PT0gYXN0ZXJpc2sgfHxcbiAgICAgICAgY2hhcmFjdGVyID09PSBwbHVzU2lnbiB8fFxuICAgICAgICBjaGFyYWN0ZXIgPT09IGRhc2hcbiAgICAgICkge1xuICAgICAgICBjdXJyZW50TWFya2VyID0gY2hhcmFjdGVyXG4gICAgICAgIGluZGV4KytcbiAgICAgICAgc2l6ZSsrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZSA9ICcnXG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgICAgaWYgKCFkZWNpbWFsKGNoYXJhY3RlcikpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG5cbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgICAgICBpbmRleCsrXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHF1ZXVlICYmXG4gICAgICAgICAgKGNoYXJhY3RlciA9PT0gZG90IHx8IChjb21tb25tYXJrICYmIGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcykpXG4gICAgICAgICkge1xuICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBjaGFyYWN0ZXJcbiAgICAgICAgICBzaXplICs9IHF1ZXVlLmxlbmd0aCArIDFcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY3VycmVudE1hcmtlcikge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICAgICAgc2l6ZSArPSB0YWJTaXplIC0gKHNpemUgJSB0YWJTaXplKVxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICAgICAgZW5kID0gaW5kZXggKyB0YWJTaXplXG5cbiAgICAgICAgICB3aGlsZSAoaW5kZXggPCBlbmQpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBzcGFjZSkge1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbmRleCsrXG4gICAgICAgICAgICBzaXplKytcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaW5kZXggPT09IGVuZCAmJiB2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBzcGFjZSkge1xuICAgICAgICAgICAgaW5kZXggLT0gdGFiU2l6ZSAtIDFcbiAgICAgICAgICAgIHNpemUgLT0gdGFiU2l6ZSAtIDFcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCAmJiBjaGFyYWN0ZXIgIT09ICcnKSB7XG4gICAgICAgICAgY3VycmVudE1hcmtlciA9IG51bGxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50TWFya2VyKSB7XG4gICAgICBpZiAoIXBlZGFudGljICYmIG1hcmtlciAhPT0gY3VycmVudE1hcmtlcikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBwcmVmaXhlZCA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjb21tb25tYXJrICYmICFpbmRlbnRlZCAmJiB2YWx1ZS5jaGFyQXQoc3RhcnRJbmRleCkgPT09IHNwYWNlKSB7XG4gICAgICAgIGluZGVudGVkID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChjb21tb25tYXJrICYmIGl0ZW0pIHtcbiAgICAgICAgaW5kZW50ZWQgPSBzaXplID49IGl0ZW0uaW5kZW50IHx8IHNpemUgPiB0YWJTaXplXG4gICAgICB9XG5cbiAgICAgIHByZWZpeGVkID0gZmFsc2VcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgIH1cblxuICAgIGxpbmUgPSB2YWx1ZS5zbGljZShzdGFydEluZGV4LCBuZXh0SW5kZXgpXG4gICAgY29udGVudCA9IHN0YXJ0SW5kZXggPT09IGluZGV4ID8gbGluZSA6IHZhbHVlLnNsaWNlKGluZGV4LCBuZXh0SW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50TWFya2VyID09PSBhc3RlcmlzayB8fFxuICAgICAgY3VycmVudE1hcmtlciA9PT0gdW5kZXJzY29yZSB8fFxuICAgICAgY3VycmVudE1hcmtlciA9PT0gZGFzaFxuICAgICkge1xuICAgICAgaWYgKHRva2VuaXplcnMudGhlbWF0aWNCcmVhay5jYWxsKHNlbGYsIGVhdCwgbGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcmV2RW1wdHkgPSBlbXB0eVxuICAgIGVtcHR5ID0gIXByZWZpeGVkICYmICF0cmltKGNvbnRlbnQpLmxlbmd0aFxuXG4gICAgaWYgKGluZGVudGVkICYmIGl0ZW0pIHtcbiAgICAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH0gZWxzZSBpZiAocHJlZml4ZWQpIHtcbiAgICAgIGlmIChlbXB0eUxpbmVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBzcHJlYWQgPSB0cnVlXG4gICAgICAgIGl0ZW0udmFsdWUucHVzaCgnJylcbiAgICAgICAgaXRlbS50cmFpbCA9IGVtcHR5TGluZXMuY29uY2F0KClcbiAgICAgIH1cblxuICAgICAgaXRlbSA9IHtcbiAgICAgICAgdmFsdWU6IFtsaW5lXSxcbiAgICAgICAgaW5kZW50OiBzaXplLFxuICAgICAgICB0cmFpbDogW11cbiAgICAgIH1cblxuICAgICAgaXRlbXMucHVzaChpdGVtKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH0gZWxzZSBpZiAoZW1wdHkpIHtcbiAgICAgIGlmIChwcmV2RW1wdHkgJiYgIWNvbW1vbm1hcmspIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgZW1wdHlMaW5lcy5wdXNoKGxpbmUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcmV2RW1wdHkpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGludGVycnVwdChpbnRlcnVwdG9ycywgdG9rZW5pemVycywgc2VsZiwgW2VhdCwgbGluZSwgdHJ1ZV0pKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH1cblxuICAgIGluZGV4ID0gbmV4dEluZGV4ICsgMVxuICB9XG5cbiAgbm9kZSA9IGVhdChhbGxMaW5lcy5qb2luKGxpbmVGZWVkKSkucmVzZXQoe1xuICAgIHR5cGU6ICdsaXN0JyxcbiAgICBvcmRlcmVkOiBvcmRlcmVkLFxuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBzcHJlYWQ6IHNwcmVhZCxcbiAgICBjaGlsZHJlbjogW11cbiAgfSlcblxuICBlbnRlclRvcCA9IHNlbGYuZW50ZXJMaXN0KClcbiAgZXhpdEJsb2NrcXVvdGUgPSBzZWxmLmVudGVyQmxvY2soKVxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IGl0ZW1zLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaXRlbSA9IGl0ZW1zW2luZGV4XS52YWx1ZS5qb2luKGxpbmVGZWVkKVxuICAgIG5vdyA9IGVhdC5ub3coKVxuXG4gICAgZWF0KGl0ZW0pKGxpc3RJdGVtKHNlbGYsIGl0ZW0sIG5vdyksIG5vZGUpXG5cbiAgICBpdGVtID0gaXRlbXNbaW5kZXhdLnRyYWlsLmpvaW4obGluZUZlZWQpXG5cbiAgICBpZiAoaW5kZXggIT09IGxlbmd0aCAtIDEpIHtcbiAgICAgIGl0ZW0gKz0gbGluZUZlZWRcbiAgICB9XG5cbiAgICBlYXQoaXRlbSlcbiAgfVxuXG4gIGVudGVyVG9wKClcbiAgZXhpdEJsb2NrcXVvdGUoKVxuXG4gIHJldHVybiBub2RlXG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtKGN0eCwgdmFsdWUsIHBvc2l0aW9uKSB7XG4gIHZhciBvZmZzZXRzID0gY3R4Lm9mZnNldFxuICB2YXIgZm4gPSBjdHgub3B0aW9ucy5wZWRhbnRpYyA/IHBlZGFudGljTGlzdEl0ZW0gOiBub3JtYWxMaXN0SXRlbVxuICB2YXIgY2hlY2tlZCA9IG51bGxcbiAgdmFyIHRhc2tcbiAgdmFyIGluZGVudFxuXG4gIHZhbHVlID0gZm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKVxuXG4gIGlmIChjdHgub3B0aW9ucy5nZm0pIHtcbiAgICB0YXNrID0gdmFsdWUubWF0Y2godGFza0l0ZW1FeHByZXNzaW9uKVxuXG4gICAgaWYgKHRhc2spIHtcbiAgICAgIGluZGVudCA9IHRhc2tbMF0ubGVuZ3RoXG4gICAgICBjaGVja2VkID0gdGFza1sxXS50b0xvd2VyQ2FzZSgpID09PSBsb3dlcmNhc2VYXG4gICAgICBvZmZzZXRzW3Bvc2l0aW9uLmxpbmVdICs9IGluZGVudFxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShpbmRlbnQpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnbGlzdEl0ZW0nLFxuICAgIHNwcmVhZDogbG9vc2VMaXN0SXRlbUV4cHJlc3Npb24udGVzdCh2YWx1ZSksXG4gICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICBjaGlsZHJlbjogY3R4LnRva2VuaXplQmxvY2sodmFsdWUsIHBvc2l0aW9uKVxuICB9XG59XG5cbi8vIENyZWF0ZSBhIGxpc3QtaXRlbSB1c2luZyBvdmVybHkgc2ltcGxlIG1lY2hhbmljcy5cbmZ1bmN0aW9uIHBlZGFudGljTGlzdEl0ZW0oY3R4LCB2YWx1ZSwgcG9zaXRpb24pIHtcbiAgdmFyIG9mZnNldHMgPSBjdHgub2Zmc2V0XG4gIHZhciBsaW5lID0gcG9zaXRpb24ubGluZVxuXG4gIC8vIFJlbW92ZSB0aGUgbGlzdC1pdGVt4oCZcyBidWxsZXQuXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShwZWRhbnRpY0J1bGxldEV4cHJlc3Npb24sIHJlcGxhY2VyKVxuXG4gIC8vIFRoZSBpbml0aWFsIGxpbmUgd2FzIGFsc28gbWF0Y2hlZCBieSB0aGUgYmVsb3csIHNvIHdlIHJlc2V0IHRoZSBgbGluZWAuXG4gIGxpbmUgPSBwb3NpdGlvbi5saW5lXG5cbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoaW5pdGlhbEluZGVudEV4cHJlc3Npb24sIHJlcGxhY2VyKVxuXG4gIC8vIEEgc2ltcGxlIHJlcGxhY2VyIHdoaWNoIHJlbW92ZWQgYWxsIG1hdGNoZXMsIGFuZCBhZGRzIHRoZWlyIGxlbmd0aCB0b1xuICAvLyBgb2Zmc2V0YC5cbiAgZnVuY3Rpb24gcmVwbGFjZXIoJDApIHtcbiAgICBvZmZzZXRzW2xpbmVdID0gKG9mZnNldHNbbGluZV0gfHwgMCkgKyAkMC5sZW5ndGhcbiAgICBsaW5lKytcblxuICAgIHJldHVybiAnJ1xuICB9XG59XG5cbi8vIENyZWF0ZSBhIGxpc3QtaXRlbSB1c2luZyBzYW5lIG1lY2hhbmljcy5cbmZ1bmN0aW9uIG5vcm1hbExpc3RJdGVtKGN0eCwgdmFsdWUsIHBvc2l0aW9uKSB7XG4gIHZhciBvZmZzZXRzID0gY3R4Lm9mZnNldFxuICB2YXIgbGluZSA9IHBvc2l0aW9uLmxpbmVcbiAgdmFyIG1heFxuICB2YXIgYnVsbGV0XG4gIHZhciByZXN0XG4gIHZhciBsaW5lc1xuICB2YXIgdHJpbW1lZExpbmVzXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG5cbiAgLy8gUmVtb3ZlIHRoZSBsaXN0LWl0ZW3igJlzIGJ1bGxldC5cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGJ1bGxldEV4cHJlc3Npb24sIHJlcGxhY2VyKVxuXG4gIGxpbmVzID0gdmFsdWUuc3BsaXQobGluZUZlZWQpXG5cbiAgdHJpbW1lZExpbmVzID0gcmVtb3ZlSW5kZW50KHZhbHVlLCBnZXRJbmRlbnQobWF4KS5pbmRlbnQpLnNwbGl0KGxpbmVGZWVkKVxuXG4gIC8vIFdlIHJlcGxhY2VkIHRoZSBpbml0aWFsIGJ1bGxldCB3aXRoIHNvbWV0aGluZyBlbHNlIGFib3ZlLCB3aGljaCB3YXMgdXNlZFxuICAvLyB0byB0cmljayBgcmVtb3ZlSW5kZW50YXRpb25gIGludG8gcmVtb3Zpbmcgc29tZSBtb3JlIGNoYXJhY3RlcnMgd2hlblxuICAvLyBwb3NzaWJsZS4gIEhvd2V2ZXIsIHRoYXQgY291bGQgcmVzdWx0IGluIHRoZSBpbml0aWFsIGxpbmUgdG8gYmUgc3RyaXBwZWRcbiAgLy8gbW9yZSB0aGFuIGl0IHNob3VsZCBiZS5cbiAgdHJpbW1lZExpbmVzWzBdID0gcmVzdFxuXG4gIG9mZnNldHNbbGluZV0gPSAob2Zmc2V0c1tsaW5lXSB8fCAwKSArIGJ1bGxldC5sZW5ndGhcbiAgbGluZSsrXG5cbiAgaW5kZXggPSAwXG4gIGxlbmd0aCA9IGxpbmVzLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgb2Zmc2V0c1tsaW5lXSA9XG4gICAgICAob2Zmc2V0c1tsaW5lXSB8fCAwKSArIGxpbmVzW2luZGV4XS5sZW5ndGggLSB0cmltbWVkTGluZXNbaW5kZXhdLmxlbmd0aFxuICAgIGxpbmUrK1xuICB9XG5cbiAgcmV0dXJuIHRyaW1tZWRMaW5lcy5qb2luKGxpbmVGZWVkKVxuXG4gIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VyKCQwLCAkMSwgJDIsICQzLCAkNCkge1xuICAgIGJ1bGxldCA9ICQxICsgJDIgKyAkM1xuICAgIHJlc3QgPSAkNFxuXG4gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IG5pbmUgbnVtYmVyZWQgbGlzdCBpdGVtcyBjYW4gaW5kZW50IHdpdGggYW5cbiAgICAvLyBleHRyYSBzcGFjZS4gIFRoYXQgaXMsIHdoZW4gdGhlIGJ1bGxldCBkaWQgbm90IHJlY2VpdmUgYW4gZXh0cmEgZmluYWxcbiAgICAvLyBzcGFjZS5cbiAgICBpZiAoTnVtYmVyKCQyKSA8IDEwICYmIGJ1bGxldC5sZW5ndGggJSAyID09PSAxKSB7XG4gICAgICAkMiA9IHNwYWNlICsgJDJcbiAgICB9XG5cbiAgICBtYXggPSAkMSArIHJlcGVhdChzcGFjZSwgJDIubGVuZ3RoKSArICQzXG5cbiAgICByZXR1cm4gbWF4ICsgcmVzdFxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBzZXRleHRIZWFkaW5nXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGVxdWFsc1RvID0gJz0nXG52YXIgZGFzaCA9ICctJ1xuXG52YXIgbWF4SW5kZW50ID0gM1xuXG52YXIgZXF1YWxzVG9EZXB0aCA9IDFcbnZhciBkYXNoRGVwdGggPSAyXG5cbmZ1bmN0aW9uIHNldGV4dEhlYWRpbmcoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgbm93ID0gZWF0Lm5vdygpXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIHF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG1hcmtlclxuICB2YXIgZGVwdGhcblxuICAvLyBFYXQgaW5pdGlhbCBpbmRlbnRhdGlvbi5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSB8fCBpbmRleCA+PSBtYXhJbmRlbnQpIHtcbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICAvLyBFYXQgY29udGVudC5cbiAgY29udGVudCA9ICcnXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cbiAgfVxuXG4gIG5vdy5jb2x1bW4gKz0gc3VidmFsdWUubGVuZ3RoXG4gIG5vdy5vZmZzZXQgKz0gc3VidmFsdWUubGVuZ3RoXG4gIHN1YnZhbHVlICs9IGNvbnRlbnQgKyBxdWV1ZVxuXG4gIC8vIEVuc3VyZSB0aGUgY29udGVudCBpcyBmb2xsb3dlZCBieSBhIG5ld2xpbmUgYW5kIGEgdmFsaWQgbWFya2VyLlxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgbWFya2VyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQgfHwgKG1hcmtlciAhPT0gZXF1YWxzVG8gJiYgbWFya2VyICE9PSBkYXNoKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG5cbiAgLy8gRWF0IFNldGV4dC1saW5lLlxuICBxdWV1ZSA9IG1hcmtlclxuICBkZXB0aCA9IG1hcmtlciA9PT0gZXF1YWxzVG8gPyBlcXVhbHNUb0RlcHRoIDogZGFzaERlcHRoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gZWF0KHN1YnZhbHVlICsgcXVldWUpKHtcbiAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgZGVwdGg6IGRlcHRoLFxuICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYXR0cmlidXRlTmFtZSA9ICdbYS16QS1aXzpdW2EtekEtWjAtOTouXy1dKidcbnZhciB1bnF1b3RlZCA9ICdbXlwiXFwnPTw+YFxcXFx1MDAwMC1cXFxcdTAwMjBdKydcbnZhciBzaW5nbGVRdW90ZWQgPSBcIidbXiddKidcIlxudmFyIGRvdWJsZVF1b3RlZCA9ICdcIlteXCJdKlwiJ1xudmFyIGF0dHJpYnV0ZVZhbHVlID1cbiAgJyg/OicgKyB1bnF1b3RlZCArICd8JyArIHNpbmdsZVF1b3RlZCArICd8JyArIGRvdWJsZVF1b3RlZCArICcpJ1xudmFyIGF0dHJpYnV0ZSA9XG4gICcoPzpcXFxccysnICsgYXR0cmlidXRlTmFtZSArICcoPzpcXFxccyo9XFxcXHMqJyArIGF0dHJpYnV0ZVZhbHVlICsgJyk/KSdcbnZhciBvcGVuVGFnID0gJzxbQS1aYS16XVtBLVphLXowLTlcXFxcLV0qJyArIGF0dHJpYnV0ZSArICcqXFxcXHMqXFxcXC8/PidcbnZhciBjbG9zZVRhZyA9ICc8XFxcXC9bQS1aYS16XVtBLVphLXowLTlcXFxcLV0qXFxcXHMqPidcbnZhciBjb21tZW50ID0gJzwhLS0tLT58PCEtLSg/Oi0/W14+LV0pKD86LT9bXi1dKSotLT4nXG52YXIgcHJvY2Vzc2luZyA9ICc8Wz9dLio/Wz9dPidcbnZhciBkZWNsYXJhdGlvbiA9ICc8IVtBLVphLXpdK1xcXFxzK1tePl0qPidcbnZhciBjZGF0YSA9ICc8IVxcXFxbQ0RBVEFcXFxcW1tcXFxcc1xcXFxTXSo/XFxcXF1cXFxcXT4nXG5cbmV4cG9ydHMub3BlbkNsb3NlVGFnID0gbmV3IFJlZ0V4cCgnXig/OicgKyBvcGVuVGFnICsgJ3wnICsgY2xvc2VUYWcgKyAnKScpXG5cbmV4cG9ydHMudGFnID0gbmV3IFJlZ0V4cChcbiAgJ14oPzonICtcbiAgICBvcGVuVGFnICtcbiAgICAnfCcgK1xuICAgIGNsb3NlVGFnICtcbiAgICAnfCcgK1xuICAgIGNvbW1lbnQgK1xuICAgICd8JyArXG4gICAgcHJvY2Vzc2luZyArXG4gICAgJ3wnICtcbiAgICBkZWNsYXJhdGlvbiArXG4gICAgJ3wnICtcbiAgICBjZGF0YSArXG4gICAgJyknXG4pXG4iLCIndXNlIHN0cmljdCdcblxudmFyIG9wZW5DbG9zZVRhZyA9IHJlcXVpcmUoJy4uL3V0aWwvaHRtbCcpLm9wZW5DbG9zZVRhZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJsb2NrSHRtbFxuXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBsZXNzVGhhbiA9ICc8J1xuXG52YXIgcmF3T3BlbkV4cHJlc3Npb24gPSAvXjwoc2NyaXB0fHByZXxzdHlsZSkoPz0oXFxzfD58JCkpL2lcbnZhciByYXdDbG9zZUV4cHJlc3Npb24gPSAvPFxcLyhzY3JpcHR8cHJlfHN0eWxlKT4vaVxudmFyIGNvbW1lbnRPcGVuRXhwcmVzc2lvbiA9IC9ePCEtLS9cbnZhciBjb21tZW50Q2xvc2VFeHByZXNzaW9uID0gLy0tPi9cbnZhciBpbnN0cnVjdGlvbk9wZW5FeHByZXNzaW9uID0gL148XFw/L1xudmFyIGluc3RydWN0aW9uQ2xvc2VFeHByZXNzaW9uID0gL1xcPz4vXG52YXIgZGlyZWN0aXZlT3BlbkV4cHJlc3Npb24gPSAvXjwhW0EtWmEtel0vXG52YXIgZGlyZWN0aXZlQ2xvc2VFeHByZXNzaW9uID0gLz4vXG52YXIgY2RhdGFPcGVuRXhwcmVzc2lvbiA9IC9ePCFcXFtDREFUQVxcWy9cbnZhciBjZGF0YUNsb3NlRXhwcmVzc2lvbiA9IC9cXF1cXF0+L1xudmFyIGVsZW1lbnRDbG9zZUV4cHJlc3Npb24gPSAvXiQvXG52YXIgb3RoZXJFbGVtZW50T3BlbkV4cHJlc3Npb24gPSBuZXcgUmVnRXhwKG9wZW5DbG9zZVRhZy5zb3VyY2UgKyAnXFxcXHMqJCcpXG5cbmZ1bmN0aW9uIGJsb2NrSHRtbChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBibG9ja3MgPSBzZWxmLm9wdGlvbnMuYmxvY2tzLmpvaW4oJ3wnKVxuICB2YXIgZWxlbWVudE9wZW5FeHByZXNzaW9uID0gbmV3IFJlZ0V4cChcbiAgICAnXjwvPygnICsgYmxvY2tzICsgJykoPz0oXFxcXHN8Lz8+fCQpKScsXG4gICAgJ2knXG4gIClcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBuZXh0XG4gIHZhciBsaW5lXG4gIHZhciBvZmZzZXRcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgY291bnRcbiAgdmFyIHNlcXVlbmNlXG4gIHZhciBzdWJ2YWx1ZVxuXG4gIHZhciBzZXF1ZW5jZXMgPSBbXG4gICAgW3Jhd09wZW5FeHByZXNzaW9uLCByYXdDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtjb21tZW50T3BlbkV4cHJlc3Npb24sIGNvbW1lbnRDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtpbnN0cnVjdGlvbk9wZW5FeHByZXNzaW9uLCBpbnN0cnVjdGlvbkNsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2RpcmVjdGl2ZU9wZW5FeHByZXNzaW9uLCBkaXJlY3RpdmVDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtjZGF0YU9wZW5FeHByZXNzaW9uLCBjZGF0YUNsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2VsZW1lbnRPcGVuRXhwcmVzc2lvbiwgZWxlbWVudENsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW290aGVyRWxlbWVudE9wZW5FeHByZXNzaW9uLCBlbGVtZW50Q2xvc2VFeHByZXNzaW9uLCBmYWxzZV1cbiAgXVxuXG4gIC8vIEVhdCBpbml0aWFsIHNwYWNpbmcuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBsZXNzVGhhbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgbmV4dCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQsIGluZGV4ICsgMSlcbiAgbmV4dCA9IG5leHQgPT09IC0xID8gbGVuZ3RoIDogbmV4dFxuICBsaW5lID0gdmFsdWUuc2xpY2UoaW5kZXgsIG5leHQpXG4gIG9mZnNldCA9IC0xXG4gIGNvdW50ID0gc2VxdWVuY2VzLmxlbmd0aFxuXG4gIHdoaWxlICgrK29mZnNldCA8IGNvdW50KSB7XG4gICAgaWYgKHNlcXVlbmNlc1tvZmZzZXRdWzBdLnRlc3QobGluZSkpIHtcbiAgICAgIHNlcXVlbmNlID0gc2VxdWVuY2VzW29mZnNldF1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKCFzZXF1ZW5jZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiBzZXF1ZW5jZVsyXVxuICB9XG5cbiAgaW5kZXggPSBuZXh0XG5cbiAgaWYgKCFzZXF1ZW5jZVsxXS50ZXN0KGxpbmUpKSB7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBuZXh0ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuICAgICAgbmV4dCA9IG5leHQgPT09IC0xID8gbGVuZ3RoIDogbmV4dFxuICAgICAgbGluZSA9IHZhbHVlLnNsaWNlKGluZGV4ICsgMSwgbmV4dClcblxuICAgICAgaWYgKHNlcXVlbmNlWzFdLnRlc3QobGluZSkpIHtcbiAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICBpbmRleCA9IG5leHRcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gbmV4dFxuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgaW5kZXgpXG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe3R5cGU6ICdodG1sJywgdmFsdWU6IHN1YnZhbHVlfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgY29sbGFwc2VXaGl0ZVNwYWNlID0gcmVxdWlyZSgnY29sbGFwc2Utd2hpdGUtc3BhY2UnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5vcm1hbGl6ZVxuXG4vLyBOb3JtYWxpemUgYW4gaWRlbnRpZmllci4gIENvbGxhcHNlcyBtdWx0aXBsZSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzIGludG8gYVxuLy8gc2luZ2xlIHNwYWNlLCBhbmQgcmVtb3ZlcyBjYXNpbmcuXG5mdW5jdGlvbiBub3JtYWxpemUodmFsdWUpIHtcbiAgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSh2YWx1ZSkudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uL3V0aWwvbm9ybWFsaXplJylcblxubW9kdWxlLmV4cG9ydHMgPSBmb290bm90ZURlZmluaXRpb25cbmZvb3Rub3RlRGVmaW5pdGlvbi5ub3RJbkxpc3QgPSB0cnVlXG5mb290bm90ZURlZmluaXRpb24ubm90SW5CbG9jayA9IHRydWVcblxudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgbGVmdFNxdWFyZUJyYWNrZXQgPSAnWydcbnZhciByaWdodFNxdWFyZUJyYWNrZXQgPSAnXSdcbnZhciBjYXJldCA9ICdeJ1xudmFyIGNvbG9uID0gJzonXG5cbnZhciBFWFBSRVNTSU9OX0lOSVRJQUxfVEFCID0gL14oIHs0fXxcXHQpPy9nbVxuXG5mdW5jdGlvbiBmb290bm90ZURlZmluaXRpb24oZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgb2Zmc2V0cyA9IHNlbGYub2Zmc2V0XG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgbm93XG4gIHZhciBjdXJyZW50TGluZVxuICB2YXIgY29udGVudFxuICB2YXIgcXVldWVcbiAgdmFyIHN1YnF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGlkZW50aWZpZXJcbiAgdmFyIGFkZFxuICB2YXIgZXhpdFxuXG4gIGlmICghc2VsZi5vcHRpb25zLmZvb3Rub3Rlcykge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXggPSAwXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICBzdWJ2YWx1ZSA9ICcnXG4gIG5vdyA9IGVhdC5ub3coKVxuICBjdXJyZW50TGluZSA9IG5vdy5saW5lXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCkgIT09IGxlZnRTcXVhcmVCcmFja2V0IHx8XG4gICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgIT09IGNhcmV0XG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gbGVmdFNxdWFyZUJyYWNrZXQgKyBjYXJldFxuICBpbmRleCA9IHN1YnZhbHVlLmxlbmd0aFxuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBicmVha1xuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChcbiAgICAhcXVldWUgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSByaWdodFNxdWFyZUJyYWNrZXQgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSAhPT0gY29sb25cbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlkZW50aWZpZXIgPSBxdWV1ZVxuICBzdWJ2YWx1ZSArPSBxdWV1ZSArIHJpZ2h0U3F1YXJlQnJhY2tldCArIGNvbG9uXG4gIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgbm93LmNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgbm93Lm9mZnNldCArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuICBjb250ZW50ID0gJydcbiAgc3VicXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBzdWJxdWV1ZSA9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICBpbmRleCsrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IHN1YnF1ZXVlXG4gICAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgc3VicXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgaWYgKHN1YnF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBzdWJxdWV1ZVxuICAgIH1cblxuICAgIGlmIChxdWV1ZSkge1xuICAgICAgY29udGVudCArPSBxdWV1ZVxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cblxuICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgc3VidmFsdWUgKz0gY29udGVudFxuXG4gIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoRVhQUkVTU0lPTl9JTklUSUFMX1RBQiwgZnVuY3Rpb24obGluZSkge1xuICAgIG9mZnNldHNbY3VycmVudExpbmVdID0gKG9mZnNldHNbY3VycmVudExpbmVdIHx8IDApICsgbGluZS5sZW5ndGhcbiAgICBjdXJyZW50TGluZSsrXG5cbiAgICByZXR1cm4gJydcbiAgfSlcblxuICBhZGQgPSBlYXQoc3VidmFsdWUpXG5cbiAgZXhpdCA9IHNlbGYuZW50ZXJCbG9jaygpXG4gIGNvbnRlbnQgPSBzZWxmLnRva2VuaXplQmxvY2soY29udGVudCwgbm93KVxuICBleGl0KClcblxuICByZXR1cm4gYWRkKHtcbiAgICB0eXBlOiAnZm9vdG5vdGVEZWZpbml0aW9uJyxcbiAgICBpZGVudGlmaWVyOiBub3JtYWxpemUoaWRlbnRpZmllciksXG4gICAgbGFiZWw6IGlkZW50aWZpZXIsXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCcuLi91dGlsL25vcm1hbGl6ZScpXG5cbm1vZHVsZS5leHBvcnRzID0gZGVmaW5pdGlvblxuXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxlZnRTcXVhcmVCcmFja2V0ID0gJ1snXG52YXIgcmlnaHRTcXVhcmVCcmFja2V0ID0gJ10nXG52YXIgbGVmdFBhcmVudGhlc2lzID0gJygnXG52YXIgcmlnaHRQYXJlbnRoZXNpcyA9ICcpJ1xudmFyIGNvbG9uID0gJzonXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBncmVhdGVyVGhhbiA9ICc+J1xuXG5mdW5jdGlvbiBkZWZpbml0aW9uKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZWxmLm9wdGlvbnMuY29tbW9ubWFya1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGJlZm9yZVVSTFxuICB2YXIgYmVmb3JlVGl0bGVcbiAgdmFyIHF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHRlc3RcbiAgdmFyIGlkZW50aWZpZXJcbiAgdmFyIHVybFxuICB2YXIgdGl0bGVcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGluZGV4KytcbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGJyZWFrXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKFxuICAgICFxdWV1ZSB8fFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCkgIT09IHJpZ2h0U3F1YXJlQnJhY2tldCB8fFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBjb2xvblxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlkZW50aWZpZXIgPSBxdWV1ZVxuICBzdWJ2YWx1ZSArPSBxdWV1ZSArIHJpZ2h0U3F1YXJlQnJhY2tldCArIGNvbG9uXG4gIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSB0YWIgJiYgY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgcXVldWUgPSAnJ1xuICBiZWZvcmVVUkwgPSBzdWJ2YWx1ZVxuXG4gIGlmIChjaGFyYWN0ZXIgPT09IGxlc3NUaGFuKSB7XG4gICAgaW5kZXgrK1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmICghaXNFbmNsb3NlZFVSTENoYXJhY3RlcihjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGlzRW5jbG9zZWRVUkxDaGFyYWN0ZXIuZGVsaW1pdGVyKSB7XG4gICAgICBzdWJ2YWx1ZSArPSBsZXNzVGhhbiArIHF1ZXVlICsgY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb21tb25tYXJrKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpbmRleCAtPSBxdWV1ZS5sZW5ndGggKyAxXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgfVxuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoIWlzVW5jbG9zZWRVUkxDaGFyYWN0ZXIoY2hhcmFjdGVyKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdXJsID0gcXVldWVcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB0ZXN0ID0gbnVsbFxuXG4gIGlmIChjaGFyYWN0ZXIgPT09IHF1b3RhdGlvbk1hcmspIHtcbiAgICB0ZXN0ID0gcXVvdGF0aW9uTWFya1xuICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gYXBvc3Ryb3BoZSkge1xuICAgIHRlc3QgPSBhcG9zdHJvcGhlXG4gIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMpIHtcbiAgICB0ZXN0ID0gcmlnaHRQYXJlbnRoZXNpc1xuICB9XG5cbiAgaWYgKCF0ZXN0KSB7XG4gICAgcXVldWUgPSAnJ1xuICAgIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gIH0gZWxzZSBpZiAocXVldWUpIHtcbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gICAgcXVldWUgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IHRlc3QpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQgfHwgY2hhcmFjdGVyID09PSB0ZXN0KSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZSArPSBsaW5lRmVlZFxuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSB0ZXN0KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiZWZvcmVUaXRsZSA9IHN1YnZhbHVlXG4gICAgc3VidmFsdWUgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gICAgdGl0bGUgPSBxdWV1ZVxuICAgIHF1ZXVlID0gJydcbiAgfSBlbHNlIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgaWYgKHNpbGVudCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBiZWZvcmVVUkwgPSBlYXQoYmVmb3JlVVJMKS50ZXN0KCkuZW5kXG4gICAgdXJsID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUodXJsKSwgYmVmb3JlVVJMLCB7bm9uVGVybWluYXRlZDogZmFsc2V9KVxuXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICBiZWZvcmVUaXRsZSA9IGVhdChiZWZvcmVUaXRsZSkudGVzdCgpLmVuZFxuICAgICAgdGl0bGUgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZSh0aXRsZSksIGJlZm9yZVRpdGxlKVxuICAgIH1cblxuICAgIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICAgIHR5cGU6ICdkZWZpbml0aW9uJyxcbiAgICAgIGlkZW50aWZpZXI6IG5vcm1hbGl6ZShpZGVudGlmaWVyKSxcbiAgICAgIGxhYmVsOiBpZGVudGlmaWVyLFxuICAgICAgdGl0bGU6IHRpdGxlIHx8IG51bGwsXG4gICAgICB1cmw6IHVybFxuICAgIH0pXG4gIH1cbn1cblxuLy8gQ2hlY2sgaWYgYGNoYXJhY3RlcmAgY2FuIGJlIGluc2lkZSBhbiBlbmNsb3NlZCBVUkkuXG5mdW5jdGlvbiBpc0VuY2xvc2VkVVJMQ2hhcmFjdGVyKGNoYXJhY3Rlcikge1xuICByZXR1cm4gKFxuICAgIGNoYXJhY3RlciAhPT0gZ3JlYXRlclRoYW4gJiZcbiAgICBjaGFyYWN0ZXIgIT09IGxlZnRTcXVhcmVCcmFja2V0ICYmXG4gICAgY2hhcmFjdGVyICE9PSByaWdodFNxdWFyZUJyYWNrZXRcbiAgKVxufVxuXG5pc0VuY2xvc2VkVVJMQ2hhcmFjdGVyLmRlbGltaXRlciA9IGdyZWF0ZXJUaGFuXG5cbi8vIENoZWNrIGlmIGBjaGFyYWN0ZXJgIGNhbiBiZSBpbnNpZGUgYW4gdW5jbG9zZWQgVVJJLlxuZnVuY3Rpb24gaXNVbmNsb3NlZFVSTENoYXJhY3RlcihjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIChcbiAgICBjaGFyYWN0ZXIgIT09IGxlZnRTcXVhcmVCcmFja2V0ICYmXG4gICAgY2hhcmFjdGVyICE9PSByaWdodFNxdWFyZUJyYWNrZXQgJiZcbiAgICAhd2hpdGVzcGFjZShjaGFyYWN0ZXIpXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcblxubW9kdWxlLmV4cG9ydHMgPSB0YWJsZVxuXG52YXIgdGFiID0gJ1xcdCdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgc3BhY2UgPSAnICdcbnZhciBkYXNoID0gJy0nXG52YXIgY29sb24gPSAnOidcbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcbnZhciB2ZXJ0aWNhbEJhciA9ICd8J1xuXG52YXIgbWluQ29sdW1ucyA9IDFcbnZhciBtaW5Sb3dzID0gMlxuXG52YXIgbGVmdCA9ICdsZWZ0J1xudmFyIGNlbnRlciA9ICdjZW50ZXInXG52YXIgcmlnaHQgPSAncmlnaHQnXG5cbmZ1bmN0aW9uIHRhYmxlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGluZGV4XG4gIHZhciBhbGlnbm1lbnRzXG4gIHZhciBhbGlnbm1lbnRcbiAgdmFyIHN1YnZhbHVlXG4gIHZhciByb3dcbiAgdmFyIGxlbmd0aFxuICB2YXIgbGluZXNcbiAgdmFyIHF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGhhc0Rhc2hcbiAgdmFyIGFsaWduXG4gIHZhciBjZWxsXG4gIHZhciBwcmVhbWJsZVxuICB2YXIgbm93XG4gIHZhciBwb3NpdGlvblxuICB2YXIgbGluZUNvdW50XG4gIHZhciBsaW5lXG4gIHZhciByb3dzXG4gIHZhciB0YWJsZVxuICB2YXIgbGluZUluZGV4XG4gIHZhciBwaXBlSW5kZXhcbiAgdmFyIGZpcnN0XG5cbiAgLy8gRXhpdCB3aGVuIG5vdCBpbiBnZm0tbW9kZS5cbiAgaWYgKCFzZWxmLm9wdGlvbnMuZ2ZtKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBHZXQgdGhlIHJvd3MuXG4gIC8vIERldGVjdGluZyB0YWJsZXMgc29vbiBpcyBoYXJkLCBzbyB0aGVyZSBhcmUgc29tZSBjaGVja3MgZm9yIHBlcmZvcm1hbmNlXG4gIC8vIGhlcmUsIHN1Y2ggYXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIHJvd3MsIGFuZCBhbGxvd2VkIGNoYXJhY3RlcnMgaW4gdGhlXG4gIC8vIGFsaWdubWVudCByb3cuXG4gIGluZGV4ID0gMFxuICBsaW5lQ291bnQgPSAwXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCArIDFcbiAgbGluZXMgPSBbXVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGxpbmVJbmRleCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQsIGluZGV4KVxuICAgIHBpcGVJbmRleCA9IHZhbHVlLmluZGV4T2YodmVydGljYWxCYXIsIGluZGV4ICsgMSlcblxuICAgIGlmIChsaW5lSW5kZXggPT09IC0xKSB7XG4gICAgICBsaW5lSW5kZXggPSB2YWx1ZS5sZW5ndGhcbiAgICB9XG5cbiAgICBpZiAocGlwZUluZGV4ID09PSAtMSB8fCBwaXBlSW5kZXggPiBsaW5lSW5kZXgpIHtcbiAgICAgIGlmIChsaW5lQ291bnQgPCBtaW5Sb3dzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGxpbmVzLnB1c2godmFsdWUuc2xpY2UoaW5kZXgsIGxpbmVJbmRleCkpXG4gICAgbGluZUNvdW50KytcbiAgICBpbmRleCA9IGxpbmVJbmRleCArIDFcbiAgfVxuXG4gIC8vIFBhcnNlIHRoZSBhbGlnbm1lbnQgcm93LlxuICBzdWJ2YWx1ZSA9IGxpbmVzLmpvaW4obGluZUZlZWQpXG4gIGFsaWdubWVudHMgPSBsaW5lcy5zcGxpY2UoMSwgMSlbMF0gfHwgW11cbiAgaW5kZXggPSAwXG4gIGxlbmd0aCA9IGFsaWdubWVudHMubGVuZ3RoXG4gIGxpbmVDb3VudC0tXG4gIGFsaWdubWVudCA9IGZhbHNlXG4gIGFsaWduID0gW11cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSBhbGlnbm1lbnRzLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHZlcnRpY2FsQmFyKSB7XG4gICAgICBoYXNEYXNoID0gbnVsbFxuXG4gICAgICBpZiAoYWxpZ25tZW50ID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZmlyc3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsaWduLnB1c2goYWxpZ25tZW50KVxuICAgICAgICBhbGlnbm1lbnQgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBmaXJzdCA9IGZhbHNlXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGRhc2gpIHtcbiAgICAgIGhhc0Rhc2ggPSB0cnVlXG4gICAgICBhbGlnbm1lbnQgPSBhbGlnbm1lbnQgfHwgbnVsbFxuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBjb2xvbikge1xuICAgICAgaWYgKGFsaWdubWVudCA9PT0gbGVmdCkge1xuICAgICAgICBhbGlnbm1lbnQgPSBjZW50ZXJcbiAgICAgIH0gZWxzZSBpZiAoaGFzRGFzaCAmJiBhbGlnbm1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgYWxpZ25tZW50ID0gcmlnaHRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsaWdubWVudCA9IGxlZnRcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChhbGlnbm1lbnQgIT09IGZhbHNlKSB7XG4gICAgYWxpZ24ucHVzaChhbGlnbm1lbnQpXG4gIH1cblxuICAvLyBFeGl0IHdoZW4gd2l0aG91dCBlbm91Z2ggY29sdW1ucy5cbiAgaWYgKGFsaWduLmxlbmd0aCA8IG1pbkNvbHVtbnMpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBQYXJzZSB0aGUgcm93cy5cbiAgcG9zaXRpb24gPSAtMVxuICByb3dzID0gW11cblxuICB0YWJsZSA9IGVhdChzdWJ2YWx1ZSkucmVzZXQoe3R5cGU6ICd0YWJsZScsIGFsaWduOiBhbGlnbiwgY2hpbGRyZW46IHJvd3N9KVxuXG4gIHdoaWxlICgrK3Bvc2l0aW9uIDwgbGluZUNvdW50KSB7XG4gICAgbGluZSA9IGxpbmVzW3Bvc2l0aW9uXVxuICAgIHJvdyA9IHt0eXBlOiAndGFibGVSb3cnLCBjaGlsZHJlbjogW119XG5cbiAgICAvLyBFYXQgYSBuZXdsaW5lIGNoYXJhY3RlciB3aGVuIHRoaXMgaXMgbm90IHRoZSBmaXJzdCByb3cuXG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBlYXQobGluZUZlZWQpXG4gICAgfVxuXG4gICAgLy8gRWF0IHRoZSByb3cuXG4gICAgZWF0KGxpbmUpLnJlc2V0KHJvdywgdGFibGUpXG5cbiAgICBsZW5ndGggPSBsaW5lLmxlbmd0aCArIDFcbiAgICBpbmRleCA9IDBcbiAgICBxdWV1ZSA9ICcnXG4gICAgY2VsbCA9ICcnXG4gICAgcHJlYW1ibGUgPSB0cnVlXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IGxpbmUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSB0YWIgfHwgY2hhcmFjdGVyID09PSBzcGFjZSkge1xuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVhdChjaGFyYWN0ZXIpXG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09ICcnIHx8IGNoYXJhY3RlciA9PT0gdmVydGljYWxCYXIpIHtcbiAgICAgICAgaWYgKHByZWFtYmxlKSB7XG4gICAgICAgICAgZWF0KGNoYXJhY3RlcilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoKGNlbGwgfHwgY2hhcmFjdGVyKSAmJiAhcHJlYW1ibGUpIHtcbiAgICAgICAgICAgIHN1YnZhbHVlID0gY2VsbFxuXG4gICAgICAgICAgICBpZiAocXVldWUubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyKSB7XG4gICAgICAgICAgICAgICAgc3VidmFsdWUgKz0gcXVldWUuc2xpY2UoMCwgcXVldWUubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICBxdWV1ZSA9IHF1ZXVlLmNoYXJBdChxdWV1ZS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1YnZhbHVlICs9IHF1ZXVlXG4gICAgICAgICAgICAgICAgcXVldWUgPSAnJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5vdyA9IGVhdC5ub3coKVxuXG4gICAgICAgICAgICBlYXQoc3VidmFsdWUpKFxuICAgICAgICAgICAgICB7dHlwZTogJ3RhYmxlQ2VsbCcsIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKGNlbGwsIG5vdyl9LFxuICAgICAgICAgICAgICByb3dcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlYXQocXVldWUgKyBjaGFyYWN0ZXIpXG5cbiAgICAgICAgICBxdWV1ZSA9ICcnXG4gICAgICAgICAgY2VsbCA9ICcnXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChxdWV1ZSkge1xuICAgICAgICAgIGNlbGwgKz0gcXVldWVcbiAgICAgICAgICBxdWV1ZSA9ICcnXG4gICAgICAgIH1cblxuICAgICAgICBjZWxsICs9IGNoYXJhY3RlclxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCAmJiBpbmRleCAhPT0gbGVuZ3RoIC0gMikge1xuICAgICAgICAgIGNlbGwgKz0gbGluZS5jaGFyQXQoaW5kZXggKyAxKVxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcmVhbWJsZSA9IGZhbHNlXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgLy8gRWF0IHRoZSBhbGlnbm1lbnQgcm93LlxuICAgIGlmICghcG9zaXRpb24pIHtcbiAgICAgIGVhdChsaW5lRmVlZCArIGFsaWdubWVudHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhYmxlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciBkZWNpbWFsID0gcmVxdWlyZSgnaXMtZGVjaW1hbCcpXG52YXIgdHJpbVRyYWlsaW5nTGluZXMgPSByZXF1aXJlKCd0cmltLXRyYWlsaW5nLWxpbmVzJylcbnZhciBpbnRlcnJ1cHQgPSByZXF1aXJlKCcuLi91dGlsL2ludGVycnVwdCcpXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyYWdyYXBoXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBzcGFjZSA9ICcgJ1xuXG52YXIgdGFiU2l6ZSA9IDRcblxuLy8gVG9rZW5pc2UgcGFyYWdyYXBoLlxuZnVuY3Rpb24gcGFyYWdyYXBoKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHNldHRpbmdzID0gc2VsZi5vcHRpb25zXG4gIHZhciBjb21tb25tYXJrID0gc2V0dGluZ3MuY29tbW9ubWFya1xuICB2YXIgZ2ZtID0gc2V0dGluZ3MuZ2ZtXG4gIHZhciB0b2tlbml6ZXJzID0gc2VsZi5ibG9ja1Rva2VuaXplcnNcbiAgdmFyIGludGVycnVwdG9ycyA9IHNlbGYuaW50ZXJydXB0UGFyYWdyYXBoXG4gIHZhciBpbmRleCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQpXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHBvc2l0aW9uXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBzaXplXG4gIHZhciBub3dcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAvLyBFYXQgZXZlcnl0aGluZyBpZiB0aGVyZeKAmXMgbm8gZm9sbG93aW5nIG5ld2xpbmUuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgaW5kZXggPSBsZW5ndGhcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gU3RvcCBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgTkVXTElORS5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IGxpbmVGZWVkKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIC8vIEluIGNvbW1vbm1hcmstbW9kZSwgZm9sbG93aW5nIGluZGVudGVkIGxpbmVzIGFyZSBwYXJ0IG9mIHRoZSBwYXJhZ3JhcGguXG4gICAgaWYgKGNvbW1vbm1hcmspIHtcbiAgICAgIHNpemUgPSAwXG4gICAgICBwb3NpdGlvbiA9IGluZGV4ICsgMVxuXG4gICAgICB3aGlsZSAocG9zaXRpb24gPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KHBvc2l0aW9uKVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgICAgIHNpemUgPSB0YWJTaXplXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICAgICAgc2l6ZSsrXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvc2l0aW9uKytcbiAgICAgIH1cblxuICAgICAgaWYgKHNpemUgPj0gdGFiU2l6ZSAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoaW5kZXggKyAxKVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZvbGxvd2luZyBjb2RlIGNvbnRhaW5zIGEgcG9zc2libGUgYmxvY2suXG4gICAgaWYgKGludGVycnVwdChpbnRlcnJ1cHRvcnMsIHRva2VuaXplcnMsIHNlbGYsIFtlYXQsIHN1YnZhbHVlLCB0cnVlXSkpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gQnJlYWsgaWYgdGhlIGZvbGxvd2luZyBsaW5lIHN0YXJ0cyBhIGxpc3QsIHdoZW4gYWxyZWFkeSBpbiBhIGxpc3QsIG9yXG4gICAgLy8gd2hlbiBpbiBjb21tb25tYXJrLCBvciB3aGVuIGluIGdmbSBtb2RlIGFuZCB0aGUgYnVsbGV0IGlzICpub3QqIG51bWVyaWMuXG4gICAgaWYgKFxuICAgICAgdG9rZW5pemVycy5saXN0LmNhbGwoc2VsZiwgZWF0LCBzdWJ2YWx1ZSwgdHJ1ZSkgJiZcbiAgICAgIChzZWxmLmluTGlzdCB8fFxuICAgICAgICBjb21tb25tYXJrIHx8XG4gICAgICAgIChnZm0gJiYgIWRlY2ltYWwodHJpbS5sZWZ0KHN1YnZhbHVlKS5jaGFyQXQoMCkpKSlcbiAgICApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcG9zaXRpb24gPSBpbmRleFxuICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuXG4gICAgaWYgKGluZGV4ICE9PSAtMSAmJiB0cmltKHZhbHVlLnNsaWNlKHBvc2l0aW9uLCBpbmRleCkpID09PSAnJykge1xuICAgICAgaW5kZXggPSBwb3NpdGlvblxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBzdWJ2YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIGluZGV4KVxuXG4gIGlmICh0cmltKHN1YnZhbHVlKSA9PT0gJycpIHtcbiAgICBlYXQoc3VidmFsdWUpXG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5vdyA9IGVhdC5ub3coKVxuICBzdWJ2YWx1ZSA9IHRyaW1UcmFpbGluZ0xpbmVzKHN1YnZhbHVlKVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KVxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZS5pbmRleE9mKCdcXFxcJywgZnJvbUluZGV4KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvZXNjYXBlJylcblxubW9kdWxlLmV4cG9ydHMgPSBlc2NhcGVcbmVzY2FwZS5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG5cbmZ1bmN0aW9uIGVzY2FwZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG5vZGVcblxuICBpZiAodmFsdWUuY2hhckF0KDApID09PSBiYWNrc2xhc2gpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMSlcblxuICAgIGlmIChzZWxmLmVzY2FwZS5pbmRleE9mKGNoYXJhY3RlcikgIT09IC0xKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgIG5vZGUgPSB7dHlwZTogJ2JyZWFrJ31cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUgPSB7dHlwZTogJ3RleHQnLCB2YWx1ZTogY2hhcmFjdGVyfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWF0KGJhY2tzbGFzaCArIGNoYXJhY3Rlcikobm9kZSlcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUuaW5kZXhPZignPCcsIGZyb21JbmRleClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBkZWNvZGUgPSByZXF1aXJlKCdwYXJzZS1lbnRpdGllcycpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL3RhZycpXG5cbm1vZHVsZS5leHBvcnRzID0gYXV0b0xpbmtcbmF1dG9MaW5rLmxvY2F0b3IgPSBsb2NhdGVcbmF1dG9MaW5rLm5vdEluTGluayA9IHRydWVcblxudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBhdFNpZ24gPSAnQCdcbnZhciBzbGFzaCA9ICcvJ1xudmFyIG1haWx0byA9ICdtYWlsdG86J1xudmFyIG1haWx0b0xlbmd0aCA9IG1haWx0by5sZW5ndGhcblxuZnVuY3Rpb24gYXV0b0xpbmsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIHF1ZXVlID0gJydcbiAgdmFyIGhhc0F0Q2hhcmFjdGVyID0gZmFsc2VcbiAgdmFyIGxpbmsgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBub3dcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIHRva2VuaXplcnNcbiAgdmFyIGV4aXRcblxuICBpZiAodmFsdWUuY2hhckF0KDApICE9PSBsZXNzVGhhbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBzdWJ2YWx1ZSA9IGxlc3NUaGFuXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKFxuICAgICAgd2hpdGVzcGFjZShjaGFyYWN0ZXIpIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGdyZWF0ZXJUaGFuIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGF0U2lnbiB8fFxuICAgICAgKGNoYXJhY3RlciA9PT0gJzonICYmIHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBzbGFzaClcbiAgICApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbGluayArPSBxdWV1ZVxuICBxdWV1ZSA9ICcnXG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICBsaW5rICs9IGNoYXJhY3RlclxuICBpbmRleCsrXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gYXRTaWduKSB7XG4gICAgaGFzQXRDaGFyYWN0ZXIgPSB0cnVlXG4gIH0gZWxzZSB7XG4gICAgaWYgKGNoYXJhY3RlciAhPT0gJzonIHx8IHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBzbGFzaCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGluayArPSBzbGFzaFxuICAgIGluZGV4KytcbiAgfVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09PSBncmVhdGVyVGhhbikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKCFxdWV1ZSB8fCBjaGFyYWN0ZXIgIT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbGluayArPSBxdWV1ZVxuICBjb250ZW50ID0gbGlua1xuICBzdWJ2YWx1ZSArPSBsaW5rICsgY2hhcmFjdGVyXG4gIG5vdyA9IGVhdC5ub3coKVxuICBub3cuY29sdW1uKytcbiAgbm93Lm9mZnNldCsrXG5cbiAgaWYgKGhhc0F0Q2hhcmFjdGVyKSB7XG4gICAgaWYgKGxpbmsuc2xpY2UoMCwgbWFpbHRvTGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBtYWlsdG8pIHtcbiAgICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKG1haWx0b0xlbmd0aClcbiAgICAgIG5vdy5jb2x1bW4gKz0gbWFpbHRvTGVuZ3RoXG4gICAgICBub3cub2Zmc2V0ICs9IG1haWx0b0xlbmd0aFxuICAgIH0gZWxzZSB7XG4gICAgICBsaW5rID0gbWFpbHRvICsgbGlua1xuICAgIH1cbiAgfVxuXG4gIC8vIFRlbXBvcmFyaWx5IHJlbW92ZSBhbGwgdG9rZW5pemVycyBleGNlcHQgdGV4dCBpbiBhdXRvbGlua3MuXG4gIHRva2VuaXplcnMgPSBzZWxmLmlubGluZVRva2VuaXplcnNcbiAgc2VsZi5pbmxpbmVUb2tlbml6ZXJzID0ge3RleHQ6IHRva2VuaXplcnMudGV4dH1cblxuICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuXG4gIGNvbnRlbnQgPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcblxuICBzZWxmLmlubGluZVRva2VuaXplcnMgPSB0b2tlbml6ZXJzXG4gIGV4aXQoKVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnbGluaycsXG4gICAgdGl0bGU6IG51bGwsXG4gICAgdXJsOiBkZWNvZGUobGluaywge25vblRlcm1pbmF0ZWQ6IGZhbHNlfSksXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG52YXIgcHJvdG9jb2xzID0gWydodHRwczovLycsICdodHRwOi8vJywgJ21haWx0bzonXVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgbGVuZ3RoID0gcHJvdG9jb2xzLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbWluID0gLTFcbiAgdmFyIHBvc2l0aW9uXG5cbiAgaWYgKCF0aGlzLm9wdGlvbnMuZ2ZtKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHBvc2l0aW9uID0gdmFsdWUuaW5kZXhPZihwcm90b2NvbHNbaW5kZXhdLCBmcm9tSW5kZXgpXG5cbiAgICBpZiAocG9zaXRpb24gIT09IC0xICYmIChwb3NpdGlvbiA8IG1pbiB8fCBtaW4gPT09IC0xKSkge1xuICAgICAgbWluID0gcG9zaXRpb25cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWluXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGRlY29kZSA9IHJlcXVpcmUoJ3BhcnNlLWVudGl0aWVzJylcbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS91cmwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVybFxudXJsLmxvY2F0b3IgPSBsb2NhdGVcbnVybC5ub3RJbkxpbmsgPSB0cnVlXG5cbnZhciBxdW90YXRpb25NYXJrID0gJ1wiJ1xudmFyIGFwb3N0cm9waGUgPSBcIidcIlxudmFyIGxlZnRQYXJlbnRoZXNpcyA9ICcoJ1xudmFyIHJpZ2h0UGFyZW50aGVzaXMgPSAnKSdcbnZhciBjb21tYSA9ICcsJ1xudmFyIGRvdCA9ICcuJ1xudmFyIGNvbG9uID0gJzonXG52YXIgc2VtaWNvbG9uID0gJzsnXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBhdFNpZ24gPSAnQCdcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xuXG52YXIgaHR0cCA9ICdodHRwOi8vJ1xudmFyIGh0dHBzID0gJ2h0dHBzOi8vJ1xudmFyIG1haWx0byA9ICdtYWlsdG86J1xuXG52YXIgcHJvdG9jb2xzID0gW2h0dHAsIGh0dHBzLCBtYWlsdG9dXG5cbnZhciBwcm90b2NvbHNMZW5ndGggPSBwcm90b2NvbHMubGVuZ3RoXG5cbmZ1bmN0aW9uIHVybChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgY29udGVudFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBpbmRleFxuICB2YXIgcG9zaXRpb25cbiAgdmFyIHByb3RvY29sXG4gIHZhciBtYXRjaFxuICB2YXIgbGVuZ3RoXG4gIHZhciBxdWV1ZVxuICB2YXIgcGFyZW5Db3VudFxuICB2YXIgbmV4dENoYXJhY3RlclxuICB2YXIgdG9rZW5pemVyc1xuICB2YXIgZXhpdFxuXG4gIGlmICghc2VsZi5vcHRpb25zLmdmbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgPSAnJ1xuICBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBwcm90b2NvbHNMZW5ndGgpIHtcbiAgICBwcm90b2NvbCA9IHByb3RvY29sc1tpbmRleF1cbiAgICBtYXRjaCA9IHZhbHVlLnNsaWNlKDAsIHByb3RvY29sLmxlbmd0aClcblxuICAgIGlmIChtYXRjaC50b0xvd2VyQ2FzZSgpID09PSBwcm90b2NvbCkge1xuICAgICAgc3VidmFsdWUgPSBtYXRjaFxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoIXN1YnZhbHVlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCA9IHN1YnZhbHVlLmxlbmd0aFxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuICBwYXJlbkNvdW50ID0gMFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09PSBsZXNzVGhhbikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IGRvdCB8fFxuICAgICAgY2hhcmFjdGVyID09PSBjb21tYSB8fFxuICAgICAgY2hhcmFjdGVyID09PSBjb2xvbiB8fFxuICAgICAgY2hhcmFjdGVyID09PSBzZW1pY29sb24gfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gcXVvdGF0aW9uTWFyayB8fFxuICAgICAgY2hhcmFjdGVyID09PSBhcG9zdHJvcGhlIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IHJpZ2h0UGFyZW50aGVzaXMgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0XG4gICAgKSB7XG4gICAgICBuZXh0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4ICsgMSlcblxuICAgICAgaWYgKCFuZXh0Q2hhcmFjdGVyIHx8IHdoaXRlc3BhY2UobmV4dENoYXJhY3RlcikpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMgfHwgY2hhcmFjdGVyID09PSBsZWZ0U3F1YXJlQnJhY2tldCkge1xuICAgICAgcGFyZW5Db3VudCsrXG4gICAgfVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcyB8fCBjaGFyYWN0ZXIgPT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgICAgcGFyZW5Db3VudC0tXG5cbiAgICAgIGlmIChwYXJlbkNvdW50IDwgMCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmICghcXVldWUpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHN1YnZhbHVlICs9IHF1ZXVlXG4gIGNvbnRlbnQgPSBzdWJ2YWx1ZVxuXG4gIGlmIChwcm90b2NvbCA9PT0gbWFpbHRvKSB7XG4gICAgcG9zaXRpb24gPSBxdWV1ZS5pbmRleE9mKGF0U2lnbilcblxuICAgIGlmIChwb3NpdGlvbiA9PT0gLTEgfHwgcG9zaXRpb24gPT09IGxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKG1haWx0by5sZW5ndGgpXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZXhpdCA9IHNlbGYuZW50ZXJMaW5rKClcblxuICAvLyBUZW1wb3JhcmlseSByZW1vdmUgYWxsIHRva2VuaXplcnMgZXhjZXB0IHRleHQgaW4gdXJsLlxuICB0b2tlbml6ZXJzID0gc2VsZi5pbmxpbmVUb2tlbml6ZXJzXG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHt0ZXh0OiB0b2tlbml6ZXJzLnRleHR9XG5cbiAgY29udGVudCA9IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgZWF0Lm5vdygpKVxuXG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHRva2VuaXplcnNcbiAgZXhpdCgpXG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgIHR5cGU6ICdsaW5rJyxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB1cmw6IGRlY29kZShzdWJ2YWx1ZSwge25vblRlcm1pbmF0ZWQ6IGZhbHNlfSksXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYWxwaGFiZXRpY2FsID0gcmVxdWlyZSgnaXMtYWxwaGFiZXRpY2FsJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvdGFnJylcbnZhciB0YWcgPSByZXF1aXJlKCcuLi91dGlsL2h0bWwnKS50YWdcblxubW9kdWxlLmV4cG9ydHMgPSBpbmxpbmVIVE1MXG5pbmxpbmVIVE1MLmxvY2F0b3IgPSBsb2NhdGVcblxudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgcXVlc3Rpb25NYXJrID0gJz8nXG52YXIgZXhjbGFtYXRpb25NYXJrID0gJyEnXG52YXIgc2xhc2ggPSAnLydcblxudmFyIGh0bWxMaW5rT3BlbkV4cHJlc3Npb24gPSAvXjxhIC9pXG52YXIgaHRtbExpbmtDbG9zZUV4cHJlc3Npb24gPSAvXjxcXC9hPi9pXG5cbmZ1bmN0aW9uIGlubGluZUhUTUwoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHN1YnZhbHVlXG5cbiAgaWYgKHZhbHVlLmNoYXJBdCgwKSAhPT0gbGVzc1RoYW4gfHwgbGVuZ3RoIDwgMykge1xuICAgIHJldHVyblxuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDEpXG5cbiAgaWYgKFxuICAgICFhbHBoYWJldGljYWwoY2hhcmFjdGVyKSAmJlxuICAgIGNoYXJhY3RlciAhPT0gcXVlc3Rpb25NYXJrICYmXG4gICAgY2hhcmFjdGVyICE9PSBleGNsYW1hdGlvbk1hcmsgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHNsYXNoXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5tYXRjaCh0YWcpXG5cbiAgaWYgKCFzdWJ2YWx1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbm90IHVzZWQgeWV0LiAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHN1YnZhbHVlID0gc3VidmFsdWVbMF1cblxuICBpZiAoIXNlbGYuaW5MaW5rICYmIGh0bWxMaW5rT3BlbkV4cHJlc3Npb24udGVzdChzdWJ2YWx1ZSkpIHtcbiAgICBzZWxmLmluTGluayA9IHRydWVcbiAgfSBlbHNlIGlmIChzZWxmLmluTGluayAmJiBodG1sTGlua0Nsb3NlRXhwcmVzc2lvbi50ZXN0KHN1YnZhbHVlKSkge1xuICAgIHNlbGYuaW5MaW5rID0gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHt0eXBlOiAnaHRtbCcsIHZhbHVlOiBzdWJ2YWx1ZX0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGxpbmsgPSB2YWx1ZS5pbmRleE9mKCdbJywgZnJvbUluZGV4KVxuICB2YXIgaW1hZ2UgPSB2YWx1ZS5pbmRleE9mKCchWycsIGZyb21JbmRleClcblxuICBpZiAoaW1hZ2UgPT09IC0xKSB7XG4gICAgcmV0dXJuIGxpbmtcbiAgfVxuXG4gIC8vIExpbmsgY2FuIG5ldmVyIGJlIGAtMWAgaWYgYW4gaW1hZ2UgaXMgZm91bmQsIHNvIHdlIGRvbuKAmXQgbmVlZCB0byBjaGVja1xuICAvLyBmb3IgdGhhdCA6KVxuICByZXR1cm4gbGluayA8IGltYWdlID8gbGluayA6IGltYWdlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2xpbmsnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpbmtcbmxpbmsubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIGV4Y2xhbWF0aW9uTWFyayA9ICchJ1xudmFyIHF1b3RhdGlvbk1hcmsgPSAnXCInXG52YXIgYXBvc3Ryb3BoZSA9IFwiJ1wiXG52YXIgbGVmdFBhcmVudGhlc2lzID0gJygnXG52YXIgcmlnaHRQYXJlbnRoZXNpcyA9ICcpJ1xudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xudmFyIGdyYXZlQWNjZW50ID0gJ2AnXG5cbmZ1bmN0aW9uIGxpbmsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMClcbiAgdmFyIHBlZGFudGljID0gc2VsZi5vcHRpb25zLnBlZGFudGljXG4gIHZhciBjb21tb25tYXJrID0gc2VsZi5vcHRpb25zLmNvbW1vbm1hcmtcbiAgdmFyIGdmbSA9IHNlbGYub3B0aW9ucy5nZm1cbiAgdmFyIGNsb3NlZFxuICB2YXIgY291bnRcbiAgdmFyIG9wZW5pbmdcbiAgdmFyIGJlZm9yZVVSTFxuICB2YXIgYmVmb3JlVGl0bGVcbiAgdmFyIHN1YnF1ZXVlXG4gIHZhciBoYXNNYXJrZXJcbiAgdmFyIGlzSW1hZ2VcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIG1hcmtlclxuICB2YXIgbGVuZ3RoXG4gIHZhciB0aXRsZVxuICB2YXIgZGVwdGhcbiAgdmFyIHF1ZXVlXG4gIHZhciB1cmxcbiAgdmFyIG5vd1xuICB2YXIgZXhpdFxuICB2YXIgbm9kZVxuXG4gIC8vIERldGVjdCB3aGV0aGVyIHRoaXMgaXMgYW4gaW1hZ2UuXG4gIGlmIChjaGFyYWN0ZXIgPT09IGV4Y2xhbWF0aW9uTWFyaykge1xuICAgIGlzSW1hZ2UgPSB0cnVlXG4gICAgc3VidmFsdWUgPSBjaGFyYWN0ZXJcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgfVxuXG4gIC8vIEVhdCB0aGUgb3BlbmluZy5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIEV4aXQgd2hlbiB0aGlzIGlzIGEgbGluayBhbmQgd2XigJlyZSBhbHJlYWR5IGluc2lkZSBhIGxpbmsuXG4gIGlmICghaXNJbWFnZSAmJiBzZWxmLmluTGluaykge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcbiAgaW5kZXgrK1xuXG4gIC8vIEVhdCB0aGUgY29udGVudC5cbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIG5vdyA9IGVhdC5ub3coKVxuICBkZXB0aCA9IDBcblxuICBub3cuY29sdW1uICs9IGluZGV4XG4gIG5vdy5vZmZzZXQgKz0gaW5kZXhcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgc3VicXVldWUgPSBjaGFyYWN0ZXJcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGdyYXZlQWNjZW50KSB7XG4gICAgICAvLyBJbmxpbmUtY29kZSBpbiBsaW5rIGNvbnRlbnQuXG4gICAgICBjb3VudCA9IDFcblxuICAgICAgd2hpbGUgKHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBncmF2ZUFjY2VudCkge1xuICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBjb3VudCsrXG4gICAgICB9XG5cbiAgICAgIGlmICghb3BlbmluZykge1xuICAgICAgICBvcGVuaW5nID0gY291bnRcbiAgICAgIH0gZWxzZSBpZiAoY291bnQgPj0gb3BlbmluZykge1xuICAgICAgICBvcGVuaW5nID0gMFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIC8vIEFsbG93IGJyYWNrZXRzIHRvIGJlIGVzY2FwZWQuXG4gICAgICBpbmRleCsrXG4gICAgICBzdWJxdWV1ZSArPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgfSBlbHNlIGlmICgoIW9wZW5pbmcgfHwgZ2ZtKSAmJiBjaGFyYWN0ZXIgPT09IGxlZnRTcXVhcmVCcmFja2V0KSB7XG4gICAgICAvLyBJbiBHRk0gbW9kZSwgYnJhY2tldHMgaW4gY29kZSBzdGlsbCBjb3VudC4gIEluIGFsbCBvdGhlciBtb2RlcyxcbiAgICAgIC8vIHRoZXkgZG9u4oCZdC5cbiAgICAgIGRlcHRoKytcbiAgICB9IGVsc2UgaWYgKCghb3BlbmluZyB8fCBnZm0pICYmIGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBpZiAoZGVwdGgpIHtcbiAgICAgICAgZGVwdGgtLVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQWxsb3cgd2hpdGUtc3BhY2UgYmV0d2VlbiBjb250ZW50IGFuZCB1cmwgaW4gR0ZNIG1vZGUuXG4gICAgICAgIGlmICghcGVkYW50aWMpIHtcbiAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCArIDEpXG5cbiAgICAgICAgICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICAgICAgaW5kZXgrK1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSAhPT0gbGVmdFBhcmVudGhlc2lzKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBzdWJxdWV1ZSArPSBsZWZ0UGFyZW50aGVzaXNcbiAgICAgICAgY2xvc2VkID0gdHJ1ZVxuICAgICAgICBpbmRleCsrXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBxdWV1ZSArPSBzdWJxdWV1ZVxuICAgIHN1YnF1ZXVlID0gJydcbiAgICBpbmRleCsrXG4gIH1cblxuICAvLyBFYXQgdGhlIGNvbnRlbnQgY2xvc2luZy5cbiAgaWYgKCFjbG9zZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnRlbnQgPSBxdWV1ZVxuICBzdWJ2YWx1ZSArPSBxdWV1ZSArIHN1YnF1ZXVlXG4gIGluZGV4KytcblxuICAvLyBFYXQgd2hpdGUtc3BhY2UuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIC8vIEVhdCB0aGUgVVJMLlxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHF1ZXVlID0gJydcbiAgYmVmb3JlVVJMID0gc3VidmFsdWVcblxuICBpZiAoY2hhcmFjdGVyID09PSBsZXNzVGhhbikge1xuICAgIGluZGV4KytcbiAgICBiZWZvcmVVUkwgKz0gbGVzc1RoYW5cblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSBncmVhdGVyVGhhbikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tbW9ubWFyayAmJiBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4KSAhPT0gZ3JlYXRlclRoYW4pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGxlc3NUaGFuICsgcXVldWUgKyBncmVhdGVyVGhhblxuICAgIHVybCA9IHF1ZXVlXG4gICAgaW5kZXgrK1xuICB9IGVsc2Uge1xuICAgIGNoYXJhY3RlciA9IG51bGxcbiAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKFxuICAgICAgICBzdWJxdWV1ZSAmJlxuICAgICAgICAoY2hhcmFjdGVyID09PSBxdW90YXRpb25NYXJrIHx8XG4gICAgICAgICAgY2hhcmFjdGVyID09PSBhcG9zdHJvcGhlIHx8XG4gICAgICAgICAgKGNvbW1vbm1hcmsgJiYgY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMpKVxuICAgICAgKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgICAgaWYgKCFwZWRhbnRpYykge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcykge1xuICAgICAgICAgIGRlcHRoKytcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHJpZ2h0UGFyZW50aGVzaXMpIHtcbiAgICAgICAgICBpZiAoZGVwdGggPT09IDApIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVwdGgtLVxuICAgICAgICB9XG5cbiAgICAgICAgcXVldWUgKz0gc3VicXVldWVcbiAgICAgICAgc3VicXVldWUgPSAnJ1xuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgICAgIHF1ZXVlICs9IGJhY2tzbGFzaFxuICAgICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICAgIHVybCA9IHF1ZXVlXG4gICAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgfVxuXG4gIC8vIEVhdCB3aGl0ZS1zcGFjZS5cbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgc3VidmFsdWUgKz0gcXVldWVcblxuICAvLyBFYXQgdGhlIHRpdGxlLlxuICBpZiAoXG4gICAgcXVldWUgJiZcbiAgICAoY2hhcmFjdGVyID09PSBxdW90YXRpb25NYXJrIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGFwb3N0cm9waGUgfHxcbiAgICAgIChjb21tb25tYXJrICYmIGNoYXJhY3RlciA9PT0gbGVmdFBhcmVudGhlc2lzKSlcbiAgKSB7XG4gICAgaW5kZXgrK1xuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIHF1ZXVlID0gJydcbiAgICBtYXJrZXIgPSBjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcyA/IHJpZ2h0UGFyZW50aGVzaXMgOiBjaGFyYWN0ZXJcbiAgICBiZWZvcmVUaXRsZSA9IHN1YnZhbHVlXG5cbiAgICAvLyBJbiBjb21tb25tYXJrLW1vZGUsIHRoaW5ncyBhcmUgcHJldHR5IGVhc3k6IHRoZSBtYXJrZXIgY2Fubm90IG9jY3VyXG4gICAgLy8gaW5zaWRlIHRoZSB0aXRsZS4gIE5vbi1jb21tb25tYXJrIGRvZXMsIGhvd2V2ZXIsIHN1cHBvcnQgbmVzdGVkXG4gICAgLy8gZGVsaW1pdGVycy5cbiAgICBpZiAoY29tbW9ubWFyaykge1xuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBtYXJrZXIpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICAgICAgcXVldWUgKz0gYmFja3NsYXNoXG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrXG4gICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgfVxuXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGl0bGUgPSBxdWV1ZVxuICAgICAgc3VidmFsdWUgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbWFya2VyKSB7XG4gICAgICAgICAgaWYgKGhhc01hcmtlcikge1xuICAgICAgICAgICAgcXVldWUgKz0gbWFya2VyICsgc3VicXVldWVcbiAgICAgICAgICAgIHN1YnF1ZXVlID0gJydcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBoYXNNYXJrZXIgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc01hcmtlcikge1xuICAgICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcykge1xuICAgICAgICAgIHN1YnZhbHVlICs9IHF1ZXVlICsgbWFya2VyICsgc3VicXVldWVcbiAgICAgICAgICB0aXRsZSA9IHF1ZXVlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfSBlbHNlIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBxdWV1ZSArPSBtYXJrZXIgKyBzdWJxdWV1ZSArIGNoYXJhY3RlclxuICAgICAgICAgIHN1YnF1ZXVlID0gJydcbiAgICAgICAgICBoYXNNYXJrZXIgPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSByaWdodFBhcmVudGhlc2lzKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgc3VidmFsdWUgKz0gcmlnaHRQYXJlbnRoZXNpc1xuXG4gIHVybCA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKHVybCksIGVhdChiZWZvcmVVUkwpLnRlc3QoKS5lbmQsIHtcbiAgICBub25UZXJtaW5hdGVkOiBmYWxzZVxuICB9KVxuXG4gIGlmICh0aXRsZSkge1xuICAgIGJlZm9yZVRpdGxlID0gZWF0KGJlZm9yZVRpdGxlKS50ZXN0KCkuZW5kXG4gICAgdGl0bGUgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZSh0aXRsZSksIGJlZm9yZVRpdGxlKVxuICB9XG5cbiAgbm9kZSA9IHtcbiAgICB0eXBlOiBpc0ltYWdlID8gJ2ltYWdlJyA6ICdsaW5rJyxcbiAgICB0aXRsZTogdGl0bGUgfHwgbnVsbCxcbiAgICB1cmw6IHVybFxuICB9XG5cbiAgaWYgKGlzSW1hZ2UpIHtcbiAgICBub2RlLmFsdCA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKGNvbnRlbnQpLCBub3cpIHx8IG51bGxcbiAgfSBlbHNlIHtcbiAgICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuICAgIG5vZGUuY2hpbGRyZW4gPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgICBleGl0KClcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKG5vZGUpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2xpbmsnKVxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uL3V0aWwvbm9ybWFsaXplJylcblxubW9kdWxlLmV4cG9ydHMgPSByZWZlcmVuY2VcbnJlZmVyZW5jZS5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBsaW5rID0gJ2xpbmsnXG52YXIgaW1hZ2UgPSAnaW1hZ2UnXG52YXIgZm9vdG5vdGUgPSAnZm9vdG5vdGUnXG52YXIgc2hvcnRjdXQgPSAnc2hvcnRjdXQnXG52YXIgY29sbGFwc2VkID0gJ2NvbGxhcHNlZCdcbnZhciBmdWxsID0gJ2Z1bGwnXG52YXIgc3BhY2UgPSAnICdcbnZhciBleGNsYW1hdGlvbk1hcmsgPSAnISdcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xudmFyIGNhcmV0ID0gJ14nXG5cbmZ1bmN0aW9uIHJlZmVyZW5jZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBjb21tb25tYXJrID0gc2VsZi5vcHRpb25zLmNvbW1vbm1hcmtcbiAgdmFyIGZvb3Rub3RlcyA9IHNlbGYub3B0aW9ucy5mb290bm90ZXNcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgwKVxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGludHJvID0gJydcbiAgdmFyIHR5cGUgPSBsaW5rXG4gIHZhciByZWZlcmVuY2VUeXBlID0gc2hvcnRjdXRcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGlkZW50aWZpZXJcbiAgdmFyIG5vd1xuICB2YXIgbm9kZVxuICB2YXIgZXhpdFxuICB2YXIgcXVldWVcbiAgdmFyIGJyYWNrZXRlZFxuICB2YXIgZGVwdGhcblxuICAvLyBDaGVjayB3aGV0aGVyIHdl4oCZcmUgZWF0aW5nIGFuIGltYWdlLlxuICBpZiAoY2hhcmFjdGVyID09PSBleGNsYW1hdGlvbk1hcmspIHtcbiAgICB0eXBlID0gaW1hZ2VcbiAgICBpbnRybyA9IGNoYXJhY3RlclxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICB9XG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGluZGV4KytcbiAgaW50cm8gKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICAvLyBDaGVjayB3aGV0aGVyIHdl4oCZcmUgZWF0aW5nIGEgZm9vdG5vdGUuXG4gIGlmIChmb290bm90ZXMgJiYgdmFsdWUuY2hhckF0KGluZGV4KSA9PT0gY2FyZXQpIHtcbiAgICAvLyBFeGl0IGlmIGAhW15gIGlzIGZvdW5kLCBzbyB0aGUgYCFgIHdpbGwgYmUgc2VlbiBhcyB0ZXh0IGFmdGVyIHRoaXMsXG4gICAgLy8gYW5kIHdl4oCZbGwgZW50ZXIgdGhpcyBmdW5jdGlvbiBhZ2FpbiB3aGVuIGBbXmAgaXMgZm91bmQuXG4gICAgaWYgKHR5cGUgPT09IGltYWdlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpbnRybyArPSBjYXJldFxuICAgIGluZGV4KytcbiAgICB0eXBlID0gZm9vdG5vdGVcbiAgfVxuXG4gIC8vIEVhdCB0aGUgdGV4dC5cbiAgZGVwdGggPSAwXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGJyYWNrZXRlZCA9IHRydWVcbiAgICAgIGRlcHRoKytcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBpZiAoIWRlcHRoKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGRlcHRoLS1cbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIHF1ZXVlICs9IGJhY2tzbGFzaFxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgc3VidmFsdWUgPSBxdWV1ZVxuICBjb250ZW50ID0gcXVldWVcbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gIGlmIChjaGFyYWN0ZXIgIT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgcXVldWUgPSAnJ1xuXG4gIGlmICghY29tbW9ubWFyaykge1xuICAgIC8vIFRoZSBvcmlnaW5hbCBtYXJrZG93biBzeW50YXggZGVmaW5pdGlvbiBleHBsaWNpdGx5IGFsbG93cyBmb3Igd2hpdGVzcGFjZVxuICAgIC8vIGJldHdlZW4gdGhlIGxpbmsgdGV4dCBhbmQgbGluayBsYWJlbDsgY29tbW9ubWFyayBkZXBhcnRzIGZyb20gdGhpcywgaW5cbiAgICAvLyBwYXJ0IHRvIGltcHJvdmUgc3VwcG9ydCBmb3Igc2hvcnRjdXQgcmVmZXJlbmNlIGxpbmtzXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAvLyBJbmxpbmUgZm9vdG5vdGVzIGNhbm5vdCBoYXZlIGEgbGFiZWwuXG4gIC8vIElmIGZvb3Rub3RlcyBhcmUgZW5hYmxlZCwgbGluayBsYWJlbHMgY2Fubm90IHN0YXJ0IHdpdGggYSBjYXJldC5cbiAgaWYgKFxuICAgIHR5cGUgIT09IGZvb3Rub3RlICYmXG4gICAgY2hhcmFjdGVyID09PSBsZWZ0U3F1YXJlQnJhY2tldCAmJlxuICAgICghZm9vdG5vdGVzIHx8IHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBjYXJldClcbiAgKSB7XG4gICAgaWRlbnRpZmllciA9ICcnXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGxlZnRTcXVhcmVCcmFja2V0IHx8IGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgICBpZGVudGlmaWVyICs9IGJhY2tzbGFzaFxuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICAgIH1cblxuICAgICAgaWRlbnRpZmllciArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIHJlZmVyZW5jZVR5cGUgPSBpZGVudGlmaWVyID8gZnVsbCA6IGNvbGxhcHNlZFxuICAgICAgcXVldWUgKz0gaWRlbnRpZmllciArIGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH0gZWxzZSB7XG4gICAgICBpZGVudGlmaWVyID0gJydcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICAgIHF1ZXVlID0gJydcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlkZW50aWZpZXIgPSBjb250ZW50XG4gIH1cblxuICAvLyBCcmFja2V0cyBjYW5ub3QgYmUgaW5zaWRlIHRoZSBpZGVudGlmaWVyLlxuICBpZiAocmVmZXJlbmNlVHlwZSAhPT0gZnVsbCAmJiBicmFja2V0ZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHN1YnZhbHVlID0gaW50cm8gKyBzdWJ2YWx1ZVxuXG4gIGlmICh0eXBlID09PSBsaW5rICYmIHNlbGYuaW5MaW5rKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodHlwZSA9PT0gZm9vdG5vdGUgJiYgY29udGVudC5pbmRleE9mKHNwYWNlKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7XG4gICAgICB0eXBlOiBmb290bm90ZSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIGVhdC5ub3coKSlcbiAgICB9KVxuICB9XG5cbiAgbm93ID0gZWF0Lm5vdygpXG4gIG5vdy5jb2x1bW4gKz0gaW50cm8ubGVuZ3RoXG4gIG5vdy5vZmZzZXQgKz0gaW50cm8ubGVuZ3RoXG4gIGlkZW50aWZpZXIgPSByZWZlcmVuY2VUeXBlID09PSBmdWxsID8gaWRlbnRpZmllciA6IGNvbnRlbnRcblxuICBub2RlID0ge1xuICAgIHR5cGU6IHR5cGUgKyAnUmVmZXJlbmNlJyxcbiAgICBpZGVudGlmaWVyOiBub3JtYWxpemUoaWRlbnRpZmllciksXG4gICAgbGFiZWw6IGlkZW50aWZpZXJcbiAgfVxuXG4gIGlmICh0eXBlID09PSBsaW5rIHx8IHR5cGUgPT09IGltYWdlKSB7XG4gICAgbm9kZS5yZWZlcmVuY2VUeXBlID0gcmVmZXJlbmNlVHlwZVxuICB9XG5cbiAgaWYgKHR5cGUgPT09IGxpbmspIHtcbiAgICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuICAgIG5vZGUuY2hpbGRyZW4gPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgICBleGl0KClcbiAgfSBlbHNlIGlmICh0eXBlID09PSBpbWFnZSkge1xuICAgIG5vZGUuYWx0ID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUoY29udGVudCksIG5vdykgfHwgbnVsbFxuICB9XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkobm9kZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgYXN0ZXJpc2sgPSB2YWx1ZS5pbmRleE9mKCcqKicsIGZyb21JbmRleClcbiAgdmFyIHVuZGVyc2NvcmUgPSB2YWx1ZS5pbmRleE9mKCdfXycsIGZyb21JbmRleClcblxuICBpZiAodW5kZXJzY29yZSA9PT0gLTEpIHtcbiAgICByZXR1cm4gYXN0ZXJpc2tcbiAgfVxuXG4gIGlmIChhc3RlcmlzayA9PT0gLTEpIHtcbiAgICByZXR1cm4gdW5kZXJzY29yZVxuICB9XG5cbiAgcmV0dXJuIHVuZGVyc2NvcmUgPCBhc3RlcmlzayA/IHVuZGVyc2NvcmUgOiBhc3Rlcmlza1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvc3Ryb25nJylcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJvbmdcbnN0cm9uZy5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcbnZhciBhc3RlcmlzayA9ICcqJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcblxuZnVuY3Rpb24gc3Ryb25nKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB2YXIgbm93XG4gIHZhciBwZWRhbnRpY1xuICB2YXIgbWFya2VyXG4gIHZhciBxdWV1ZVxuICB2YXIgc3VidmFsdWVcbiAgdmFyIGxlbmd0aFxuICB2YXIgcHJldlxuXG4gIGlmIChcbiAgICAoY2hhcmFjdGVyICE9PSBhc3RlcmlzayAmJiBjaGFyYWN0ZXIgIT09IHVuZGVyc2NvcmUpIHx8XG4gICAgdmFsdWUuY2hhckF0KCsraW5kZXgpICE9PSBjaGFyYWN0ZXJcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBwZWRhbnRpYyA9IHNlbGYub3B0aW9ucy5wZWRhbnRpY1xuICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgc3VidmFsdWUgPSBtYXJrZXIgKyBtYXJrZXJcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIGluZGV4KytcbiAgcXVldWUgPSAnJ1xuICBjaGFyYWN0ZXIgPSAnJ1xuXG4gIGlmIChwZWRhbnRpYyAmJiB3aGl0ZXNwYWNlKHZhbHVlLmNoYXJBdChpbmRleCkpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBwcmV2ID0gY2hhcmFjdGVyXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSBtYXJrZXIgJiZcbiAgICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBtYXJrZXIgJiZcbiAgICAgICghcGVkYW50aWMgfHwgIXdoaXRlc3BhY2UocHJldikpXG4gICAgKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXggKyAyKVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgICAgaWYgKCF0cmltKHF1ZXVlKSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIG5vdyA9IGVhdC5ub3coKVxuICAgICAgICBub3cuY29sdW1uICs9IDJcbiAgICAgICAgbm93Lm9mZnNldCArPSAyXG5cbiAgICAgICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSArIHF1ZXVlICsgc3VidmFsdWUpKHtcbiAgICAgICAgICB0eXBlOiAnc3Ryb25nJyxcbiAgICAgICAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShxdWV1ZSwgbm93KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcGVkYW50aWMgJiYgY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB3b3JkQ2hhcmFjdGVyXG5cbnZhciBmcm9tQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGVcbnZhciByZSA9IC9cXHcvXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhIHdvcmQgY2hhcmFjdGVyLlxuZnVuY3Rpb24gd29yZENoYXJhY3RlcihjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIHJlLnRlc3QoXG4gICAgdHlwZW9mIGNoYXJhY3RlciA9PT0gJ251bWJlcicgPyBmcm9tQ29kZShjaGFyYWN0ZXIpIDogY2hhcmFjdGVyLmNoYXJBdCgwKVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGFzdGVyaXNrID0gdmFsdWUuaW5kZXhPZignKicsIGZyb21JbmRleClcbiAgdmFyIHVuZGVyc2NvcmUgPSB2YWx1ZS5pbmRleE9mKCdfJywgZnJvbUluZGV4KVxuXG4gIGlmICh1bmRlcnNjb3JlID09PSAtMSkge1xuICAgIHJldHVybiBhc3Rlcmlza1xuICB9XG5cbiAgaWYgKGFzdGVyaXNrID09PSAtMSkge1xuICAgIHJldHVybiB1bmRlcnNjb3JlXG4gIH1cblxuICByZXR1cm4gdW5kZXJzY29yZSA8IGFzdGVyaXNrID8gdW5kZXJzY29yZSA6IGFzdGVyaXNrXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciB3b3JkID0gcmVxdWlyZSgnaXMtd29yZC1jaGFyYWN0ZXInKVxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2VtcGhhc2lzJylcblxubW9kdWxlLmV4cG9ydHMgPSBlbXBoYXNpc1xuZW1waGFzaXMubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgYXN0ZXJpc2sgPSAnKidcbnZhciB1bmRlcnNjb3JlID0gJ18nXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG5cbmZ1bmN0aW9uIGVtcGhhc2lzKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB2YXIgbm93XG4gIHZhciBwZWRhbnRpY1xuICB2YXIgbWFya2VyXG4gIHZhciBxdWV1ZVxuICB2YXIgc3VidmFsdWVcbiAgdmFyIGxlbmd0aFxuICB2YXIgcHJldlxuXG4gIGlmIChjaGFyYWN0ZXIgIT09IGFzdGVyaXNrICYmIGNoYXJhY3RlciAhPT0gdW5kZXJzY29yZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgc3VidmFsdWUgPSBjaGFyYWN0ZXJcbiAgbWFya2VyID0gY2hhcmFjdGVyXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICBpbmRleCsrXG4gIHF1ZXVlID0gJydcbiAgY2hhcmFjdGVyID0gJydcblxuICBpZiAocGVkYW50aWMgJiYgd2hpdGVzcGFjZSh2YWx1ZS5jaGFyQXQoaW5kZXgpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgcHJldiA9IGNoYXJhY3RlclxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IG1hcmtlciAmJiAoIXBlZGFudGljIHx8ICF3aGl0ZXNwYWNlKHByZXYpKSkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICBpZiAoIXRyaW0ocXVldWUpIHx8IHByZXYgPT09IG1hcmtlcikge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwZWRhbnRpYyAmJiBtYXJrZXIgPT09IHVuZGVyc2NvcmUgJiYgd29yZChjaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgcXVldWUgKz0gbWFya2VyXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBub3cgPSBlYXQubm93KClcbiAgICAgICAgbm93LmNvbHVtbisrXG4gICAgICAgIG5vdy5vZmZzZXQrK1xuXG4gICAgICAgIHJldHVybiBlYXQoc3VidmFsdWUgKyBxdWV1ZSArIG1hcmtlcikoe1xuICAgICAgICAgIHR5cGU6ICdlbXBoYXNpcycsXG4gICAgICAgICAgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUocXVldWUsIG5vdylcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gbWFya2VyXG4gICAgfVxuXG4gICAgaWYgKCFwZWRhbnRpYyAmJiBjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUuaW5kZXhPZignfn4nLCBmcm9tSW5kZXgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2RlbGV0ZScpXG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaWtldGhyb3VnaFxuc3RyaWtldGhyb3VnaC5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciB0aWxkZSA9ICd+J1xudmFyIGZlbmNlID0gJ35+J1xuXG5mdW5jdGlvbiBzdHJpa2V0aHJvdWdoKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNoYXJhY3RlciA9ICcnXG4gIHZhciBwcmV2aW91cyA9ICcnXG4gIHZhciBwcmVjZWRpbmcgPSAnJ1xuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgaW5kZXhcbiAgdmFyIGxlbmd0aFxuICB2YXIgbm93XG5cbiAgaWYgKFxuICAgICFzZWxmLm9wdGlvbnMuZ2ZtIHx8XG4gICAgdmFsdWUuY2hhckF0KDApICE9PSB0aWxkZSB8fFxuICAgIHZhbHVlLmNoYXJBdCgxKSAhPT0gdGlsZGUgfHxcbiAgICB3aGl0ZXNwYWNlKHZhbHVlLmNoYXJBdCgyKSlcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCA9IDFcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIG5vdyA9IGVhdC5ub3coKVxuICBub3cuY29sdW1uICs9IDJcbiAgbm93Lm9mZnNldCArPSAyXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IHRpbGRlICYmXG4gICAgICBwcmV2aW91cyA9PT0gdGlsZGUgJiZcbiAgICAgICghcHJlY2VkaW5nIHx8ICF3aGl0ZXNwYWNlKHByZWNlZGluZykpXG4gICAgKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlYXQoZmVuY2UgKyBzdWJ2YWx1ZSArIGZlbmNlKSh7XG4gICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBwcmV2aW91c1xuICAgIHByZWNlZGluZyA9IHByZXZpb3VzXG4gICAgcHJldmlvdXMgPSBjaGFyYWN0ZXJcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZS5pbmRleE9mKCdgJywgZnJvbUluZGV4KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvY29kZS1pbmxpbmUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlubGluZUNvZGVcbmlubGluZUNvZGUubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgbGluZUZlZWQgPSAxMCAvLyAgJ1xcbidcbnZhciBzcGFjZSA9IDMyIC8vICcgJ1xudmFyIGdyYXZlQWNjZW50ID0gOTYgLy8gICdgJ1xuXG5mdW5jdGlvbiBpbmxpbmVDb2RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIG9wZW5pbmdGZW5jZUVuZFxuICB2YXIgY2xvc2luZ0ZlbmNlU3RhcnRcbiAgdmFyIGNsb3NpbmdGZW5jZUVuZFxuICB2YXIgY29kZVxuICB2YXIgbmV4dFxuICB2YXIgZm91bmRcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgIT09IGdyYXZlQWNjZW50KSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChpbmRleCA9PT0gMCB8fCBpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBvcGVuaW5nRmVuY2VFbmQgPSBpbmRleFxuICBuZXh0ID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gbmV4dFxuICAgIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4ICsgMSlcblxuICAgIGlmIChjb2RlID09PSBncmF2ZUFjY2VudCkge1xuICAgICAgaWYgKGNsb3NpbmdGZW5jZVN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xvc2luZ0ZlbmNlU3RhcnQgPSBpbmRleFxuICAgICAgfVxuXG4gICAgICBjbG9zaW5nRmVuY2VFbmQgPSBpbmRleCArIDFcblxuICAgICAgaWYgKFxuICAgICAgICBuZXh0ICE9PSBncmF2ZUFjY2VudCAmJlxuICAgICAgICBjbG9zaW5nRmVuY2VFbmQgLSBjbG9zaW5nRmVuY2VTdGFydCA9PT0gb3BlbmluZ0ZlbmNlRW5kXG4gICAgICApIHtcbiAgICAgICAgZm91bmQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjbG9zaW5nRmVuY2VTdGFydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbG9zaW5nRmVuY2VTdGFydCA9IHVuZGVmaW5lZFxuICAgICAgY2xvc2luZ0ZlbmNlRW5kID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKCFmb3VuZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgaW5pdGlhbCBhbmQgZmluYWwgc3BhY2UgKG9yIGxpbmUgZmVlZCksIGlmZiB0aGV5IGV4aXN0IGFuZCB0aGVyZVxuICAvLyBhcmUgbm9uLXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIGNvbnRlbnQuXG4gIGluZGV4ID0gb3BlbmluZ0ZlbmNlRW5kXG4gIGxlbmd0aCA9IGNsb3NpbmdGZW5jZVN0YXJ0XG4gIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuICBuZXh0ID0gdmFsdWUuY2hhckNvZGVBdChsZW5ndGggLSAxKVxuICBmb3VuZCA9IGZhbHNlXG5cbiAgaWYgKFxuICAgIGxlbmd0aCAtIGluZGV4ID4gMiAmJlxuICAgIChjb2RlID09PSBzcGFjZSB8fCBjb2RlID09PSBsaW5lRmVlZCkgJiZcbiAgICAobmV4dCA9PT0gc3BhY2UgfHwgbmV4dCA9PT0gbGluZUZlZWQpXG4gICkge1xuICAgIGluZGV4KytcbiAgICBsZW5ndGgtLVxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgICAgaWYgKGNvZGUgIT09IHNwYWNlICYmIGNvZGUgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaWYgKGZvdW5kID09PSB0cnVlKSB7XG4gICAgICBvcGVuaW5nRmVuY2VFbmQrK1xuICAgICAgY2xvc2luZ0ZlbmNlU3RhcnQtLVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlYXQodmFsdWUuc2xpY2UoMCwgY2xvc2luZ0ZlbmNlRW5kKSkoe1xuICAgIHR5cGU6ICdpbmxpbmVDb2RlJyxcbiAgICB2YWx1ZTogdmFsdWUuc2xpY2Uob3BlbmluZ0ZlbmNlRW5kLCBjbG9zaW5nRmVuY2VTdGFydClcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKCdcXG4nLCBmcm9tSW5kZXgpXG5cbiAgd2hpbGUgKGluZGV4ID4gZnJvbUluZGV4KSB7XG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCAtIDEpICE9PSAnICcpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaW5kZXgtLVxuICB9XG5cbiAgcmV0dXJuIGluZGV4XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9icmVhaycpXG5cbm1vZHVsZS5leHBvcnRzID0gaGFyZEJyZWFrXG5oYXJkQnJlYWsubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgc3BhY2UgPSAnICdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgbWluQnJlYWtMZW5ndGggPSAyXG5cbmZ1bmN0aW9uIGhhcmRCcmVhayhlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcXVldWUgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgaWYgKGluZGV4IDwgbWluQnJlYWtMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG5cbiAgICAgIHJldHVybiBlYXQocXVldWUpKHt0eXBlOiAnYnJlYWsnfSlcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRleHRcblxuZnVuY3Rpb24gdGV4dChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBtZXRob2RzXG4gIHZhciB0b2tlbml6ZXJzXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgcG9zaXRpb25cbiAgdmFyIHRva2VuaXplclxuICB2YXIgbmFtZVxuICB2YXIgbWluXG4gIHZhciBub3dcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbWV0aG9kcyA9IHNlbGYuaW5saW5lTWV0aG9kc1xuICBsZW5ndGggPSBtZXRob2RzLmxlbmd0aFxuICB0b2tlbml6ZXJzID0gc2VsZi5pbmxpbmVUb2tlbml6ZXJzXG4gIGluZGV4ID0gLTFcbiAgbWluID0gdmFsdWUubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBuYW1lID0gbWV0aG9kc1tpbmRleF1cblxuICAgIGlmIChuYW1lID09PSAndGV4dCcgfHwgIXRva2VuaXplcnNbbmFtZV0pIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdG9rZW5pemVyID0gdG9rZW5pemVyc1tuYW1lXS5sb2NhdG9yXG5cbiAgICBpZiAoIXRva2VuaXplcikge1xuICAgICAgZWF0LmZpbGUuZmFpbCgnTWlzc2luZyBsb2NhdG9yOiBgJyArIG5hbWUgKyAnYCcpXG4gICAgfVxuXG4gICAgcG9zaXRpb24gPSB0b2tlbml6ZXIuY2FsbChzZWxmLCB2YWx1ZSwgMSlcblxuICAgIGlmIChwb3NpdGlvbiAhPT0gLTEgJiYgcG9zaXRpb24gPCBtaW4pIHtcbiAgICAgIG1pbiA9IHBvc2l0aW9uXG4gICAgfVxuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5zbGljZSgwLCBtaW4pXG4gIG5vdyA9IGVhdC5ub3coKVxuXG4gIHNlbGYuZGVjb2RlKHN1YnZhbHVlLCBub3csIGhhbmRsZXIpXG5cbiAgZnVuY3Rpb24gaGFuZGxlcihjb250ZW50LCBwb3NpdGlvbiwgc291cmNlKSB7XG4gICAgZWF0KHNvdXJjZSB8fCBjb250ZW50KSh7dHlwZTogJ3RleHQnLCB2YWx1ZTogY29udGVudH0pXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgdG9nZ2xlID0gcmVxdWlyZSgnc3RhdGUtdG9nZ2xlJylcbnZhciB2ZmlsZUxvY2F0aW9uID0gcmVxdWlyZSgndmZpbGUtbG9jYXRpb24nKVxudmFyIHVuZXNjYXBlID0gcmVxdWlyZSgnLi91bmVzY2FwZScpXG52YXIgZGVjb2RlID0gcmVxdWlyZSgnLi9kZWNvZGUnKVxudmFyIHRva2VuaXplciA9IHJlcXVpcmUoJy4vdG9rZW5pemVyJylcblxubW9kdWxlLmV4cG9ydHMgPSBQYXJzZXJcblxuZnVuY3Rpb24gUGFyc2VyKGRvYywgZmlsZSkge1xuICB0aGlzLmZpbGUgPSBmaWxlXG4gIHRoaXMub2Zmc2V0ID0ge31cbiAgdGhpcy5vcHRpb25zID0geHRlbmQodGhpcy5vcHRpb25zKVxuICB0aGlzLnNldE9wdGlvbnMoe30pXG5cbiAgdGhpcy5pbkxpc3QgPSBmYWxzZVxuICB0aGlzLmluQmxvY2sgPSBmYWxzZVxuICB0aGlzLmluTGluayA9IGZhbHNlXG4gIHRoaXMuYXRTdGFydCA9IHRydWVcblxuICB0aGlzLnRvT2Zmc2V0ID0gdmZpbGVMb2NhdGlvbihmaWxlKS50b09mZnNldFxuICB0aGlzLnVuZXNjYXBlID0gdW5lc2NhcGUodGhpcywgJ2VzY2FwZScpXG4gIHRoaXMuZGVjb2RlID0gZGVjb2RlKHRoaXMpXG59XG5cbnZhciBwcm90byA9IFBhcnNlci5wcm90b3R5cGVcblxuLy8gRXhwb3NlIGNvcmUuXG5wcm90by5zZXRPcHRpb25zID0gcmVxdWlyZSgnLi9zZXQtb3B0aW9ucycpXG5wcm90by5wYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKVxuXG4vLyBFeHBvc2UgYGRlZmF1bHRzYC5cbnByb3RvLm9wdGlvbnMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJylcblxuLy8gRW50ZXIgYW5kIGV4aXQgaGVscGVycy5cbnByb3RvLmV4aXRTdGFydCA9IHRvZ2dsZSgnYXRTdGFydCcsIHRydWUpXG5wcm90by5lbnRlckxpc3QgPSB0b2dnbGUoJ2luTGlzdCcsIGZhbHNlKVxucHJvdG8uZW50ZXJMaW5rID0gdG9nZ2xlKCdpbkxpbmsnLCBmYWxzZSlcbnByb3RvLmVudGVyQmxvY2sgPSB0b2dnbGUoJ2luQmxvY2snLCBmYWxzZSlcblxuLy8gTm9kZXMgdGhhdCBjYW4gaW50ZXJ1cHQgYSBwYXJhZ3JhcGg6XG4vL1xuLy8gYGBgbWFya2Rvd25cbi8vIEEgcGFyYWdyYXBoLCBmb2xsb3dlZCBieSBhIHRoZW1hdGljIGJyZWFrLlxuLy8gX19fXG4vLyBgYGBcbi8vXG4vLyBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIHRoZW1hdGljIGJyZWFrIOKAnGludGVydXB0c+KAnSB0aGUgcGFyYWdyYXBoLlxucHJvdG8uaW50ZXJydXB0UGFyYWdyYXBoID0gW1xuICBbJ3RoZW1hdGljQnJlYWsnXSxcbiAgWydhdHhIZWFkaW5nJ10sXG4gIFsnZmVuY2VkQ29kZSddLFxuICBbJ2Jsb2NrcXVvdGUnXSxcbiAgWydodG1sJ10sXG4gIFsnc2V0ZXh0SGVhZGluZycsIHtjb21tb25tYXJrOiBmYWxzZX1dLFxuICBbJ2RlZmluaXRpb24nLCB7Y29tbW9ubWFyazogZmFsc2V9XSxcbiAgWydmb290bm90ZScsIHtjb21tb25tYXJrOiBmYWxzZX1dXG5dXG5cbi8vIE5vZGVzIHRoYXQgY2FuIGludGVydXB0IGEgbGlzdDpcbi8vXG4vLyBgYGBtYXJrZG93blxuLy8gLSBPbmVcbi8vIF9fX1xuLy8gYGBgXG4vL1xuLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSB0aGVtYXRpYyBicmVhayDigJxpbnRlcnVwdHPigJ0gdGhlIGxpc3QuXG5wcm90by5pbnRlcnJ1cHRMaXN0ID0gW1xuICBbJ2F0eEhlYWRpbmcnLCB7cGVkYW50aWM6IGZhbHNlfV0sXG4gIFsnZmVuY2VkQ29kZScsIHtwZWRhbnRpYzogZmFsc2V9XSxcbiAgWyd0aGVtYXRpY0JyZWFrJywge3BlZGFudGljOiBmYWxzZX1dLFxuICBbJ2RlZmluaXRpb24nLCB7Y29tbW9ubWFyazogZmFsc2V9XSxcbiAgWydmb290bm90ZScsIHtjb21tb25tYXJrOiBmYWxzZX1dXG5dXG5cbi8vIE5vZGVzIHRoYXQgY2FuIGludGVydXB0IGEgYmxvY2txdW90ZTpcbi8vXG4vLyBgYGBtYXJrZG93blxuLy8gPiBBIHBhcmFncmFwaC5cbi8vIF9fX1xuLy8gYGBgXG4vL1xuLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSB0aGVtYXRpYyBicmVhayDigJxpbnRlcnVwdHPigJ0gdGhlIGJsb2NrcXVvdGUuXG5wcm90by5pbnRlcnJ1cHRCbG9ja3F1b3RlID0gW1xuICBbJ2luZGVudGVkQ29kZScsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnZmVuY2VkQ29kZScsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnYXR4SGVhZGluZycsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnc2V0ZXh0SGVhZGluZycsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsndGhlbWF0aWNCcmVhaycsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnaHRtbCcsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnbGlzdCcsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnZGVmaW5pdGlvbicsIHtjb21tb25tYXJrOiBmYWxzZX1dLFxuICBbJ2Zvb3Rub3RlJywge2NvbW1vbm1hcms6IGZhbHNlfV1cbl1cblxuLy8gSGFuZGxlcnMuXG5wcm90by5ibG9ja1Rva2VuaXplcnMgPSB7XG4gIG5ld2xpbmU6IHJlcXVpcmUoJy4vdG9rZW5pemUvbmV3bGluZScpLFxuICBpbmRlbnRlZENvZGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvY29kZS1pbmRlbnRlZCcpLFxuICBmZW5jZWRDb2RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2NvZGUtZmVuY2VkJyksXG4gIGJsb2NrcXVvdGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvYmxvY2txdW90ZScpLFxuICBhdHhIZWFkaW5nOiByZXF1aXJlKCcuL3Rva2VuaXplL2hlYWRpbmctYXR4JyksXG4gIHRoZW1hdGljQnJlYWs6IHJlcXVpcmUoJy4vdG9rZW5pemUvdGhlbWF0aWMtYnJlYWsnKSxcbiAgbGlzdDogcmVxdWlyZSgnLi90b2tlbml6ZS9saXN0JyksXG4gIHNldGV4dEhlYWRpbmc6IHJlcXVpcmUoJy4vdG9rZW5pemUvaGVhZGluZy1zZXRleHQnKSxcbiAgaHRtbDogcmVxdWlyZSgnLi90b2tlbml6ZS9odG1sLWJsb2NrJyksXG4gIGZvb3Rub3RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2Zvb3Rub3RlLWRlZmluaXRpb24nKSxcbiAgZGVmaW5pdGlvbjogcmVxdWlyZSgnLi90b2tlbml6ZS9kZWZpbml0aW9uJyksXG4gIHRhYmxlOiByZXF1aXJlKCcuL3Rva2VuaXplL3RhYmxlJyksXG4gIHBhcmFncmFwaDogcmVxdWlyZSgnLi90b2tlbml6ZS9wYXJhZ3JhcGgnKVxufVxuXG5wcm90by5pbmxpbmVUb2tlbml6ZXJzID0ge1xuICBlc2NhcGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvZXNjYXBlJyksXG4gIGF1dG9MaW5rOiByZXF1aXJlKCcuL3Rva2VuaXplL2F1dG8tbGluaycpLFxuICB1cmw6IHJlcXVpcmUoJy4vdG9rZW5pemUvdXJsJyksXG4gIGh0bWw6IHJlcXVpcmUoJy4vdG9rZW5pemUvaHRtbC1pbmxpbmUnKSxcbiAgbGluazogcmVxdWlyZSgnLi90b2tlbml6ZS9saW5rJyksXG4gIHJlZmVyZW5jZTogcmVxdWlyZSgnLi90b2tlbml6ZS9yZWZlcmVuY2UnKSxcbiAgc3Ryb25nOiByZXF1aXJlKCcuL3Rva2VuaXplL3N0cm9uZycpLFxuICBlbXBoYXNpczogcmVxdWlyZSgnLi90b2tlbml6ZS9lbXBoYXNpcycpLFxuICBkZWxldGlvbjogcmVxdWlyZSgnLi90b2tlbml6ZS9kZWxldGUnKSxcbiAgY29kZTogcmVxdWlyZSgnLi90b2tlbml6ZS9jb2RlLWlubGluZScpLFxuICBicmVhazogcmVxdWlyZSgnLi90b2tlbml6ZS9icmVhaycpLFxuICB0ZXh0OiByZXF1aXJlKCcuL3Rva2VuaXplL3RleHQnKVxufVxuXG4vLyBFeHBvc2UgcHJlY2VkZW5jZS5cbnByb3RvLmJsb2NrTWV0aG9kcyA9IGtleXMocHJvdG8uYmxvY2tUb2tlbml6ZXJzKVxucHJvdG8uaW5saW5lTWV0aG9kcyA9IGtleXMocHJvdG8uaW5saW5lVG9rZW5pemVycylcblxuLy8gVG9rZW5pemVycy5cbnByb3RvLnRva2VuaXplQmxvY2sgPSB0b2tlbml6ZXIoJ2Jsb2NrJylcbnByb3RvLnRva2VuaXplSW5saW5lID0gdG9rZW5pemVyKCdpbmxpbmUnKVxucHJvdG8udG9rZW5pemVGYWN0b3J5ID0gdG9rZW5pemVyXG5cbi8vIEdldCBhbGwga2V5cyBpbiBgdmFsdWVgLlxuZnVuY3Rpb24ga2V5cyh2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGtleVxuXG4gIGZvciAoa2V5IGluIHZhbHVlKSB7XG4gICAgcmVzdWx0LnB1c2goa2V5KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB1bmhlcml0ID0gcmVxdWlyZSgndW5oZXJpdCcpXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgUGFyc2VyID0gcmVxdWlyZSgnLi9saWIvcGFyc2VyLmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVxucGFyc2UuUGFyc2VyID0gUGFyc2VyXG5cbmZ1bmN0aW9uIHBhcnNlKG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gdGhpcy5kYXRhKCdzZXR0aW5ncycpXG4gIHZhciBMb2NhbCA9IHVuaGVyaXQoUGFyc2VyKVxuXG4gIExvY2FsLnByb3RvdHlwZS5vcHRpb25zID0geHRlbmQoTG9jYWwucHJvdG90eXBlLm9wdGlvbnMsIHNldHRpbmdzLCBvcHRpb25zKVxuXG4gIHRoaXMuUGFyc2VyID0gTG9jYWxcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpdGVyKSA9PT0gXCJbb2JqZWN0IEFyZ3VtZW50c11cIikgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gfVxuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX2UgPSB1bmRlZmluZWQ7IHRyeSB7IGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cblxudmFyIHNwYWNlU2VwYXJhdGVkID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpO1xuXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiWy1bXFxcXF17fSgpKis/LlxcXFxcXFxcXiR8L11cIiwgJ2cnKSwgJ1xcXFwkJicpO1xufVxuXG52YXIgQ19ORVdMSU5FID0gJ1xcbic7XG52YXIgQ19GRU5DRSA9ICd8JztcblxuZnVuY3Rpb24gY29tcGlsZXJGYWN0b3J5KG5vZGVUeXBlKSB7XG4gIHZhciB0ZXh0O1xuICB2YXIgdGl0bGU7XG4gIHJldHVybiB7XG4gICAgYmxvY2tIZWFkaW5nOiBmdW5jdGlvbiBibG9ja0hlYWRpbmcobm9kZSkge1xuICAgICAgdGl0bGUgPSB0aGlzLmFsbChub2RlKS5qb2luKCcnKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9LFxuICAgIGJsb2NrQm9keTogZnVuY3Rpb24gYmxvY2tCb2R5KG5vZGUpIHtcbiAgICAgIHRleHQgPSB0aGlzLmFsbChub2RlKS5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXFxuL2csICdcXG58ICcpO1xuICAgICAgfSkuam9pbignXFxufFxcbnwgJyk7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9LFxuICAgIGJsb2NrOiBmdW5jdGlvbiBibG9jayhub2RlKSB7XG4gICAgICB0ZXh0ID0gJyc7XG4gICAgICB0aXRsZSA9ICcnO1xuICAgICAgdGhpcy5hbGwobm9kZSk7XG5cbiAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICByZXR1cm4gXCJbW1wiLmNvbmNhdChub2RlVHlwZSwgXCIgfCBcIikuY29uY2F0KHRpdGxlLCBcIl1dXFxufCBcIikuY29uY2F0KHRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiW1tcIi5jb25jYXQobm9kZVR5cGUsIFwiXV1cXG58IFwiKS5jb25jYXQodGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJsb2NrUGx1Z2luKCkge1xuICB2YXIgYXZhaWxhYmxlQmxvY2tzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgdmFyIHBhdHRlcm4gPSBPYmplY3Qua2V5cyhhdmFpbGFibGVCbG9ja3MpLm1hcChlc2NhcGVSZWdFeHApLmpvaW4oJ3wnKTtcblxuICBpZiAoIXBhdHRlcm4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbWFyay1jdXN0b20tYmxvY2tzIG5lZWRzIHRvIGJlIHBhc3NlZCBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGFzIG9wdGlvbicpO1xuICB9XG5cbiAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChcIlxcXFxbXFxcXFsoXCIuY29uY2F0KHBhdHRlcm4sIFwiKSg/OiAqXFxcXHwgKiguKikpP1xcXFxdXFxcXF1cXG5cIikpO1xuXG4gIGZ1bmN0aW9uIGJsb2NrVG9rZW5pemVyKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICAgIHZhciBub3cgPSBlYXQubm93KCk7XG4gICAgdmFyIGtlZXAgPSByZWdleC5leGVjKHZhbHVlKTtcbiAgICBpZiAoIWtlZXApIHJldHVybjtcbiAgICBpZiAoa2VlcC5pbmRleCAhPT0gMCkgcmV0dXJuO1xuXG4gICAgdmFyIF9rZWVwID0gX3NsaWNlZFRvQXJyYXkoa2VlcCwgMyksXG4gICAgICAgIGVhdGVuID0gX2tlZXBbMF0sXG4gICAgICAgIGJsb2NrVHlwZSA9IF9rZWVwWzFdLFxuICAgICAgICBibG9ja1RpdGxlID0gX2tlZXBbMl07XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuXG5cbiAgICBpZiAoc2lsZW50KSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgbGluZXNUb0VhdCA9IFtdO1xuICAgIHZhciBjb250ZW50ID0gW107XG4gICAgdmFyIGlkeCA9IDA7XG5cbiAgICB3aGlsZSAoKGlkeCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FKSkgIT09IC0xKSB7XG4gICAgICB2YXIgbmV4dCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FLCBpZHggKyAxKTsgLy8gZWl0aGVyIHNsaWNlIHVudGlsIG5leHQgTkVXTElORSBvciBzbGljZSB1bnRpbCBlbmQgb2Ygc3RyaW5nXG5cbiAgICAgIHZhciBsaW5lVG9FYXQgPSBuZXh0ICE9PSAtMSA/IHZhbHVlLnNsaWNlKGlkeCArIDEsIG5leHQpIDogdmFsdWUuc2xpY2UoaWR4ICsgMSk7XG4gICAgICBpZiAobGluZVRvRWF0WzBdICE9PSBDX0ZFTkNFKSBicmVhazsgLy8gcmVtb3ZlIGxlYWRpbmcgYEZFTkNFIGAgb3IgbGVhZGluZyBgRkVOQ0VgXG5cbiAgICAgIHZhciBsaW5lID0gbGluZVRvRWF0LnNsaWNlKGxpbmVUb0VhdC5zdGFydHNXaXRoKFwiXCIuY29uY2F0KENfRkVOQ0UsIFwiIFwiKSkgPyAyIDogMSk7XG4gICAgICBsaW5lc1RvRWF0LnB1c2gobGluZVRvRWF0KTtcbiAgICAgIGNvbnRlbnQucHVzaChsaW5lKTtcbiAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoaWR4ICsgMSk7XG4gICAgfVxuXG4gICAgdmFyIGNvbnRlbnRTdHJpbmcgPSBjb250ZW50LmpvaW4oQ19ORVdMSU5FKTtcbiAgICB2YXIgc3RyaW5nVG9FYXQgPSBlYXRlbiArIGxpbmVzVG9FYXQuam9pbihDX05FV0xJTkUpO1xuICAgIHZhciBwb3RlbnRpYWxCbG9jayA9IGF2YWlsYWJsZUJsb2Nrc1tibG9ja1R5cGVdO1xuICAgIHZhciB0aXRsZUFsbG93ZWQgPSBwb3RlbnRpYWxCbG9jay50aXRsZSAmJiBbJ29wdGlvbmFsJywgJ3JlcXVpcmVkJ10uaW5jbHVkZXMocG90ZW50aWFsQmxvY2sudGl0bGUpO1xuICAgIHZhciB0aXRsZVJlcXVpcmVkID0gcG90ZW50aWFsQmxvY2sudGl0bGUgJiYgcG90ZW50aWFsQmxvY2sudGl0bGUgPT09ICdyZXF1aXJlZCc7XG4gICAgaWYgKHRpdGxlUmVxdWlyZWQgJiYgIWJsb2NrVGl0bGUpIHJldHVybjtcbiAgICBpZiAoIXRpdGxlQWxsb3dlZCAmJiBibG9ja1RpdGxlKSByZXR1cm47XG4gICAgdmFyIGFkZCA9IGVhdChzdHJpbmdUb0VhdCk7XG4gICAgdmFyIGV4aXQgPSB0aGlzLmVudGVyQmxvY2soKTtcbiAgICB2YXIgY29udGVudHMgPSB7XG4gICAgICB0eXBlOiBcIlwiLmNvbmNhdChibG9ja1R5cGUsIFwiQ3VzdG9tQmxvY2tCb2R5XCIpLFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogJ2RpdicsXG4gICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnY3VzdG9tLWJsb2NrLWJvZHknXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogdGhpcy50b2tlbml6ZUJsb2NrKGNvbnRlbnRTdHJpbmcsIG5vdylcbiAgICB9O1xuICAgIGV4aXQoKTtcbiAgICB2YXIgYmxvY2tDaGlsZHJlbiA9IFtjb250ZW50c107XG5cbiAgICBpZiAodGl0bGVBbGxvd2VkICYmIGJsb2NrVGl0bGUpIHtcbiAgICAgIHZhciB0aXRsZU5vZGUgPSB7XG4gICAgICAgIHR5cGU6IFwiXCIuY29uY2F0KGJsb2NrVHlwZSwgXCJDdXN0b21CbG9ja0hlYWRpbmdcIiksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoTmFtZTogcG90ZW50aWFsQmxvY2suZGV0YWlscyA/ICdzdW1tYXJ5JyA6ICdkaXYnLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdjdXN0b20tYmxvY2staGVhZGluZydcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiB0aGlzLnRva2VuaXplSW5saW5lKGJsb2NrVGl0bGUsIG5vdylcbiAgICAgIH07XG4gICAgICBibG9ja0NoaWxkcmVuLnVuc2hpZnQodGl0bGVOb2RlKTtcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NMaXN0ID0gc3BhY2VTZXBhcmF0ZWQucGFyc2UocG90ZW50aWFsQmxvY2suY2xhc3NlcyB8fCAnJyk7XG4gICAgcmV0dXJuIGFkZCh7XG4gICAgICB0eXBlOiBcIlwiLmNvbmNhdChibG9ja1R5cGUsIFwiQ3VzdG9tQmxvY2tcIiksXG4gICAgICBjaGlsZHJlbjogYmxvY2tDaGlsZHJlbixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaE5hbWU6IHBvdGVudGlhbEJsb2NrLmRldGFpbHMgPyAnZGV0YWlscycgOiAnZGl2JyxcbiAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6IFsnY3VzdG9tLWJsb2NrJ10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShjbGFzc0xpc3QpKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBibG9ja1Rva2VuaXplclxuXG4gIHZhciBibG9ja1Rva2VuaXplcnMgPSBQYXJzZXIucHJvdG90eXBlLmJsb2NrVG9rZW5pemVycztcbiAgdmFyIGJsb2NrTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tNZXRob2RzO1xuICBibG9ja1Rva2VuaXplcnMuY3VzdG9tQmxvY2tzID0gYmxvY2tUb2tlbml6ZXI7XG4gIGJsb2NrTWV0aG9kcy5zcGxpY2UoYmxvY2tNZXRob2RzLmluZGV4T2YoJ2ZlbmNlZENvZGUnKSArIDEsIDAsICdjdXN0b21CbG9ja3MnKTtcbiAgdmFyIENvbXBpbGVyID0gdGhpcy5Db21waWxlcjtcblxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICB2YXIgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnM7XG4gICAgaWYgKCF2aXNpdG9ycykgcmV0dXJuO1xuICAgIE9iamVjdC5rZXlzKGF2YWlsYWJsZUJsb2NrcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgY29tcGlsZXIgPSBjb21waWxlckZhY3Rvcnkoa2V5KTtcbiAgICAgIHZpc2l0b3JzW1wiXCIuY29uY2F0KGtleSwgXCJDdXN0b21CbG9ja1wiKV0gPSBjb21waWxlci5ibG9jaztcbiAgICAgIHZpc2l0b3JzW1wiXCIuY29uY2F0KGtleSwgXCJDdXN0b21CbG9ja0hlYWRpbmdcIildID0gY29tcGlsZXIuYmxvY2tIZWFkaW5nO1xuICAgICAgdmlzaXRvcnNbXCJcIi5jb25jYXQoa2V5LCBcIkN1c3RvbUJsb2NrQm9keVwiKV0gPSBjb21waWxlci5ibG9ja0JvZHk7XG4gICAgfSk7XG4gIH0gLy8gSW5qZWN0IGludG8gaW50ZXJydXB0IHJ1bGVzXG5cblxuICB2YXIgaW50ZXJydXB0UGFyYWdyYXBoID0gUGFyc2VyLnByb3RvdHlwZS5pbnRlcnJ1cHRQYXJhZ3JhcGg7XG4gIHZhciBpbnRlcnJ1cHRMaXN0ID0gUGFyc2VyLnByb3RvdHlwZS5pbnRlcnJ1cHRMaXN0O1xuICB2YXIgaW50ZXJydXB0QmxvY2txdW90ZSA9IFBhcnNlci5wcm90b3R5cGUuaW50ZXJydXB0QmxvY2txdW90ZTtcbiAgaW50ZXJydXB0UGFyYWdyYXBoLnNwbGljZShpbnRlcnJ1cHRQYXJhZ3JhcGguaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydjdXN0b21CbG9ja3MnXSk7XG4gIGludGVycnVwdExpc3Quc3BsaWNlKGludGVycnVwdExpc3QuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydjdXN0b21CbG9ja3MnXSk7XG4gIGludGVycnVwdEJsb2NrcXVvdGUuc3BsaWNlKGludGVycnVwdEJsb2NrcXVvdGUuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydjdXN0b21CbG9ja3MnXSk7XG59OyIsIi8qISBodHRwczovL210aHMuYmUvcHVueWNvZGUgdjEuNC4xIGJ5IEBtYXRoaWFzICovXG5cblxuLyoqIEhpZ2hlc3QgcG9zaXRpdmUgc2lnbmVkIDMyLWJpdCBmbG9hdCB2YWx1ZSAqL1xudmFyIG1heEludCA9IDIxNDc0ODM2NDc7IC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcblxuLyoqIEJvb3RzdHJpbmcgcGFyYW1ldGVycyAqL1xudmFyIGJhc2UgPSAzNjtcbnZhciB0TWluID0gMTtcbnZhciB0TWF4ID0gMjY7XG52YXIgc2tldyA9IDM4O1xudmFyIGRhbXAgPSA3MDA7XG52YXIgaW5pdGlhbEJpYXMgPSA3MjtcbnZhciBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxudmFyIGRlbGltaXRlciA9ICctJzsgLy8gJ1xceDJEJ1xuXG4vKiogUmVndWxhciBleHByZXNzaW9ucyAqL1xudmFyIHJlZ2V4UHVueWNvZGUgPSAvXnhuLS0vO1xudmFyIHJlZ2V4Tm9uQVNDSUkgPSAvW15cXHgyMC1cXHg3RV0vOyAvLyB1bnByaW50YWJsZSBBU0NJSSBjaGFycyArIG5vbi1BU0NJSSBjaGFyc1xudmFyIHJlZ2V4U2VwYXJhdG9ycyA9IC9bXFx4MkVcXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2c7IC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcblxuLyoqIEVycm9yIG1lc3NhZ2VzICovXG52YXIgZXJyb3JzID0ge1xuICAnb3ZlcmZsb3cnOiAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnLFxuICAnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuICAnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xufTtcblxuLyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xudmFyIGJhc2VNaW51c1RNaW4gPSBiYXNlIC0gdE1pbjtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgc3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgVGhlIGVycm9yIHR5cGUuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGVycm9yKHR5cGUpIHtcbiAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcbn1cblxuLyoqXG4gKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG4gKiBpdGVtLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgcmVzdWx0W2xlbmd0aF0gPSBmbihhcnJheVtsZW5ndGhdKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEEgc2ltcGxlIGBBcnJheSNtYXBgLWxpa2Ugd3JhcHBlciB0byB3b3JrIHdpdGggZG9tYWluIG5hbWUgc3RyaW5ncyBvciBlbWFpbFxuICogYWRkcmVzc2VzLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnlcbiAqIGNoYXJhY3Rlci5cbiAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG4gKiBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcbiAgdmFyIHBhcnRzID0gc3RyaW5nLnNwbGl0KCdAJyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAvLyBJbiBlbWFpbCBhZGRyZXNzZXMsIG9ubHkgdGhlIGRvbWFpbiBuYW1lIHNob3VsZCBiZSBwdW55Y29kZWQuIExlYXZlXG4gICAgLy8gdGhlIGxvY2FsIHBhcnQgKGkuZS4gZXZlcnl0aGluZyB1cCB0byBgQGApIGludGFjdC5cbiAgICByZXN1bHQgPSBwYXJ0c1swXSArICdAJztcbiAgICBzdHJpbmcgPSBwYXJ0c1sxXTtcbiAgfVxuICAvLyBBdm9pZCBgc3BsaXQocmVnZXgpYCBmb3IgSUU4IGNvbXBhdGliaWxpdHkuIFNlZSAjMTcuXG4gIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xceDJFJyk7XG4gIHZhciBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcbiAgdmFyIGVuY29kZWQgPSBtYXAobGFiZWxzLCBmbikuam9pbignLicpO1xuICByZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG4gKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG4gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG4gKiBtYXRjaGluZyBVVEYtMTYuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcbiAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGRlY29kZVxuICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgVW5pY29kZSBpbnB1dCBzdHJpbmcgKFVDUy0yKS5cbiAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cbiAqL1xuZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcbiAgdmFyIG91dHB1dCA9IFtdLFxuICAgIGNvdW50ZXIgPSAwLFxuICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG4gICAgdmFsdWUsXG4gICAgZXh0cmE7XG4gIHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgdmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuICAgIGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgIC8vIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3RlclxuICAgICAgZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuICAgICAgaWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7IC8vIGxvdyBzdXJyb2dhdGVcbiAgICAgICAgb3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZSBuZXh0XG4gICAgICAgIC8vIGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpclxuICAgICAgICBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgICAgIGNvdW50ZXItLTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdHJpbmcgYmFzZWQgb24gYW4gYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZGVjb2RlYFxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGVuY29kZVxuICogQHBhcmFtIHtBcnJheX0gY29kZVBvaW50cyBUaGUgYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBuZXcgVW5pY29kZSBzdHJpbmcgKFVDUy0yKS5cbiAqL1xuZnVuY3Rpb24gdWNzMmVuY29kZShhcnJheSkge1xuICByZXR1cm4gbWFwKGFycmF5LCBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciBvdXRwdXQgPSAnJztcbiAgICBpZiAodmFsdWUgPiAweEZGRkYpIHtcbiAgICAgIHZhbHVlIC09IDB4MTAwMDA7XG4gICAgICBvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKTtcbiAgICAgIHZhbHVlID0gMHhEQzAwIHwgdmFsdWUgJiAweDNGRjtcbiAgICB9XG4gICAgb3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSk7XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfSkuam9pbignJyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBiYXNpYyBjb2RlIHBvaW50IGludG8gYSBkaWdpdC9pbnRlZ2VyLlxuICogQHNlZSBgZGlnaXRUb0Jhc2ljKClgXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVQb2ludCBUaGUgYmFzaWMgbnVtZXJpYyBjb2RlIHBvaW50IHZhbHVlLlxuICogQHJldHVybnMge051bWJlcn0gVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50IChmb3IgdXNlIGluXG4gKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGluIHRoZSByYW5nZSBgMGAgdG8gYGJhc2UgLSAxYCwgb3IgYGJhc2VgIGlmXG4gKiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzaWNUb0RpZ2l0KGNvZGVQb2ludCkge1xuICBpZiAoY29kZVBvaW50IC0gNDggPCAxMCkge1xuICAgIHJldHVybiBjb2RlUG9pbnQgLSAyMjtcbiAgfVxuICBpZiAoY29kZVBvaW50IC0gNjUgPCAyNikge1xuICAgIHJldHVybiBjb2RlUG9pbnQgLSA2NTtcbiAgfVxuICBpZiAoY29kZVBvaW50IC0gOTcgPCAyNikge1xuICAgIHJldHVybiBjb2RlUG9pbnQgLSA5NztcbiAgfVxuICByZXR1cm4gYmFzZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3JcbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG4gKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcbiAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG4gKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuICovXG5mdW5jdGlvbiBkaWdpdFRvQmFzaWMoZGlnaXQsIGZsYWcpIHtcbiAgLy8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcbiAgLy8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG4gIHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNikgLSAoKGZsYWcgIT0gMCkgPDwgNSk7XG59XG5cbi8qKlxuICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBhZGFwdChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcbiAgdmFyIGsgPSAwO1xuICBkZWx0YSA9IGZpcnN0VGltZSA/IGZsb29yKGRlbHRhIC8gZGFtcCkgOiBkZWx0YSA+PiAxO1xuICBkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG4gIGZvciAoIC8qIG5vIGluaXRpYWxpemF0aW9uICovIDsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcbiAgICBkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG4gIH1cbiAgcmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzIHRvIGEgc3RyaW5nIG9mIFVuaWNvZGVcbiAqIHN5bWJvbHMuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZShpbnB1dCkge1xuICAvLyBEb24ndCB1c2UgVUNTLTJcbiAgdmFyIG91dHB1dCA9IFtdLFxuICAgIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoLFxuICAgIG91dCxcbiAgICBpID0gMCxcbiAgICBuID0gaW5pdGlhbE4sXG4gICAgYmlhcyA9IGluaXRpYWxCaWFzLFxuICAgIGJhc2ljLFxuICAgIGosXG4gICAgaW5kZXgsXG4gICAgb2xkaSxcbiAgICB3LFxuICAgIGssXG4gICAgZGlnaXQsXG4gICAgdCxcbiAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cbiAgICBiYXNlTWludXNUO1xuXG4gIC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuICAvLyBwb2ludHMgYmVmb3JlIHRoZSBsYXN0IGRlbGltaXRlciwgb3IgYDBgIGlmIHRoZXJlIGlzIG5vbmUsIHRoZW4gY29weVxuICAvLyB0aGUgZmlyc3QgYmFzaWMgY29kZSBwb2ludHMgdG8gdGhlIG91dHB1dC5cblxuICBiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG4gIGlmIChiYXNpYyA8IDApIHtcbiAgICBiYXNpYyA9IDA7XG4gIH1cblxuICBmb3IgKGogPSAwOyBqIDwgYmFzaWM7ICsraikge1xuICAgIC8vIGlmIGl0J3Mgbm90IGEgYmFzaWMgY29kZSBwb2ludFxuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KGopID49IDB4ODApIHtcbiAgICAgIGVycm9yKCdub3QtYmFzaWMnKTtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goaW5wdXQuY2hhckNvZGVBdChqKSk7XG4gIH1cblxuICAvLyBNYWluIGRlY29kaW5nIGxvb3A6IHN0YXJ0IGp1c3QgYWZ0ZXIgdGhlIGxhc3QgZGVsaW1pdGVyIGlmIGFueSBiYXNpYyBjb2RlXG4gIC8vIHBvaW50cyB3ZXJlIGNvcGllZDsgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvdGhlcndpc2UuXG5cbiAgZm9yIChpbmRleCA9IGJhc2ljID4gMCA/IGJhc2ljICsgMSA6IDA7IGluZGV4IDwgaW5wdXRMZW5ndGg7IC8qIG5vIGZpbmFsIGV4cHJlc3Npb24gKi8gKSB7XG5cbiAgICAvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG4gICAgLy8gRGVjb2RlIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIgaW50byBgZGVsdGFgLFxuICAgIC8vIHdoaWNoIGdldHMgYWRkZWQgdG8gYGlgLiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgZWFzaWVyXG4gICAgLy8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcbiAgICAvLyB2YWx1ZSBhdCB0aGUgZW5kIHRvIG9idGFpbiBgZGVsdGFgLlxuICAgIGZvciAob2xkaSA9IGksIHcgPSAxLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovIDsgayArPSBiYXNlKSB7XG5cbiAgICAgIGlmIChpbmRleCA+PSBpbnB1dExlbmd0aCkge1xuICAgICAgICBlcnJvcignaW52YWxpZC1pbnB1dCcpO1xuICAgICAgfVxuXG4gICAgICBkaWdpdCA9IGJhc2ljVG9EaWdpdChpbnB1dC5jaGFyQ29kZUF0KGluZGV4KyspKTtcblxuICAgICAgaWYgKGRpZ2l0ID49IGJhc2UgfHwgZGlnaXQgPiBmbG9vcigobWF4SW50IC0gaSkgLyB3KSkge1xuICAgICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICAgIH1cblxuICAgICAgaSArPSBkaWdpdCAqIHc7XG4gICAgICB0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblxuICAgICAgaWYgKGRpZ2l0IDwgdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuICAgICAgaWYgKHcgPiBmbG9vcihtYXhJbnQgLyBiYXNlTWludXNUKSkge1xuICAgICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICAgIH1cblxuICAgICAgdyAqPSBiYXNlTWludXNUO1xuXG4gICAgfVxuXG4gICAgb3V0ID0gb3V0cHV0Lmxlbmd0aCArIDE7XG4gICAgYmlhcyA9IGFkYXB0KGkgLSBvbGRpLCBvdXQsIG9sZGkgPT0gMCk7XG5cbiAgICAvLyBgaWAgd2FzIHN1cHBvc2VkIHRvIHdyYXAgYXJvdW5kIGZyb20gYG91dGAgdG8gYDBgLFxuICAgIC8vIGluY3JlbWVudGluZyBgbmAgZWFjaCB0aW1lLCBzbyB3ZSdsbCBmaXggdGhhdCBub3c6XG4gICAgaWYgKGZsb29yKGkgLyBvdXQpID4gbWF4SW50IC0gbikge1xuICAgICAgZXJyb3IoJ292ZXJmbG93Jyk7XG4gICAgfVxuXG4gICAgbiArPSBmbG9vcihpIC8gb3V0KTtcbiAgICBpICU9IG91dDtcblxuICAgIC8vIEluc2VydCBgbmAgYXQgcG9zaXRpb24gYGlgIG9mIHRoZSBvdXRwdXRcbiAgICBvdXRwdXQuc3BsaWNlKGkrKywgMCwgbik7XG5cbiAgfVxuXG4gIHJldHVybiB1Y3MyZW5jb2RlKG91dHB1dCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzIChlLmcuIGEgZG9tYWluIG5hbWUgbGFiZWwpIHRvIGFcbiAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZShpbnB1dCkge1xuICB2YXIgbixcbiAgICBkZWx0YSxcbiAgICBoYW5kbGVkQ1BDb3VudCxcbiAgICBiYXNpY0xlbmd0aCxcbiAgICBiaWFzLFxuICAgIGosXG4gICAgbSxcbiAgICBxLFxuICAgIGssXG4gICAgdCxcbiAgICBjdXJyZW50VmFsdWUsXG4gICAgb3V0cHV0ID0gW10sXG4gICAgLyoqIGBpbnB1dExlbmd0aGAgd2lsbCBob2xkIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gYGlucHV0YC4gKi9cbiAgICBpbnB1dExlbmd0aCxcbiAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cbiAgICBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsXG4gICAgYmFzZU1pbnVzVCxcbiAgICBxTWludXNUO1xuXG4gIC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIFVuaWNvZGVcbiAgaW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcblxuICAvLyBDYWNoZSB0aGUgbGVuZ3RoXG4gIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG4gIG4gPSBpbml0aWFsTjtcbiAgZGVsdGEgPSAwO1xuICBiaWFzID0gaW5pdGlhbEJpYXM7XG5cbiAgLy8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50c1xuICBmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuICAgIGlmIChjdXJyZW50VmFsdWUgPCAweDgwKSB7XG4gICAgICBvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoY3VycmVudFZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cbiAgLy8gYGhhbmRsZWRDUENvdW50YCBpcyB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG4gIC8vIGBiYXNpY0xlbmd0aGAgaXMgdGhlIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cblxuICAvLyBGaW5pc2ggdGhlIGJhc2ljIHN0cmluZyAtIGlmIGl0IGlzIG5vdCBlbXB0eSAtIHdpdGggYSBkZWxpbWl0ZXJcbiAgaWYgKGJhc2ljTGVuZ3RoKSB7XG4gICAgb3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcbiAgfVxuXG4gIC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcbiAgd2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcblxuICAgIC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcbiAgICAvLyBsYXJnZXIgb25lOlxuICAgIGZvciAobSA9IG1heEludCwgaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG4gICAgICAgIG0gPSBjdXJyZW50VmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5jcmVhc2UgYGRlbHRhYCBlbm91Z2ggdG8gYWR2YW5jZSB0aGUgZGVjb2RlcidzIDxuLGk+IHN0YXRlIHRvIDxtLDA+LFxuICAgIC8vIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93XG4gICAgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuICAgIGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG4gICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICB9XG5cbiAgICBkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuICAgIG4gPSBtO1xuXG4gICAgZm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXG4gICAgICBpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG4gICAgICAgIGVycm9yKCdvdmVyZmxvdycpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY3VycmVudFZhbHVlID09IG4pIHtcbiAgICAgICAgLy8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXJcbiAgICAgICAgZm9yIChxID0gZGVsdGEsIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi8gOyBrICs9IGJhc2UpIHtcbiAgICAgICAgICB0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcbiAgICAgICAgICBpZiAocSA8IHQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBxTWludXNUID0gcSAtIHQ7XG4gICAgICAgICAgYmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuICAgICAgICAgIG91dHB1dC5wdXNoKFxuICAgICAgICAgICAgc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyh0ICsgcU1pbnVzVCAlIGJhc2VNaW51c1QsIDApKVxuICAgICAgICAgICk7XG4gICAgICAgICAgcSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSwgMCkpKTtcbiAgICAgICAgYmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcbiAgICAgICAgZGVsdGEgPSAwO1xuICAgICAgICArK2hhbmRsZWRDUENvdW50O1xuICAgICAgfVxuICAgIH1cblxuICAgICsrZGVsdGE7XG4gICAgKytuO1xuXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG4gKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG4gKiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCBvbiBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW5cbiAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlZCBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvXG4gKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcbiAqIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvVW5pY29kZShpbnB1dCkge1xuICByZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVnZXhQdW55Y29kZS50ZXN0KHN0cmluZykgP1xuICAgICAgZGVjb2RlKHN0cmluZy5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKSA6XG4gICAgICBzdHJpbmc7XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuICogUHVueWNvZGUuIE9ubHkgdGhlIG5vbi1BU0NJSSBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgd2lsbCBiZSBjb252ZXJ0ZWQsXG4gKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cbiAqIEFTQ0lJLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuICogVW5pY29kZSBzdHJpbmcuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgUHVueWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvbWFpbiBuYW1lIG9yXG4gKiBlbWFpbCBhZGRyZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9BU0NJSShpbnB1dCkge1xuICByZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVnZXhOb25BU0NJSS50ZXN0KHN0cmluZykgP1xuICAgICAgJ3huLS0nICsgZW5jb2RlKHN0cmluZykgOlxuICAgICAgc3RyaW5nO1xuICB9KTtcbn1cbmV4cG9ydCB2YXIgdmVyc2lvbiA9ICcxLjQuMSc7XG4vKipcbiAqIEFuIG9iamVjdCBvZiBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKYXZhU2NyaXB0J3MgaW50ZXJuYWwgY2hhcmFjdGVyXG4gKiByZXByZXNlbnRhdGlvbiAoVUNTLTIpIHRvIFVuaWNvZGUgY29kZSBwb2ludHMsIGFuZCBiYWNrLlxuICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEB0eXBlIE9iamVjdFxuICovXG5cbmV4cG9ydCB2YXIgdWNzMiA9IHtcbiAgZGVjb2RlOiB1Y3MyZGVjb2RlLFxuICBlbmNvZGU6IHVjczJlbmNvZGVcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHZlcnNpb246IHZlcnNpb24sXG4gIHVjczI6IHVjczIsXG4gIHRvQVNDSUk6IHRvQVNDSUksXG4gIHRvVW5pY29kZTogdG9Vbmljb2RlLFxuICBlbmNvZGU6IGVuY29kZSxcbiAgZGVjb2RlOiBkZWNvZGVcbn1cbiIsIlxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcbnZhciBpbml0ZWQgPSBmYWxzZTtcbmZ1bmN0aW9uIGluaXQgKCkge1xuICBpbml0ZWQgPSB0cnVlO1xuICB2YXIgY29kZSA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgICByZXZMb29rdXBbY29kZS5jaGFyQ29kZUF0KGkpXSA9IGlcbiAgfVxuXG4gIHJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxuICByZXZMb29rdXBbJ18nLmNoYXJDb2RlQXQoMCldID0gNjNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQnl0ZUFycmF5IChiNjQpIHtcbiAgaWYgKCFpbml0ZWQpIHtcbiAgICBpbml0KCk7XG4gIH1cbiAgdmFyIGksIGosIGwsIHRtcCwgcGxhY2VIb2xkZXJzLCBhcnJcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcblxuICBpZiAobGVuICUgNCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKVxuICB9XG5cbiAgLy8gdGhlIG51bWJlciBvZiBlcXVhbCBzaWducyAocGxhY2UgaG9sZGVycylcbiAgLy8gaWYgdGhlcmUgYXJlIHR3byBwbGFjZWhvbGRlcnMsIHRoYW4gdGhlIHR3byBjaGFyYWN0ZXJzIGJlZm9yZSBpdFxuICAvLyByZXByZXNlbnQgb25lIGJ5dGVcbiAgLy8gaWYgdGhlcmUgaXMgb25seSBvbmUsIHRoZW4gdGhlIHRocmVlIGNoYXJhY3RlcnMgYmVmb3JlIGl0IHJlcHJlc2VudCAyIGJ5dGVzXG4gIC8vIHRoaXMgaXMganVzdCBhIGNoZWFwIGhhY2sgdG8gbm90IGRvIGluZGV4T2YgdHdpY2VcbiAgcGxhY2VIb2xkZXJzID0gYjY0W2xlbiAtIDJdID09PSAnPScgPyAyIDogYjY0W2xlbiAtIDFdID09PSAnPScgPyAxIDogMFxuXG4gIC8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YVxuICBhcnIgPSBuZXcgQXJyKGxlbiAqIDMgLyA0IC0gcGxhY2VIb2xkZXJzKVxuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgbCA9IHBsYWNlSG9sZGVycyA+IDAgPyBsZW4gLSA0IDogbGVuXG5cbiAgdmFyIEwgPSAwXG5cbiAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBsOyBpICs9IDQsIGogKz0gMykge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDE4KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfCByZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDMpXVxuICAgIGFycltMKytdID0gKHRtcCA+PiAxNikgJiAweEZGXG4gICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVycyA9PT0gMikge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW0wrK10gPSB0bXAgJiAweEZGXG4gIH0gZWxzZSBpZiAocGxhY2VIb2xkZXJzID09PSAxKSB7XG4gICAgdG1wID0gKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTApIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICsgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICsgbG9va3VwW251bSA+PiA2ICYgMHgzRl0gKyBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID0gKHVpbnQ4W2ldIDw8IDE2KSArICh1aW50OFtpICsgMV0gPDwgOCkgKyAodWludDhbaSArIDJdKVxuICAgIG91dHB1dC5wdXNoKHRyaXBsZXRUb0Jhc2U2NCh0bXApKVxuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIGlmICghaW5pdGVkKSB7XG4gICAgaW5pdCgpO1xuICB9XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIG91dHB1dCA9ICcnXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBvdXRwdXQgKz0gbG9va3VwW3RtcCA+PiAyXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9ICc9PSdcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgKHVpbnQ4W2xlbiAtIDFdKVxuICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDEwXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl1cbiAgICBvdXRwdXQgKz0gJz0nXG4gIH1cblxuICBwYXJ0cy5wdXNoKG91dHB1dClcblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIlxuZXhwb3J0IGZ1bmN0aW9uIHJlYWQgKGJ1ZmZlciwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG1cbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBuQml0cyA9IC03XG4gIHZhciBpID0gaXNMRSA/IChuQnl0ZXMgLSAxKSA6IDBcbiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxXG4gIHZhciBzID0gYnVmZmVyW29mZnNldCArIGldXG5cbiAgaSArPSBkXG5cbiAgZSA9IHMgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgcyA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gZUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gZSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IG0gKiAyNTYgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXNcbiAgfSBlbHNlIGlmIChlID09PSBlTWF4KSB7XG4gICAgcmV0dXJuIG0gPyBOYU4gOiAoKHMgPyAtMSA6IDEpICogSW5maW5pdHkpXG4gIH0gZWxzZSB7XG4gICAgbSA9IG0gKyBNYXRoLnBvdygyLCBtTGVuKVxuICAgIGUgPSBlIC0gZUJpYXNcbiAgfVxuICByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIE1hdGgucG93KDIsIGUgLSBtTGVuKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtLCBjXG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgcnQgPSAobUxlbiA9PT0gMjMgPyBNYXRoLnBvdygyLCAtMjQpIC0gTWF0aC5wb3coMiwgLTc3KSA6IDApXG4gIHZhciBpID0gaXNMRSA/IDAgOiAobkJ5dGVzIC0gMSlcbiAgdmFyIGQgPSBpc0xFID8gMSA6IC0xXG4gIHZhciBzID0gdmFsdWUgPCAwIHx8ICh2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwKSA/IDEgOiAwXG5cbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSlcblxuICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIG0gPSBpc05hTih2YWx1ZSkgPyAxIDogMFxuICAgIGUgPSBlTWF4XG4gIH0gZWxzZSB7XG4gICAgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpIC8gTWF0aC5MTjIpXG4gICAgaWYgKHZhbHVlICogKGMgPSBNYXRoLnBvdygyLCAtZSkpIDwgMSkge1xuICAgICAgZS0tXG4gICAgICBjICo9IDJcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgKz0gcnQgKiBNYXRoLnBvdygyLCAxIC0gZUJpYXMpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrXG4gICAgICBjIC89IDJcbiAgICB9XG5cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwXG4gICAgICBlID0gZU1heFxuICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIG0gPSAodmFsdWUgKiBjIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG5cbmltcG9ydCAqIGFzIGJhc2U2NCBmcm9tICcuL2Jhc2U2NCdcbmltcG9ydCAqIGFzIGllZWU3NTQgZnJvbSAnLi9pZWVlNzU0J1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5J1xuXG5leHBvcnQgdmFyIElOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgVXNlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogRHVlIHRvIHZhcmlvdXMgYnJvd3NlciBidWdzLCBzb21ldGltZXMgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHVzZWQgZXZlblxuICogd2hlbiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0eXBlZCBhcnJheXMuXG4gKlxuICogTm90ZTpcbiAqXG4gKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLFxuICogICAgIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4LlxuICpcbiAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLlxuICpcbiAqICAgLSBJRTEwIGhhcyBhIGJyb2tlbiBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYXJyYXlzIG9mXG4gKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuXG5cbiAqIFdlIGRldGVjdCB0aGVzZSBidWdneSBicm93c2VycyBhbmQgc2V0IGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGAgdG8gYGZhbHNlYCBzbyB0aGV5XG4gKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVCAhPT0gdW5kZWZpbmVkXG4gID8gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgOiB0cnVlXG5cbi8qXG4gKiBFeHBvcnQga01heExlbmd0aCBhZnRlciB0eXBlZCBhcnJheSBzdXBwb3J0IGlzIGRldGVybWluZWQuXG4gKi9cbnZhciBfa01heExlbmd0aCA9IGtNYXhMZW5ndGgoKVxuZXhwb3J0IHtfa01heExlbmd0aCBhcyBrTWF4TGVuZ3RofTtcbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgcmV0dXJuIHRydWU7XG4gIC8vIHJvbGx1cCBpc3N1ZXNcbiAgLy8gdHJ5IHtcbiAgLy8gICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgLy8gICBhcnIuX19wcm90b19fID0ge1xuICAvLyAgICAgX19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSxcbiAgLy8gICAgIGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfVxuICAvLyAgIH1cbiAgLy8gICByZXR1cm4gYXJyLmZvbygpID09PSA0MiAmJiAvLyB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZFxuICAvLyAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAvLyAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICAvLyB9IGNhdGNoIChlKSB7XG4gIC8vICAgcmV0dXJuIGZhbHNlXG4gIC8vIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoa01heExlbmd0aCgpIDwgbGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJylcbiAgfVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICBpZiAodGhhdCA9PT0gbnVsbCkge1xuICAgICAgdGhhdCA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuICAgIH1cbiAgICB0aGF0Lmxlbmd0aCA9IGxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXJcbiAqIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBCdWZmZXIucHJvdG90eXBlYC4gRnVydGhlcm1vcmUsIGBCdWZmZXJgIGlzIGEgc3ViY2xhc3Mgb2ZcbiAqIGBVaW50OEFycmF5YCwgc28gdGhlIHJldHVybmVkIGluc3RhbmNlcyB3aWxsIGhhdmUgYWxsIHRoZSBub2RlIGBCdWZmZXJgIG1ldGhvZHNcbiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0XG4gKiByZXR1cm5zIGEgc2luZ2xlIG9jdGV0LlxuICpcbiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmICEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIENvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nT3JPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZydcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKHRoaXMsIGFyZylcbiAgfVxuICByZXR1cm4gZnJvbSh0aGlzLCBhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbi8vIFRPRE86IExlZ2FjeSwgbm90IG5lZWRlZCBhbnltb3JlLiBSZW1vdmUgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLlxuQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikge1xuICBhcnIuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIGZyb20gKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZyb21TdHJpbmcodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG4gIH1cblxuICByZXR1cm4gZnJvbU9iamVjdCh0aGF0LCB2YWx1ZSlcbn1cblxuLyoqXG4gKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvclxuICogaWYgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBCdWZmZXIuZnJvbShzdHJbLCBlbmNvZGluZ10pXG4gKiBCdWZmZXIuZnJvbShhcnJheSlcbiAqIEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAqIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyWywgYnl0ZU9mZnNldFssIGxlbmd0aF1dKVxuICoqL1xuQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gZnJvbShudWxsLCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnNwZWNpZXMgJiZcbiAgICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikge1xuICAgIC8vIEZpeCBzdWJhcnJheSgpIGluIEVTMjAxNi4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzk3XG4gICAgLy8gT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICAvLyAgIHZhbHVlOiBudWxsLFxuICAgIC8vICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgLy8gfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHRoYXQsIHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAodGhhdCwgc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZW5jb2RpbmdcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJylcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcblxuICB2YXIgYWN0dWFsID0gdGhhdC53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgdGhhdCA9IHRoYXQuc2xpY2UoMCwgYWN0dWFsKVxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAodGhhdCwgYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBhcnJheS5ieXRlTGVuZ3RoIC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXJcblxuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnb2Zmc2V0XFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdsZW5ndGhcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IGFycmF5XG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tQXJyYXlMaWtlKHRoYXQsIGFycmF5KVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikge1xuICBpZiAoaW50ZXJuYWxJc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW4pXG5cbiAgICBpZiAodGhhdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGF0XG4gICAgfVxuXG4gICAgb2JqLmNvcHkodGhhdCwgMCwgMCwgbGVuKVxuICAgIHJldHVybiB0aGF0XG4gIH1cblxuICBpZiAob2JqKSB7XG4gICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIG9iai5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgfHwgJ2xlbmd0aCcgaW4gb2JqKSB7XG4gICAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IGlzbmFuKG9iai5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMClcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iailcbiAgICB9XG5cbiAgICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSlcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJylcbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IGtNYXhMZW5ndGgoKWAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBrTWF4TGVuZ3RoKCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cbkJ1ZmZlci5pc0J1ZmZlciA9IGlzQnVmZmVyO1xuZnVuY3Rpb24gaW50ZXJuYWxJc0J1ZmZlciAoYikge1xuICByZXR1cm4gISEoYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyKVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGEpIHx8ICFpbnRlcm5hbElzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycycpXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoXG4gIHZhciB5ID0gYi5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXVxuICAgICAgeSA9IGJbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG5CdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd1dGYtOCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAnYmluYXJ5JzpcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFpc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpXG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGxlbmd0aCA9IDBcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoIWludGVybmFsSXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9XG4gICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgcG9zICs9IGJ1Zi5sZW5ndGhcbiAgfVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKGludGVybmFsSXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IHN0cmluZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkge1xuICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nXG4gIH1cblxuICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAobGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJzaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIGFuZCBgaXMtYnVmZmVyYCAoaW4gU2FmYXJpIDUtNykgdG8gZGV0ZWN0XG4vLyBCdWZmZXIgaW5zdGFuY2VzLlxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgdmFyIGkgPSBiW25dXG4gIGJbbl0gPSBiW21dXG4gIGJbbV0gPSBpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2ID0gZnVuY3Rpb24gc3dhcDE2ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAodGhpcywgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDBcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gSU5TUEVDVF9NQVhfQllURVNcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICB9XG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0ICAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAoaXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKGludGVybmFsSXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiZcbiAgICAgICAgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgdmFyIGluZGV4U2l6ZSA9IDFcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGRpcikge1xuICAgIHZhciBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGhleCBzdHJpbmcnKVxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gbGF0aW4xV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggfCAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgLy8gbGVnYWN5IHdyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKSAtIHJlbW92ZSBpbiB2MC4xM1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gICAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyArK2kpIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgc3RhcnQgKyBsZW4pLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKGNvZGUgPCAyNTYpIHtcbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gaW50ZXJuYWxJc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxudmFyIElOVkFMSURfQkFTRTY0X1JFID0gL1teK1xcLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0cmluZ3RyaW0oc3RyKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiBzdHJpbmd0cmltIChzdHIpIHtcbiAgaWYgKHN0ci50cmltKSByZXR1cm4gc3RyLnRyaW0oKVxuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKVxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgdmFyIGNvZGVQb2ludFxuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgdmFyIGJ5dGVzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsb1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gaXNuYW4gKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSB2YWwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cblxuXG4vLyB0aGUgZm9sbG93aW5nIGlzIGZyb20gaXMtYnVmZmVyLCBhbHNvIGJ5IEZlcm9zcyBBYm91a2hhZGlqZWggYW5kIHdpdGggc2FtZSBsaXNlbmNlXG4vLyBUaGUgX2lzQnVmZmVyIGNoZWNrIGlzIGZvciBTYWZhcmkgNS03IHN1cHBvcnQsIGJlY2F1c2UgaXQncyBtaXNzaW5nXG4vLyBPYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yLiBSZW1vdmUgdGhpcyBldmVudHVhbGx5XG5leHBvcnQgZnVuY3Rpb24gaXNCdWZmZXIob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiAoISFvYmouX2lzQnVmZmVyIHx8IGlzRmFzdEJ1ZmZlcihvYmopIHx8IGlzU2xvd0J1ZmZlcihvYmopKVxufVxuXG5mdW5jdGlvbiBpc0Zhc3RCdWZmZXIgKG9iaikge1xuICByZXR1cm4gISFvYmouY29uc3RydWN0b3IgJiYgdHlwZW9mIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKVxufVxuXG4vLyBGb3IgTm9kZSB2MC4xMCBzdXBwb3J0LiBSZW1vdmUgdGhpcyBldmVudHVhbGx5LlxuZnVuY3Rpb24gaXNTbG93QnVmZmVyIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmoucmVhZEZsb2F0TEUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5zbGljZSA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0Zhc3RCdWZmZXIob2JqLnNsaWNlKDAsIDApKVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdwcm9jZXNzJztcbnZhciBmb3JtYXRSZWdFeHAgPSAvJVtzZGolXS9nO1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChmKSB7XG4gIGlmICghaXNTdHJpbmcoZikpIHtcbiAgICB2YXIgb2JqZWN0cyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvYmplY3RzLnB1c2goaW5zcGVjdChhcmd1bWVudHNbaV0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdHMuam9pbignICcpO1xuICB9XG5cbiAgdmFyIGkgPSAxO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbih4KSB7XG4gICAgaWYgKHggPT09ICclJScpIHJldHVybiAnJSc7XG4gICAgaWYgKGkgPj0gbGVuKSByZXR1cm4geDtcbiAgICBzd2l0Y2ggKHgpIHtcbiAgICAgIGNhc2UgJyVzJzogcmV0dXJuIFN0cmluZyhhcmdzW2krK10pO1xuICAgICAgY2FzZSAnJWQnOiByZXR1cm4gTnVtYmVyKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclaic6XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3NbaSsrXSk7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG4gIH0pO1xuICBmb3IgKHZhciB4ID0gYXJnc1tpXTsgaSA8IGxlbjsgeCA9IGFyZ3NbKytpXSkge1xuICAgIGlmIChpc051bGwoeCkgfHwgIWlzT2JqZWN0KHgpKSB7XG4gICAgICBzdHIgKz0gJyAnICsgeDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyICs9ICcgJyArIGluc3BlY3QoeCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHI7XG59O1xuXG5cbi8vIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4vLyBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuLy8gSWYgLS1uby1kZXByZWNhdGlvbiBpcyBzZXQsIHRoZW4gaXQgaXMgYSBuby1vcC5cbmV4cG9ydCBmdW5jdGlvbiBkZXByZWNhdGUoZm4sIG1zZykge1xuICAvLyBBbGxvdyBmb3IgZGVwcmVjYXRpbmcgdGhpbmdzIGluIHRoZSBwcm9jZXNzIG9mIHN0YXJ0aW5nIHVwLlxuICBpZiAoaXNVbmRlZmluZWQoZ2xvYmFsLnByb2Nlc3MpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBkZXByZWNhdGVkKCkge1xuICAgIGlmICghd2FybmVkKSB7XG4gICAgICBpZiAocHJvY2Vzcy50aHJvd0RlcHJlY2F0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gZGVwcmVjYXRlZDtcbn07XG5cblxudmFyIGRlYnVncyA9IHt9O1xudmFyIGRlYnVnRW52aXJvbjtcbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z2xvZyhzZXQpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKGRlYnVnRW52aXJvbikpXG4gICAgZGVidWdFbnZpcm9uID0gcHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyB8fCAnJztcbiAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7XG4gIGlmICghZGVidWdzW3NldF0pIHtcbiAgICBpZiAobmV3IFJlZ0V4cCgnXFxcXGInICsgc2V0ICsgJ1xcXFxiJywgJ2knKS50ZXN0KGRlYnVnRW52aXJvbikpIHtcbiAgICAgIHZhciBwaWQgPSAwO1xuICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG1zZyA9IGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCclcyAlZDogJXMnLCBzZXQsIHBpZCwgbXNnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlYnVnc1tzZXRdO1xufTtcblxuXG4vKipcbiAqIEVjaG9zIHRoZSB2YWx1ZSBvZiBhIHZhbHVlLiBUcnlzIHRvIHByaW50IHRoZSB2YWx1ZSBvdXRcbiAqIGluIHRoZSBiZXN0IHdheSBwb3NzaWJsZSBnaXZlbiB0aGUgZGlmZmVyZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBwcmludCBvdXQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25hbCBvcHRpb25zIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgb3V0cHV0LlxuICovXG4vKiBsZWdhY3k6IG9iaiwgc2hvd0hpZGRlbiwgZGVwdGgsIGNvbG9ycyovXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvYmosIG9wdHMpIHtcbiAgLy8gZGVmYXVsdCBvcHRpb25zXG4gIHZhciBjdHggPSB7XG4gICAgc2VlbjogW10sXG4gICAgc3R5bGl6ZTogc3R5bGl6ZU5vQ29sb3JcbiAgfTtcbiAgLy8gbGVnYWN5Li4uXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDMpIGN0eC5kZXB0aCA9IGFyZ3VtZW50c1syXTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkgY3R4LmNvbG9ycyA9IGFyZ3VtZW50c1szXTtcbiAgaWYgKGlzQm9vbGVhbihvcHRzKSkge1xuICAgIC8vIGxlZ2FjeS4uLlxuICAgIGN0eC5zaG93SGlkZGVuID0gb3B0cztcbiAgfSBlbHNlIGlmIChvcHRzKSB7XG4gICAgLy8gZ290IGFuIFwib3B0aW9uc1wiIG9iamVjdFxuICAgIF9leHRlbmQoY3R4LCBvcHRzKTtcbiAgfVxuICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zXG4gIGlmIChpc1VuZGVmaW5lZChjdHguc2hvd0hpZGRlbikpIGN0eC5zaG93SGlkZGVuID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguZGVwdGgpKSBjdHguZGVwdGggPSAyO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmNvbG9ycykpIGN0eC5jb2xvcnMgPSBmYWxzZTtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jdXN0b21JbnNwZWN0KSkgY3R4LmN1c3RvbUluc3BlY3QgPSB0cnVlO1xuICBpZiAoY3R4LmNvbG9ycykgY3R4LnN0eWxpemUgPSBzdHlsaXplV2l0aENvbG9yO1xuICByZXR1cm4gZm9ybWF0VmFsdWUoY3R4LCBvYmosIGN0eC5kZXB0aCk7XG59XG5cbi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSNncmFwaGljc1xuaW5zcGVjdC5jb2xvcnMgPSB7XG4gICdib2xkJyA6IFsxLCAyMl0sXG4gICdpdGFsaWMnIDogWzMsIDIzXSxcbiAgJ3VuZGVybGluZScgOiBbNCwgMjRdLFxuICAnaW52ZXJzZScgOiBbNywgMjddLFxuICAnd2hpdGUnIDogWzM3LCAzOV0sXG4gICdncmV5JyA6IFs5MCwgMzldLFxuICAnYmxhY2snIDogWzMwLCAzOV0sXG4gICdibHVlJyA6IFszNCwgMzldLFxuICAnY3lhbicgOiBbMzYsIDM5XSxcbiAgJ2dyZWVuJyA6IFszMiwgMzldLFxuICAnbWFnZW50YScgOiBbMzUsIDM5XSxcbiAgJ3JlZCcgOiBbMzEsIDM5XSxcbiAgJ3llbGxvdycgOiBbMzMsIDM5XVxufTtcblxuLy8gRG9uJ3QgdXNlICdibHVlJyBub3QgdmlzaWJsZSBvbiBjbWQuZXhlXG5pbnNwZWN0LnN0eWxlcyA9IHtcbiAgJ3NwZWNpYWwnOiAnY3lhbicsXG4gICdudW1iZXInOiAneWVsbG93JyxcbiAgJ2Jvb2xlYW4nOiAneWVsbG93JyxcbiAgJ3VuZGVmaW5lZCc6ICdncmV5JyxcbiAgJ251bGwnOiAnYm9sZCcsXG4gICdzdHJpbmcnOiAnZ3JlZW4nLFxuICAnZGF0ZSc6ICdtYWdlbnRhJyxcbiAgLy8gXCJuYW1lXCI6IGludGVudGlvbmFsbHkgbm90IHN0eWxpbmdcbiAgJ3JlZ2V4cCc6ICdyZWQnXG59O1xuXG5cbmZ1bmN0aW9uIHN0eWxpemVXaXRoQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHtcbiAgdmFyIHN0eWxlID0gaW5zcGVjdC5zdHlsZXNbc3R5bGVUeXBlXTtcblxuICBpZiAoc3R5bGUpIHtcbiAgICByZXR1cm4gJ1xcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVswXSArICdtJyArIHN0ciArXG4gICAgICAgICAgICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMV0gKyAnbSc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHN0eWxpemVOb0NvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHJldHVybiBzdHI7XG59XG5cblxuZnVuY3Rpb24gYXJyYXlUb0hhc2goYXJyYXkpIHtcbiAgdmFyIGhhc2ggPSB7fTtcblxuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHZhbCwgaWR4KSB7XG4gICAgaGFzaFt2YWxdID0gdHJ1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGhhc2g7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0VmFsdWUoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzKSB7XG4gIC8vIFByb3ZpZGUgYSBob29rIGZvciB1c2VyLXNwZWNpZmllZCBpbnNwZWN0IGZ1bmN0aW9ucy5cbiAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBhbiBpbnNwZWN0IGZ1bmN0aW9uIG9uIGl0XG4gIGlmIChjdHguY3VzdG9tSW5zcGVjdCAmJlxuICAgICAgdmFsdWUgJiZcbiAgICAgIGlzRnVuY3Rpb24odmFsdWUuaW5zcGVjdCkgJiZcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHV0aWwgbW9kdWxlLCBpdCdzIGluc3BlY3QgZnVuY3Rpb24gaXMgc3BlY2lhbFxuICAgICAgdmFsdWUuaW5zcGVjdCAhPT0gaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzLCBjdHgpO1xuICAgIGlmICghaXNTdHJpbmcocmV0KSkge1xuICAgICAgcmV0ID0gZm9ybWF0VmFsdWUoY3R4LCByZXQsIHJlY3Vyc2VUaW1lcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllc1xuICB2YXIgcHJpbWl0aXZlID0gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpO1xuICBpZiAocHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIHZhciB2aXNpYmxlS2V5cyA9IGFycmF5VG9IYXNoKGtleXMpO1xuXG4gIGlmIChjdHguc2hvd0hpZGRlbikge1xuICAgIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWx1ZSk7XG4gIH1cblxuICAvLyBJRSBkb2Vzbid0IG1ha2UgZXJyb3IgZmllbGRzIG5vbi1lbnVtZXJhYmxlXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4XG4gIGlmIChpc0Vycm9yKHZhbHVlKVxuICAgICAgJiYgKGtleXMuaW5kZXhPZignbWVzc2FnZScpID49IDAgfHwga2V5cy5pbmRleE9mKCdkZXNjcmlwdGlvbicpID49IDApKSB7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZSArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpO1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFyIHNpbXBsZSA9ICdcXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL15cInxcIiQvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKHNpbXBsZSwgJ3N0cmluZycpO1xuICB9XG4gIGlmIChpc051bWJlcih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdudW1iZXInKTtcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7XG4gIC8vIEZvciBzb21lIHJlYXNvbiB0eXBlb2YgbnVsbCBpcyBcIm9iamVjdFwiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS5cbiAgaWYgKGlzTnVsbCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCdudWxsJywgJ251bGwnKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgU3RyaW5nKGkpKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBTdHJpbmcoaSksIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKCFrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIGtleSwgdHJ1ZSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSkge1xuICB2YXIgbmFtZSwgc3RyLCBkZXNjO1xuICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KSB8fCB7IHZhbHVlOiB2YWx1ZVtrZXldIH07XG4gIGlmIChkZXNjLmdldCkge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXIvU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tTZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2aXNpYmxlS2V5cywga2V5KSkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZihkZXNjLnZhbHVlKSA8IDApIHtcbiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHIuaW5kZXhPZignXFxuJykgPiAtMSkge1xuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJykuc3Vic3RyKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ciA9ICdcXG4nICsgc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0NpcmN1bGFyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmIChpc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBuYW1lID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpO1xuICAgIGlmIChuYW1lLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBcIidcIik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ3N0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICsgJzogJyArIHN0cjtcbn1cblxuXG5mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcykge1xuICB2YXIgbnVtTGluZXNFc3QgPSAwO1xuICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHtcbiAgICBudW1MaW5lc0VzdCsrO1xuICAgIGlmIChjdXIuaW5kZXhPZignXFxuJykgPj0gMCkgbnVtTGluZXNFc3QrKztcbiAgICByZXR1cm4gcHJldiArIGN1ci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZywgJycpLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkoYXIpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gaXNPYmplY3QocmUpICYmIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBpc09iamVjdChkKSAmJiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiBpc09iamVjdChlKSAmJlxuICAgICAgKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWZmZXIobWF5YmVCdWYpIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihtYXliZUJ1Zik7XG59XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydCBmdW5jdGlvbiBsb2coKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcbn1cblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuaW1wb3J0IGluaGVyaXRzIGZyb20gJy4vaW5oZXJpdHMnO1xuZXhwb3J0IHtpbmhlcml0c31cblxuZXhwb3J0IGZ1bmN0aW9uIF9leHRlbmQob3JpZ2luLCBhZGQpIHtcbiAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgYWRkIGlzbid0IGFuIG9iamVjdFxuICBpZiAoIWFkZCB8fCAhaXNPYmplY3QoYWRkKSkgcmV0dXJuIG9yaWdpbjtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFkZCk7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBvcmlnaW5ba2V5c1tpXV0gPSBhZGRba2V5c1tpXV07XG4gIH1cbiAgcmV0dXJuIG9yaWdpbjtcbn07XG5cbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaW5oZXJpdHM6IGluaGVyaXRzLFxuICBfZXh0ZW5kOiBfZXh0ZW5kLFxuICBsb2c6IGxvZyxcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc1ByaW1pdGl2ZTogaXNQcmltaXRpdmUsXG4gIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24sXG4gIGlzRXJyb3I6IGlzRXJyb3IsXG4gIGlzRGF0ZTogaXNEYXRlLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzUmVnRXhwOiBpc1JlZ0V4cCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc1N5bWJvbDogaXNTeW1ib2wsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc051bGxPclVuZGVmaW5lZDogaXNOdWxsT3JVbmRlZmluZWQsXG4gIGlzTnVsbDogaXNOdWxsLFxuICBpc0Jvb2xlYW46IGlzQm9vbGVhbixcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaW5zcGVjdDogaW5zcGVjdCxcbiAgZGVwcmVjYXRlOiBkZXByZWNhdGUsXG4gIGZvcm1hdDogZm9ybWF0LFxuICBkZWJ1Z2xvZzogZGVidWdsb2dcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5cbi8vIElmIG9iai5oYXNPd25Qcm9wZXJ0eSBoYXMgYmVlbiBvdmVycmlkZGVuLCB0aGVuIGNhbGxpbmdcbi8vIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSB3aWxsIGJyZWFrLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vam95ZW50L25vZGUvaXNzdWVzLzE3MDdcbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHhzKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeHMpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcbmZ1bmN0aW9uIHN0cmluZ2lmeVByaW1pdGl2ZSh2KSB7XG4gIHN3aXRjaCAodHlwZW9mIHYpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIHY7XG5cbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHJldHVybiB2ID8gJ3RydWUnIDogJ2ZhbHNlJztcblxuICAgIGNhc2UgJ251bWJlcic6XG4gICAgICByZXR1cm4gaXNGaW5pdGUodikgPyB2IDogJyc7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkgKG9iaiwgc2VwLCBlcSwgbmFtZSkge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgIG9iaiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBtYXAob2JqZWN0S2V5cyhvYmopLCBmdW5jdGlvbihrKSB7XG4gICAgICB2YXIga3MgPSBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKGspKSArIGVxO1xuICAgICAgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgICByZXR1cm4gbWFwKG9ialtrXSwgZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiBrcyArIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUodikpO1xuICAgICAgICB9KS5qb2luKHNlcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga3MgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG9ialtrXSkpO1xuICAgICAgfVxuICAgIH0pLmpvaW4oc2VwKTtcblxuICB9XG5cbiAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG5hbWUpKSArIGVxICtcbiAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUob2JqKSk7XG59O1xuXG5mdW5jdGlvbiBtYXAgKHhzLCBmKSB7XG4gIGlmICh4cy5tYXApIHJldHVybiB4cy5tYXAoZik7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgIHJlcy5wdXNoKGYoeHNbaV0sIGkpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHJlcy5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShxcywgc2VwLCBlcSwgb3B0aW9ucykge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgdmFyIG9iaiA9IHt9O1xuXG4gIGlmICh0eXBlb2YgcXMgIT09ICdzdHJpbmcnIHx8IHFzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgcmVnZXhwID0gL1xcKy9nO1xuICBxcyA9IHFzLnNwbGl0KHNlcCk7XG5cbiAgdmFyIG1heEtleXMgPSAxMDAwO1xuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5tYXhLZXlzID09PSAnbnVtYmVyJykge1xuICAgIG1heEtleXMgPSBvcHRpb25zLm1heEtleXM7XG4gIH1cblxuICB2YXIgbGVuID0gcXMubGVuZ3RoO1xuICAvLyBtYXhLZXlzIDw9IDAgbWVhbnMgdGhhdCB3ZSBzaG91bGQgbm90IGxpbWl0IGtleXMgY291bnRcbiAgaWYgKG1heEtleXMgPiAwICYmIGxlbiA+IG1heEtleXMpIHtcbiAgICBsZW4gPSBtYXhLZXlzO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIHZhciB4ID0gcXNbaV0ucmVwbGFjZShyZWdleHAsICclMjAnKSxcbiAgICAgICAgaWR4ID0geC5pbmRleE9mKGVxKSxcbiAgICAgICAga3N0ciwgdnN0ciwgaywgdjtcblxuICAgIGlmIChpZHggPj0gMCkge1xuICAgICAga3N0ciA9IHguc3Vic3RyKDAsIGlkeCk7XG4gICAgICB2c3RyID0geC5zdWJzdHIoaWR4ICsgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtzdHIgPSB4O1xuICAgICAgdnN0ciA9ICcnO1xuICAgIH1cblxuICAgIGsgPSBkZWNvZGVVUklDb21wb25lbnQoa3N0cik7XG4gICAgdiA9IGRlY29kZVVSSUNvbXBvbmVudCh2c3RyKTtcblxuICAgIGlmICghaGFzT3duUHJvcGVydHkob2JqLCBrKSkge1xuICAgICAgb2JqW2tdID0gdjtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgb2JqW2tdLnB1c2godik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ialtrXSA9IFtvYmpba10sIHZdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBlbmNvZGU6IHN0cmluZ2lmeSxcbiAgc3RyaW5naWZ5OiBzdHJpbmdpZnksXG4gIGRlY29kZTogcGFyc2UsXG4gIHBhcnNlOiBwYXJzZVxufVxuZXhwb3J0IHtzdHJpbmdpZnkgYXMgZW5jb2RlLCBwYXJzZSBhcyBkZWNvZGV9O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cblxuaW1wb3J0IHt0b0FTQ0lJfSBmcm9tICdwdW55Y29kZSc7XG5pbXBvcnQge2lzT2JqZWN0LGlzU3RyaW5nLGlzTnVsbE9yVW5kZWZpbmVkLGlzTnVsbH0gZnJvbSAndXRpbCc7XG5pbXBvcnQge3BhcnNlIGFzIHFzUGFyc2Usc3RyaW5naWZ5IGFzIHFzU3RyaW5naWZ5fSBmcm9tICdxdWVyeXN0cmluZyc7XG5leHBvcnQge1xuICB1cmxQYXJzZSBhcyBwYXJzZSxcbiAgdXJsUmVzb2x2ZSBhcyByZXNvbHZlLFxuICB1cmxSZXNvbHZlT2JqZWN0IGFzIHJlc29sdmVPYmplY3QsXG4gIHVybEZvcm1hdCBhcyBmb3JtYXRcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHBhcnNlOiB1cmxQYXJzZSxcbiAgcmVzb2x2ZTogdXJsUmVzb2x2ZSxcbiAgcmVzb2x2ZU9iamVjdDogdXJsUmVzb2x2ZU9iamVjdCxcbiAgZm9ybWF0OiB1cmxGb3JtYXQsXG4gIFVybDogVXJsXG59XG5leHBvcnQgZnVuY3Rpb24gVXJsKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbDtcbiAgdGhpcy5zbGFzaGVzID0gbnVsbDtcbiAgdGhpcy5hdXRoID0gbnVsbDtcbiAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgdGhpcy5ob3N0bmFtZSA9IG51bGw7XG4gIHRoaXMuaGFzaCA9IG51bGw7XG4gIHRoaXMuc2VhcmNoID0gbnVsbDtcbiAgdGhpcy5xdWVyeSA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xuICB0aGlzLnBhdGggPSBudWxsO1xuICB0aGlzLmhyZWYgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gIHBvcnRQYXR0ZXJuID0gLzpbMC05XSokLyxcblxuICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2ltcGxlIHBhdGggVVJMXG4gIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXlxcP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyByZXNlcnZlZCBmb3IgZGVsaW1pdGluZyBVUkxzLlxuICAvLyBXZSBhY3R1YWxseSBqdXN0IGF1dG8tZXNjYXBlIHRoZXNlLlxuICBkZWxpbXMgPSBbJzwnLCAnPicsICdcIicsICdgJywgJyAnLCAnXFxyJywgJ1xcbicsICdcXHQnXSxcblxuICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyBub3QgYWxsb3dlZCBmb3IgdmFyaW91cyByZWFzb25zLlxuICB1bndpc2UgPSBbJ3snLCAnfScsICd8JywgJ1xcXFwnLCAnXicsICdgJ10uY29uY2F0KGRlbGltcyksXG5cbiAgLy8gQWxsb3dlZCBieSBSRkNzLCBidXQgY2F1c2Ugb2YgWFNTIGF0dGFja3MuICBBbHdheXMgZXNjYXBlIHRoZXNlLlxuICBhdXRvRXNjYXBlID0gWydcXCcnXS5jb25jYXQodW53aXNlKSxcbiAgLy8gQ2hhcmFjdGVycyB0aGF0IGFyZSBuZXZlciBldmVyIGFsbG93ZWQgaW4gYSBob3N0bmFtZS5cbiAgLy8gTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAvLyBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgKmV4cGVjdGVkKiB0byBiZSBzZWVuLCBzbyB3ZSBmYXN0LXBhdGhcbiAgLy8gdGhlbS5cbiAgbm9uSG9zdENoYXJzID0gWyclJywgJy8nLCAnPycsICc7JywgJyMnXS5jb25jYXQoYXV0b0VzY2FwZSksXG4gIGhvc3RFbmRpbmdDaGFycyA9IFsnLycsICc/JywgJyMnXSxcbiAgaG9zdG5hbWVNYXhMZW4gPSAyNTUsXG4gIGhvc3RuYW1lUGFydFBhdHRlcm4gPSAvXlsrYS16MC05QS1aXy1dezAsNjN9JC8sXG4gIGhvc3RuYW1lUGFydFN0YXJ0ID0gL14oWythLXowLTlBLVpfLV17MCw2M30pKC4qKSQvLFxuICAvLyBwcm90b2NvbHMgdGhhdCBjYW4gYWxsb3cgXCJ1bnNhZmVcIiBhbmQgXCJ1bndpc2VcIiBjaGFycy5cbiAgdW5zYWZlUHJvdG9jb2wgPSB7XG4gICAgJ2phdmFzY3JpcHQnOiB0cnVlLFxuICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgfSxcbiAgLy8gcHJvdG9jb2xzIHRoYXQgbmV2ZXIgaGF2ZSBhIGhvc3RuYW1lLlxuICBob3N0bGVzc1Byb3RvY29sID0ge1xuICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gIH0sXG4gIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICBzbGFzaGVkUHJvdG9jb2wgPSB7XG4gICAgJ2h0dHAnOiB0cnVlLFxuICAgICdodHRwcyc6IHRydWUsXG4gICAgJ2Z0cCc6IHRydWUsXG4gICAgJ2dvcGhlcic6IHRydWUsXG4gICAgJ2ZpbGUnOiB0cnVlLFxuICAgICdodHRwOic6IHRydWUsXG4gICAgJ2h0dHBzOic6IHRydWUsXG4gICAgJ2Z0cDonOiB0cnVlLFxuICAgICdnb3BoZXI6JzogdHJ1ZSxcbiAgICAnZmlsZTonOiB0cnVlXG4gIH07XG5cbmZ1bmN0aW9uIHVybFBhcnNlKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiBpc09iamVjdCh1cmwpICYmIHVybCBpbnN0YW5jZW9mIFVybCkgcmV0dXJuIHVybDtcblxuICB2YXIgdSA9IG5ldyBVcmw7XG4gIHUucGFyc2UodXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCk7XG4gIHJldHVybiB1O1xufVxuVXJsLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgcmV0dXJuIHBhcnNlKHRoaXMsIHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpO1xufVxuXG5mdW5jdGlvbiBwYXJzZShzZWxmLCB1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICghaXNTdHJpbmcodXJsKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BhcmFtZXRlciBcXCd1cmxcXCcgbXVzdCBiZSBhIHN0cmluZywgbm90ICcgKyB0eXBlb2YgdXJsKTtcbiAgfVxuXG4gIC8vIENvcHkgY2hyb21lLCBJRSwgb3BlcmEgYmFja3NsYXNoLWhhbmRsaW5nIGJlaGF2aW9yLlxuICAvLyBCYWNrIHNsYXNoZXMgYmVmb3JlIHRoZSBxdWVyeSBzdHJpbmcgZ2V0IGNvbnZlcnRlZCB0byBmb3J3YXJkIHNsYXNoZXNcbiAgLy8gU2VlOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MjU5MTZcbiAgdmFyIHF1ZXJ5SW5kZXggPSB1cmwuaW5kZXhPZignPycpLFxuICAgIHNwbGl0dGVyID1cbiAgICAocXVlcnlJbmRleCAhPT0gLTEgJiYgcXVlcnlJbmRleCA8IHVybC5pbmRleE9mKCcjJykpID8gJz8nIDogJyMnLFxuICAgIHVTcGxpdCA9IHVybC5zcGxpdChzcGxpdHRlciksXG4gICAgc2xhc2hSZWdleCA9IC9cXFxcL2c7XG4gIHVTcGxpdFswXSA9IHVTcGxpdFswXS5yZXBsYWNlKHNsYXNoUmVnZXgsICcvJyk7XG4gIHVybCA9IHVTcGxpdC5qb2luKHNwbGl0dGVyKTtcblxuICB2YXIgcmVzdCA9IHVybDtcblxuICAvLyB0cmltIGJlZm9yZSBwcm9jZWVkaW5nLlxuICAvLyBUaGlzIGlzIHRvIHN1cHBvcnQgcGFyc2Ugc3R1ZmYgbGlrZSBcIiAgaHR0cDovL2Zvby5jb20gIFxcblwiXG4gIHJlc3QgPSByZXN0LnRyaW0oKTtcblxuICBpZiAoIXNsYXNoZXNEZW5vdGVIb3N0ICYmIHVybC5zcGxpdCgnIycpLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIFRyeSBmYXN0IHBhdGggcmVnZXhwXG4gICAgdmFyIHNpbXBsZVBhdGggPSBzaW1wbGVQYXRoUGF0dGVybi5leGVjKHJlc3QpO1xuICAgIGlmIChzaW1wbGVQYXRoKSB7XG4gICAgICBzZWxmLnBhdGggPSByZXN0O1xuICAgICAgc2VsZi5ocmVmID0gcmVzdDtcbiAgICAgIHNlbGYucGF0aG5hbWUgPSBzaW1wbGVQYXRoWzFdO1xuICAgICAgaWYgKHNpbXBsZVBhdGhbMl0pIHtcbiAgICAgICAgc2VsZi5zZWFyY2ggPSBzaW1wbGVQYXRoWzJdO1xuICAgICAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICAgIHNlbGYucXVlcnkgPSBxc1BhcnNlKHNlbGYuc2VhcmNoLnN1YnN0cigxKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi5xdWVyeSA9IHNlbGYuc2VhcmNoLnN1YnN0cigxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIHNlbGYuc2VhcmNoID0gJyc7XG4gICAgICAgIHNlbGYucXVlcnkgPSB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwcm90byA9IHByb3RvY29sUGF0dGVybi5leGVjKHJlc3QpO1xuICBpZiAocHJvdG8pIHtcbiAgICBwcm90byA9IHByb3RvWzBdO1xuICAgIHZhciBsb3dlclByb3RvID0gcHJvdG8udG9Mb3dlckNhc2UoKTtcbiAgICBzZWxmLnByb3RvY29sID0gbG93ZXJQcm90bztcbiAgICByZXN0ID0gcmVzdC5zdWJzdHIocHJvdG8ubGVuZ3RoKTtcbiAgfVxuXG4gIC8vIGZpZ3VyZSBvdXQgaWYgaXQncyBnb3QgYSBob3N0XG4gIC8vIHVzZXJAc2VydmVyIGlzICphbHdheXMqIGludGVycHJldGVkIGFzIGEgaG9zdG5hbWUsIGFuZCB1cmxcbiAgLy8gcmVzb2x1dGlvbiB3aWxsIHRyZWF0IC8vZm9vL2JhciBhcyBob3N0PWZvbyxwYXRoPWJhciBiZWNhdXNlIHRoYXQnc1xuICAvLyBob3cgdGhlIGJyb3dzZXIgcmVzb2x2ZXMgcmVsYXRpdmUgVVJMcy5cbiAgaWYgKHNsYXNoZXNEZW5vdGVIb3N0IHx8IHByb3RvIHx8IHJlc3QubWF0Y2goL15cXC9cXC9bXkBcXC9dK0BbXkBcXC9dKy8pKSB7XG4gICAgdmFyIHNsYXNoZXMgPSByZXN0LnN1YnN0cigwLCAyKSA9PT0gJy8vJztcbiAgICBpZiAoc2xhc2hlcyAmJiAhKHByb3RvICYmIGhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dKSkge1xuICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDIpO1xuICAgICAgc2VsZi5zbGFzaGVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgdmFyIGksIGhlYywgbCwgcDtcbiAgaWYgKCFob3N0bGVzc1Byb3RvY29sW3Byb3RvXSAmJlxuICAgIChzbGFzaGVzIHx8IChwcm90byAmJiAhc2xhc2hlZFByb3RvY29sW3Byb3RvXSkpKSB7XG5cbiAgICAvLyB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAvLyB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgIC8vIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgLy8gVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgIC8vXG4gICAgLy8gZXg6XG4gICAgLy8gaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAvLyBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG5cbiAgICAvLyB2MC4xMiBUT0RPKGlzYWFjcyk6IFRoaXMgaXMgbm90IHF1aXRlIGhvdyBDaHJvbWUgZG9lcyB0aGluZ3MuXG4gICAgLy8gUmV2aWV3IG91ciB0ZXN0IGNhc2UgYWdhaW5zdCBicm93c2VycyBtb3JlIGNvbXByZWhlbnNpdmVseS5cblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGFueSBob3N0RW5kaW5nQ2hhcnNcbiAgICB2YXIgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IDA7IGkgPCBob3N0RW5kaW5nQ2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihob3N0RW5kaW5nQ2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cblxuICAgIC8vIGF0IHRoaXMgcG9pbnQsIGVpdGhlciB3ZSBoYXZlIGFuIGV4cGxpY2l0IHBvaW50IHdoZXJlIHRoZVxuICAgIC8vIGF1dGggcG9ydGlvbiBjYW5ub3QgZ28gcGFzdCwgb3IgdGhlIGxhc3QgQCBjaGFyIGlzIHRoZSBkZWNpZGVyLlxuICAgIHZhciBhdXRoLCBhdFNpZ247XG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7XG4gICAgICAvLyBhdFNpZ24gY2FuIGJlIGFueXdoZXJlLlxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhdFNpZ24gbXVzdCBiZSBpbiBhdXRoIHBvcnRpb24uXG4gICAgICAvLyBodHRwOi8vYUBiL2NAZCA9PiBob3N0OmIgYXV0aDphIHBhdGg6L2NAZFxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcsIGhvc3RFbmQpO1xuICAgIH1cblxuICAgIC8vIE5vdyB3ZSBoYXZlIGEgcG9ydGlvbiB3aGljaCBpcyBkZWZpbml0ZWx5IHRoZSBhdXRoLlxuICAgIC8vIFB1bGwgdGhhdCBvZmYuXG4gICAgaWYgKGF0U2lnbiAhPT0gLTEpIHtcbiAgICAgIGF1dGggPSByZXN0LnNsaWNlKDAsIGF0U2lnbik7XG4gICAgICByZXN0ID0gcmVzdC5zbGljZShhdFNpZ24gKyAxKTtcbiAgICAgIHNlbGYuYXV0aCA9IGRlY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICB9XG5cbiAgICAvLyB0aGUgaG9zdCBpcyB0aGUgcmVtYWluaW5nIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBub24taG9zdCBjaGFyXG4gICAgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IDA7IGkgPCBub25Ib3N0Q2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihub25Ib3N0Q2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cbiAgICAvLyBpZiB3ZSBzdGlsbCBoYXZlIG5vdCBoaXQgaXQsIHRoZW4gdGhlIGVudGlyZSB0aGluZyBpcyBhIGhvc3QuXG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKVxuICAgICAgaG9zdEVuZCA9IHJlc3QubGVuZ3RoO1xuXG4gICAgc2VsZi5ob3N0ID0gcmVzdC5zbGljZSgwLCBob3N0RW5kKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZShob3N0RW5kKTtcblxuICAgIC8vIHB1bGwgb3V0IHBvcnQuXG4gICAgcGFyc2VIb3N0KHNlbGYpO1xuXG4gICAgLy8gd2UndmUgaW5kaWNhdGVkIHRoYXQgdGhlcmUgaXMgYSBob3N0bmFtZSxcbiAgICAvLyBzbyBldmVuIGlmIGl0J3MgZW1wdHksIGl0IGhhcyB0byBiZSBwcmVzZW50LlxuICAgIHNlbGYuaG9zdG5hbWUgPSBzZWxmLmhvc3RuYW1lIHx8ICcnO1xuXG4gICAgLy8gaWYgaG9zdG5hbWUgYmVnaW5zIHdpdGggWyBhbmQgZW5kcyB3aXRoIF1cbiAgICAvLyBhc3N1bWUgdGhhdCBpdCdzIGFuIElQdjYgYWRkcmVzcy5cbiAgICB2YXIgaXB2Nkhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZVswXSA9PT0gJ1snICYmXG4gICAgICBzZWxmLmhvc3RuYW1lW3NlbGYuaG9zdG5hbWUubGVuZ3RoIC0gMV0gPT09ICddJztcblxuICAgIC8vIHZhbGlkYXRlIGEgbGl0dGxlLlxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB2YXIgaG9zdHBhcnRzID0gc2VsZi5ob3N0bmFtZS5zcGxpdCgvXFwuLyk7XG4gICAgICBmb3IgKGkgPSAwLCBsID0gaG9zdHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB2YXIgcGFydCA9IGhvc3RwYXJ0c1tpXTtcbiAgICAgICAgaWYgKCFwYXJ0KSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgdmFyIG5ld3BhcnQgPSAnJztcbiAgICAgICAgICBmb3IgKHZhciBqID0gMCwgayA9IHBhcnQubGVuZ3RoOyBqIDwgazsgaisrKSB7XG4gICAgICAgICAgICBpZiAocGFydC5jaGFyQ29kZUF0KGopID4gMTI3KSB7XG4gICAgICAgICAgICAgIC8vIHdlIHJlcGxhY2Ugbm9uLUFTQ0lJIGNoYXIgd2l0aCBhIHRlbXBvcmFyeSBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRoaXMgdG8gbWFrZSBzdXJlIHNpemUgb2YgaG9zdG5hbWUgaXMgbm90XG4gICAgICAgICAgICAgIC8vIGJyb2tlbiBieSByZXBsYWNpbmcgbm9uLUFTQ0lJIGJ5IG5vdGhpbmdcbiAgICAgICAgICAgICAgbmV3cGFydCArPSAneCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9IHBhcnRbal07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHdlIHRlc3QgYWdhaW4gd2l0aCBBU0NJSSBjaGFyIG9ubHlcbiAgICAgICAgICBpZiAoIW5ld3BhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICAgIHZhciB2YWxpZFBhcnRzID0gaG9zdHBhcnRzLnNsaWNlKDAsIGkpO1xuICAgICAgICAgICAgdmFyIG5vdEhvc3QgPSBob3N0cGFydHMuc2xpY2UoaSArIDEpO1xuICAgICAgICAgICAgdmFyIGJpdCA9IHBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0U3RhcnQpO1xuICAgICAgICAgICAgaWYgKGJpdCkge1xuICAgICAgICAgICAgICB2YWxpZFBhcnRzLnB1c2goYml0WzFdKTtcbiAgICAgICAgICAgICAgbm90SG9zdC51bnNoaWZ0KGJpdFsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm90SG9zdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmVzdCA9ICcvJyArIG5vdEhvc3Quam9pbignLicpICsgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuaG9zdG5hbWUgPSB2YWxpZFBhcnRzLmpvaW4oJy4nKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzZWxmLmhvc3RuYW1lLmxlbmd0aCA+IGhvc3RuYW1lTWF4TGVuKSB7XG4gICAgICBzZWxmLmhvc3RuYW1lID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhvc3RuYW1lcyBhcmUgYWx3YXlzIGxvd2VyIGNhc2UuXG4gICAgICBzZWxmLmhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICAvLyBJRE5BIFN1cHBvcnQ6IFJldHVybnMgYSBwdW55Y29kZWQgcmVwcmVzZW50YXRpb24gb2YgXCJkb21haW5cIi5cbiAgICAgIC8vIEl0IG9ubHkgY29udmVydHMgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHRoYXRcbiAgICAgIC8vIGhhdmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWZcbiAgICAgIC8vIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCBhbHJlYWR5IGlzIEFTQ0lJLW9ubHkuXG4gICAgICBzZWxmLmhvc3RuYW1lID0gdG9BU0NJSShzZWxmLmhvc3RuYW1lKTtcbiAgICB9XG5cbiAgICBwID0gc2VsZi5wb3J0ID8gJzonICsgc2VsZi5wb3J0IDogJyc7XG4gICAgdmFyIGggPSBzZWxmLmhvc3RuYW1lIHx8ICcnO1xuICAgIHNlbGYuaG9zdCA9IGggKyBwO1xuICAgIHNlbGYuaHJlZiArPSBzZWxmLmhvc3Q7XG5cbiAgICAvLyBzdHJpcCBbIGFuZCBdIGZyb20gdGhlIGhvc3RuYW1lXG4gICAgLy8gdGhlIGhvc3QgZmllbGQgc3RpbGwgcmV0YWlucyB0aGVtLCB0aG91Z2hcbiAgICBpZiAoaXB2Nkhvc3RuYW1lKSB7XG4gICAgICBzZWxmLmhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZS5zdWJzdHIoMSwgc2VsZi5ob3N0bmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIGlmIChyZXN0WzBdICE9PSAnLycpIHtcbiAgICAgICAgcmVzdCA9ICcvJyArIHJlc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gbm93IHJlc3QgaXMgc2V0IHRvIHRoZSBwb3N0LWhvc3Qgc3R1ZmYuXG4gIC8vIGNob3Agb2ZmIGFueSBkZWxpbSBjaGFycy5cbiAgaWYgKCF1bnNhZmVQcm90b2NvbFtsb3dlclByb3RvXSkge1xuXG4gICAgLy8gRmlyc3QsIG1ha2UgMTAwJSBzdXJlIHRoYXQgYW55IFwiYXV0b0VzY2FwZVwiIGNoYXJzIGdldFxuICAgIC8vIGVzY2FwZWQsIGV2ZW4gaWYgZW5jb2RlVVJJQ29tcG9uZW50IGRvZXNuJ3QgdGhpbmsgdGhleVxuICAgIC8vIG5lZWQgdG8gYmUuXG4gICAgZm9yIChpID0gMCwgbCA9IGF1dG9Fc2NhcGUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYWUgPSBhdXRvRXNjYXBlW2ldO1xuICAgICAgaWYgKHJlc3QuaW5kZXhPZihhZSkgPT09IC0xKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIHZhciBlc2MgPSBlbmNvZGVVUklDb21wb25lbnQoYWUpO1xuICAgICAgaWYgKGVzYyA9PT0gYWUpIHtcbiAgICAgICAgZXNjID0gZXNjYXBlKGFlKTtcbiAgICAgIH1cbiAgICAgIHJlc3QgPSByZXN0LnNwbGl0KGFlKS5qb2luKGVzYyk7XG4gICAgfVxuICB9XG5cblxuICAvLyBjaG9wIG9mZiBmcm9tIHRoZSB0YWlsIGZpcnN0LlxuICB2YXIgaGFzaCA9IHJlc3QuaW5kZXhPZignIycpO1xuICBpZiAoaGFzaCAhPT0gLTEpIHtcbiAgICAvLyBnb3QgYSBmcmFnbWVudCBzdHJpbmcuXG4gICAgc2VsZi5oYXNoID0gcmVzdC5zdWJzdHIoaGFzaCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgaGFzaCk7XG4gIH1cbiAgdmFyIHFtID0gcmVzdC5pbmRleE9mKCc/Jyk7XG4gIGlmIChxbSAhPT0gLTEpIHtcbiAgICBzZWxmLnNlYXJjaCA9IHJlc3Quc3Vic3RyKHFtKTtcbiAgICBzZWxmLnF1ZXJ5ID0gcmVzdC5zdWJzdHIocW0gKyAxKTtcbiAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgc2VsZi5xdWVyeSA9IHFzUGFyc2Uoc2VsZi5xdWVyeSk7XG4gICAgfVxuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIHFtKTtcbiAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgLy8gbm8gcXVlcnkgc3RyaW5nLCBidXQgcGFyc2VRdWVyeVN0cmluZyBzdGlsbCByZXF1ZXN0ZWRcbiAgICBzZWxmLnNlYXJjaCA9ICcnO1xuICAgIHNlbGYucXVlcnkgPSB7fTtcbiAgfVxuICBpZiAocmVzdCkgc2VsZi5wYXRobmFtZSA9IHJlc3Q7XG4gIGlmIChzbGFzaGVkUHJvdG9jb2xbbG93ZXJQcm90b10gJiZcbiAgICBzZWxmLmhvc3RuYW1lICYmICFzZWxmLnBhdGhuYW1lKSB7XG4gICAgc2VsZi5wYXRobmFtZSA9ICcvJztcbiAgfVxuXG4gIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgaWYgKHNlbGYucGF0aG5hbWUgfHwgc2VsZi5zZWFyY2gpIHtcbiAgICBwID0gc2VsZi5wYXRobmFtZSB8fCAnJztcbiAgICB2YXIgcyA9IHNlbGYuc2VhcmNoIHx8ICcnO1xuICAgIHNlbGYucGF0aCA9IHAgKyBzO1xuICB9XG5cbiAgLy8gZmluYWxseSwgcmVjb25zdHJ1Y3QgdGhlIGhyZWYgYmFzZWQgb24gd2hhdCBoYXMgYmVlbiB2YWxpZGF0ZWQuXG4gIHNlbGYuaHJlZiA9IGZvcm1hdChzZWxmKTtcbiAgcmV0dXJuIHNlbGY7XG59XG5cbi8vIGZvcm1hdCBhIHBhcnNlZCBvYmplY3QgaW50byBhIHVybCBzdHJpbmdcbmZ1bmN0aW9uIHVybEZvcm1hdChvYmopIHtcbiAgLy8gZW5zdXJlIGl0J3MgYW4gb2JqZWN0LCBhbmQgbm90IGEgc3RyaW5nIHVybC5cbiAgLy8gSWYgaXQncyBhbiBvYmosIHRoaXMgaXMgYSBuby1vcC5cbiAgLy8gdGhpcyB3YXksIHlvdSBjYW4gY2FsbCB1cmxfZm9ybWF0KCkgb24gc3RyaW5nc1xuICAvLyB0byBjbGVhbiB1cCBwb3RlbnRpYWxseSB3b25reSB1cmxzLlxuICBpZiAoaXNTdHJpbmcob2JqKSkgb2JqID0gcGFyc2Uoe30sIG9iaik7XG4gIHJldHVybiBmb3JtYXQob2JqKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0KHNlbGYpIHtcbiAgdmFyIGF1dGggPSBzZWxmLmF1dGggfHwgJyc7XG4gIGlmIChhdXRoKSB7XG4gICAgYXV0aCA9IGVuY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICBhdXRoID0gYXV0aC5yZXBsYWNlKC8lM0EvaSwgJzonKTtcbiAgICBhdXRoICs9ICdAJztcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHNlbGYucHJvdG9jb2wgfHwgJycsXG4gICAgcGF0aG5hbWUgPSBzZWxmLnBhdGhuYW1lIHx8ICcnLFxuICAgIGhhc2ggPSBzZWxmLmhhc2ggfHwgJycsXG4gICAgaG9zdCA9IGZhbHNlLFxuICAgIHF1ZXJ5ID0gJyc7XG5cbiAgaWYgKHNlbGYuaG9zdCkge1xuICAgIGhvc3QgPSBhdXRoICsgc2VsZi5ob3N0O1xuICB9IGVsc2UgaWYgKHNlbGYuaG9zdG5hbWUpIHtcbiAgICBob3N0ID0gYXV0aCArIChzZWxmLmhvc3RuYW1lLmluZGV4T2YoJzonKSA9PT0gLTEgP1xuICAgICAgc2VsZi5ob3N0bmFtZSA6XG4gICAgICAnWycgKyB0aGlzLmhvc3RuYW1lICsgJ10nKTtcbiAgICBpZiAoc2VsZi5wb3J0KSB7XG4gICAgICBob3N0ICs9ICc6JyArIHNlbGYucG9ydDtcbiAgICB9XG4gIH1cblxuICBpZiAoc2VsZi5xdWVyeSAmJlxuICAgIGlzT2JqZWN0KHNlbGYucXVlcnkpICYmXG4gICAgT2JqZWN0LmtleXMoc2VsZi5xdWVyeSkubGVuZ3RoKSB7XG4gICAgcXVlcnkgPSBxc1N0cmluZ2lmeShzZWxmLnF1ZXJ5KTtcbiAgfVxuXG4gIHZhciBzZWFyY2ggPSBzZWxmLnNlYXJjaCB8fCAocXVlcnkgJiYgKCc/JyArIHF1ZXJ5KSkgfHwgJyc7XG5cbiAgaWYgKHByb3RvY29sICYmIHByb3RvY29sLnN1YnN0cigtMSkgIT09ICc6JykgcHJvdG9jb2wgKz0gJzonO1xuXG4gIC8vIG9ubHkgdGhlIHNsYXNoZWRQcm90b2NvbHMgZ2V0IHRoZSAvLy4gIE5vdCBtYWlsdG86LCB4bXBwOiwgZXRjLlxuICAvLyB1bmxlc3MgdGhleSBoYWQgdGhlbSB0byBiZWdpbiB3aXRoLlxuICBpZiAoc2VsZi5zbGFzaGVzIHx8XG4gICAgKCFwcm90b2NvbCB8fCBzbGFzaGVkUHJvdG9jb2xbcHJvdG9jb2xdKSAmJiBob3N0ICE9PSBmYWxzZSkge1xuICAgIGhvc3QgPSAnLy8nICsgKGhvc3QgfHwgJycpO1xuICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykgcGF0aG5hbWUgPSAnLycgKyBwYXRobmFtZTtcbiAgfSBlbHNlIGlmICghaG9zdCkge1xuICAgIGhvc3QgPSAnJztcbiAgfVxuXG4gIGlmIChoYXNoICYmIGhhc2guY2hhckF0KDApICE9PSAnIycpIGhhc2ggPSAnIycgKyBoYXNoO1xuICBpZiAoc2VhcmNoICYmIHNlYXJjaC5jaGFyQXQoMCkgIT09ICc/Jykgc2VhcmNoID0gJz8nICsgc2VhcmNoO1xuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQobWF0Y2gpO1xuICB9KTtcbiAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoJyMnLCAnJTIzJyk7XG5cbiAgcmV0dXJuIHByb3RvY29sICsgaG9zdCArIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbn1cblxuVXJsLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGZvcm1hdCh0aGlzKTtcbn1cblxuZnVuY3Rpb24gdXJsUmVzb2x2ZShzb3VyY2UsIHJlbGF0aXZlKSB7XG4gIHJldHVybiB1cmxQYXJzZShzb3VyY2UsIGZhbHNlLCB0cnVlKS5yZXNvbHZlKHJlbGF0aXZlKTtcbn1cblxuVXJsLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24ocmVsYXRpdmUpIHtcbiAgcmV0dXJuIHRoaXMucmVzb2x2ZU9iamVjdCh1cmxQYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpKS5mb3JtYXQoKTtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmVPYmplY3Qoc291cmNlLCByZWxhdGl2ZSkge1xuICBpZiAoIXNvdXJjZSkgcmV0dXJuIHJlbGF0aXZlO1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZU9iamVjdChyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZU9iamVjdCA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIGlmIChpc1N0cmluZyhyZWxhdGl2ZSkpIHtcbiAgICB2YXIgcmVsID0gbmV3IFVybCgpO1xuICAgIHJlbC5wYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpO1xuICAgIHJlbGF0aXZlID0gcmVsO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyBVcmwoKTtcbiAgdmFyIHRrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG4gIGZvciAodmFyIHRrID0gMDsgdGsgPCB0a2V5cy5sZW5ndGg7IHRrKyspIHtcbiAgICB2YXIgdGtleSA9IHRrZXlzW3RrXTtcbiAgICByZXN1bHRbdGtleV0gPSB0aGlzW3RrZXldO1xuICB9XG5cbiAgLy8gaGFzaCBpcyBhbHdheXMgb3ZlcnJpZGRlbiwgbm8gbWF0dGVyIHdoYXQuXG4gIC8vIGV2ZW4gaHJlZj1cIlwiIHdpbGwgcmVtb3ZlIGl0LlxuICByZXN1bHQuaGFzaCA9IHJlbGF0aXZlLmhhc2g7XG5cbiAgLy8gaWYgdGhlIHJlbGF0aXZlIHVybCBpcyBlbXB0eSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkbyBoZXJlLlxuICBpZiAocmVsYXRpdmUuaHJlZiA9PT0gJycpIHtcbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaHJlZnMgbGlrZSAvL2Zvby9iYXIgYWx3YXlzIGN1dCB0byB0aGUgcHJvdG9jb2wuXG4gIGlmIChyZWxhdGl2ZS5zbGFzaGVzICYmICFyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgIC8vIHRha2UgZXZlcnl0aGluZyBleGNlcHQgdGhlIHByb3RvY29sIGZyb20gcmVsYXRpdmVcbiAgICB2YXIgcmtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgZm9yICh2YXIgcmsgPSAwOyByayA8IHJrZXlzLmxlbmd0aDsgcmsrKykge1xuICAgICAgdmFyIHJrZXkgPSBya2V5c1tya107XG4gICAgICBpZiAocmtleSAhPT0gJ3Byb3RvY29sJylcbiAgICAgICAgcmVzdWx0W3JrZXldID0gcmVsYXRpdmVbcmtleV07XG4gICAgfVxuXG4gICAgLy91cmxQYXJzZSBhcHBlbmRzIHRyYWlsaW5nIC8gdG8gdXJscyBsaWtlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb21cbiAgICBpZiAoc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF0gJiZcbiAgICAgIHJlc3VsdC5ob3N0bmFtZSAmJiAhcmVzdWx0LnBhdGhuYW1lKSB7XG4gICAgICByZXN1bHQucGF0aCA9IHJlc3VsdC5wYXRobmFtZSA9ICcvJztcbiAgICB9XG5cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHZhciByZWxQYXRoO1xuICBpZiAocmVsYXRpdmUucHJvdG9jb2wgJiYgcmVsYXRpdmUucHJvdG9jb2wgIT09IHJlc3VsdC5wcm90b2NvbCkge1xuICAgIC8vIGlmIGl0J3MgYSBrbm93biB1cmwgcHJvdG9jb2wsIHRoZW4gY2hhbmdpbmdcbiAgICAvLyB0aGUgcHJvdG9jb2wgZG9lcyB3ZWlyZCB0aGluZ3NcbiAgICAvLyBmaXJzdCwgaWYgaXQncyBub3QgZmlsZTosIHRoZW4gd2UgTVVTVCBoYXZlIGEgaG9zdCxcbiAgICAvLyBhbmQgaWYgdGhlcmUgd2FzIGEgcGF0aFxuICAgIC8vIHRvIGJlZ2luIHdpdGgsIHRoZW4gd2UgTVVTVCBoYXZlIGEgcGF0aC5cbiAgICAvLyBpZiBpdCBpcyBmaWxlOiwgdGhlbiB0aGUgaG9zdCBpcyBkcm9wcGVkLFxuICAgIC8vIGJlY2F1c2UgdGhhdCdzIGtub3duIHRvIGJlIGhvc3RsZXNzLlxuICAgIC8vIGFueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhYnNvbHV0ZS5cbiAgICBpZiAoIXNsYXNoZWRQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgICAgIHZhciBrID0ga2V5c1t2XTtcbiAgICAgICAgcmVzdWx0W2tdID0gcmVsYXRpdmVba107XG4gICAgICB9XG4gICAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0LnByb3RvY29sID0gcmVsYXRpdmUucHJvdG9jb2w7XG4gICAgaWYgKCFyZWxhdGl2ZS5ob3N0ICYmICFob3N0bGVzc1Byb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgcmVsUGF0aCA9IChyZWxhdGl2ZS5wYXRobmFtZSB8fCAnJykuc3BsaXQoJy8nKTtcbiAgICAgIHdoaWxlIChyZWxQYXRoLmxlbmd0aCAmJiAhKHJlbGF0aXZlLmhvc3QgPSByZWxQYXRoLnNoaWZ0KCkpKTtcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdCkgcmVsYXRpdmUuaG9zdCA9ICcnO1xuICAgICAgaWYgKCFyZWxhdGl2ZS5ob3N0bmFtZSkgcmVsYXRpdmUuaG9zdG5hbWUgPSAnJztcbiAgICAgIGlmIChyZWxQYXRoWzBdICE9PSAnJykgcmVsUGF0aC51bnNoaWZ0KCcnKTtcbiAgICAgIGlmIChyZWxQYXRoLmxlbmd0aCA8IDIpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICByZXN1bHQucGF0aG5hbWUgPSByZWxQYXRoLmpvaW4oJy8nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsYXRpdmUucGF0aG5hbWU7XG4gICAgfVxuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgcmVzdWx0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0IHx8ICcnO1xuICAgIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZWxhdGl2ZS5ob3N0bmFtZSB8fCByZWxhdGl2ZS5ob3N0O1xuICAgIHJlc3VsdC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAvLyB0byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQucGF0aG5hbWUgfHwgcmVzdWx0LnNlYXJjaCkge1xuICAgICAgdmFyIHAgPSByZXN1bHQucGF0aG5hbWUgfHwgJyc7XG4gICAgICB2YXIgcyA9IHJlc3VsdC5zZWFyY2ggfHwgJyc7XG4gICAgICByZXN1bHQucGF0aCA9IHAgKyBzO1xuICAgIH1cbiAgICByZXN1bHQuc2xhc2hlcyA9IHJlc3VsdC5zbGFzaGVzIHx8IHJlbGF0aXZlLnNsYXNoZXM7XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBpc1NvdXJjZUFicyA9IChyZXN1bHQucGF0aG5hbWUgJiYgcmVzdWx0LnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSxcbiAgICBpc1JlbEFicyA9IChcbiAgICAgIHJlbGF0aXZlLmhvc3QgfHxcbiAgICAgIHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nXG4gICAgKSxcbiAgICBtdXN0RW5kQWJzID0gKGlzUmVsQWJzIHx8IGlzU291cmNlQWJzIHx8XG4gICAgICAocmVzdWx0Lmhvc3QgJiYgcmVsYXRpdmUucGF0aG5hbWUpKSxcbiAgICByZW1vdmVBbGxEb3RzID0gbXVzdEVuZEFicyxcbiAgICBzcmNQYXRoID0gcmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgIHBzeWNob3RpYyA9IHJlc3VsdC5wcm90b2NvbCAmJiAhc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF07XG4gIHJlbFBhdGggPSByZWxhdGl2ZS5wYXRobmFtZSAmJiByZWxhdGl2ZS5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdO1xuICAvLyBpZiB0aGUgdXJsIGlzIGEgbm9uLXNsYXNoZWQgdXJsLCB0aGVuIHJlbGF0aXZlXG4gIC8vIGxpbmtzIGxpa2UgLi4vLi4gc2hvdWxkIGJlIGFibGVcbiAgLy8gdG8gY3Jhd2wgdXAgdG8gdGhlIGhvc3RuYW1lLCBhcyB3ZWxsLiAgVGhpcyBpcyBzdHJhbmdlLlxuICAvLyByZXN1bHQucHJvdG9jb2wgaGFzIGFscmVhZHkgYmVlbiBzZXQgYnkgbm93LlxuICAvLyBMYXRlciBvbiwgcHV0IHRoZSBmaXJzdCBwYXRoIHBhcnQgaW50byB0aGUgaG9zdCBmaWVsZC5cbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9ICcnO1xuICAgIHJlc3VsdC5wb3J0ID0gbnVsbDtcbiAgICBpZiAocmVzdWx0Lmhvc3QpIHtcbiAgICAgIGlmIChzcmNQYXRoWzBdID09PSAnJykgc3JjUGF0aFswXSA9IHJlc3VsdC5ob3N0O1xuICAgICAgZWxzZSBzcmNQYXRoLnVuc2hpZnQocmVzdWx0Lmhvc3QpO1xuICAgIH1cbiAgICByZXN1bHQuaG9zdCA9ICcnO1xuICAgIGlmIChyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgPSBudWxsO1xuICAgICAgcmVsYXRpdmUucG9ydCA9IG51bGw7XG4gICAgICBpZiAocmVsYXRpdmUuaG9zdCkge1xuICAgICAgICBpZiAocmVsUGF0aFswXSA9PT0gJycpIHJlbFBhdGhbMF0gPSByZWxhdGl2ZS5ob3N0O1xuICAgICAgICBlbHNlIHJlbFBhdGgudW5zaGlmdChyZWxhdGl2ZS5ob3N0KTtcbiAgICAgIH1cbiAgICAgIHJlbGF0aXZlLmhvc3QgPSBudWxsO1xuICAgIH1cbiAgICBtdXN0RW5kQWJzID0gbXVzdEVuZEFicyAmJiAocmVsUGF0aFswXSA9PT0gJycgfHwgc3JjUGF0aFswXSA9PT0gJycpO1xuICB9XG4gIHZhciBhdXRoSW5Ib3N0O1xuICBpZiAoaXNSZWxBYnMpIHtcbiAgICAvLyBpdCdzIGFic29sdXRlLlxuICAgIHJlc3VsdC5ob3N0ID0gKHJlbGF0aXZlLmhvc3QgfHwgcmVsYXRpdmUuaG9zdCA9PT0gJycpID9cbiAgICAgIHJlbGF0aXZlLmhvc3QgOiByZXN1bHQuaG9zdDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAocmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdG5hbWUgPT09ICcnKSA/XG4gICAgICByZWxhdGl2ZS5ob3N0bmFtZSA6IHJlc3VsdC5ob3N0bmFtZTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHNyY1BhdGggPSByZWxQYXRoO1xuICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgZG90LWhhbmRsaW5nIGJlbG93LlxuICB9IGVsc2UgaWYgKHJlbFBhdGgubGVuZ3RoKSB7XG4gICAgLy8gaXQncyByZWxhdGl2ZVxuICAgIC8vIHRocm93IGF3YXkgdGhlIGV4aXN0aW5nIGZpbGUsIGFuZCB0YWtlIHRoZSBuZXcgcGF0aCBpbnN0ZWFkLlxuICAgIGlmICghc3JjUGF0aCkgc3JjUGF0aCA9IFtdO1xuICAgIHNyY1BhdGgucG9wKCk7XG4gICAgc3JjUGF0aCA9IHNyY1BhdGguY29uY2F0KHJlbFBhdGgpO1xuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gIH0gZWxzZSBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHJlbGF0aXZlLnNlYXJjaCkpIHtcbiAgICAvLyBqdXN0IHB1bGwgb3V0IHRoZSBzZWFyY2guXG4gICAgLy8gbGlrZSBocmVmPSc/Zm9vJy5cbiAgICAvLyBQdXQgdGhpcyBhZnRlciB0aGUgb3RoZXIgdHdvIGNhc2VzIGJlY2F1c2UgaXQgc2ltcGxpZmllcyB0aGUgYm9vbGVhbnNcbiAgICBpZiAocHN5Y2hvdGljKSB7XG4gICAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IHNyY1BhdGguc2hpZnQoKTtcbiAgICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgICAgLy91cmwucmVzb2x2ZU9iamVjdCgnbWFpbHRvOmxvY2FsMUBkb21haW4xJywgJ2xvY2FsMkBkb21haW4yJylcbiAgICAgIGF1dGhJbkhvc3QgPSByZXN1bHQuaG9zdCAmJiByZXN1bHQuaG9zdC5pbmRleE9mKCdAJykgPiAwID9cbiAgICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgICAgaWYgKGF1dGhJbkhvc3QpIHtcbiAgICAgICAgcmVzdWx0LmF1dGggPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAoIWlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICFpc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gKHJlc3VsdC5wYXRobmFtZSA/IHJlc3VsdC5wYXRobmFtZSA6ICcnKSArXG4gICAgICAgIChyZXN1bHQuc2VhcmNoID8gcmVzdWx0LnNlYXJjaCA6ICcnKTtcbiAgICB9XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlmICghc3JjUGF0aC5sZW5ndGgpIHtcbiAgICAvLyBubyBwYXRoIGF0IGFsbC4gIGVhc3kuXG4gICAgLy8gd2UndmUgYWxyZWFkeSBoYW5kbGVkIHRoZSBvdGhlciBzdHVmZiBhYm92ZS5cbiAgICByZXN1bHQucGF0aG5hbWUgPSBudWxsO1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnNlYXJjaCkge1xuICAgICAgcmVzdWx0LnBhdGggPSAnLycgKyByZXN1bHQuc2VhcmNoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucGF0aCA9IG51bGw7XG4gICAgfVxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBpZiBhIHVybCBFTkRzIGluIC4gb3IgLi4sIHRoZW4gaXQgbXVzdCBnZXQgYSB0cmFpbGluZyBzbGFzaC5cbiAgLy8gaG93ZXZlciwgaWYgaXQgZW5kcyBpbiBhbnl0aGluZyBlbHNlIG5vbi1zbGFzaHksXG4gIC8vIHRoZW4gaXQgbXVzdCBOT1QgZ2V0IGEgdHJhaWxpbmcgc2xhc2guXG4gIHZhciBsYXN0ID0gc3JjUGF0aC5zbGljZSgtMSlbMF07XG4gIHZhciBoYXNUcmFpbGluZ1NsYXNoID0gKFxuICAgIChyZXN1bHQuaG9zdCB8fCByZWxhdGl2ZS5ob3N0IHx8IHNyY1BhdGgubGVuZ3RoID4gMSkgJiZcbiAgICAobGFzdCA9PT0gJy4nIHx8IGxhc3QgPT09ICcuLicpIHx8IGxhc3QgPT09ICcnKTtcblxuICAvLyBzdHJpcCBzaW5nbGUgZG90cywgcmVzb2x2ZSBkb3VibGUgZG90cyB0byBwYXJlbnQgZGlyXG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBzcmNQYXRoLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBsYXN0ID0gc3JjUGF0aFtpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoIW11c3RFbmRBYnMgJiYgIXJlbW92ZUFsbERvdHMpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHNyY1BhdGgudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAobXVzdEVuZEFicyAmJiBzcmNQYXRoWzBdICE9PSAnJyAmJlxuICAgICghc3JjUGF0aFswXSB8fCBzcmNQYXRoWzBdLmNoYXJBdCgwKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgudW5zaGlmdCgnJyk7XG4gIH1cblxuICBpZiAoaGFzVHJhaWxpbmdTbGFzaCAmJiAoc3JjUGF0aC5qb2luKCcvJykuc3Vic3RyKC0xKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgucHVzaCgnJyk7XG4gIH1cblxuICB2YXIgaXNBYnNvbHV0ZSA9IHNyY1BhdGhbMF0gPT09ICcnIHx8XG4gICAgKHNyY1BhdGhbMF0gJiYgc3JjUGF0aFswXS5jaGFyQXQoMCkgPT09ICcvJyk7XG5cbiAgLy8gcHV0IHRoZSBob3N0IGJhY2tcbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9IHJlc3VsdC5ob3N0ID0gaXNBYnNvbHV0ZSA/ICcnIDpcbiAgICAgIHNyY1BhdGgubGVuZ3RoID8gc3JjUGF0aC5zaGlmdCgpIDogJyc7XG4gICAgLy9vY2NhdGlvbmFseSB0aGUgYXV0aCBjYW4gZ2V0IHN0dWNrIG9ubHkgaW4gaG9zdFxuICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgIC8vdXJsLnJlc29sdmVPYmplY3QoJ21haWx0bzpsb2NhbDFAZG9tYWluMScsICdsb2NhbDJAZG9tYWluMicpXG4gICAgYXV0aEluSG9zdCA9IHJlc3VsdC5ob3N0ICYmIHJlc3VsdC5ob3N0LmluZGV4T2YoJ0AnKSA+IDAgP1xuICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICByZXN1bHQuYXV0aCA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgIH1cbiAgfVxuXG4gIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzIHx8IChyZXN1bHQuaG9zdCAmJiBzcmNQYXRoLmxlbmd0aCk7XG5cbiAgaWYgKG11c3RFbmRBYnMgJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBzcmNQYXRoLnVuc2hpZnQoJycpO1xuICB9XG5cbiAgaWYgKCFzcmNQYXRoLmxlbmd0aCkge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IG51bGw7XG4gICAgcmVzdWx0LnBhdGggPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IHNyY1BhdGguam9pbignLycpO1xuICB9XG5cbiAgLy90byBzdXBwb3J0IHJlcXVlc3QuaHR0cFxuICBpZiAoIWlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICFpc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICB9XG4gIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aCB8fCByZXN1bHQuYXV0aDtcbiAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwYXJzZUhvc3QodGhpcyk7XG59O1xuXG5mdW5jdGlvbiBwYXJzZUhvc3Qoc2VsZikge1xuICB2YXIgaG9zdCA9IHNlbGYuaG9zdDtcbiAgdmFyIHBvcnQgPSBwb3J0UGF0dGVybi5leGVjKGhvc3QpO1xuICBpZiAocG9ydCkge1xuICAgIHBvcnQgPSBwb3J0WzBdO1xuICAgIGlmIChwb3J0ICE9PSAnOicpIHtcbiAgICAgIHNlbGYucG9ydCA9IHBvcnQuc3Vic3RyKDEpO1xuICAgIH1cbiAgICBob3N0ID0gaG9zdC5zdWJzdHIoMCwgaG9zdC5sZW5ndGggLSBwb3J0Lmxlbmd0aCk7XG4gIH1cbiAgaWYgKGhvc3QpIHNlbGYuaG9zdG5hbWUgPSBob3N0O1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCd1cmwnKSxcbiAgICBmb3JtYXQgPSBfcmVxdWlyZS5mb3JtYXQsXG4gICAgcGFyc2UgPSBfcmVxdWlyZS5wYXJzZSxcbiAgICBVUkxTZWFyY2hQYXJhbXMgPSBfcmVxdWlyZS5VUkxTZWFyY2hQYXJhbXM7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGx1Z2luKG9wdHMpIHtcbiAgaWYgKF90eXBlb2Yob3B0cykgIT09ICdvYmplY3QnIHx8ICFPYmplY3Qua2V5cyhvcHRzKS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbWFyay1pZnJhbWVzIG5lZWRzIHRvIGJlIHBhc3NlZCBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGFzIG9wdGlvbicpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGV0ZWN0UHJvdmlkZXIodXJsKSB7XG4gICAgdmFyIGhvc3RuYW1lID0gcGFyc2UodXJsKS5ob3N0bmFtZTtcbiAgICByZXR1cm4gb3B0c1tob3N0bmFtZV07XG4gIH1cblxuICBmdW5jdGlvbiBibG9ja1Rva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoJyEoaHR0cCcpKSByZXR1cm47XG4gICAgdmFyIGVhdGVuVmFsdWUgPSAnJztcbiAgICB2YXIgdXJsID0gJyc7XG4gICAgdmFyIHNwZWNpYWxDaGFycyA9IFsnIScsICcoJywgJyknXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoICYmIHZhbHVlW2kgLSAxXSAhPT0gJyknOyBpKyspIHtcbiAgICAgIGVhdGVuVmFsdWUgKz0gdmFsdWVbaV07XG5cbiAgICAgIGlmICghc3BlY2lhbENoYXJzLmluY2x1ZGVzKHZhbHVlW2ldKSkge1xuICAgICAgICB1cmwgKz0gdmFsdWVbaV07XG4gICAgICB9XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cblxuXG4gICAgaWYgKHNpbGVudCkgcmV0dXJuIHRydWU7XG4gICAgdmFyIHByb3ZpZGVyID0gZGV0ZWN0UHJvdmlkZXIodXJsKTtcblxuICAgIGlmICghcHJvdmlkZXIgfHwgcHJvdmlkZXIuZGlzYWJsZWQgPT09IHRydWUgfHwgcHJvdmlkZXIubWF0Y2ggJiYgcHJvdmlkZXIubWF0Y2ggaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXByb3ZpZGVyLm1hdGNoLnRlc3QodXJsKSkge1xuICAgICAgcmV0dXJuIGVhdChlYXRlblZhbHVlKSh7XG4gICAgICAgIHR5cGU6ICdwYXJhZ3JhcGgnLFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdmFsdWU6IGVhdGVuVmFsdWVcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmaW5hbFVybCA9IGNvbXB1dGVGaW5hbFVybChwcm92aWRlciwgdXJsKTtcbiAgICB2YXIgdGh1bWJuYWlsID0gY29tcHV0ZVRodW1ibmFpbChwcm92aWRlciwgZmluYWxVcmwpO1xuICAgIGVhdChlYXRlblZhbHVlKSh7XG4gICAgICB0eXBlOiAnaWZyYW1lJyxcbiAgICAgIHNyYzogdXJsLFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogcHJvdmlkZXIudGFnLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIHNyYzogZmluYWxVcmwsXG4gICAgICAgICAgd2lkdGg6IHByb3ZpZGVyLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogcHJvdmlkZXIuaGVpZ2h0LFxuICAgICAgICAgIGFsbG93ZnVsbHNjcmVlbjogdHJ1ZSxcbiAgICAgICAgICBmcmFtZWJvcmRlcjogJzAnXG4gICAgICAgIH0sXG4gICAgICAgIHRodW1ibmFpbDogdGh1bWJuYWlsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBibG9ja1Rva2VuaXplclxuXG4gIHZhciBibG9ja1Rva2VuaXplcnMgPSBQYXJzZXIucHJvdG90eXBlLmJsb2NrVG9rZW5pemVycztcbiAgdmFyIGJsb2NrTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tNZXRob2RzO1xuICBibG9ja1Rva2VuaXplcnMuaWZyYW1lcyA9IGJsb2NrVG9rZW5pemVyO1xuICBibG9ja01ldGhvZHMuc3BsaWNlKGJsb2NrTWV0aG9kcy5pbmRleE9mKCdibG9ja3F1b3RlJykgKyAxLCAwLCAnaWZyYW1lcycpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyO1xuXG4gIGlmIChDb21waWxlcikge1xuICAgIHZhciB2aXNpdG9ycyA9IENvbXBpbGVyLnByb3RvdHlwZS52aXNpdG9ycztcbiAgICBpZiAoIXZpc2l0b3JzKSByZXR1cm47XG5cbiAgICB2aXNpdG9ycy5pZnJhbWUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIFwiIShcIi5jb25jYXQobm9kZS5zcmMsIFwiKVwiKTtcbiAgICB9O1xuICB9XG59O1xuXG5mdW5jdGlvbiBjb21wdXRlRmluYWxVcmwocHJvdmlkZXIsIHVybCkge1xuICB2YXIgZmluYWxVcmwgPSB1cmw7XG4gIHZhciBwYXJzZWQgPSBwYXJzZShmaW5hbFVybCk7XG5cbiAgaWYgKHByb3ZpZGVyLmRyb3BwZWRRdWVyeVBhcmFtZXRlcnMgJiYgcGFyc2VkLnNlYXJjaCkge1xuICAgIHZhciBzZWFyY2ggPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcnNlZC5zZWFyY2gpO1xuICAgIHByb3ZpZGVyLmRyb3BwZWRRdWVyeVBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbiAoaWdub3JlZCkge1xuICAgICAgcmV0dXJuIHNlYXJjaFtcImRlbGV0ZVwiXShpZ25vcmVkKTtcbiAgICB9KTtcbiAgICBwYXJzZWQuc2VhcmNoID0gc2VhcmNoLnRvU3RyaW5nKCk7XG4gICAgZmluYWxVcmwgPSBmb3JtYXQocGFyc2VkKTtcbiAgfVxuXG4gIGlmIChwcm92aWRlci5yZXBsYWNlICYmIHByb3ZpZGVyLnJlcGxhY2UubGVuZ3RoKSB7XG4gICAgcHJvdmlkZXIucmVwbGFjZS5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICB2YXIgX3J1bGUgPSBfc2xpY2VkVG9BcnJheShydWxlLCAyKSxcbiAgICAgICAgICBmcm9tID0gX3J1bGVbMF0sXG4gICAgICAgICAgdG8gPSBfcnVsZVsxXTtcblxuICAgICAgaWYgKGZyb20gJiYgdG8pIGZpbmFsVXJsID0gZmluYWxVcmwucmVwbGFjZShmcm9tLCB0byk7XG4gICAgICBwYXJzZWQgPSBwYXJzZShmaW5hbFVybCk7XG4gICAgfSk7XG4gICAgZmluYWxVcmwgPSBmb3JtYXQocGFyc2VkKTtcbiAgfVxuXG4gIGlmIChwcm92aWRlci5yZW1vdmVGaWxlTmFtZSkge1xuICAgIHBhcnNlZC5wYXRobmFtZSA9IHBhcnNlZC5wYXRobmFtZS5zdWJzdHJpbmcoMCwgcGFyc2VkLnBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJykpO1xuICAgIGZpbmFsVXJsID0gZm9ybWF0KHBhcnNlZCk7XG4gIH1cblxuICBpZiAocHJvdmlkZXIucmVtb3ZlQWZ0ZXIgJiYgZmluYWxVcmwuaW5jbHVkZXMocHJvdmlkZXIucmVtb3ZlQWZ0ZXIpKSB7XG4gICAgZmluYWxVcmwgPSBmaW5hbFVybC5zdWJzdHJpbmcoMCwgZmluYWxVcmwuaW5kZXhPZihwcm92aWRlci5yZW1vdmVBZnRlcikpO1xuICB9XG5cbiAgaWYgKHByb3ZpZGVyLmFwcGVuZCkge1xuICAgIGZpbmFsVXJsICs9IHByb3ZpZGVyLmFwcGVuZDtcbiAgfVxuXG4gIHJldHVybiBmaW5hbFVybDtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVRodW1ibmFpbChwcm92aWRlciwgdXJsKSB7XG4gIHZhciB0aHVtYm5haWxVUkwgPSAnJztcbiAgdmFyIHRodW1ibmFpbENvbmZpZyA9IHByb3ZpZGVyLnRodW1ibmFpbDtcblxuICBpZiAodGh1bWJuYWlsQ29uZmlnICYmIHRodW1ibmFpbENvbmZpZy5mb3JtYXQpIHtcbiAgICB0aHVtYm5haWxVUkwgPSB0aHVtYm5haWxDb25maWcuZm9ybWF0O1xuICAgIE9iamVjdC5rZXlzKHRodW1ibmFpbENvbmZpZykuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBrZXkgIT09ICdmb3JtYXQnO1xuICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIHNlYXJjaCA9IG5ldyBSZWdFeHAoXCJ7XCIuY29uY2F0KGtleSwgXCJ9XCIpLCAnZycpO1xuICAgICAgdmFyIHJlcGxhY2UgPSBuZXcgUmVnRXhwKHRodW1ibmFpbENvbmZpZ1trZXldKS5leGVjKHVybCk7XG4gICAgICBpZiAocmVwbGFjZSkgdGh1bWJuYWlsVVJMID0gdGh1bWJuYWlsVVJMLnJlcGxhY2Uoc2VhcmNoLCByZXBsYWNlWzFdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0aHVtYm5haWxVUkw7XG59IiwiJ3VzZS1zdHJpY3QnO1xuXG4vKiBUT0RPIDogU2VuZCB0aGUgcmVzdWx0IG9mIGd1aWRlIDpcbiAgY29uc3QgZ3VpZGUgPSByZXF1aXJlKCdyZW1hcmstcHJlc2V0LWxpbnQtbWFya2Rvd24tc3R5bGUtZ3VpZGUnKTtcbiovXG5cbmNvbnN0IGh0bWwgPSByZXF1aXJlKCdyZW1hcmstcmVoeXBlJyk7XG5jb25zdCBrYmQgPSByZXF1aXJlKCdyZW1hcmsta2JkJyk7XG5jb25zdCBtYXRoID0gcmVxdWlyZSgncmVtYXJrLW1hdGgnKTtcbmNvbnN0IGhpZ2hsaWdodCA9IHJlcXVpcmUoJ3JlbWFyay1oaWdobGlnaHQuanMnKTtcbmNvbnN0IG11bHRpQ2hvaWNlID0gcmVxdWlyZSgncmVtYXJrLW11bHRpcGxlLWNob2ljZScpO1xuY29uc3QgbGluZUlucHV0ID0gcmVxdWlyZSgncmVtYXJrLWxpbmUtaW5wdXQnKTtcbmNvbnN0IHNlbGVjdCA9IHJlcXVpcmUoJ3JlbWFyay1zZWxlY3QnKTtcbmNvbnN0IHRleHRJbnB1dCA9IHJlcXVpcmUoJ3JlbWFyay10ZXh0LWlucHV0Jyk7XG5jb25zdCByYXcgPSByZXF1aXJlKCdyZWh5cGUtcmF3Jyk7XG5jb25zdCByZWh5cGVLYXRleCA9IHJlcXVpcmUoJ3JlaHlwZS1rYXRleCcpO1xuY29uc3QgcmVoeXBlU3RyaW5naWZ5ID0gcmVxdWlyZSgncmVoeXBlLXN0cmluZ2lmeScpO1xuY29uc3QgdW5pZmllZCA9IHJlcXVpcmUoJ3VuaWZpZWQnKTtcbmNvbnN0IHJlbWFyayA9IHJlcXVpcmUoJ3JlbWFyay1wYXJzZScpO1xuY29uc3QgY3VzdG9tQmxvY2tzID0gcmVxdWlyZSgncmVtYXJrLWN1c3RvbS1ibG9ja3MnKTtcbmNvbnN0IGlmcmFtZXMgPSByZXF1aXJlKCdyZW1hcmstaWZyYW1lcycpO1xuXG5mdW5jdGlvbiB0b0hUTUwoZGF0YSwgZm5jKSB7XG4gIHVuaWZpZWQoKVxuICAgIC51c2UocmVtYXJrKVxuICAgIC51c2UobGluZUlucHV0KVxuICAgIC51c2UodGV4dElucHV0KVxuICAgIC51c2Uoc2VsZWN0KVxuICAgIC51c2UobXVsdGlDaG9pY2UpXG4gICAgLnVzZShtYXRoKVxuICAgIC51c2Uoa2JkKVxuICAgIC51c2UoY3VzdG9tQmxvY2tzLCB7XG4gICAgICBpbmZvcm1hdGlvbjoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggaW5mb3JtYXRpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBjb21tZW50OiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBjb21tZW50JyxcbiAgICAgICAgdGl0bGU6ICdvcHRpb25hbCcsXG4gICAgICB9LFxuICAgICAgYXR0ZW50aW9uOiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBhdHRlbnRpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBxdWVzdGlvbjoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggcXVlc3Rpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBnb29kOiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBnb29kJyxcbiAgICAgIH0sXG4gICAgICBzZWNyZXQ6IHtcbiAgICAgICAgY2xhc3NlczogJ3NwZWNpYWwtYm94IHNlY3JldCcsXG4gICAgICAgIHRpdGxlOiAnb3B0aW9uYWwnLFxuICAgICAgfSxcbiAgICAgIGJhZDoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggYmFkJyxcbiAgICAgIH19KVxuICAgIC51c2UoaGlnaGxpZ2h0KVxuICAgIC51c2UoaWZyYW1lcywge1xuICAgICAgLy8gVGhpcyBrZXkgY29ycmVzcG9uZHMgdG8gdGhlIGhvc3RuYW1lOiAhKGh0dHA6Ly9ob3N0bmFtZS9mb28pXG4gICAgICAvLyB0aGUgY29uZmlnIGFzc29jaWF0ZWQgdG8gdGhpcyBob3N0bmFtZSB3aWxsIGFwcGx5IHRvIGFueSBpZnJhbWVcbiAgICAgIC8vIHdpdGggYSBtYXRjaGluZyBob3N0bmFtZVxuICAgICAgJ3d3dy55b3V0dWJlLmNvbSc6IHtcbiAgICAgICAgdGFnOiAnSUZSQU1FJyxcbiAgICAgICAgd2lkdGg6IDU2MCxcbiAgICAgICAgaGVpZ2h0OiAzMTUsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgcmVwbGFjZTogW1xuICAgICAgICAgIFsnd2F0Y2g/dj0nLCAnZW1iZWQvJ10sXG4gICAgICAgICAgWydodHRwOi8vJywgJ2h0dHBzOi8vJ10sXG4gICAgICAgIF0sXG4gICAgICAgIHRodW1ibmFpbDoge1xuICAgICAgICAgIGZvcm1hdDogJ2h0dHA6Ly9pbWcueW91dHViZS5jb20vdmkve2lkfS8wLmpwZycsXG4gICAgICAgICAgaWQ6ICcuKy8oLispJCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlQWZ0ZXI6ICcmJ1xuICAgICAgfVxuICAgIH0pXG4gICAgLnVzZShodG1sLCB7YWxsb3dEYW5nZXJvdXNIVE1MOiB0cnVlfSlcbiAgICAudXNlKHJlaHlwZUthdGV4KVxuICAgIC51c2UocmF3KVxuICAgIC51c2UocmVoeXBlU3RyaW5naWZ5KVxuXG4gICAgLnByb2Nlc3MoZGF0YSwgZm5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0hUTUw7XG4iXSwibmFtZXMiOlsidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsInByb3RvdHlwZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BJc0VudW1lcmFibGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImFzc2lnbiIsInRlc3QxIiwiU3RyaW5nIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInRlc3QyIiwiZnJvbUNoYXJDb2RlIiwibWFwIiwibiIsImpvaW4iLCJ0ZXN0MyIsInNwbGl0IiwiZm9yRWFjaCIsImxldHRlciIsImtleXMiLCJlcnIiLCJzaG91bGRVc2VOYXRpdmUiLCJmcm9tIiwic3ltYm9scyIsInRvIiwidmFsIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwidG9PYmplY3QiLCJzIiwidHlwZSIsInByb3BzIiwidmFsdWUiLCJub2RlIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGRyZW4iLCJjb252ZXJ0IiwidGVzdCIsIkJvb2xlYW4iLCJ0eXBlRmFjdG9yeSIsIm9rIiwidGVzdHMiLCJjaGVja3MiLCJyZXN1bHRzIiwiaW5kZXgiLCJjb252ZXJ0QWxsIiwiYXBwbHkiLCJ0aGlzIiwiRXJyb3IiLCJ2aXNpdFBhcmVudHMiLCJDT05USU5VRSIsIlNLSVAiLCJFWElUIiwidHJlZSIsInZpc2l0b3IiLCJyZXZlcnNlIiwiaXMiLCJvbmUiLCJwYXJlbnRzIiwic3VicmVzdWx0IiwicmVzdWx0IiwidG9SZXN1bHQiLCJzdGVwIiwiYWxsIiwiY29uY2F0IiwidmlzaXQiLCJwYXJlbnQiLCJpbmRleE9mIiwicG9zaXRpb24iLCJleHBvcnRzIiwiZmFjdG9yeSIsInBvaW50IiwiZGlzcGxheU5hbWUiLCJsaW5lIiwiY29sdW1uIiwib2Zmc2V0IiwiaXNOYU4iLCJzdGFydCIsImVuZCIsIm9wdGlvbmFsIiwib3B0aW9ucyIsImNhY2hlIiwiaWRlbnRpZmllciIsImlkIiwibm9ybWFsaXNlIiwib3duIiwiZ2V0dGVyRmFjdG9yeSIsImNvbW1vbm1hcmsiLCJkZWZpbml0aW9uIiwiZ2F0aGVyIiwidG9VcHBlckNhc2UiLCJtb2R1bGUiLCJzdHIiLCJyZXBsYWNlIiwiaCIsImhlYWQiLCJub2RlcyIsInZhbHVlcyIsInRyaW0iLCJsZWZ0IiwiZm4iLCJoYW5kbGVycyIsImRhdGEiLCJ0ZXh0IiwiYXVnbWVudCIsInUiLCJsb29zZSIsInB1c2giLCJpdGVtcyIsIm5hbWUiLCJvcmRlcmVkIiwicHJvcGVydGllcyIsImNsYXNzTmFtZSIsIndyYXAiLCJkZWYiLCJiYWNrUmVmZXJlbmNlIiwiY29udGVudCIsInRhaWwiLCJmb290bm90ZUJ5SWQiLCJmb290bm90ZU9yZGVyIiwibGlzdEl0ZW1zIiwidXJsIiwiaFByb3BlcnRpZXMiLCJ0aGVtYXRpY0JyZWFrIiwibGlzdCIsInJlcyIsIm51bSIsIm1heCIsInN1YnN0ciIsInNpemUiLCJjb2RlIiwiYWRkIiwic3RyaW5nIiwidGFiU2l6ZSIsImNoYXJDb2RlQXQiLCJ0YWIiLCJzbGljZSIsInJlcGVhdCIsImxpbmVGZWVkIiwiY2FycmlhZ2VSZXR1cm4iLCJkZXRhYiIsImxhbmciLCJtYXRjaCIsImhyZWYiLCJsYWJlbCIsImZvb3Rub3RlUmVmZXJlbmNlIiwiZGVwdGgiLCJkYW5nZXJvdXMiLCJlbmNvZGVDYWNoZSIsImVuY29kZSIsImV4Y2x1ZGUiLCJrZWVwRXNjYXBlZCIsImwiLCJuZXh0Q29kZSIsImRlZmF1bHRDaGFycyIsImNoIiwidG9TdHJpbmciLCJnZXRFbmNvZGVDYWNoZSIsImVuY29kZVVSSUNvbXBvbmVudCIsImNvbXBvbmVudENoYXJzIiwiY29udGVudHMiLCJzdWJ0eXBlIiwicmVmZXJlbmNlVHlwZSIsInN1ZmZpeCIsImFsdCIsInVuc2hpZnQiLCJsaXN0SXRlbUxvb3NlIiwic3ByZWFkIiwid3MiLCJuZXdsaW5lIiwiYmxvY2txdW90ZSIsInJlcXVpcmUkJDAiLCJicmVhayIsInJlcXVpcmUkJDEiLCJyZXF1aXJlJCQyIiwiZGVsZXRlIiwicmVxdWlyZSQkMyIsImVtcGhhc2lzIiwicmVxdWlyZSQkNCIsInJlcXVpcmUkJDUiLCJmb290bm90ZSIsInJlcXVpcmUkJDYiLCJoZWFkaW5nIiwicmVxdWlyZSQkNyIsImh0bWwiLCJyZXF1aXJlJCQ4IiwiaW1hZ2VSZWZlcmVuY2UiLCJyZXZlcnQiLCJzcmMiLCJub3JtYWxpemUiLCJ0aXRsZSIsImltYWdlIiwiaW5saW5lQ29kZSIsImNvbGxhcHNlIiwibGlua1JlZmVyZW5jZSIsImxpbmsiLCJsaXN0SXRlbSIsImNvbnRhaW5lciIsImNoaWxkIiwicmF3IiwibGlzdExvb3NlIiwidGFnTmFtZSIsImNoZWNrZWQiLCJkaXNhYmxlZCIsInJlcXVpcmUkJDE1IiwicGFyYWdyYXBoIiwicm9vdCIsInN0cm9uZyIsInRhYmxlIiwicG9zIiwicm93Iiwib3V0IiwiY2VsbCIsInJvd3MiLCJhbGlnbiIsImFsaWduTGVuZ3RoIiwidHJpbUxpbmVzIiwicmVxdWlyZSQkMjEiLCJ0b21sIiwiaWdub3JlIiwieWFtbCIsImZvb3Rub3RlRGVmaW5pdGlvbiIsInNldHRpbmdzIiwiYWxsb3dEYW5nZXJvdXNIVE1MIiwiZGVmaW5pdGlvbnMiLCJ4dGVuZCIsInJpZ2h0IiwiY3R4IiwiaE5hbWUiLCJoQ2hpbGRyZW4iLCJnZW5lcmF0ZWQiLCJmb290IiwiZm9vdGVyIiwiZGVzdGluYXRpb24iLCJwcm9jZXNzIiwiZmlsZSIsIm5leHQiLCJydW4iLCJtZGFzdDJoYXN0IiwiYnJpZGdlIiwibXV0YXRlIiwiY2hhcmFjdGVyIiwicmUiLCJmcm9tQ29kZSIsImNoYXJBdCIsIkNfUElQRSIsIkRPVUJMRSIsImxvY2F0b3IiLCJmcm9tSW5kZXgiLCJpbmxpbmVUb2tlbml6ZXIiLCJlYXQiLCJzaWxlbnQiLCJnZm0iLCJ3aGl0ZXNwYWNlIiwicHJldmlvdXMiLCJwcmVjZWRpbmciLCJzdWJ2YWx1ZSIsIm5vdyIsInRva2VuaXplSW5saW5lIiwiUGFyc2VyIiwiaW5saW5lVG9rZW5pemVycyIsImlubGluZU1ldGhvZHMiLCJrYmQiLCJzcGxpY2UiLCJDb21waWxlciIsInZpc2l0b3JzIiwicGFyc2VyIiwiYmxvY2tUb2tlbml6ZXJzIiwiY29tcGlsZXIiLCJ1dGlsIiwiaXNSZW1hcmtQYXJzZXIiLCJwcm90byIsIm1hdGhJbmxpbmVUb2tlbml6ZXIiLCJwcmV2IiwiY29udGVudFN0YXJ0IiwiY29udGVudEVuZCIsInZhbHVlRW5kIiwiZG91YmxlIiwiZXNjYXBlZCIsImJhY2tzbGFzaCIsImRvbGxhclNpZ24iLCJzcGFjZSIsImRpZ2l0MCIsImRpZ2l0OSIsImNsYXNzTGlzdCIsImlubGluZU1hdGhEb3VibGUiLCJtYXRoRGlzcGxheSIsIm1hdGgiLCJhdHRhY2hQYXJzZXIiLCJpc1JlbWFya0NvbXBpbGVyIiwiaW5saW5lTWF0aCIsImZlbmNlIiwiaW5jbHVkZXMiLCJhdHRhY2hDb21waWxlciIsImJsb2NrTWV0aG9kcyIsImludGVycnVwdFBhcmFncmFwaCIsImludGVycnVwdExpc3QiLCJpbnRlcnJ1cHRCbG9ja3F1b3RlIiwibGluZUVuZCIsImxpbmVJbmRleCIsIm9wZW5pbmdGZW5jZUluZGVudFNpemUiLCJvcGVuaW5nRmVuY2VTaXplIiwib3BlbmluZ0ZlbmNlQ29udGVudFN0YXJ0IiwiY2xvc2luZ0ZlbmNlIiwiY2xvc2luZ0ZlbmNlU2l6ZSIsImxpbmVDb250ZW50U3RhcnQiLCJsaW5lQ29udGVudEVuZCIsIm1pbkZlbmNlQ291bnQiLCJsaW5lRmVlZENoYXIiLCJkb2xsYXJTaWduQ2hhciIsIm9wdHMiLCJibG9ja1BsdWdpbiIsImlubGluZVBsdWdpbiIsImdsb2JhbE9iamVjdCIsImhsanMiLCJBUElfUkVQTEFDRVMiLCJBcnJheVByb3RvIiwib2JqZWN0S2V5cyIsImxhbmd1YWdlcyIsImFsaWFzZXMiLCJub0hpZ2hsaWdodFJlIiwibGFuZ3VhZ2VQcmVmaXhSZSIsImZpeE1hcmt1cFJlIiwic3BhbkVuZFRhZyIsImNsYXNzUHJlZml4IiwidGFiUmVwbGFjZSIsInVzZUJSIiwiQ09NTU9OX0tFWVdPUkRTIiwiZXNjYXBlIiwidGFnIiwibm9kZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsImlzTm90SGlnaGxpZ2h0ZWQiLCJsYW5ndWFnZSIsImluaGVyaXQiLCJvYmplY3RzIiwib2JqIiwibm9kZVN0cmVhbSIsIl9ub2RlU3RyZWFtIiwiZmlyc3RDaGlsZCIsIm5leHRTaWJsaW5nIiwibm9kZVR5cGUiLCJub2RlVmFsdWUiLCJldmVudCIsImV4cGFuZF9vcl9jbG9uZV9tb2RlIiwibW9kZSIsInZhcmlhbnRzIiwiY2FjaGVkX3ZhcmlhbnRzIiwidmFyaWFudCIsImRlcGVuZGVuY3lPblBhcmVudCIsImVuZHNXaXRoUGFyZW50Iiwic3RhcnRzIiwicmVzdG9yZUxhbmd1YWdlQXBpIiwibGFuZ0FwaVJlc3RvcmVkIiwiY29udGFpbnMiLCJjb21waWxlS2V5d29yZHMiLCJyYXdLZXl3b3JkcyIsImNhc2VfaW5zZW5zaXRpdmUiLCJjb21waWxlZF9rZXl3b3JkcyIsInNwbGl0QW5kQ29tcGlsZSIsImtleXdvcmQiLCJwYWlyIiwicHJvdmlkZWRTY29yZSIsIk51bWJlciIsIndvcmQiLCJzY29yZUZvcktleXdvcmQiLCJjb21waWxlTGFuZ3VhZ2UiLCJyZVN0ciIsImxhbmdSZSIsImdsb2JhbCIsIlJlZ0V4cCIsImJ1aWxkTW9kZVJlZ2V4IiwibWF0Y2hlclJlIiwidGVybSIsIm1hdGNoSW5kZXhlcyIsInJlZ2V4ZXMiLCJtYXRjaGVyIiwibWF0Y2hBdCIsImFkZFJ1bGUiLCJydWxlIiwicmVnZXgiLCJleGVjIiwiYmVnaW5LZXl3b3JkcyIsImJlZ2luIiwidGVybWluYXRvcl9lbmQiLCJpbGxlZ2FsIiwidGVybWluYXRvcnMiLCJlbCIsInJlZ2V4cHMiLCJzZXBhcmF0b3IiLCJiYWNrcmVmZXJlbmNlUmUiLCJudW1DYXB0dXJlcyIsInJldCIsInN1YnN0cmluZyIsImpvaW5SZSIsImxhc3RJbmRleCIsImV4dHJhIiwiY29tcGlsZU1vZGUiLCJjb21waWxlZCIsImtleXdvcmRzIiwibGV4ZW1lc1JlIiwibGV4ZW1lcyIsImJlZ2luUmUiLCJlbmRTYW1lQXNCZWdpbiIsImVuZFJlIiwiaWxsZWdhbFJlIiwicmVsZXZhbmNlIiwiYyIsImhpZ2hsaWdodCIsImlnbm9yZV9pbGxlZ2FscyIsImNvbnRpbnVhdGlvbiIsImtleXdvcmRNYXRjaCIsIm1hdGNoX3N0ciIsImJ1aWxkU3BhbiIsImNsYXNzbmFtZSIsImluc2lkZVNwYW4iLCJsZWF2ZU9wZW4iLCJub1ByZWZpeCIsIm9wZW5TcGFuIiwicHJvY2Vzc0J1ZmZlciIsInRvcCIsInN1Ykxhbmd1YWdlIiwiZXhwbGljaXQiLCJtb2RlX2J1ZmZlciIsImNvbnRpbnVhdGlvbnMiLCJoaWdobGlnaHRBdXRvIiwicHJvY2Vzc1N1Ykxhbmd1YWdlIiwia2V5d29yZF9tYXRjaCIsImxhc3RfaW5kZXgiLCJwcm9jZXNzS2V5d29yZHMiLCJzdGFydE5ld01vZGUiLCJjcmVhdGUiLCJkb0JlZ2luTWF0Y2giLCJsZXhlbWUiLCJuZXdfbW9kZSIsInNraXAiLCJleGNsdWRlQmVnaW4iLCJyZXR1cm5CZWdpbiIsImRvRW5kTWF0Y2giLCJlbmRfbW9kZSIsImVuZE9mTW9kZSIsInRlc3RSZSIsImVuZHNQYXJlbnQiLCJvcmlnaW4iLCJyZXR1cm5FbmQiLCJleGNsdWRlRW5kIiwibGFzdE1hdGNoIiwicHJvY2Vzc0xleGVtZSIsInRleHRfYmVmb3JlX21hdGNoIiwicHJvY2Vzc2VkIiwiZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50IiwiY291bnQiLCJlIiwibWVzc2FnZSIsImxhbmd1YWdlU3Vic2V0Iiwic2Vjb25kX2Jlc3QiLCJmaWx0ZXIiLCJhdXRvRGV0ZWN0aW9uIiwiZml4TWFya3VwIiwicDEiLCJoaWdobGlnaHRCbG9jayIsImJsb2NrIiwib3JpZ2luYWxTdHJlYW0iLCJyZXN1bHROb2RlIiwiX2NsYXNzIiwiY2xhc3NlcyIsInBhcmVudE5vZGUiLCJibG9ja0xhbmd1YWdlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50TlMiLCJpbm5lckhUTUwiLCJ0ZXh0Q29udGVudCIsIm9yaWdpbmFsIiwiaGlnaGxpZ2h0ZWQiLCJub2RlU3RhY2siLCJzZWxlY3RTdHJlYW0iLCJvcGVuIiwiYXR0cmlidXRlcyIsImEiLCJjbG9zZSIsInJlbmRlciIsInN0cmVhbSIsInBvcCIsIm1lcmdlU3RyZWFtcyIsInByZXZDbGFzc05hbWUiLCJjdXJyZW50TGFuZyIsInJlc3VsdExhbmciLCJidWlsZENsYXNzTmFtZSIsImluaXRIaWdobGlnaHRpbmciLCJjYWxsZWQiLCJibG9ja3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZGlzYWJsZUF1dG9kZXRlY3QiLCJjb25maWd1cmUiLCJ1c2VyX29wdGlvbnMiLCJpbml0SGlnaGxpZ2h0aW5nT25Mb2FkIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlZ2lzdGVyTGFuZ3VhZ2UiLCJyYXdEZWZpbml0aW9uIiwiYmluZCIsImFsaWFzIiwibGlzdExhbmd1YWdlcyIsIklERU5UX1JFIiwiVU5ERVJTQ09SRV9JREVOVF9SRSIsIk5VTUJFUl9SRSIsIkNfTlVNQkVSX1JFIiwiQklOQVJZX05VTUJFUl9SRSIsIlJFX1NUQVJURVJTX1JFIiwiQkFDS1NMQVNIX0VTQ0FQRSIsIkFQT1NfU1RSSU5HX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsIlBIUkFTQUxfV09SRFNfTU9ERSIsIkNPTU1FTlQiLCJpbmhlcml0cyIsIkNfTElORV9DT01NRU5UX01PREUiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkhBU0hfQ09NTUVOVF9NT0RFIiwiTlVNQkVSX01PREUiLCJDX05VTUJFUl9NT0RFIiwiQklOQVJZX05VTUJFUl9NT0RFIiwiQ1NTX05VTUJFUl9NT0RFIiwiUkVHRVhQX01PREUiLCJUSVRMRV9NT0RFIiwiVU5ERVJTQ09SRV9USVRMRV9NT0RFIiwiTUVUSE9EX0dVQVJEIiwid2luZG93Iiwic2VsZiIsIm5hbWVzcGFjZSIsImZvcm1hdCIsImZtdCIsImFyZyIsInRtcCIsInByZWNpc2lvbiIsImFyZ0luZGV4IiwiYXJncyIsImxlYWRpbmdaZXJvIiwibmV4dEFyZyIsInNsdXJwTnVtYmVyIiwiZGlnaXRzIiwicGFyc2VJbnQiLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2c3ByaW50ZiIsInJlcGxhY2VtZW50cyIsImNvbnNvbGUiLCJsb2ciLCJwcmludGYiLCJmYXVsdCIsIkVDb25zdHJ1Y3RvciIsIkZvcm1hdHRlZEVycm9yIiwiZm9ybWF0dGVyIiwiSGlnaCIsImV2YWwiLCJFdmFsRXJyb3IiLCJyYW5nZSIsIlJhbmdlRXJyb3IiLCJyZWZlcmVuY2UiLCJSZWZlcmVuY2VFcnJvciIsInN5bnRheCIsIlN5bnRheEVycm9yIiwidXJpIiwiVVJJRXJyb3IiLCJoaWdoIiwibG93IiwicHJlZml4IiwiZGVmYXVsdFByZWZpeCIsImNvcmVIaWdobGlnaHQiLCJhdXRvSGlnaGxpZ2h0IiwibGFuZ3VhZ2VOYW1lcyIsInJlZ2lzdGVyQWxpYXMiLCJrZXlJbnNlbnNpdGl2ZSIsImtleUNhY2hlZFZhcmlhbnRzIiwia2V5VGVybWluYXRvckVuZCIsInZlcnRpY2FsQmFyIiwicGFyZW5PcGVuIiwicGFyZW5DbG9zZSIsImNvbW1vbktleXdvcmRzIiwic2Vjb25kQmVzdCIsInN1YnNldCIsImN1cnJlbnRDaGlsZHJlbiIsInN0YWNrIiwibW9kZUJ1ZmZlciIsImNhc2VJbnNlbnNpdGl2ZSIsImZsYXR0ZW4iLCJjb250YWluZWQiLCJleHBhbmRPckNsb25lTW9kZSIsImNvbXBpbGVDb250YWlucyIsImV4cHJlc3Npb24iLCJpbmRpY2VzIiwiY2FwdHVyZXMiLCJlcnJvciIsImFkZFRleHQiLCJuZXdNb2RlIiwiYWRkU2libGluZ3MiLCJtYXRjaFBsdXNSZW1haW5kZXIiLCJlbmRNb2RlIiwidGV4dEJlZm9yZU1hdGNoIiwiYnVpbGQiLCJidWlsZFRleHQiLCJzdWJtYXRjaCIsInNpYmxpbmdzIiwic2libGluZyIsImF0dGFjaGVyIiwiaW5jbHVkZSIsImFzdCIsIktFWVdPUkQiLCJ2N19rZXl3b3JkcyIsIkxJVEVSQUwiLCJOVU1CRVJTIiwiU1RSSU5HUyIsIkRBVEUiLCJDT01NRU5UUyIsImJ1aWx0X2luIiwidjdfc3lzdGVtX2NvbnN0YW50cyIsImNsYXNzIiwidjhfc3lzdGVtX3NldHNfb2ZfdmFsdWVzIiwidjhfc2hhcmVkX29iamVjdCIsImxpdGVyYWwiLCJtZXRhLWtleXdvcmQiLCJ2N19tZXRhX2tleXdvcmRzIiwiY29tbWVudE1vZGUiLCJydWxlRGVjbGFyYXRpb25Nb2RlIiwiSFRUUF9WRVJCUyIsIkFTM19SRVNUX0FSR19NT0RFIiwiSURfUkVHRVgiLCJWQVJfREVDTFMiLCJidWlsdEluVHlwZU1vZGUiLCJvYmplY3RIYW5kbGVNb2RlIiwiZ2VuZXJpY01vZGUiLCJOVU1CRVIiLCJub21hcmt1cCIsIlNUUklORyIsIlBBUkFNUyIsIkNPTU1FTlRfTU9ERV8xIiwiS0VZV09SRFMiLCJTVUJTVCIsIlRFTVBMQVRFX1NUUklORyIsIlBBUkFNU19DT05UQUlOUyIsIkNQUF9QUklNSVRJVkVfVFlQRVMiLCJQUkVQUk9DRVNTT1IiLCJGVU5DVElPTl9USVRMRSIsIkNQUF9LRVlXT1JEUyIsIkVYUFJFU1NJT05fQ09OVEFJTlMiLCJwcmVwcm9jZXNzb3IiLCJzdHJpbmdzIiwiQVJEVUlOT19LVyIsIkFSRFVJTk8iLCJrd3MiLCJtZXRhIiwiVEFHX0lOVEVSTkFMUyIsIkJBQ0tUSUNLX0VTQ0FQRSIsIlZBUklBQkxFIiwiVkFSIiwiUVVPVEVfU1RSSU5HIiwiXyIsIkNPTU1FTlRfTU9ERVMiLCJDSEFSX1NUUklORyIsIlBST0NFRFVSRSIsIk9CSkVDVCIsIkVYUFJFU1NJT05TIiwiU1lNQk9MX1JFIiwiU1lNQk9MIiwiQ09MTEVDVElPTiIsIkhJTlQiLCJISU5UX0NPTCIsIktFWSIsIkxJU1QiLCJCT0RZIiwiTkFNRSIsImJ1aWx0aW4tbmFtZSIsIkRFRkFVTFRfQ09OVEFJTlMiLCJKU19JREVOVF9SRSIsIlRJVExFIiwiQ09NTUFORFMiLCJJTlRfU1VGRklYIiwiQ1JZU1RBTF9NRVRIT0RfUkUiLCJDUllTVEFMX1BBVEhfUkUiLCJDUllTVEFMX0tFWVdPUkRTIiwiRVhQQU5TSU9OIiwicmVjdXJzaXZlUGFyZW4iLCJRX1NUUklORyIsIlJFR0VYUCIsIkNSWVNUQUxfREVGQVVMVF9DT05UQUlOUyIsIlZFUkJBVElNX1NUUklORyIsIlZFUkJBVElNX1NUUklOR19OT19MRiIsIlNVQlNUX05PX0xGIiwiSU5URVJQT0xBVEVEX1NUUklORyIsIklOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkciLCJJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HX05PX0xGIiwiVFlQRV9JREVOVF9SRSIsIlJVTEUiLCJpbnRlZ2VyX3JlIiwiZXNjYXBlX3NlcXVlbmNlX3JlIiwiRF9JTlRFR0VSX01PREUiLCJEX0ZMT0FUX01PREUiLCJEX0NIQVJBQ1RFUl9NT0RFIiwiRF9TVFJJTkdfTU9ERSIsIkRfTkVTVElOR19DT01NRU5UX01PREUiLCJCUkFDRURfU1VCU1QiLCJESVJFQ1RJVkUiLCJDTEFTUyIsIkZVTkNUSU9OIiwiRklMVEVSIiwiRFRTX1JFRkVSRU5DRSIsIkRUU19LRVlXT1JEIiwiRFRTX0xBQkVMIiwiRFRTX0NFTExfUFJPUEVSVFkiLCJEVFNfTk9ERSIsIkVMSVhJUl9JREVOVF9SRSIsIkVMSVhJUl9LRVlXT1JEUyIsIkVMSVhJUl9ERUZBVUxUX0NPTlRBSU5TIiwiQ09OU1RSVUNUT1IiLCJSVUJZX01FVEhPRF9SRSIsIlJVQllfS0VZV09SRFMiLCJZQVJET0NUQUciLCJJUkJfT0JKRUNUIiwiUlVCWV9ERUZBVUxUX0NPTlRBSU5TIiwiSVJCX0RFRkFVTFQiLCJCQVNJQ19BVE9NX1JFIiwiRlVOQ1RJT05fTkFNRV9SRSIsIkVSTEFOR19SRVNFUlZFRCIsIk5BTUVEX0ZVTiIsIkZVTkNUSU9OX0NBTEwiLCJUVVBMRSIsIlZBUjEiLCJWQVIyIiwiUkVDT1JEX0FDQ0VTUyIsIkJMT0NLX1NUQVRFTUVOVFMiLCJCQVNJQ19NT0RFUyIsIk1FVEhPRCIsIlRZUEVQQVJBTSIsImJ1aWx0LWluIiwiU1lNQk9MUyIsIlFTVFIiLCJBU1NJR05NRU5UIiwiREVTQ1RFWFQiLCJBVF9DT01NRU5UX01PREUiLCJTVFJVQ1RfVFlQRSIsIlBBUlNFX1BBUkFNUyIsIkZVTkNUSU9OX0RFRiIsIkRFRklOSVRJT04iLCJCVUlMVF9JTl9SRUYiLCJTVFJJTkdfUkVGIiwiRlVOQ1RJT05fUkVGIiwiRlVOQ1RJT05fUkVGX1BBUkFNUyIsIkdDT0RFX0NPREUiLCJzeW1ib2wiLCJHT19LRVlXT1JEUyIsIkJVSUxUX0lOUyIsIklERU5USUZJRVJfUExBSU5fT1JfUVVPVEVEIiwiRVhQUkVTU0lPTl9PUl9IRUxQRVJfQ0FMTCIsIkJMT0NLX01VU1RBQ0hFX0NPTlRFTlRTIiwiQkFTSUNfTVVTVEFDSEVfQ09OVEVOVFMiLCJQUkFHTUEiLCJUQUdfSU5OQVJEUyIsIlZFUlNJT04iLCJET0NUQUdTIiwiQ09OU1RBTlRTIiwiTUVUSE9EUyIsIlRZUEVTIiwiVkFSSUFCTEVTIiwiRlVOQ1RJT05fTkFNRV9JREVOVF9SRSIsIkpBVkFfTlVNQkVSX01PREUiLCJIVE1MX1RFTVBMQVRFIiwiQ1NTX1RFTVBMQVRFIiwiUEFSQU1TQkxPQ0siLCJMSVRFUkFMUyIsIkFMTE9XRURfQ09NTUVOVFMiLCJWQUxVRV9DT05UQUlORVIiLCJBUlJBWSIsIlZBUklBQkxFX05BTUVfUkUiLCJERUZBVUxUIiwiSU5URVJQT0xBVElPTiIsIklOVEVSUE9MQVRFRF9WQVJJQUJMRSIsIkNPTU1BTkQiLCJNQUNST0NBTEwiLCJMQUJFTCIsIkFOTk9UQVRJT05fVVNFX1NJVEUiLCJBTk5PVEFUSU9OIiwiS09UTElOX05VTUJFUl9NT0RFIiwiS09UTElOX05FU1RFRF9DT01NRU5UIiwiS09UTElOX1BBUkVOX1RZUEUiLCJLT1RMSU5fUEFSRU5fVFlQRTIiLCJMQVNTT19DTE9TRV9SRSIsIkxBU1NPX0tFWVdPUkRTIiwiSFRNTF9DT01NRU5UIiwiTEFTU09fTk9QUk9DRVNTIiwiTEFTU09fU1RBUlQiLCJMQVNTT19EQVRBTUVNQkVSIiwiTEFTU09fQ09ERSIsIkxBU1NPX0lERU5UX1JFIiwiSU5URVJQX0lERU5UX1JFIiwiUlVMRVMiLCJWQUxVRSIsIlNUUklOR19NT0RFIiwiSURFTlRfTU9ERSIsIlBBUkVOU19NT0RFIiwiVkFMVUVfV0lUSF9SVUxFU0VUUyIsIk1JWElOX0dVQVJEX01PREUiLCJSVUxFX01PREUiLCJBVF9SVUxFX01PREUiLCJWQVJfUlVMRV9NT0RFIiwiU0VMRUNUT1JfTU9ERSIsIkxJU1BfSURFTlRfUkUiLCJMSVNQX1NJTVBMRV9OVU1CRVJfUkUiLCJJREVOVCIsIk1FQyIsIlFVT1RFRCIsIlFVT1RFRF9BVE9NIiwiVElUTEUxIiwiVElUTEUyIiwiU1VCU1RfU0lNUExFIiwiTFNMX1NUUklOR1MiLCJMU0xfTlVNQkVSUyIsIkxPTkdfQlJBQ0tFVFMiLCJGVU5DIiwiVkFSX0FTU0lHIiwiVEFSR0VUIiwiVFJBTlNQT1NFIiwiQVRPTSIsIlBFUkxfS0VZV09SRFMiLCJTVFJJTkdfQ09OVEFJTlMiLCJQRVJMX0RFRkFVTFRfQ09OVEFJTlMiLCJOSVhfS0VZV09SRFMiLCJBTlRJUVVPVEUiLCJERUZJTkVTIiwiTEFOR1VBR0VTIiwiTEVYRU1FUyIsIkNMQVNTX0tFWVdPUkRTIiwiU1BFQ0lBTF9WQVJTIiwiRlVOQ1RJT05TIiwiT1hZR0VORV9LRVlXT1JEUyIsIkNVUkxZX0NPTU1FTlQiLCJQQVJFTl9DT01NRU5UIiwiQ1VSTFlfU1VCQ09NTUVOVCIsIkNPTU1FTlRfTU9ERSIsIlRZUEVTX1JFIiwiRlVOQ1RJT05TX1JFIiwiU1FMX0tXIiwiU1FMX0JJIiwiUFNfQ09NTUVOVCIsIlBBUkVOVEVEIiwiTElORV9DT01NRU5UIiwiQkFDS1RJQ0tfU1RSSU5HIiwiaW5uZXIiLCJXUzAiLCJERUxJTSIsIktFWV9PVEhFUiIsIkRFTElNX0FORF9WQUxVRSIsIlBST01QVCIsIkxJVEVSQUxfQlJBQ0tFVCIsIlFNTF9JREVOVF9SRSIsIklEX0lEIiwiUU1MX0FUVFJJQlVURSIsIlFNTF9PQkpFQ1QiLCJSRV9JREVOVCIsIlJFX01PRFVMRV9JREVOVCIsIlJFX09QRVJBVE9SIiwib3AiLCJjaGFyIiwiUkVfT1BFUkFUT1JfU1BBQ0VEIiwiUkVfTlVNQkVSIiwiT1BFUkFUT1JfTU9ERSIsIkxJU1RfQ09OVEVOVFNfTU9ERVMiLCJNT0RVTEVfQUNDRVNTX0NPTlRFTlRTIiwiUEFSQU1TX0NPTlRFTlRTIiwiRlVOQ1RJT05fQkxPQ0tfTU9ERSIsIkNPTlNUUlVDVE9SX01PREUiLCJQQVRURVJOX01BVENIX0JMT0NLX01PREUiLCJNT0RVTEVfQUNDRVNTX01PREUiLCJJREVOVElGSUVSIiwiUFJPUEVSVFkiLCJTVEFURU1FTlRTIiwiQVBPU19TVFJJTkciLCJOVU1fU1VGRklYIiwiQlVJTFRJTlMiLCJUWVBFIiwiU0NIRU1FX0lERU5UX1JFIiwiU0NIRU1FX1NJTVBMRV9OVU1CRVJfUkUiLCJRVU9URURfSURFTlQiLCJRVU9URURfTElTVCIsIkNPTU1PTl9DT05UQUlOUyIsIkhFWENPTE9SIiwic21hbGlfaW5zdHJfbG93X3ByaW8iLCJDSEFSIiwiVkFSX0lERU5UX1JFIiwic2VsZWN0b3ItdGFnIiwiSEVYX0NPTE9SIiwiU1dJRlRfS0VZV09SRFMiLCJCTE9DS19DT01NRU5UIiwiVFBJRCIsIlRQTEFCRUwiLCJGVU5DVElPTl9OQU1FUyIsIlRBR1MiLCJ0IiwiREVDT1JBVE9SIiwiQVJHUyIsIlhMX0tFWVdPUkRTIiwiRE9VQkxFX1FVT1RFX1RFWFQiLCJJTVBPUlQiLCJGVU5DVElPTl9ERUZJTklUSU9OIiwidkZpbGUiLCJuYk1DIiwiaXNNdWx0aXBsZUNob2lzZSIsIm5iUSIsIm5vZGVDIiwieCIsImZvciIsImxpc3RDaGlsZCIsImRlYWxMYWJlbENoaWxkcmVuIiwib25jbGljayIsInZpc2l0TGlzdCIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJfZGVmaW5lUHJvcGVydHkiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwibm90aGluZ0hhcHBlbmQiLCJwcm9wIiwiZWF0ZW4iLCJkZWZhdWx0Q29uZmlnIiwiZGVmYXVsdFZhbHVlIiwiaW5kZXhOZXh0IiwidXNlckNvbmZpZyIsImxldHNFYXQiLCJzdG9wT25CcmFjZSIsImVycm9yRGV0ZWN0ZWQiLCJjb25maWciLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9vYmplY3RTcHJlYWQiLCJsYWJlbFNlY29uZCIsImxhYmVsRmlyc3QiLCJzaG91bGRTdG9wIiwiY2hhcnMiLCJlYXRVbnRpbCIsImVhdE9uZSIsInNraXBTdG9wQ2hlY2siLCJlYXRRdW90ZSIsInEiLCJxdW90ZSIsImVhdEluUXVvdGUiLCJpZFNldEJ5S2V5IiwiYWRkQXR0cmlidXRlIiwiX3JldCIsIlNUQVJUIiwiRU5EIiwic3RhcnRzV2l0aCIsInBhcnNlQXR0ciIsInBsYWNlaG9sZGVyIiwiaW5wdXQiLCJsaW5laW5wdXQiLCJFTkRfUkdYIiwidW50cmltIiwic2VsZWN0IiwibGluZXNlbGVjdCIsImJsb2NrVG9rZW5pemVyIiwic2VhcmNoIiwidGV4dGlucHV0IiwiVU5ERUZJTkVEX0NPREVfUE9JTlRTIiwiRU9GIiwiTlVMTCIsIlRBQlVMQVRJT04iLCJDQVJSSUFHRV9SRVRVUk4iLCJMSU5FX0ZFRUQiLCJGT1JNX0ZFRUQiLCJTUEFDRSIsIkVYQ0xBTUFUSU9OX01BUksiLCJRVU9UQVRJT05fTUFSSyIsIk5VTUJFUl9TSUdOIiwiQU1QRVJTQU5EIiwiQVBPU1RST1BIRSIsIkhZUEhFTl9NSU5VUyIsIlNPTElEVVMiLCJESUdJVF8wIiwiRElHSVRfOSIsIlNFTUlDT0xPTiIsIkxFU1NfVEhBTl9TSUdOIiwiRVFVQUxTX1NJR04iLCJHUkVBVEVSX1RIQU5fU0lHTiIsIlFVRVNUSU9OX01BUksiLCJMQVRJTl9DQVBJVEFMX0EiLCJMQVRJTl9DQVBJVEFMX0YiLCJMQVRJTl9DQVBJVEFMX1giLCJMQVRJTl9DQVBJVEFMX1oiLCJSSUdIVF9TUVVBUkVfQlJBQ0tFVCIsIkdSQVZFX0FDQ0VOVCIsIkxBVElOX1NNQUxMX0EiLCJMQVRJTl9TTUFMTF9GIiwiTEFUSU5fU01BTExfWCIsIkxBVElOX1NNQUxMX1oiLCJSRVBMQUNFTUVOVF9DSEFSQUNURVIiLCJEQVNIX0RBU0hfU1RSSU5HIiwiRE9DVFlQRV9TVFJJTkciLCJDREFUQV9TVEFSVF9TVFJJTkciLCJTQ1JJUFRfU1RSSU5HIiwiUFVCTElDX1NUUklORyIsIlNZU1RFTV9TVFJJTkciLCJjcCIsImNwMSIsImNwMiIsImNvbnRyb2xDaGFyYWN0ZXJJbklucHV0U3RyZWFtIiwibm9uY2hhcmFjdGVySW5JbnB1dFN0cmVhbSIsInN1cnJvZ2F0ZUluSW5wdXRTdHJlYW0iLCJub25Wb2lkSHRtbEVsZW1lbnRTdGFydFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMiLCJlbmRUYWdXaXRoQXR0cmlidXRlcyIsImVuZFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMiLCJ1bmV4cGVjdGVkU29saWR1c0luVGFnIiwidW5leHBlY3RlZE51bGxDaGFyYWN0ZXIiLCJ1bmV4cGVjdGVkUXVlc3Rpb25NYXJrSW5zdGVhZE9mVGFnTmFtZSIsImludmFsaWRGaXJzdENoYXJhY3Rlck9mVGFnTmFtZSIsInVuZXhwZWN0ZWRFcXVhbHNTaWduQmVmb3JlQXR0cmlidXRlTmFtZSIsIm1pc3NpbmdFbmRUYWdOYW1lIiwidW5leHBlY3RlZENoYXJhY3RlckluQXR0cmlidXRlTmFtZSIsInVua25vd25OYW1lZENoYXJhY3RlclJlZmVyZW5jZSIsIm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSIsInVuZXhwZWN0ZWRDaGFyYWN0ZXJBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwidW5leHBlY3RlZENoYXJhY3RlckluVW5xdW90ZWRBdHRyaWJ1dGVWYWx1ZSIsImVvZkJlZm9yZVRhZ05hbWUiLCJlb2ZJblRhZyIsIm1pc3NpbmdBdHRyaWJ1dGVWYWx1ZSIsIm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkF0dHJpYnV0ZXMiLCJtaXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQiLCJtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5Eb2N0eXBlUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnMiLCJtaXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVN5c3RlbUtleXdvcmQiLCJtaXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllciIsIm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwibWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyIiwibWlzc2luZ0RvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwiYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIiLCJhYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllciIsImNkYXRhSW5IdG1sQ29udGVudCIsImluY29ycmVjdGx5T3BlbmVkQ29tbWVudCIsImVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCIsImVvZkluRG9jdHlwZSIsIm5lc3RlZENvbW1lbnQiLCJhYnJ1cHRDbG9zaW5nT2ZFbXB0eUNvbW1lbnQiLCJlb2ZJbkNvbW1lbnQiLCJpbmNvcnJlY3RseUNsb3NlZENvbW1lbnQiLCJlb2ZJbkNkYXRhIiwiYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlIiwibnVsbENoYXJhY3RlclJlZmVyZW5jZSIsInN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZSIsImNoYXJhY3RlclJlZmVyZW5jZU91dHNpZGVVbmljb2RlUmFuZ2UiLCJjb250cm9sQ2hhcmFjdGVyUmVmZXJlbmNlIiwibm9uY2hhcmFjdGVyQ2hhcmFjdGVyUmVmZXJlbmNlIiwibWlzc2luZ1doaXRlc3BhY2VCZWZvcmVEb2N0eXBlTmFtZSIsIm1pc3NpbmdEb2N0eXBlTmFtZSIsImludmFsaWRDaGFyYWN0ZXJTZXF1ZW5jZUFmdGVyRG9jdHlwZU5hbWUiLCJkdXBsaWNhdGVBdHRyaWJ1dGUiLCJub25Db25mb3JtaW5nRG9jdHlwZSIsIm1pc3NpbmdEb2N0eXBlIiwibWlzcGxhY2VkRG9jdHlwZSIsImVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50IiwiY2xvc2luZ09mRWxlbWVudFdpdGhPcGVuQ2hpbGRFbGVtZW50cyIsImRpc2FsbG93ZWRDb250ZW50SW5Ob3NjcmlwdEluSGVhZCIsIm9wZW5FbGVtZW50c0xlZnRBZnRlckVvZiIsImFiYW5kb25lZEhlYWRFbGVtZW50Q2hpbGQiLCJtaXNwbGFjZWRTdGFydFRhZ0ZvckhlYWRFbGVtZW50IiwibmVzdGVkTm9zY3JpcHRJbkhlYWQiLCJlb2ZJbkVsZW1lbnRUaGF0Q2FuQ29udGFpbk9ubHlUZXh0IiwiJCIsInVuaWNvZGUiLCJDT0RFX1BPSU5UUyIsIkRFRkFVTFRfQlVGRkVSX1dBVEVSTElORSIsIltvYmplY3QgT2JqZWN0XSIsImxhc3RHYXBQb3MiLCJsYXN0Q2hhclBvcyIsImdhcFN0YWNrIiwic2tpcE5leHROZXdMaW5lIiwibGFzdENodW5rV3JpdHRlbiIsImVuZE9mQ2h1bmtIaXQiLCJidWZmZXJXYXRlcmxpbmUiLCJuZXh0Q3AiLCJpc1N1cnJvZ2F0ZVBhaXIiLCJfYWRkR2FwIiwiZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludCIsIl9lcnIiLCJFUlIiLCJjaHVuayIsImlzTGFzdENodW5rIiwiYWR2YW5jZSIsImlzU3Vycm9nYXRlIiwiX3Byb2Nlc3NTdXJyb2dhdGUiLCJfY2hlY2tGb3JQcm9ibGVtYXRpY0NoYXJhY3RlcnMiLCJpc0NvbnRyb2xDb2RlUG9pbnQiLCJpc1VuZGVmaW5lZENvZGVQb2ludCIsIlVpbnQxNkFycmF5IiwiJCQiLCJDT0RFX1BPSU5UX1NFUVVFTkNFUyIsIkMxX0NPTlRST0xTX1JFRkVSRU5DRV9SRVBMQUNFTUVOVFMiLCIxMjgiLCIxMzAiLCIxMzEiLCIxMzIiLCIxMzMiLCIxMzQiLCIxMzUiLCIxMzYiLCIxMzciLCIxMzgiLCIxMzkiLCIxNDAiLCIxNDIiLCIxNDUiLCIxNDYiLCIxNDciLCIxNDgiLCIxNDkiLCIxNTAiLCIxNTEiLCIxNTIiLCIxNTMiLCIxNTQiLCIxNTUiLCIxNTYiLCIxNTgiLCIxNTkiLCJIQVNfREFUQV9GTEFHIiwiREFUQV9EVVBMRVRfRkxBRyIsIkhBU19CUkFOQ0hFU19GTEFHIiwiTUFYX0JSQU5DSF9NQVJLRVJfVkFMVUUiLCJEQVRBX1NUQVRFIiwiUkNEQVRBX1NUQVRFIiwiUkFXVEVYVF9TVEFURSIsIlNDUklQVF9EQVRBX1NUQVRFIiwiUExBSU5URVhUX1NUQVRFIiwiVEFHX09QRU5fU1RBVEUiLCJFTkRfVEFHX09QRU5fU1RBVEUiLCJUQUdfTkFNRV9TVEFURSIsIlJDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlJDREFUQV9FTkRfVEFHX09QRU5fU1RBVEUiLCJSQ0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFIiwiUkFXVEVYVF9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlJBV1RFWFRfRU5EX1RBR19PUEVOX1NUQVRFIiwiUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUiLCJTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlNDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURSIsIlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRV9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEUiLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX1NUQVJUX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUiLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEUiLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURSIsIkJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSIsIkFUVFJJQlVURV9OQU1FX1NUQVRFIiwiQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUiLCJCRUZPUkVfQVRUUklCVVRFX1ZBTFVFX1NUQVRFIiwiQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURfU1RBVEUiLCJBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSIsIkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRF9TVEFURSIsIkFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURfU1RBVEUiLCJTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFIiwiQk9HVVNfQ09NTUVOVF9TVEFURSIsIk1BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFIiwiQ09NTUVOVF9TVEFSVF9TVEFURSIsIkNPTU1FTlRfU1RBUlRfREFTSF9TVEFURSIsIkNPTU1FTlRfU1RBVEUiLCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX1NUQVRFIiwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX1NUQVRFIiwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfU1RBVEUiLCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9EQVNIX1NUQVRFIiwiQ09NTUVOVF9FTkRfREFTSF9TVEFURSIsIkNPTU1FTlRfRU5EX1NUQVRFIiwiQ09NTUVOVF9FTkRfQkFOR19TVEFURSIsIkRPQ1RZUEVfU1RBVEUiLCJCRUZPUkVfRE9DVFlQRV9OQU1FX1NUQVRFIiwiRE9DVFlQRV9OQU1FX1NUQVRFIiwiQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFIiwiQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRF9TVEFURSIsIkJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFIiwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFIiwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFIiwiQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURSIsIkJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSU19TVEFURSIsIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkRfU1RBVEUiLCJCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSIsIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURSIsIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURSIsIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEUiLCJCT0dVU19ET0NUWVBFX1NUQVRFIiwiQ0RBVEFfU0VDVElPTl9TVEFURSIsIkNEQVRBX1NFQ1RJT05fQlJBQ0tFVF9TVEFURSIsIkNEQVRBX1NFQ1RJT05fRU5EX1NUQVRFIiwiQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSIsIk5BTUVEX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUiLCJBTUJJR1VPVVNfQU1QRVJTQU5EX1NUQVRFIiwiTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFIiwiSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSIsIkRFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSIsIkhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUiLCJERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUiLCJOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFIiwiaXNXaGl0ZXNwYWNlIiwiaXNBc2NpaURpZ2l0IiwiaXNBc2NpaVVwcGVyIiwiaXNBc2NpaUxvd2VyIiwiaXNBc2NpaUxldHRlciIsImlzQXNjaWlBbHBoYU51bWVyaWMiLCJpc0FzY2lpVXBwZXJIZXhEaWdpdCIsImlzQXNjaWlMb3dlckhleERpZ2l0IiwidG9Bc2NpaUxvd2VyQ29kZVBvaW50IiwidG9DaGFyIiwidG9Bc2NpaUxvd2VyQ2hhciIsImZpbmROYW1lZEVudGl0eVRyZWVCcmFuY2giLCJub2RlSXgiLCJicmFuY2hDb3VudCIsIm5lVHJlZSIsImxvIiwiaGkiLCJtaWQiLCJtaWRDcCIsIlRva2VuaXplciIsIlByZXByb2Nlc3NvciIsInRva2VuUXVldWUiLCJhbGxvd0NEQVRBIiwic3RhdGUiLCJyZXR1cm5TdGF0ZSIsImNoYXJSZWZDb2RlIiwidGVtcEJ1ZmYiLCJsYXN0U3RhcnRUYWdOYW1lIiwiY29uc3VtZWRBZnRlclNuYXBzaG90IiwiYWN0aXZlIiwiY3VycmVudENoYXJhY3RlclRva2VuIiwiY3VycmVudFRva2VuIiwiY3VycmVudEF0dHIiLCJfY29uc3VtZSIsIl91bmNvbnN1bWUiLCJfZW5zdXJlSGliZXJuYXRpb24iLCJzaGlmdCIsIndyaXRlIiwiaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyIsInJldHJlYXQiLCJISUJFUk5BVElPTl9UT0tFTiIsInBhdHRlcm4iLCJzdGFydENwIiwiY2FzZVNlbnNpdGl2ZSIsImNvbnN1bWVkQ291bnQiLCJpc01hdGNoIiwicGF0dGVybkxlbmd0aCIsInBhdHRlcm5Qb3MiLCJwYXR0ZXJuQ3AiLCJTVEFSVF9UQUdfVE9LRU4iLCJzZWxmQ2xvc2luZyIsImFja1NlbGZDbG9zaW5nIiwiYXR0cnMiLCJFTkRfVEFHX1RPS0VOIiwiQ09NTUVOVF9UT0tFTiIsImluaXRpYWxOYW1lIiwiRE9DVFlQRV9UT0tFTiIsImZvcmNlUXVpcmtzIiwicHVibGljSWQiLCJzeXN0ZW1JZCIsIkVPRl9UT0tFTiIsImF0dHJOYW1lRmlyc3RDaCIsInRvU3RhdGUiLCJnZXRUb2tlbkF0dHIiLCJfZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbiIsImN0IiwiX2NyZWF0ZUVPRlRva2VuIiwiX2VtaXRDdXJyZW50VG9rZW4iLCJfY3JlYXRlQ2hhcmFjdGVyVG9rZW4iLCJDSEFSQUNURVJfVE9LRU4iLCJXSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTiIsIk5VTExfQ0hBUkFDVEVSX1RPS0VOIiwiX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbiIsImNvZGVQb2ludHMiLCJfZW1pdENvZGVQb2ludCIsImV4Y2VzcyIsImluTm9kZSIsIndpdGhTZW1pY29sb24iLCJfaXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSIsIl9lbWl0U2V2ZXJhbENvZGVQb2ludHMiLCJkcm9wUGFyc2VkQ2h1bmsiLCJfZW1pdEVPRlRva2VuIiwiX2VtaXRDaGFycyIsIl9jcmVhdGVTdGFydFRhZ1Rva2VuIiwiX3JlY29uc3VtZUluU3RhdGUiLCJfY3JlYXRlQ29tbWVudFRva2VuIiwiX2NyZWF0ZUVuZFRhZ1Rva2VuIiwiX2lzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmciLCJfY3JlYXRlQXR0ciIsIl9sZWF2ZUF0dHJOYW1lIiwiX2xlYXZlQXR0clZhbHVlIiwiX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2giLCJfY3JlYXRlRG9jdHlwZVRva2VuIiwiX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UiLCJtYXRjaFJlc3VsdCIsIl9tYXRjaE5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlIiwiX2lzQ2hhcmFjdGVyUmVmZXJlbmNlQXR0cmlidXRlUXVpcmsiLCJfZXJyT25OZXh0Q29kZVBvaW50IiwiaXNBc2NpaUhleERpZ2l0IiwicmVwbGFjZW1lbnQiLCJNT0RFIiwiREFUQSIsIlJDREFUQSIsIlJBV1RFWFQiLCJTQ1JJUFRfREFUQSIsIlBMQUlOVEVYVCIsInRva2VuIiwiYXR0ck5hbWUiLCJOUyIsIkhUTUwiLCJNQVRITUwiLCJTVkciLCJYTElOSyIsIlhNTCIsIlhNTE5TIiwiQUNUSU9OIiwiRU5DT0RJTkciLCJDT0xPUiIsIkZBQ0UiLCJTSVpFIiwiTk9fUVVJUktTIiwiUVVJUktTIiwiTElNSVRFRF9RVUlSS1MiLCJBIiwiQUREUkVTUyIsIkFOTk9UQVRJT05fWE1MIiwiQVBQTEVUIiwiQVJFQSIsIkFSVElDTEUiLCJBU0lERSIsIkIiLCJCQVNFIiwiQkFTRUZPTlQiLCJCR1NPVU5EIiwiQklHIiwiQkxPQ0tRVU9URSIsIkJSIiwiQlVUVE9OIiwiQ0FQVElPTiIsIkNFTlRFUiIsIkNPREUiLCJDT0wiLCJDT0xHUk9VUCIsIkREIiwiREVTQyIsIkRFVEFJTFMiLCJESUFMT0ciLCJESVIiLCJESVYiLCJETCIsIkRUIiwiRU0iLCJFTUJFRCIsIkZJRUxEU0VUIiwiRklHQ0FQVElPTiIsIkZJR1VSRSIsIkZPTlQiLCJGT09URVIiLCJGT1JFSUdOX09CSkVDVCIsIkZPUk0iLCJGUkFNRSIsIkZSQU1FU0VUIiwiSDEiLCJIMiIsIkgzIiwiSDQiLCJINSIsIkg2IiwiSEVBRCIsIkhFQURFUiIsIkhHUk9VUCIsIkhSIiwiSSIsIklNRyIsIklNQUdFIiwiSU5QVVQiLCJJRlJBTUUiLCJLRVlHRU4iLCJMSSIsIkxJTksiLCJMSVNUSU5HIiwiTUFJTiIsIk1BTElHTk1BUksiLCJNQVJRVUVFIiwiTUFUSCIsIk1FTlUiLCJNRVRBIiwiTUdMWVBIIiwiTUkiLCJNTyIsIk1OIiwiTVMiLCJNVEVYVCIsIk5BViIsIk5PQlIiLCJOT0ZSQU1FUyIsIk5PRU1CRUQiLCJOT1NDUklQVCIsIk9MIiwiT1BUR1JPVVAiLCJPUFRJT04iLCJQIiwiUEFSQU0iLCJQUkUiLCJSQiIsIlJQIiwiUlQiLCJSVEMiLCJSVUJZIiwiUyIsIlNDUklQVCIsIlNFQ1RJT04iLCJTRUxFQ1QiLCJTT1VSQ0UiLCJTTUFMTCIsIlNQQU4iLCJTVFJJS0UiLCJTVFJPTkciLCJTVFlMRSIsIlNVQiIsIlNVTU1BUlkiLCJTVVAiLCJUQUJMRSIsIlRCT0RZIiwiVEVNUExBVEUiLCJURVhUQVJFQSIsIlRGT09UIiwiVEQiLCJUSCIsIlRIRUFEIiwiVFIiLCJUUkFDSyIsIlRUIiwiVSIsIlVMIiwiV0JSIiwiWE1QIiwiVEFHX05BTUVTIiwiTkFNRVNQQUNFUyIsImlzSW1wbGllZEVuZFRhZ1JlcXVpcmVkIiwidG4iLCJpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZFRob3JvdWdobHkiLCJpc1Njb3BpbmdFbGVtZW50IiwibnMiLCJ0cmVlQWRhcHRlciIsInN0YWNrVG9wIiwiY3VycmVudFRhZ05hbWUiLCJjdXJyZW50VG1wbENvbnRlbnQiLCJ0bXBsQ291bnQiLCJlbGVtZW50IiwiaWR4IiwiZ2V0TmFtZXNwYWNlVVJJIiwiZ2V0VGFnTmFtZSIsIl9pc0luVGVtcGxhdGUiLCJnZXRUZW1wbGF0ZUNvbnRlbnQiLCJfdXBkYXRlQ3VycmVudEVsZW1lbnQiLCJvbGRFbGVtZW50IiwibmV3RWxlbWVudCIsIl9pbmRleE9mIiwicmVmZXJlbmNlRWxlbWVudCIsImluc2VydGlvbklkeCIsInBvcHBlZEVsZW1lbnQiLCJlbGVtZW50SWR4IiwiZXhjbHVzaW9uVGFnTmFtZSIsIk5PQUhfQVJLX0NBUEFDSVRZIiwiRm9ybWF0dGluZ0VsZW1lbnRMaXN0IiwiZW50cmllcyIsImJvb2ttYXJrIiwiY2FuZGlkYXRlcyIsIm5lQXR0cnNMZW5ndGgiLCJnZXRBdHRyTGlzdCIsIm5lVGFnTmFtZSIsIm5lTmFtZXNwYWNlVVJJIiwiZW50cnkiLCJNQVJLRVJfRU5UUlkiLCJlbGVtZW50QXR0cnMiLCJfZ2V0Tm9haEFya0NvbmRpdGlvbkNhbmRpZGF0ZXMiLCJjTGVuZ3RoIiwibmVBdHRycyIsIm5lQXR0cnNNYXAiLCJuZUF0dHIiLCJqIiwiY0F0dHIiLCJfZW5zdXJlTm9haEFya0NvbmRpdGlvbiIsIkVMRU1FTlRfRU5UUlkiLCJib29rbWFya0lkeCIsIk1peGluIiwiaG9zdCIsIm9yaWdpbmFsTWV0aG9kcyIsIm92ZXJyaWRkZW5NZXRob2RzIiwiX2dldE92ZXJyaWRkZW5NZXRob2RzIiwiaW5zdGFsbCIsIkN0b3IiLCJfX21peGlucyIsImNvbnN0cnVjdG9yIiwibWl4aW4iLCJzdXBlciIsImlzRW9sIiwibGluZVN0YXJ0UG9zIiwiZHJvcHBlZEJ1ZmZlclNpemUiLCJjb2wiLCJteG4iLCJvcmlnIiwicHJldlBvcyIsInJlZHVjdGlvbiIsInRva2VuaXplciIsInBvc1RyYWNrZXIiLCJQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW4iLCJjdXJyZW50QXR0ckxvY2F0aW9uIiwiY3RMb2MiLCJzdGFydExpbmUiLCJzdGFydENvbCIsInN0YXJ0T2Zmc2V0IiwiZW5kTGluZSIsImVuZENvbCIsImVuZE9mZnNldCIsImxvY2F0aW9uIiwibWV0aG9kcyIsIl9nZXRDdXJyZW50TG9jYXRpb24iLCJfYXR0YWNoQ3VycmVudEF0dHJMb2NhdGlvbkluZm8iLCJtb2RlTmFtZSIsIm9uSXRlbVBvcCIsInBvcEFsbFVwVG9IdG1sRWxlbWVudCIsInJlbW92ZSIsImxhc3RTdGFydFRhZ1Rva2VuIiwibGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uIiwibG9jIiwic3RhcnRUYWciLCJzZXROb2RlU291cmNlQ29kZUxvY2F0aW9uIiwiY2xvc2luZ1Rva2VuIiwiZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbiIsImVuZFRhZyIsImZyYWdtZW50Q29udGV4dCIsIl9ib290c3RyYXAiLCJ0b2tlbml6ZXJNaXhpbiIsIkxvY2F0aW9uSW5mb1Rva2VuaXplck1peGluIiwib3BlbkVsZW1lbnRzIiwiTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluIiwiX3NldEVuZExvY2F0aW9uIiwic2NyaXB0SGFuZGxlciIsIl9ydW5QYXJzaW5nTG9vcCIsIl9wcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50IiwiX3Byb2Nlc3NUb2tlbiIsImhhc0luU2NvcGUiLCJfc2V0RG9jdW1lbnRUeXBlIiwiZG9jdW1lbnRDaGlsZHJlbiIsImdldENoaWxkTm9kZXMiLCJjbkxlbmd0aCIsImlzRG9jdW1lbnRUeXBlTm9kZSIsIl9zZXRTdGFydExvY2F0aW9uIiwiX2F0dGFjaEVsZW1lbnRUb1RyZWUiLCJuYW1lc3BhY2VVUkkiLCJfYXBwZW5kRWxlbWVudCIsIl9pbnNlcnRFbGVtZW50IiwiX2luc2VydFRlbXBsYXRlIiwidG1wbENvbnRlbnQiLCJfaW5zZXJ0RmFrZVJvb3RFbGVtZW50IiwiX2FwcGVuZENvbW1lbnROb2RlIiwiY29tbWVudE5vZGUiLCJfZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uIiwiX2luc2VydENoYXJhY3RlcnMiLCJoYXNGb3N0ZXJQYXJlbnQiLCJfc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24iLCJ0ZXh0Tm9kZSIsImJlZm9yZUVsZW1lbnQiLCJ0bkxvYyIsIm9uUGFyc2VFcnJvciIsIl9zZXRFcnJvckxvY2F0aW9uIiwiX3JlcG9ydEVycm9yIiwiRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2UiLCJsYXN0RXJyT2Zmc2V0IiwicHJlcHJvY2Vzc29yTWl4aW4iLCJFcnJvclJlcG9ydGluZ1ByZXByb2Nlc3Nvck1peGluIiwibG9jQmVmb3JlVG9rZW4iLCJFcnJvclJlcG9ydGluZ1Rva2VuaXplck1peGluIiwiX3Byb2Nlc3NJbnB1dFRva2VuIiwiYmVmb3JlVG9rZW4iLCJET0NVTUVOVF9NT0RFIiwiY2hpbGROb2RlcyIsImNyZWF0ZVRleHROb2RlIiwiYXBwZW5kQ2hpbGQiLCJuZXdOb2RlIiwiaW5zZXJ0QmVmb3JlIiwicmVmZXJlbmNlTm9kZSIsInRlbXBsYXRlRWxlbWVudCIsImNvbnRlbnRFbGVtZW50IiwiZG9jdHlwZU5vZGUiLCJwcmV2Tm9kZSIsInJlY2lwaWVudCIsInJlY2lwaWVudEF0dHJzTWFwIiwic291cmNlQ29kZUxvY2F0aW9uIiwiZGVmYXVsdHMiLCJyZWR1Y2UiLCJtZXJnZWQiLCJvcHRPYmoiLCJRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMiLCJRVUlSS1NfTU9ERV9OT19TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTIiwiUVVJUktTX01PREVfUFVCTElDX0lEUyIsIkxJTUlURURfUVVJUktTX1BVQkxJQ19JRF9QUkVGSVhFUyIsIkxJTUlURURfUVVJUktTX1dJVEhfU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyIsImVucXVvdGVEb2N0eXBlSWQiLCJoYXNQcmVmaXgiLCJwcmVmaXhlcyIsIkFUVFJTIiwiTUlNRV9UWVBFUyIsIlRFWFRfSFRNTCIsIkFQUExJQ0FUSU9OX1hNTCIsIlNWR19BVFRSU19BREpVU1RNRU5UX01BUCIsImF0dHJpYnV0ZW5hbWUiLCJhdHRyaWJ1dGV0eXBlIiwiYmFzZWZyZXF1ZW5jeSIsImJhc2Vwcm9maWxlIiwiY2FsY21vZGUiLCJjbGlwcGF0aHVuaXRzIiwiZGlmZnVzZWNvbnN0YW50IiwiZWRnZW1vZGUiLCJmaWx0ZXJ1bml0cyIsImdseXBocmVmIiwiZ3JhZGllbnR0cmFuc2Zvcm0iLCJncmFkaWVudHVuaXRzIiwia2VybmVsbWF0cml4Iiwia2VybmVsdW5pdGxlbmd0aCIsImtleXBvaW50cyIsImtleXNwbGluZXMiLCJrZXl0aW1lcyIsImxlbmd0aGFkanVzdCIsImxpbWl0aW5nY29uZWFuZ2xlIiwibWFya2VyaGVpZ2h0IiwibWFya2VydW5pdHMiLCJtYXJrZXJ3aWR0aCIsIm1hc2tjb250ZW50dW5pdHMiLCJtYXNrdW5pdHMiLCJudW1vY3RhdmVzIiwicGF0aGxlbmd0aCIsInBhdHRlcm5jb250ZW50dW5pdHMiLCJwYXR0ZXJudHJhbnNmb3JtIiwicGF0dGVybnVuaXRzIiwicG9pbnRzYXR4IiwicG9pbnRzYXR5IiwicG9pbnRzYXR6IiwicHJlc2VydmVhbHBoYSIsInByZXNlcnZlYXNwZWN0cmF0aW8iLCJwcmltaXRpdmV1bml0cyIsInJlZngiLCJyZWZ5IiwicmVwZWF0Y291bnQiLCJyZXBlYXRkdXIiLCJyZXF1aXJlZGV4dGVuc2lvbnMiLCJyZXF1aXJlZGZlYXR1cmVzIiwic3BlY3VsYXJjb25zdGFudCIsInNwZWN1bGFyZXhwb25lbnQiLCJzcHJlYWRtZXRob2QiLCJzdGFydG9mZnNldCIsInN0ZGRldmlhdGlvbiIsInN0aXRjaHRpbGVzIiwic3VyZmFjZXNjYWxlIiwic3lzdGVtbGFuZ3VhZ2UiLCJ0YWJsZXZhbHVlcyIsInRhcmdldHgiLCJ0YXJnZXR5IiwidGV4dGxlbmd0aCIsInZpZXdib3giLCJ2aWV3dGFyZ2V0IiwieGNoYW5uZWxzZWxlY3RvciIsInljaGFubmVsc2VsZWN0b3IiLCJ6b29tYW5kcGFuIiwiWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQIiwieGxpbms6YWN0dWF0ZSIsInhsaW5rOmFyY3JvbGUiLCJ4bGluazpocmVmIiwieGxpbms6cm9sZSIsInhsaW5rOnNob3ciLCJ4bGluazp0aXRsZSIsInhsaW5rOnR5cGUiLCJ4bWw6YmFzZSIsInhtbDpsYW5nIiwieG1sOnNwYWNlIiwieG1sbnMiLCJ4bWxuczp4bGluayIsIlNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAiLCJhbHRnbHlwaCIsImFsdGdseXBoZGVmIiwiYWx0Z2x5cGhpdGVtIiwiYW5pbWF0ZWNvbG9yIiwiYW5pbWF0ZW1vdGlvbiIsImFuaW1hdGV0cmFuc2Zvcm0iLCJjbGlwcGF0aCIsImZlYmxlbmQiLCJmZWNvbG9ybWF0cml4IiwiZmVjb21wb25lbnR0cmFuc2ZlciIsImZlY29tcG9zaXRlIiwiZmVjb252b2x2ZW1hdHJpeCIsImZlZGlmZnVzZWxpZ2h0aW5nIiwiZmVkaXNwbGFjZW1lbnRtYXAiLCJmZWRpc3RhbnRsaWdodCIsImZlZmxvb2QiLCJmZWZ1bmNhIiwiZmVmdW5jYiIsImZlZnVuY2ciLCJmZWZ1bmNyIiwiZmVnYXVzc2lhbmJsdXIiLCJmZWltYWdlIiwiZmVtZXJnZSIsImZlbWVyZ2Vub2RlIiwiZmVtb3JwaG9sb2d5IiwiZmVvZmZzZXQiLCJmZXBvaW50bGlnaHQiLCJmZXNwZWN1bGFybGlnaHRpbmciLCJmZXNwb3RsaWdodCIsImZldGlsZSIsImZldHVyYnVsZW5jZSIsImZvcmVpZ25vYmplY3QiLCJsaW5lYXJncmFkaWVudCIsInJhZGlhbGdyYWRpZW50IiwidGV4dHBhdGgiLCJFWElUU19GT1JFSUdOX0NPTlRFTlQiLCJzdGFydFRhZ1Rva2VuIiwiYWRqdXN0ZWRBdHRyTmFtZSIsImFkanVzdGVkQXR0ckVudHJ5IiwiYWRqdXN0ZWRUYWdOYW1lIiwiZm9yZWlnbk5TIiwiaXNIdG1sSW50ZWdyYXRpb25Qb2ludCIsImlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQiLCJERUZBVUxUX09QVElPTlMiLCJzY3JpcHRpbmdFbmFibGVkIiwic291cmNlQ29kZUxvY2F0aW9uSW5mbyIsImRlZmF1bHRUcmVlQWRhcHRlciIsIkhJRERFTl9JTlBVVF9UWVBFIiwiQUFfT1VURVJfTE9PUF9JVEVSIiwiQUFfSU5ORVJfTE9PUF9JVEVSIiwiSU5JVElBTF9NT0RFIiwiQkVGT1JFX0hUTUxfTU9ERSIsIkJFRk9SRV9IRUFEX01PREUiLCJJTl9IRUFEX01PREUiLCJJTl9IRUFEX05PX1NDUklQVF9NT0RFIiwiQUZURVJfSEVBRF9NT0RFIiwiSU5fQk9EWV9NT0RFIiwiVEVYVF9NT0RFIiwiSU5fVEFCTEVfTU9ERSIsIklOX1RBQkxFX1RFWFRfTU9ERSIsIklOX0NBUFRJT05fTU9ERSIsIklOX0NPTFVNTl9HUk9VUF9NT0RFIiwiSU5fVEFCTEVfQk9EWV9NT0RFIiwiSU5fUk9XX01PREUiLCJJTl9DRUxMX01PREUiLCJJTl9TRUxFQ1RfTU9ERSIsIklOX1NFTEVDVF9JTl9UQUJMRV9NT0RFIiwiSU5fVEVNUExBVEVfTU9ERSIsIkFGVEVSX0JPRFlfTU9ERSIsIklOX0ZSQU1FU0VUX01PREUiLCJBRlRFUl9GUkFNRVNFVF9NT0RFIiwiQUZURVJfQUZURVJfQk9EWV9NT0RFIiwiQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERSIsIklOU0VSVElPTl9NT0RFX1JFU0VUX01BUCIsIlRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVAiLCJUT0tFTl9IQU5ETEVSUyIsInRva2VuSW5Jbml0aWFsTW9kZSIsImlnbm9yZVRva2VuIiwiYXBwZW5kQ29tbWVudCIsInAiLCJkb2N0eXBlIiwiZ2V0RG9jdW1lbnRNb2RlIiwiaXNDb25mb3JtaW5nIiwic2V0RG9jdW1lbnRNb2RlIiwiaW5zZXJ0aW9uTW9kZSIsInRva2VuQmVmb3JlSHRtbCIsInRva2VuQmVmb3JlSGVhZCIsInN0YXJ0VGFnSW5Cb2R5IiwiaGVhZEVsZW1lbnQiLCJ0b2tlbkluSGVhZCIsImluc2VydENoYXJhY3RlcnMiLCJzdGFydFRhZ0luSGVhZCIsImVuZFRhZ0luSGVhZCIsInRva2VuSW5IZWFkTm9TY3JpcHQiLCJ0b2tlbkFmdGVySGVhZCIsImZyYW1lc2V0T2siLCJjaGFyYWN0ZXJJbkJvZHkiLCJ3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5IiwiZW5kVGFnSW5Cb2R5IiwiZW9mSW5Cb2R5IiwicGVuZGluZ1NjcmlwdCIsIm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSIsImNoYXJhY3RlckluVGFibGUiLCJzdGFydFRhZ0luVGFibGUiLCJlbmRUYWdJblRhYmxlIiwicGVuZGluZ0NoYXJhY3RlclRva2VucyIsImhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4iLCJ0b2tlbkluVGFibGVUZXh0IiwiaGFzSW5UYWJsZVNjb3BlIiwiZ2VuZXJhdGVJbXBsaWVkRW5kVGFncyIsInBvcFVudGlsVGFnTmFtZVBvcHBlZCIsImFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cyIsImNsZWFyVG9MYXN0TWFya2VyIiwidG9rZW5JbkNvbHVtbkdyb3VwIiwiY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0IiwiX2luc2VydEZha2VFbGVtZW50IiwiaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSIsImNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0IiwiaW5zZXJ0TWFya2VyIiwiX2Nsb3NlVGFibGVDZWxsIiwic3RhcnRUYWdJblNlbGVjdCIsImVuZFRhZ0luU2VsZWN0IiwiX3Jlc2V0SW5zZXJ0aW9uTW9kZSIsIm5ld0luc2VydGlvbk1vZGUiLCJfcG9wVG1wbEluc2VydGlvbk1vZGUiLCJfcHVzaFRtcGxJbnNlcnRpb25Nb2RlIiwiZW9mSW5UZW1wbGF0ZSIsInRva2VuQWZ0ZXJCb2R5Iiwic3RvcFBhcnNpbmciLCJpc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQiLCJ0b2tlbkFmdGVyQWZ0ZXJCb2R5IiwiYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQiLCJtZXJnZU9wdGlvbnMiLCJMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiIsIkVycm9yUmVwb3J0aW5nUGFyc2VyTWl4aW4iLCJjcmVhdGVEb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJkb2N1bWVudE1vY2siLCJfaW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZyIsIl9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0Iiwicm9vdEVsZW1lbnQiLCJnZXRGaXJzdENoaWxkIiwiZnJhZ21lbnQiLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwiX2Fkb3B0Tm9kZXMiLCJzdG9wcGVkIiwiZm9ybUVsZW1lbnQiLCJPcGVuRWxlbWVudFN0YWNrIiwidG1wbEluc2VydGlvbk1vZGVTdGFjayIsInRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AiLCJjdXJyZW50VG1wbEluc2VydGlvbk1vZGUiLCJmb3N0ZXJQYXJlbnRpbmdFbmFibGVkIiwiX3NldHVwVG9rZW5pemVyQ0RBVEFNb2RlIiwiZ2V0TmV4dFRva2VuIiwid3JpdGVDYWxsYmFjayIsInNjcmlwdCIsIl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50IiwiX2lzSW50ZWdyYXRpb25Qb2ludCIsIm5leHRUb2tlbml6ZXJTdGF0ZSIsImdldFBhcmVudE5vZGUiLCJzZXREb2N1bWVudFR5cGUiLCJfZm9zdGVyUGFyZW50RWxlbWVudCIsInRtcGwiLCJzZXRUZW1wbGF0ZUNvbnRlbnQiLCJjcmVhdGVDb21tZW50Tm9kZSIsIl9mb3N0ZXJQYXJlbnRUZXh0IiwiaW5zZXJ0VGV4dCIsImRvbm9yIiwiZGV0YWNoTm9kZSIsImlzQ2hhcmFjdGVyVG9rZW4iLCJjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50IiwibnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQiLCJmb3JlaWduQ29udGVudCIsImNhdXNlc0V4aXQiLCJjdXJyZW50TnMiLCJhZGp1c3RUb2tlbk1hdGhNTEF0dHJzIiwiYWRqdXN0VG9rZW5TVkdUYWdOYW1lIiwiYWRqdXN0VG9rZW5TVkdBdHRycyIsImFkanVzdFRva2VuWE1MQXR0cnMiLCJzdGFydFRhZ0luRm9yZWlnbkNvbnRlbnQiLCJwb3BVbnRpbEVsZW1lbnRQb3BwZWQiLCJlbmRUYWdJbkZvcmVpZ25Db250ZW50IiwiX3Nob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQiLCJpc0ludGVncmF0aW9uUG9pbnQiLCJsaXN0TGVuZ3RoIiwidW5vcGVuSWR4IiwicG9wVW50aWxUYWJsZUNlbGxQb3BwZWQiLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbiIsImxhc3QiLCJfcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0Iiwic2VsZWN0SWR4IiwiYW5jZXN0b3IiLCJfaXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nIiwib3BlbkVsZW1lbnQiLCJpbnNlcnRUZXh0QmVmb3JlIiwiU1BFQ0lBTF9FTEVNRU5UUyIsImFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeSIsImZvcm1hdHRpbmdFbGVtZW50RW50cnkiLCJnZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUiLCJyZW1vdmVFbnRyeSIsImdlbmVyaWNFbmRUYWdJbkJvZHkiLCJhYU9idGFpbkZ1cnRoZXN0QmxvY2siLCJmdXJ0aGVzdEJsb2NrIiwiX2lzU3BlY2lhbEVsZW1lbnQiLCJhYUlubmVyTG9vcCIsImZvcm1hdHRpbmdFbGVtZW50IiwibGFzdEVsZW1lbnQiLCJuZXh0RWxlbWVudCIsImdldENvbW1vbkFuY2VzdG9yIiwiZWxlbWVudEVudHJ5IiwiZ2V0RWxlbWVudEVudHJ5IiwiY291bnRlck92ZXJmbG93IiwiYWFSZWNyZWF0ZUVsZW1lbnRGcm9tRW50cnkiLCJhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvciIsImNvbW1vbkFuY2VzdG9yIiwiYWFSZXBsYWNlRm9ybWF0dGluZ0VsZW1lbnQiLCJpbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayIsImluc2VydEFmdGVyIiwiY2FsbEFkb3B0aW9uQWdlbmN5IiwiX3N3aXRjaFRvVGV4dFBhcnNpbmciLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzVGhvcm91Z2hseSIsImVyckNvZGUiLCJfcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMiLCJhZGRyZXNzU3RhcnRUYWdJbkJvZHkiLCJoYXNJbkJ1dHRvblNjb3BlIiwiX2Nsb3NlUEVsZW1lbnQiLCJwcmVTdGFydFRhZ0luQm9keSIsImJTdGFydFRhZ0luQm9keSIsInB1c2hFbGVtZW50IiwiYXBwbGV0U3RhcnRUYWdJbkJvZHkiLCJhcmVhU3RhcnRUYWdJbkJvZHkiLCJwYXJhbVN0YXJ0VGFnSW5Cb2R5Iiwibm9lbWJlZFN0YXJ0VGFnSW5Cb2R5Iiwib3B0Z3JvdXBTdGFydFRhZ0luQm9keSIsInJiU3RhcnRUYWdJbkJvZHkiLCJnZW5lcmljU3RhcnRUYWdJbkJvZHkiLCJhY3RpdmVFbGVtZW50RW50cnkiLCJhU3RhcnRUYWdJbkJvZHkiLCJudW1iZXJlZEhlYWRlclN0YXJ0VGFnSW5Cb2R5IiwiZWxlbWVudFRuIiwiY2xvc2VUbiIsImxpc3RJdGVtU3RhcnRUYWdJbkJvZHkiLCJoclN0YXJ0VGFnSW5Cb2R5IiwicnRTdGFydFRhZ0luQm9keSIsInhtcFN0YXJ0VGFnSW5Cb2R5Iiwic3ZnU3RhcnRUYWdJbkJvZHkiLCJhZG9wdEF0dHJpYnV0ZXMiLCJodG1sU3RhcnRUYWdJbkJvZHkiLCJib2R5RWxlbWVudCIsInRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50IiwiYm9keVN0YXJ0VGFnSW5Cb2R5IiwiaW5UZW1wbGF0ZSIsImZvcm1TdGFydFRhZ0luQm9keSIsIm5vYnJTdGFydFRhZ0luQm9keSIsIm1hdGhTdGFydFRhZ0luQm9keSIsIm1lbnVTdGFydFRhZ0luQm9keSIsInRhYmxlU3RhcnRUYWdJbkJvZHkiLCJpbnB1dFR5cGUiLCJpbnB1dFN0YXJ0VGFnSW5Cb2R5IiwiaW1hZ2VTdGFydFRhZ0luQm9keSIsImJ1dHRvblN0YXJ0VGFnSW5Cb2R5IiwiaWZyYW1lU3RhcnRUYWdJbkJvZHkiLCJzZWxlY3RTdGFydFRhZ0luQm9keSIsImZyYW1lc2V0U3RhcnRUYWdJbkJvZHkiLCJ0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5IiwicGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkiLCJhZGRyZXNzRW5kVGFnSW5Cb2R5IiwiYXBwbGV0RW5kVGFnSW5Cb2R5IiwicEVuZFRhZ0luQm9keSIsImhhc0luTGlzdEl0ZW1TY29wZSIsImxpRW5kVGFnSW5Cb2R5IiwiZGRFbmRUYWdJbkJvZHkiLCJoYXNOdW1iZXJlZEhlYWRlckluU2NvcGUiLCJwb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkIiwibnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkiLCJickVuZFRhZ0luQm9keSIsImJvZHlFbmRUYWdJbkJvZHkiLCJodG1sRW5kVGFnSW5Cb2R5IiwiZm9ybUVuZFRhZ0luQm9keSIsImN1clRuIiwidG9rZW5JblRhYmxlIiwiY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQiLCJ0ZFN0YXJ0VGFnSW5UYWJsZSIsImNvbFN0YXJ0VGFnSW5UYWJsZSIsImZvcm1TdGFydFRhZ0luVGFibGUiLCJ0YWJsZVN0YXJ0VGFnSW5UYWJsZSIsInRib2R5U3RhcnRUYWdJblRhYmxlIiwiaW5wdXRTdGFydFRhZ0luVGFibGUiLCJjYXB0aW9uU3RhcnRUYWdJblRhYmxlIiwiY29sZ3JvdXBTdGFydFRhZ0luVGFibGUiLCJzYXZlZEZvc3RlclBhcmVudGluZ1N0YXRlIiwiX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUiLCJoYXNJblNlbGVjdFNjb3BlIiwicHJldk9wZW5FbGVtZW50IiwicHJldk9wZW5FbGVtZW50VG4iLCJTY2hlbWEiLCJwcm9wZXJ0eSIsIm5vcm1hbCIsImluZm8iLCJJbmZvIiwiYXR0cmlidXRlIiwiYm9vbGVhbiIsImJvb2xlYW5pc2giLCJvdmVybG9hZGVkQm9vbGVhbiIsIm51bWJlciIsImNvbW1hU2VwYXJhdGVkIiwic3BhY2VTZXBhcmF0ZWQiLCJjb21tYU9yU3BhY2VTZXBhcmF0ZWQiLCJtdXN0VXNlUHJvcGVydHkiLCJkZWZpbmVkIiwicG93ZXJzIiwiaW5jcmVtZW50IiwiTWF0aCIsInBvdyIsIkRlZmluZWRJbmZvIiwiY2hlY2tzTGVuZ3RoIiwibWFzayIsImNoZWNrIiwibWFyayIsInR5cGVzIiwidHJhbnNmb3JtIiwieExpbmtBY3R1YXRlIiwieExpbmtBcmNSb2xlIiwieExpbmtIcmVmIiwieExpbmtSb2xlIiwieExpbmtTaG93IiwieExpbmtUaXRsZSIsInhMaW5rVHlwZSIsInhtbExhbmciLCJ4bWxCYXNlIiwieG1sU3BhY2UiLCJjYXNlU2Vuc2l0aXZlVHJhbnNmb3JtIiwieG1sbnN4bGluayIsImNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybSIsInhtbG5zWExpbmsiLCJhcmlhQWN0aXZlRGVzY2VuZGFudCIsImFyaWFBdG9taWMiLCJhcmlhQXV0b0NvbXBsZXRlIiwiYXJpYUJ1c3kiLCJhcmlhQ2hlY2tlZCIsImFyaWFDb2xDb3VudCIsImFyaWFDb2xJbmRleCIsImFyaWFDb2xTcGFuIiwiYXJpYUNvbnRyb2xzIiwiYXJpYUN1cnJlbnQiLCJhcmlhRGVzY3JpYmVkQnkiLCJhcmlhRGV0YWlscyIsImFyaWFEaXNhYmxlZCIsImFyaWFEcm9wRWZmZWN0IiwiYXJpYUVycm9yTWVzc2FnZSIsImFyaWFFeHBhbmRlZCIsImFyaWFGbG93VG8iLCJhcmlhR3JhYmJlZCIsImFyaWFIYXNQb3B1cCIsImFyaWFIaWRkZW4iLCJhcmlhSW52YWxpZCIsImFyaWFLZXlTaG9ydGN1dHMiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsImFyaWFMZXZlbCIsImFyaWFMaXZlIiwiYXJpYU1vZGFsIiwiYXJpYU11bHRpTGluZSIsImFyaWFNdWx0aVNlbGVjdGFibGUiLCJhcmlhT3JpZW50YXRpb24iLCJhcmlhT3ducyIsImFyaWFQbGFjZWhvbGRlciIsImFyaWFQb3NJblNldCIsImFyaWFQcmVzc2VkIiwiYXJpYVJlYWRPbmx5IiwiYXJpYVJlbGV2YW50IiwiYXJpYVJlcXVpcmVkIiwiYXJpYVJvbGVEZXNjcmlwdGlvbiIsImFyaWFSb3dDb3VudCIsImFyaWFSb3dJbmRleCIsImFyaWFSb3dTcGFuIiwiYXJpYVNlbGVjdGVkIiwiYXJpYVNldFNpemUiLCJhcmlhU29ydCIsImFyaWFWYWx1ZU1heCIsImFyaWFWYWx1ZU1pbiIsImFyaWFWYWx1ZU5vdyIsImFyaWFWYWx1ZVRleHQiLCJyb2xlIiwibWVyZ2UiLCJ4bWwiLCJ4bGluayIsImFyaWEiLCJhY2NlcHRjaGFyc2V0IiwiaHRtbGZvciIsImh0dHBlcXVpdiIsImFiYnIiLCJhY2NlcHQiLCJhY2NlcHRDaGFyc2V0IiwiYWNjZXNzS2V5IiwiYWN0aW9uIiwiYWxsb3ciLCJhbGxvd0Z1bGxTY3JlZW4iLCJhbGxvd1BheW1lbnRSZXF1ZXN0IiwiYWxsb3dVc2VyTWVkaWEiLCJhcyIsImFzeW5jIiwiYXV0b0NhcGl0YWxpemUiLCJhdXRvQ29tcGxldGUiLCJhdXRvRm9jdXMiLCJhdXRvUGxheSIsImNhcHR1cmUiLCJjaGFyU2V0IiwiY2l0ZSIsImNvbHMiLCJjb2xTcGFuIiwiY29udGVudEVkaXRhYmxlIiwiY29udHJvbHMiLCJjb250cm9sc0xpc3QiLCJjb29yZHMiLCJjcm9zc09yaWdpbiIsImRhdGVUaW1lIiwiZGVjb2RpbmciLCJkZWZhdWx0IiwiZGVmZXIiLCJkaXIiLCJkaXJOYW1lIiwiZG93bmxvYWQiLCJkcmFnZ2FibGUiLCJlbmNUeXBlIiwiZW50ZXJLZXlIaW50IiwiZm9ybSIsImZvcm1BY3Rpb24iLCJmb3JtRW5jVHlwZSIsImZvcm1NZXRob2QiLCJmb3JtTm9WYWxpZGF0ZSIsImZvcm1UYXJnZXQiLCJoZWFkZXJzIiwiaGVpZ2h0IiwiaGlkZGVuIiwiaHJlZkxhbmciLCJodG1sRm9yIiwiaHR0cEVxdWl2IiwiaW1hZ2VTaXplcyIsImltYWdlU3JjU2V0IiwiaW5wdXRNb2RlIiwiaW50ZWdyaXR5IiwiaXNNYXAiLCJpdGVtSWQiLCJpdGVtUHJvcCIsIml0ZW1SZWYiLCJpdGVtU2NvcGUiLCJpdGVtVHlwZSIsImtpbmQiLCJsb29wIiwibWFuaWZlc3QiLCJtYXhMZW5ndGgiLCJtZWRpYSIsIm1ldGhvZCIsIm1pbiIsIm1pbkxlbmd0aCIsIm11bHRpcGxlIiwibXV0ZWQiLCJub25jZSIsIm5vTW9kdWxlIiwibm9WYWxpZGF0ZSIsIm9uQWJvcnQiLCJvbkFmdGVyUHJpbnQiLCJvbkF1eENsaWNrIiwib25CZWZvcmVQcmludCIsIm9uQmVmb3JlVW5sb2FkIiwib25CbHVyIiwib25DYW5jZWwiLCJvbkNhblBsYXkiLCJvbkNhblBsYXlUaHJvdWdoIiwib25DaGFuZ2UiLCJvbkNsaWNrIiwib25DbG9zZSIsIm9uQ29udGV4dE1lbnUiLCJvbkNvcHkiLCJvbkN1ZUNoYW5nZSIsIm9uQ3V0Iiwib25EYmxDbGljayIsIm9uRHJhZyIsIm9uRHJhZ0VuZCIsIm9uRHJhZ0VudGVyIiwib25EcmFnRXhpdCIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJhZ1N0YXJ0Iiwib25Ecm9wIiwib25EdXJhdGlvbkNoYW5nZSIsIm9uRW1wdGllZCIsIm9uRW5kZWQiLCJvbkVycm9yIiwib25Gb2N1cyIsIm9uRm9ybURhdGEiLCJvbkhhc2hDaGFuZ2UiLCJvbklucHV0Iiwib25JbnZhbGlkIiwib25LZXlEb3duIiwib25LZXlQcmVzcyIsIm9uS2V5VXAiLCJvbkxhbmd1YWdlQ2hhbmdlIiwib25Mb2FkIiwib25Mb2FkZWREYXRhIiwib25Mb2FkZWRNZXRhZGF0YSIsIm9uTG9hZEVuZCIsIm9uTG9hZFN0YXJ0Iiwib25NZXNzYWdlIiwib25NZXNzYWdlRXJyb3IiLCJvbk1vdXNlRG93biIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsIm9uTW91c2VNb3ZlIiwib25Nb3VzZU91dCIsIm9uTW91c2VPdmVyIiwib25Nb3VzZVVwIiwib25PZmZsaW5lIiwib25PbmxpbmUiLCJvblBhZ2VIaWRlIiwib25QYWdlU2hvdyIsIm9uUGFzdGUiLCJvblBhdXNlIiwib25QbGF5Iiwib25QbGF5aW5nIiwib25Qb3BTdGF0ZSIsIm9uUHJvZ3Jlc3MiLCJvblJhdGVDaGFuZ2UiLCJvblJlamVjdGlvbkhhbmRsZWQiLCJvblJlc2V0Iiwib25SZXNpemUiLCJvblNjcm9sbCIsIm9uU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24iLCJvblNlZWtlZCIsIm9uU2Vla2luZyIsIm9uU2VsZWN0Iiwib25TdGFsbGVkIiwib25TdG9yYWdlIiwib25TdWJtaXQiLCJvblN1c3BlbmQiLCJvblRpbWVVcGRhdGUiLCJvblRvZ2dsZSIsIm9uVW5oYW5kbGVkUmVqZWN0aW9uIiwib25VbmxvYWQiLCJvblZvbHVtZUNoYW5nZSIsIm9uV2FpdGluZyIsIm9uV2hlZWwiLCJvcHRpbXVtIiwicGluZyIsInBsYXlzSW5saW5lIiwicG9zdGVyIiwicHJlbG9hZCIsInJlYWRPbmx5IiwicmVmZXJyZXJQb2xpY3kiLCJyZWwiLCJyZXF1aXJlZCIsInJldmVyc2VkIiwicm93U3BhbiIsInNhbmRib3giLCJzY29wZSIsInNjb3BlZCIsInNlYW1sZXNzIiwic2VsZWN0ZWQiLCJzaGFwZSIsInNpemVzIiwic2xvdCIsInNwYW4iLCJzcGVsbENoZWNrIiwic3JjRG9jIiwic3JjTGFuZyIsInNyY1NldCIsInN0eWxlIiwidGFiSW5kZXgiLCJ0cmFuc2xhdGUiLCJ0eXBlTXVzdE1hdGNoIiwidXNlTWFwIiwid2lkdGgiLCJhTGluayIsImFyY2hpdmUiLCJheGlzIiwiYmFja2dyb3VuZCIsImJnQ29sb3IiLCJib3JkZXIiLCJib3JkZXJDb2xvciIsImJvdHRvbU1hcmdpbiIsImNlbGxQYWRkaW5nIiwiY2VsbFNwYWNpbmciLCJjaGFyT2ZmIiwiY2xhc3NJZCIsImNsZWFyIiwiY29kZUJhc2UiLCJjb2RlVHlwZSIsImNvbG9yIiwiY29tcGFjdCIsImRlY2xhcmUiLCJmYWNlIiwiZnJhbWUiLCJmcmFtZUJvcmRlciIsImhTcGFjZSIsImxlZnRNYXJnaW4iLCJsb25nRGVzYyIsImxvd1NyYyIsIm1hcmdpbkhlaWdodCIsIm1hcmdpbldpZHRoIiwibm9SZXNpemUiLCJub0hyZWYiLCJub1NoYWRlIiwibm9XcmFwIiwicHJvZmlsZSIsInByb21wdCIsInJldiIsInJpZ2h0TWFyZ2luIiwicnVsZXMiLCJzY2hlbWUiLCJzY3JvbGxpbmciLCJzdGFuZGJ5Iiwic3VtbWFyeSIsInRvcE1hcmdpbiIsInZhbHVlVHlwZSIsInZlcnNpb24iLCJ2QWxpZ24iLCJ2TGluayIsInZTcGFjZSIsImFsbG93VHJhbnNwYXJlbmN5IiwiYXV0b0NvcnJlY3QiLCJhdXRvU2F2ZSIsImRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIiwic2VjdXJpdHkiLCJ1bnNlbGVjdGFibGUiLCJhY2NlbnRIZWlnaHQiLCJhbGlnbm1lbnRCYXNlbGluZSIsImFyYWJpY0Zvcm0iLCJiYXNlbGluZVNoaWZ0IiwiY2FwSGVpZ2h0IiwiY2xpcFBhdGgiLCJjbGlwUnVsZSIsImNvbG9ySW50ZXJwb2xhdGlvbiIsImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMiLCJjb2xvclByb2ZpbGUiLCJjb2xvclJlbmRlcmluZyIsImRhdGFUeXBlIiwiZG9taW5hbnRCYXNlbGluZSIsImVuYWJsZUJhY2tncm91bmQiLCJmaWxsT3BhY2l0eSIsImZpbGxSdWxlIiwiZmxvb2RDb2xvciIsImZsb29kT3BhY2l0eSIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImZvbnRTaXplQWRqdXN0IiwiZm9udFN0cmV0Y2giLCJmb250U3R5bGUiLCJmb250VmFyaWFudCIsImZvbnRXZWlnaHQiLCJnbHlwaE5hbWUiLCJnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCIsImdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCIsImhvcml6QWR2WCIsImhvcml6T3JpZ2luWCIsImhvcml6T3JpZ2luWSIsImltYWdlUmVuZGVyaW5nIiwibGV0dGVyU3BhY2luZyIsImxpZ2h0aW5nQ29sb3IiLCJtYXJrZXJFbmQiLCJtYXJrZXJNaWQiLCJtYXJrZXJTdGFydCIsIm5hdkRvd24iLCJuYXZEb3duTGVmdCIsIm5hdkRvd25SaWdodCIsIm5hdkxlZnQiLCJuYXZOZXh0IiwibmF2UHJldiIsIm5hdlJpZ2h0IiwibmF2VXAiLCJuYXZVcExlZnQiLCJuYXZVcFJpZ2h0Iiwib25BY3RpdmF0ZSIsIm9uQmVnaW4iLCJvbkVuZCIsIm9uRm9jdXNJbiIsIm9uRm9jdXNPdXQiLCJvbk1vdXNlV2hlZWwiLCJvblJlcGVhdCIsIm9uU2hvdyIsIm9uWm9vbSIsIm92ZXJsaW5lUG9zaXRpb24iLCJvdmVybGluZVRoaWNrbmVzcyIsInBhaW50T3JkZXIiLCJwYW5vc2UxIiwicG9pbnRlckV2ZW50cyIsInJlbmRlcmluZ0ludGVudCIsInNoYXBlUmVuZGVyaW5nIiwic3RvcENvbG9yIiwic3RvcE9wYWNpdHkiLCJzdHJpa2V0aHJvdWdoUG9zaXRpb24iLCJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzIiwic3Ryb2tlRGFzaEFycmF5Iiwic3Ryb2tlRGFzaE9mZnNldCIsInN0cm9rZUxpbmVDYXAiLCJzdHJva2VMaW5lSm9pbiIsInN0cm9rZU1pdGVyTGltaXQiLCJzdHJva2VPcGFjaXR5Iiwic3Ryb2tlV2lkdGgiLCJ0ZXh0QW5jaG9yIiwidGV4dERlY29yYXRpb24iLCJ0ZXh0UmVuZGVyaW5nIiwidHlwZU9mIiwidW5kZXJsaW5lUG9zaXRpb24iLCJ1bmRlcmxpbmVUaGlja25lc3MiLCJ1bmljb2RlQmlkaSIsInVuaWNvZGVSYW5nZSIsInVuaXRzUGVyRW0iLCJ2QWxwaGFiZXRpYyIsInZIYW5naW5nIiwidklkZW9ncmFwaGljIiwidk1hdGhlbWF0aWNhbCIsInZlY3RvckVmZmVjdCIsInZlcnRBZHZZIiwidmVydE9yaWdpblgiLCJ2ZXJ0T3JpZ2luWSIsIndvcmRTcGFjaW5nIiwid3JpdGluZ01vZGUiLCJ4SGVpZ2h0IiwicGxheWJhY2tPcmRlciIsInRpbWVsaW5lQmVnaW4iLCJhYm91dCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFscGhhYmV0aWMiLCJhbXBsaXR1ZGUiLCJhc2NlbnQiLCJhdHRyaWJ1dGVOYW1lIiwiYXR0cmlidXRlVHlwZSIsImF6aW11dGgiLCJiYW5kd2lkdGgiLCJiYXNlRnJlcXVlbmN5IiwiYmFzZVByb2ZpbGUiLCJiYm94IiwiYmlhcyIsImJ5IiwiY2FsY01vZGUiLCJjbGlwIiwiY2xpcFBhdGhVbml0cyIsImNvbnRlbnRTY3JpcHRUeXBlIiwiY29udGVudFN0eWxlVHlwZSIsImN1cnNvciIsImN4IiwiY3kiLCJkIiwiZGVmYXVsdEFjdGlvbiIsImRlc2NlbnQiLCJkaWZmdXNlQ29uc3RhbnQiLCJkaXJlY3Rpb24iLCJkaXNwbGF5IiwiZHVyIiwiZGl2aXNvciIsImR4IiwiZHkiLCJlZGdlTW9kZSIsImVkaXRhYmxlIiwiZWxldmF0aW9uIiwiZXhwb25lbnQiLCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwiZmlsbCIsImZpbHRlclJlcyIsImZpbHRlclVuaXRzIiwiZm9jdXNhYmxlIiwiZm9jdXNIaWdobGlnaHQiLCJmciIsImZ4IiwiZnkiLCJnMSIsImcyIiwiZ2x5cGhSZWYiLCJncmFkaWVudFRyYW5zZm9ybSIsImdyYWRpZW50VW5pdHMiLCJoYW5kbGVyIiwiaGFuZ2luZyIsImhhdGNoQ29udGVudFVuaXRzIiwiaGF0Y2hVbml0cyIsImlkZW9ncmFwaGljIiwiaW5pdGlhbFZpc2liaWxpdHkiLCJpbiIsImluMiIsImludGVyY2VwdCIsImsiLCJrMSIsImsyIiwiazMiLCJrNCIsImtlcm5lbE1hdHJpeCIsImtlcm5lbFVuaXRMZW5ndGgiLCJrZXlQb2ludHMiLCJrZXlTcGxpbmVzIiwia2V5VGltZXMiLCJrZXJuaW5nIiwibGVuZ3RoQWRqdXN0IiwibGltaXRpbmdDb25lQW5nbGUiLCJsb2NhbCIsIm1hcmtlckhlaWdodCIsIm1hcmtlclVuaXRzIiwibWFya2VyV2lkdGgiLCJtYXNrQ29udGVudFVuaXRzIiwibWFza1VuaXRzIiwibWF0aGVtYXRpY2FsIiwibWVkaWFDaGFyYWN0ZXJFbmNvZGluZyIsIm1lZGlhQ29udGVudEVuY29kaW5ncyIsIm1lZGlhU2l6ZSIsIm1lZGlhVGltZSIsIm51bU9jdGF2ZXMiLCJvYnNlcnZlciIsIm9wYWNpdHkiLCJvcGVyYXRvciIsIm9yZGVyIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvdmVyZmxvdyIsIm92ZXJsYXkiLCJwYXRoIiwicGF0aExlbmd0aCIsInBhdHRlcm5Db250ZW50VW5pdHMiLCJwYXR0ZXJuVHJhbnNmb3JtIiwicGF0dGVyblVuaXRzIiwicGhhc2UiLCJwaXRjaCIsInBvaW50cyIsInBvaW50c0F0WCIsInBvaW50c0F0WSIsInBvaW50c0F0WiIsInByZXNlcnZlQWxwaGEiLCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwicHJpbWl0aXZlVW5pdHMiLCJwcm9wYWdhdGUiLCJyIiwicmFkaXVzIiwicmVmWCIsInJlZlkiLCJyZXBlYXRDb3VudCIsInJlcGVhdER1ciIsInJlcXVpcmVkRXh0ZW5zaW9ucyIsInJlcXVpcmVkRmVhdHVyZXMiLCJyZXF1aXJlZEZvbnRzIiwicmVxdWlyZWRGb3JtYXRzIiwicmVzb3VyY2UiLCJyZXN0YXJ0Iiwicm90YXRlIiwicngiLCJyeSIsInNjYWxlIiwic2VlZCIsInNpZGUiLCJzbG9wZSIsInNuYXBzaG90VGltZSIsInNwZWN1bGFyQ29uc3RhbnQiLCJzcGVjdWxhckV4cG9uZW50Iiwic3ByZWFkTWV0aG9kIiwic3BhY2luZyIsInN0ZERldmlhdGlvbiIsInN0ZW1oIiwic3RlbXYiLCJzdGl0Y2hUaWxlcyIsInN0cm9rZSIsInN1cmZhY2VTY2FsZSIsInN5bmNCZWhhdmlvciIsInN5bmNCZWhhdmlvckRlZmF1bHQiLCJzeW5jTWFzdGVyIiwic3luY1RvbGVyYW5jZSIsInN5bmNUb2xlcmFuY2VEZWZhdWx0Iiwic3lzdGVtTGFuZ3VhZ2UiLCJ0YWJsZVZhbHVlcyIsInRhcmdldFgiLCJ0YXJnZXRZIiwidGV4dExlbmd0aCIsInRyYW5zZm9ybUJlaGF2aW9yIiwidTEiLCJ1MiIsInZpZXdCb3giLCJ2aWV3VGFyZ2V0IiwidmlzaWJpbGl0eSIsIndpZHRocyIsIngxIiwieDIiLCJ4Q2hhbm5lbFNlbGVjdG9yIiwieSIsInkxIiwieTIiLCJ5Q2hhbm5lbFNlbGVjdG9yIiwieiIsInpvb21BbmRQYW4iLCJzY2hlbWEiLCJUeXBlIiwidmFsaWQiLCJkYXNoIiwiY2FtZWxjYXNlIiwiZGF0YXNldFRvUHJvcGVydHkiLCJjYXAiLCJrZWJhYiIsImRhdGFzZXRUb0F0dHJpYnV0ZSIsIiQwIiwic2VsZWN0b3IiLCJkZWZhdWx0VGFnTmFtZSIsImRvdCIsIm51bWJlclNpZ24iLCJlbXB0eSIsIndoaXRlU3BhY2UiLCJjb21tYSIsInBhZExlZnQiLCJwYWRSaWdodCIsInNwYWNlcyIsInBhcnNlIiwiY29tbWFzIiwiYWRqdXN0IiwiY3JlYXRlQWRqdXN0TWFwIiwicGFyc2VTZWxlY3RvciIsImlzTm9kZSIsImlzQ2hpbGRyZW4iLCJhZGRQcm9wZXJ0eSIsImFkZENoaWxkIiwiZmluZCIsInBhcnNlUHJpbWl0aXZlIiwicGFyc2VQcmltaXRpdmVzIiwicG9zaXRpdmVOdW1iZXIiLCJzdmciLCJtZXNzYWdlcyIsInZlcmJvc2UiLCIjZG9jdW1lbnQiLCIjZG9jdW1lbnQtZnJhZ21lbnQiLCIjdGV4dCIsIiNjb21tZW50IiwiI2RvY3VtZW50VHlwZSIsInB1YmxpYyIsInN5c3RlbSIsIm9wZW5pbmciLCJjbG9zaW5nIiwiZG9jIiwicXVpcmtzTW9kZSIsImxhc3RJbmRleE9mIiwiQ09NTUVOVF9SRUdFWCIsIk5FV0xJTkVfUkVHRVgiLCJXSElURVNQQUNFX1JFR0VYIiwiUFJPUEVSVFlfUkVHRVgiLCJDT0xPTl9SRUdFWCIsIlZBTFVFX1JFR0VYIiwiU0VNSUNPTE9OX1JFR0VYIiwiVFJJTV9SRUdFWCIsIk5FV0xJTkUiLCJGT1JXQVJEX1NMQVNIIiwiQVNURVJJU0siLCJFTVBUWV9TVFJJTkciLCJUWVBFX0NPTU1FTlQiLCJUWVBFX0RFQ0xBUkFUSU9OIiwibGluZW5vIiwidXBkYXRlUG9zaXRpb24iLCJsaW5lcyIsIlBvc2l0aW9uIiwibXNnIiwicmVhc29uIiwiZmlsZW5hbWUiLCJtIiwiY29tbWVudHMiLCJjb21tZW50IiwiZGVjbGFyYXRpb24iLCJkZWNsIiwiZGVjbHMiLCJkZWNsYXJhdGlvbnMiLCJpdGVyYXRvciIsIm91dHB1dCIsImhhc0l0ZXJhdG9yIiwibGVuIiwiZGFzaGVzIiwidiIsInZkIiwicmVhY3QiLCJjb250ZXh0IiwiX2lzVnVlIiwidnVlIiwidmRvbSIsInRvSCIsInBhcmVudFNjaGVtYSIsImVsZW1lbnRzIiwic3R5bGVSZXBsYWNlciIsInN0eWxlQ2FzZSIsInBhcnNlU3R5bGUiLCJoeXBlcnNjcmlwdCIsImNsZWFudXAiLCJzdWJwcm9wIiwiaHlwZXJsaWtlIiwiaGFzdFRvUmVhY3QiLCIkMSIsImludmFsaWQiLCJ1bmtub3duIiwibm9vcCIsIkZ1bmN0aW9uIiwiaWdub3JlZFNwYWNlcyIsInp3aXRjaCIsInBhdGNoIiwicDUiLCJzaGFsbG93IiwiYXR0ciIsImxvY2F0aW9uVHJhY2tlciIsInBhcnNlT3B0aW9ucyIsInZvaWRzIiwiY3JlYXRlUGFyc2U1TG9jYXRpb24iLCJ0b1BhcnNlNSIsImVuZFRhZ1Rva2VuIiwiZGF0YVN0YXRlIiwiY2hhcmFjdGVyVG9rZW4iLCJjb21tZW50VG9rZW4iLCJkb2N0eXBlVG9rZW4iLCJmcm9tUGFyc2U1IiwibW9jayIsImluVGVtcGxhdGVNb2RlIiwibW9kdWxlcyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJnZXR0ZXIiLCJvIiwiZ2V0IiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJfX2VzTW9kdWxlIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIlNvdXJjZUxvY2F0aW9uIiwibGV4ZXIiLCJmaXJzdCIsInNlY29uZCIsIlRva2VuX1Rva2VuIiwiVG9rZW4iLCJlbmRUb2tlbiIsIlBhcnNlRXJyb3IiLCJ1bmRlcmxpbmVkIiwiX19wcm90b19fIiwic3JjX1BhcnNlRXJyb3IiLCJ1cHBlcmNhc2UiLCJFU0NBUEVfTE9PS1VQIiwiJiIsIj4iLCI8IiwiXCIiLCInIiwiRVNDQVBFX1JFR0VYIiwiZ2V0QmFzZUVsZW0iLCJncm91cCIsImJvZHkiLCJ1dGlscyIsImVsZW0iLCJkZWZsdCIsInNldHRpbmciLCJkZWZhdWx0SWZVbmRlZmluZWQiLCJoeXBoZW5hdGUiLCJpc0NoYXJhY3RlckJveCIsImJhc2VFbGVtIiwicHJvdG9jb2xGcm9tVXJsIiwicHJvdG9jb2wiLCJTZXR0aW5nc19TZXR0aW5ncyIsIlNldHRpbmdzIiwiZGlzcGxheU1vZGUiLCJsZXFubyIsImZsZXFuIiwidGhyb3dPbkVycm9yIiwiZXJyb3JDb2xvciIsIm1hY3JvcyIsIm1pblJ1bGVUaGlja25lc3MiLCJjb2xvcklzVGV4dENvbG9yIiwic3RyaWN0IiwidHJ1c3QiLCJtYXhTaXplIiwibWF4RXhwYW5kIiwiSW5maW5pdHkiLCJfcHJvdG8iLCJyZXBvcnROb25zdHJpY3QiLCJlcnJvckNvZGUiLCJlcnJvck1zZyIsIndhcm4iLCJ1c2VTdHJpY3RCZWhhdmlvciIsImlzVHJ1c3RlZCIsIlN0eWxlIiwiY3JhbXBlZCIsInN1cCIsIlN0eWxlX3N0eWxlcyIsIl9zdXAiLCJzdWIiLCJfc3ViIiwiZnJhY051bSIsIl9mcmFjTnVtIiwiZnJhY0RlbiIsIl9mcmFjRGVuIiwiY3JhbXAiLCJfY3JhbXAiLCJfdGV4dCIsImlzVGlnaHQiLCJzcmNfU3R5bGUiLCJESVNQTEFZIiwiVEVYVCIsIlNDUklQVFNDUklQVCIsInNjcmlwdERhdGEiLCJhbGxCbG9ja3MiLCJzdXBwb3J0ZWRDb2RlcG9pbnQiLCJjb2RlcG9pbnQiLCJiIiwic3ZnR2VvbWV0cnlfcGF0aCIsImRvdWJsZWxlZnRhcnJvdyIsImRvdWJsZXJpZ2h0YXJyb3ciLCJsZWZ0YXJyb3ciLCJsZWZ0YnJhY2UiLCJsZWZ0YnJhY2V1bmRlciIsImxlZnRncm91cCIsImxlZnRncm91cHVuZGVyIiwibGVmdGhhcnBvb24iLCJsZWZ0aGFycG9vbnBsdXMiLCJsZWZ0aGFycG9vbmRvd24iLCJsZWZ0aGFycG9vbmRvd25wbHVzIiwibGVmdGhvb2siLCJsZWZ0bGluZXNlZ21lbnQiLCJsZWZ0bWFwc3RvIiwibGVmdFRvRnJvbSIsImxvbmdlcXVhbCIsIm1pZGJyYWNlIiwibWlkYnJhY2V1bmRlciIsIm9paW50U2l6ZTEiLCJvaWludFNpemUyIiwib2lpaW50U2l6ZTEiLCJvaWlpbnRTaXplMiIsInJpZ2h0YXJyb3ciLCJyaWdodGJyYWNlIiwicmlnaHRicmFjZXVuZGVyIiwicmlnaHRncm91cCIsInJpZ2h0Z3JvdXB1bmRlciIsInJpZ2h0aGFycG9vbiIsInJpZ2h0aGFycG9vbnBsdXMiLCJyaWdodGhhcnBvb25kb3duIiwicmlnaHRoYXJwb29uZG93bnBsdXMiLCJyaWdodGhvb2siLCJyaWdodGxpbmVzZWdtZW50IiwicmlnaHRUb0Zyb20iLCJ0d29oZWFkbGVmdGFycm93IiwidHdvaGVhZHJpZ2h0YXJyb3ciLCJ0aWxkZTEiLCJ0aWxkZTIiLCJ0aWxkZTMiLCJ0aWxkZTQiLCJ2ZWMiLCJ3aWRlaGF0MSIsIndpZGVoYXQyIiwid2lkZWhhdDMiLCJ3aWRlaGF0NCIsIndpZGVjaGVjazEiLCJ3aWRlY2hlY2syIiwid2lkZWNoZWNrMyIsIndpZGVjaGVjazQiLCJiYXJhYm92ZWxlZnRhcnJvdyIsInJpZ2h0YXJyb3dhYm92ZWJhciIsImJhcmFib3Zlc2hvcnRsZWZ0aGFycG9vbiIsInJpZ2h0aGFycG9vbmFib3Zlc2hvcnRiYXIiLCJzaG9ydGJhcmFib3ZlbGVmdGhhcnBvb24iLCJzaG9ydHJpZ2h0aGFycG9vbmFib3ZlYmFyIiwidHJlZV9Eb2N1bWVudEZyYWdtZW50IiwiRG9jdW1lbnRGcmFnbWVudCIsIm1heEZvbnRTaXplIiwiaGFzQ2xhc3MiLCJ0b05vZGUiLCJmcmFnIiwidG9NYXJrdXAiLCJtYXJrdXAiLCJ0b1RleHQiLCJjcmVhdGVDbGFzcyIsImNscyIsImluaXROb2RlIiwiZ2V0Q29sb3IiLCJfdG9Ob2RlIiwic2V0QXR0cmlidXRlIiwiX3RvTWFya3VwIiwic3R5bGVzIiwiZG9tVHJlZV9TcGFuIiwiU3BhbiIsImRvbVRyZWVfQW5jaG9yIiwiQW5jaG9yIiwiX3Byb3RvMiIsImRvbVRyZWVfSW1nIiwiSW1nIiwiX3Byb3RvMyIsImlDb21iaW5hdGlvbnMiLCLDriIsIsOvIiwiw60iLCLDrCIsImRvbVRyZWVfU3ltYm9sTm9kZSIsIlN5bWJvbE5vZGUiLCJpdGFsaWMiLCJza2V3IiwiX2kiLCJzY3JpcHRGcm9tQ29kZXBvaW50IiwiX3Byb3RvNCIsIm1hcmdpblJpZ2h0IiwibmVlZHNTcGFuIiwiU3ZnTm9kZSIsIl9wcm90bzUiLCJkb21UcmVlX1BhdGhOb2RlIiwiUGF0aE5vZGUiLCJwYXRoTmFtZSIsImFsdGVybmF0ZSIsIl9wcm90bzYiLCJMaW5lTm9kZSIsIl9wcm90bzciLCJhc3NlcnRTeW1ib2xEb21Ob2RlIiwiZm9udE1ldHJpY3NEYXRhIiwiQU1TLVJlZ3VsYXIiLCI2NSIsIjY2IiwiNjciLCI2OCIsIjY5IiwiNzAiLCI3MSIsIjcyIiwiNzMiLCI3NCIsIjc1IiwiNzYiLCI3NyIsIjc4IiwiNzkiLCI4MCIsIjgxIiwiODIiLCI4MyIsIjg0IiwiODUiLCI4NiIsIjg3IiwiODgiLCI4OSIsIjkwIiwiMTA3IiwiMTY1IiwiMTc0IiwiMjQwIiwiMjk1IiwiNzEwIiwiNzMyIiwiNzcwIiwiNzcxIiwiOTg5IiwiMTAwOCIsIjgyNDUiLCI4NDYzIiwiODQ4NyIsIjg0OTgiLCI4NTAyIiwiODUwMyIsIjg1MDQiLCI4NTEzIiwiODU5MiIsIjg1OTQiLCI4NjAyIiwiODYwMyIsIjg2MDYiLCI4NjA4IiwiODYxMCIsIjg2MTEiLCI4NjE5IiwiODYyMCIsIjg2MjEiLCI4NjIyIiwiODYyNCIsIjg2MjUiLCI4NjMwIiwiODYzMSIsIjg2MzQiLCI4NjM1IiwiODYzOCIsIjg2MzkiLCI4NjQyIiwiODY0MyIsIjg2NDQiLCI4NjQ2IiwiODY0NyIsIjg2NDgiLCI4NjQ5IiwiODY1MCIsIjg2NTEiLCI4NjUyIiwiODY1MyIsIjg2NTQiLCI4NjU1IiwiODY2NiIsIjg2NjciLCI4NjY5IiwiODY3MiIsIjg2NzQiLCI4NzA1IiwiODcwOCIsIjg3MDkiLCI4NzE3IiwiODcyMiIsIjg3MjQiLCI4NzI2IiwiODczMyIsIjg3MzYiLCI4NzM3IiwiODczOCIsIjg3MzkiLCI4NzQwIiwiODc0MSIsIjg3NDIiLCI4NzU2IiwiODc1NyIsIjg3NjQiLCI4NzY1IiwiODc2OSIsIjg3NzAiLCI4Nzc0IiwiODc3NiIsIjg3NzgiLCI4NzgyIiwiODc4MyIsIjg3ODUiLCI4Nzg2IiwiODc4NyIsIjg3OTAiLCI4NzkxIiwiODc5NiIsIjg4MDYiLCI4ODA3IiwiODgwOCIsIjg4MDkiLCI4ODEyIiwiODgxNCIsIjg4MTUiLCI4ODE2IiwiODgxNyIsIjg4MTgiLCI4ODE5IiwiODgyMiIsIjg4MjMiLCI4ODI4IiwiODgyOSIsIjg4MzAiLCI4ODMxIiwiODgzMiIsIjg4MzMiLCI4ODQwIiwiODg0MSIsIjg4NDIiLCI4ODQzIiwiODg0NyIsIjg4NDgiLCI4ODU4IiwiODg1OSIsIjg4NjEiLCI4ODYyIiwiODg2MyIsIjg4NjQiLCI4ODY1IiwiODg3MiIsIjg4NzMiLCI4ODc0IiwiODg3NiIsIjg4NzciLCI4ODc4IiwiODg3OSIsIjg4ODIiLCI4ODgzIiwiODg4NCIsIjg4ODUiLCI4ODg4IiwiODg5MCIsIjg4OTEiLCI4ODkyIiwiODkwMSIsIjg5MDMiLCI4OTA1IiwiODkwNiIsIjg5MDciLCI4OTA4IiwiODkwOSIsIjg5MTAiLCI4OTExIiwiODkxMiIsIjg5MTMiLCI4OTE0IiwiODkxNSIsIjg5MTYiLCI4OTE4IiwiODkxOSIsIjg5MjAiLCI4OTIxIiwiODkyMiIsIjg5MjMiLCI4OTI2IiwiODkyNyIsIjg5MjgiLCI4OTI5IiwiODkzNCIsIjg5MzUiLCI4OTM2IiwiODkzNyIsIjg5MzgiLCI4OTM5IiwiODk0MCIsIjg5NDEiLCI4OTk0IiwiODk5NSIsIjk0MTYiLCI5NDg0IiwiOTQ4OCIsIjk0OTIiLCI5NDk2IiwiOTU4NSIsIjk1ODYiLCI5NjMyIiwiOTYzMyIsIjk2NTAiLCI5NjUxIiwiOTY1NCIsIjk2NjAiLCI5NjYxIiwiOTY2NCIsIjk2NzQiLCI5NzMzIiwiMTAwMDMiLCIxMDAxNiIsIjEwNzMxIiwiMTA4NDYiLCIxMDg3NyIsIjEwODc4IiwiMTA4ODUiLCIxMDg4NiIsIjEwODg3IiwiMTA4ODgiLCIxMDg4OSIsIjEwODkwIiwiMTA4OTEiLCIxMDg5MiIsIjEwOTAxIiwiMTA5MDIiLCIxMDkzMyIsIjEwOTM0IiwiMTA5MzUiLCIxMDkzNiIsIjEwOTM3IiwiMTA5MzgiLCIxMDk0OSIsIjEwOTUwIiwiMTA5NTUiLCIxMDk1NiIsIjU3MzUwIiwiNTczNTEiLCI1NzM1MiIsIjU3MzUzIiwiNTczNTYiLCI1NzM1NyIsIjU3MzU4IiwiNTczNTkiLCI1NzM2MCIsIjU3MzYxIiwiNTczNjYiLCI1NzM2NyIsIjU3MzY4IiwiNTczNjkiLCI1NzM3MCIsIjU3MzcxIiwiQ2FsaWdyYXBoaWMtUmVndWxhciIsIjQ4IiwiNDkiLCI1MCIsIjUxIiwiNTIiLCI1MyIsIjU0IiwiNTUiLCI1NiIsIjU3IiwiRnJha3R1ci1SZWd1bGFyIiwiMzMiLCIzNCIsIjM4IiwiMzkiLCI0MCIsIjQxIiwiNDIiLCI0MyIsIjQ0IiwiNDUiLCI0NiIsIjQ3IiwiNTgiLCI1OSIsIjYxIiwiNjMiLCI5MSIsIjkzIiwiOTQiLCI5NyIsIjk4IiwiOTkiLCIxMDAiLCIxMDEiLCIxMDIiLCIxMDMiLCIxMDQiLCIxMDUiLCIxMDYiLCIxMDgiLCIxMDkiLCIxMTAiLCIxMTEiLCIxMTIiLCIxMTMiLCIxMTQiLCIxMTUiLCIxMTYiLCIxMTciLCIxMTgiLCIxMTkiLCIxMjAiLCIxMjEiLCIxMjIiLCI4MjE2IiwiODIxNyIsIjU4MTEyIiwiNTgxMTMiLCI1ODExNCIsIjU4MTE1IiwiNTgxMTYiLCI1ODExNyIsIjU4MTE4IiwiNTgxMTkiLCJNYWluLUJvbGQiLCIzNSIsIjM2IiwiMzciLCI2MCIsIjYyIiwiNjQiLCI5MiIsIjk1IiwiMTIzIiwiMTI0IiwiMTI1IiwiMTI2IiwiMTY4IiwiMTcyIiwiMTc2IiwiMTc3IiwiMTg0IiwiMTk4IiwiMjE1IiwiMjE2IiwiMjIzIiwiMjMwIiwiMjQ3IiwiMjQ4IiwiMzA1IiwiMzM4IiwiMzM5IiwiNTY3IiwiNzExIiwiNzEzIiwiNzE0IiwiNzE1IiwiNzI4IiwiNzI5IiwiNzMwIiwiNzMzIiwiOTE1IiwiOTE2IiwiOTIwIiwiOTIzIiwiOTI2IiwiOTI4IiwiOTMxIiwiOTMzIiwiOTM0IiwiOTM2IiwiOTM3IiwiODIxMSIsIjgyMTIiLCI4MjIwIiwiODIyMSIsIjgyMjQiLCI4MjI1IiwiODI0MiIsIjg0MDciLCI4NDY1IiwiODQ2NyIsIjg0NzIiLCI4NDc2IiwiODUwMSIsIjg1OTMiLCI4NTk1IiwiODU5NiIsIjg1OTciLCI4NTk4IiwiODU5OSIsIjg2MDAiLCI4NjAxIiwiODYzNiIsIjg2MzciLCI4NjQwIiwiODY0MSIsIjg2NTYiLCI4NjU3IiwiODY1OCIsIjg2NTkiLCI4NjYwIiwiODY2MSIsIjg3MDQiLCI4NzA2IiwiODcwNyIsIjg3MTEiLCI4NzEyIiwiODcxNSIsIjg3MjMiLCI4NzI1IiwiODcyNyIsIjg3MjgiLCI4NzI5IiwiODczMCIsIjg3MzQiLCI4NzQzIiwiODc0NCIsIjg3NDUiLCI4NzQ2IiwiODc0NyIsIjg3NjgiLCI4NzcxIiwiODc4MSIsIjg4MDEiLCI4ODA0IiwiODgwNSIsIjg4MTAiLCI4ODExIiwiODgyNiIsIjg4MjciLCI4ODM0IiwiODgzNSIsIjg4MzgiLCI4ODM5IiwiODg0NiIsIjg4NDkiLCI4ODUwIiwiODg1MSIsIjg4NTIiLCI4ODUzIiwiODg1NCIsIjg4NTUiLCI4ODU2IiwiODg1NyIsIjg4NjYiLCI4ODY3IiwiODg2OCIsIjg4NjkiLCI4OTAwIiwiODkwMiIsIjg5NjgiLCI4OTY5IiwiODk3MCIsIjg5NzEiLCI5NjU3IiwiOTY2NyIsIjk3MTEiLCI5ODI0IiwiOTgyNSIsIjk4MjYiLCI5ODI3IiwiOTgzNyIsIjk4MzgiLCI5ODM5IiwiMTAyMTYiLCIxMDIxNyIsIjEwODE1IiwiMTA5MjciLCIxMDkyOCIsIjU3Mzc2IiwiTWFpbi1Cb2xkSXRhbGljIiwiMTYzIiwiTWFpbi1JdGFsaWMiLCJNYWluLVJlZ3VsYXIiLCIzMiIsIjE2MCIsIjE2NyIsIjE4MiIsIjgyMzAiLCI4NjE0IiwiODYxNyIsIjg2MTgiLCI4NzczIiwiODc4NCIsIjg5MDQiLCI4OTQyIiwiODk0MyIsIjg5NDUiLCI5MTM2IiwiOTEzNyIsIjEwMjIyIiwiMTAyMjMiLCIxMDIyOSIsIjEwMjMwIiwiMTAyMzEiLCIxMDIzMiIsIjEwMjMzIiwiMTAyMzQiLCIxMDIzNiIsIk1hdGgtQm9sZEl0YWxpYyIsIjk0NSIsIjk0NiIsIjk0NyIsIjk0OCIsIjk0OSIsIjk1MCIsIjk1MSIsIjk1MiIsIjk1MyIsIjk1NCIsIjk1NSIsIjk1NiIsIjk1NyIsIjk1OCIsIjk1OSIsIjk2MCIsIjk2MSIsIjk2MiIsIjk2MyIsIjk2NCIsIjk2NSIsIjk2NiIsIjk2NyIsIjk2OCIsIjk2OSIsIjk3NyIsIjk4MSIsIjk4MiIsIjEwMDkiLCIxMDEzIiwiTWF0aC1JdGFsaWMiLCJNYXRoLVJlZ3VsYXIiLCJTYW5zU2VyaWYtQm9sZCIsIjE4MCIsIlNhbnNTZXJpZi1JdGFsaWMiLCJTYW5zU2VyaWYtUmVndWxhciIsIlNjcmlwdC1SZWd1bGFyIiwiU2l6ZTEtUmVndWxhciIsIjgyMTQiLCI4NzE5IiwiODcyMCIsIjg3MjEiLCI4NzQ4IiwiODc0OSIsIjg3NTAiLCI4ODk2IiwiODg5NyIsIjg4OTgiLCI4ODk5IiwiOTE2OCIsIjEwNzUyIiwiMTA3NTMiLCIxMDc1NCIsIjEwNzU2IiwiMTA3NTgiLCJTaXplMi1SZWd1bGFyIiwiU2l6ZTMtUmVndWxhciIsIlNpemU0LVJlZ3VsYXIiLCI5MTE1IiwiOTExNiIsIjkxMTciLCI5MTE4IiwiOTExOSIsIjkxMjAiLCI5MTIxIiwiOTEyMiIsIjkxMjMiLCI5MTI0IiwiOTEyNSIsIjkxMjYiLCI5MTI3IiwiOTEyOCIsIjkxMjkiLCI5MTMwIiwiOTEzMSIsIjkxMzIiLCI5MTMzIiwiOTE0MyIsIjU3MzQ0IiwiNTczNDUiLCI1NzY4MCIsIjU3NjgxIiwiNTc2ODIiLCI1NzY4MyIsIlR5cGV3cml0ZXItUmVndWxhciIsIjk2IiwiMTI3IiwiNzc2IiwiOTI1MSIsInNpZ21hc0FuZFhpcyIsInNsYW50Iiwic3RyZXRjaCIsInNocmluayIsInF1YWQiLCJleHRyYVNwYWNlIiwibnVtMSIsIm51bTIiLCJudW0zIiwiZGVub20xIiwiZGVub20yIiwic3VwMSIsInN1cDIiLCJzdXAzIiwic3ViMSIsInN1YjIiLCJzdXBEcm9wIiwic3ViRHJvcCIsImRlbGltMSIsImRlbGltMiIsImF4aXNIZWlnaHQiLCJkZWZhdWx0UnVsZVRoaWNrbmVzcyIsImJpZ09wU3BhY2luZzEiLCJiaWdPcFNwYWNpbmcyIiwiYmlnT3BTcGFjaW5nMyIsImJpZ09wU3BhY2luZzQiLCJiaWdPcFNwYWNpbmc1Iiwic3FydFJ1bGVUaGlja25lc3MiLCJwdFBlckVtIiwiZG91YmxlUnVsZVNlcCIsImFycmF5UnVsZVdpZHRoIiwiZmJveHNlcCIsImZib3hydWxlIiwiZXh0cmFDaGFyYWN0ZXJNYXAiLCLDhSIsIsOHIiwiw5AiLCLDniIsIsOlIiwiw6ciLCLDsCIsIsO+Iiwi0JAiLCLQkSIsItCSIiwi0JMiLCLQlCIsItCVIiwi0JYiLCLQlyIsItCYIiwi0JkiLCLQmiIsItCbIiwi0JwiLCLQnSIsItCeIiwi0J8iLCLQoCIsItChIiwi0KIiLCLQoyIsItCkIiwi0KUiLCLQpiIsItCnIiwi0KgiLCLQqSIsItCqIiwi0KsiLCLQrCIsItCtIiwi0K4iLCLQryIsItCwIiwi0LEiLCLQsiIsItCzIiwi0LQiLCLQtSIsItC2Iiwi0LciLCLQuCIsItC5Iiwi0LoiLCLQuyIsItC8Iiwi0L0iLCLQviIsItC/Iiwi0YAiLCLRgSIsItGCIiwi0YMiLCLRhCIsItGFIiwi0YYiLCLRhyIsItGIIiwi0YkiLCLRiiIsItGLIiwi0YwiLCLRjSIsItGOIiwi0Y8iLCJnZXRDaGFyYWN0ZXJNZXRyaWNzIiwiZm9udCIsIm1ldHJpY3MiLCJmb250TWV0cmljc0J5U2l6ZUluZGV4IiwiQVRPTVMiLCJiaW4iLCJwdW5jdCIsIk5PTl9BVE9NUyIsImFjY2VudC10b2tlbiIsIm1hdGhvcmQiLCJvcC10b2tlbiIsInRleHRvcmQiLCJzcmNfc3ltYm9scyIsImRlZmluZVN5bWJvbCIsImFjY2VwdFVuaWNvZGVDaGFyIiwibWFpbiIsImFtcyIsImxpZ2F0dXJlcyIsIi0tIiwiLS0tIiwiYGAiLCInJyIsInN5bWJvbHNfaSIsInN5bWJvbHNfY2giLCJzcmNfc3ltYm9sc19pIiwiX2NoIiwibGV0dGVycyIsInN5bWJvbHNfaTIiLCJfY2gyIiwic3ltYm9sc193aWRlQ2hhciIsInN5bWJvbHNfaTMiLCJfY2gzIiwic3ltYm9sc19pNCIsIl9jaDQiLCJfaTUiLCJfY2g1Iiwid2lkZUxhdGluTGV0dGVyRGF0YSIsIndpZGVOdW1lcmFsRGF0YSIsInNpemVTdHlsZU1hcCIsInNpemVNdWx0aXBsaWVycyIsInNpemVBdFN0eWxlIiwiT3B0aW9uc19PcHRpb25zIiwiT3B0aW9ucyIsInRleHRTaXplIiwicGhhbnRvbSIsImZvbnRTaGFwZSIsInNpemVNdWx0aXBsaWVyIiwiX2ZvbnRNZXRyaWNzIiwiQkFTRVNJWkUiLCJleHRlbmQiLCJleHRlbnNpb24iLCJoYXZpbmdTdHlsZSIsImhhdmluZ0NyYW1wZWRTdHlsZSIsImhhdmluZ1NpemUiLCJoYXZpbmdCYXNlU3R5bGUiLCJ3YW50U2l6ZSIsImhhdmluZ0Jhc2VTaXppbmciLCJ3aXRoQ29sb3IiLCJ3aXRoUGhhbnRvbSIsIndpdGhGb250Iiwid2l0aFRleHRGb250RmFtaWx5Iiwid2l0aFRleHRGb250V2VpZ2h0Iiwid2l0aFRleHRGb250U2hhcGUiLCJzaXppbmdDbGFzc2VzIiwib2xkT3B0aW9ucyIsImJhc2VTaXppbmdDbGFzc2VzIiwiZm9udE1ldHJpY3MiLCJzaXplSW5kZXgiLCJjc3NFbVBlck11IiwiZ2V0R2xvYmFsTWV0cmljcyIsInNyY19PcHRpb25zIiwicHRQZXJVbml0IiwicHQiLCJtbSIsImNtIiwiYnAiLCJwYyIsImRkIiwiY2MiLCJuZCIsIm5jIiwic3AiLCJweCIsInJlbGF0aXZlVW5pdCIsImV4IiwiZW0iLCJtdSIsInZhbGlkVW5pdCIsInVuaXQiLCJ1bml0c19jYWxjdWxhdGVTaXplIiwic2l6ZVZhbHVlIiwidW5pdE9wdGlvbnMiLCJtYXRoaXRMZXR0ZXJzIiwiYnVpbGRDb21tb25fbG9va3VwU3ltYm9sIiwiZm9udE5hbWUiLCJidWlsZENvbW1vbl9tYWtlU3ltYm9sIiwic3ltYm9sTm9kZSIsImxvb2t1cCIsImJ1aWxkQ29tbW9uX2NhbkNvbWJpbmUiLCJfc3R5bGUiLCJzaXplRWxlbWVudEZyb21DaGlsZHJlbiIsImJ1aWxkQ29tbW9uX21ha2VTcGFuIiwiYnVpbGRDb21tb25fbWFrZVN2Z1NwYW4iLCJidWlsZENvbW1vbl9tYWtlRnJhZ21lbnQiLCJyZXRyaWV2ZVRleHRGb250TmFtZSIsImJhc2VGb250TmFtZSIsImZvbnRNYXAiLCJtYXRoYmYiLCJtYXRocm0iLCJ0ZXh0aXQiLCJtYXRoaXQiLCJtYXRoYmIiLCJtYXRoY2FsIiwibWF0aGZyYWsiLCJtYXRoc2NyIiwibWF0aHNmIiwibWF0aHR0Iiwic3ZnRGF0YSIsImJ1aWxkQ29tbW9uIiwibWFrZVN5bWJvbCIsIm1hdGhzeW0iLCJtYWtlU3BhbiIsIm1ha2VTdmdTcGFuIiwibWFrZUxpbmVTcGFuIiwidGhpY2tuZXNzIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJtYWtlQW5jaG9yIiwiYW5jaG9yIiwibWFrZUZyYWdtZW50Iiwid3JhcEZyYWdtZW50IiwibWFrZVZMaXN0IiwicGFyYW1zIiwiX2dldFZMaXN0Q2hpbGRyZW5BbmREIiwicG9zaXRpb25UeXBlIiwib2xkQ2hpbGRyZW4iLCJfZGVwdGgiLCJjdXJyUG9zIiwiZGlmZiIsImJvdHRvbSIsInBvc2l0aW9uRGF0YSIsImdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aCIsInBzdHJ1dFNpemUiLCJwc3RydXQiLCJyZWFsQ2hpbGRyZW4iLCJtaW5Qb3MiLCJtYXhQb3MiLCJfaTIiLCJfY2hpbGQiLCJfZWxlbSIsIndyYXBwZXJDbGFzc2VzIiwid3JhcHBlclN0eWxlIiwiY2hpbGRXcmFwIiwibWFyZ2luTGVmdCIsInZsaXN0IiwiZW1wdHlTcGFuIiwiZGVwdGhTdHJ1dCIsInRvcFN0cnV0IiwidnRhYmxlIiwibWFrZU9yZCIsImlzRm9udCIsImZvbnRPckZhbWlseSIsIl93aWRlQ2hhcmFjdGVyRm9udCIsIndpZGVDaGFyIiwiY29kZVBvaW50IiwiZmxvb3IiLCJ3aWRlX2NoYXJhY3Rlcl93aWRlQ2hhcmFjdGVyRm9udCIsIndpZGVGb250TmFtZSIsIndpZGVGb250Q2xhc3MiLCJmb250Q2xhc3NlcyIsImZvbnREYXRhIiwiZm9udENsYXNzIiwiYm9sZHN5bWJvbCIsInBhcnRzIiwiZm9udExvb2t1cCIsImJ1aWxkQ29tbW9uX21hdGhkZWZhdWx0IiwiX2ZvbnROYW1lIiwiX2ZvbnROYW1lMyIsIl9mb250TmFtZTIiLCJtYWtlR2x1ZSIsIm1lYXN1cmVtZW50Iiwic3RhdGljU3ZnIiwiX3N2Z0RhdGEkdmFsdWUiLCJzdmdOb2RlIiwidHJ5Q29tYmluZUNoYXJzIiwiYXNzZXJ0Tm9kZVR5cGUiLCJ0eXBlZE5vZGUiLCJjaGVja05vZGVUeXBlIiwiYXNzZXJ0QXRvbUZhbWlseSIsImZhbWlseSIsImNoZWNrQXRvbUZhbWlseSIsImFzc2VydFN5bWJvbE5vZGVUeXBlIiwiY2hlY2tTeW1ib2xOb2RlVHlwZSIsInRoaW5zcGFjZSIsIm1lZGl1bXNwYWNlIiwidGhpY2tzcGFjZSIsInNwYWNpbmdzIiwibW9yZCIsIm1vcCIsIm1iaW4iLCJtcmVsIiwibWlubmVyIiwibW9wZW4iLCJtY2xvc2UiLCJtcHVuY3QiLCJ0aWdodFNwYWNpbmdzIiwiX2Z1bmN0aW9ucyIsIl9odG1sR3JvdXBCdWlsZGVycyIsIl9tYXRobWxHcm91cEJ1aWxkZXJzIiwiZGVmaW5lRnVuY3Rpb24iLCJfcmVmIiwibmFtZXMiLCJodG1sQnVpbGRlciIsIm1hdGhtbEJ1aWxkZXIiLCJudW1BcmdzIiwiYXJnVHlwZXMiLCJncmVlZGluZXNzIiwiYWxsb3dlZEluVGV4dCIsImFsbG93ZWRJbk1hdGgiLCJudW1PcHRpb25hbEFyZ3MiLCJpbmZpeCIsImRlZmluZUZ1bmN0aW9uQnVpbGRlcnMiLCJfcmVmMiIsImRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50IiwiYnVpbGRIVE1MX21ha2VTcGFuIiwiYmluTGVmdENhbmNlbGxlciIsImJpblJpZ2h0Q2FuY2VsbGVyIiwic3R5bGVNYXAiLCJzY3JpcHRzY3JpcHQiLCJEb21FbnVtIiwiYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbiIsImlzUmVhbEdyb3VwIiwic3Vycm91bmRpbmciLCJncm91cHMiLCJidWlsZEhUTUxfYnVpbGRHcm91cCIsImdsdWVPcHRpb25zIiwiZHVtbXlQcmV2IiwiZHVtbXlOZXh0IiwidHJhdmVyc2VOb25TcGFjZU5vZGVzIiwicHJldlR5cGUiLCJnZXRUeXBlT2ZEb21UcmVlIiwiY2FsbGJhY2siLCJwYXJ0aWFsR3JvdXAiLCJidWlsZEhUTUxfY2hlY2tQYXJ0aWFsR3JvdXAiLCJnZXRPdXRlcm1vc3ROb2RlIiwibWFrZU51bGxEZWxpbWl0ZXIiLCJtb3JlQ2xhc3NlcyIsImJhc2VPcHRpb25zIiwiZ3JvdXBOb2RlIiwibXVsdGlwbGllciIsImJ1aWxkSFRNTFVuYnJlYWthYmxlIiwic3RydXQiLCJ2ZXJ0aWNhbEFsaWduIiwiYnVpbGRIVE1MIiwidGFnQ2hpbGQiLCJub2JyZWFrIiwiaHRtbE5vZGUiLCJuZXdEb2N1bWVudEZyYWdtZW50IiwibWF0aE1MVHJlZV9NYXRoTm9kZSIsIk1hdGhOb2RlIiwiZ2V0QXR0cmlidXRlIiwibWF0aE1MVHJlZV9UZXh0Tm9kZSIsIlRleHROb2RlIiwibWF0aE1MVHJlZSIsIlNwYWNlTm9kZSIsImJ1aWxkTWF0aE1MX21ha2VUZXh0IiwiYnVpbGRNYXRoTUxfbWFrZVJvdyIsImJ1aWxkTWF0aE1MX2dldFZhcmlhbnQiLCJidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24iLCJpc09yZGdyb3VwIiwiYnVpbGRNYXRoTUxfYnVpbGRHcm91cCIsImxhc3RHcm91cCIsIl9ncm91cCIsIl9sYXN0R3JvdXAkY2hpbGRyZW4iLCJfbGFzdEdyb3VwJGNoaWxkcmVuMiIsIl9sYXN0R3JvdXAkY2hpbGRyZW4zIiwibGFzdENoaWxkIiwiYnVpbGRFeHByZXNzaW9uUm93IiwiYnVpbGRNYXRoTUwiLCJ0ZXhFeHByZXNzaW9uIiwiZm9yTWF0aG1sT25seSIsIndyYXBwZXIiLCJhbm5vdGF0aW9uIiwic2VtYW50aWNzIiwid3JhcHBlckNsYXNzIiwiYnVpbGRUcmVlX29wdGlvbnNGcm9tU2V0dGluZ3MiLCJidWlsZFRyZWVfZGlzcGxheVdyYXAiLCJzdHJldGNoeUNvZGVQb2ludCIsIndpZGVoYXQiLCJ3aWRlY2hlY2siLCJ3aWRldGlsZGUiLCJ1dGlsZGUiLCJvdmVybGVmdGFycm93IiwidW5kZXJsZWZ0YXJyb3ciLCJ4bGVmdGFycm93Iiwib3ZlcnJpZ2h0YXJyb3ciLCJ1bmRlcnJpZ2h0YXJyb3ciLCJ4cmlnaHRhcnJvdyIsInVuZGVyYnJhY2UiLCJvdmVyYnJhY2UiLCJvdmVyZ3JvdXAiLCJ1bmRlcmdyb3VwIiwib3ZlcmxlZnRyaWdodGFycm93IiwidW5kZXJsZWZ0cmlnaHRhcnJvdyIsInhsZWZ0cmlnaHRhcnJvdyIsIk92ZXJyaWdodGFycm93IiwieFJpZ2h0YXJyb3ciLCJvdmVybGVmdGhhcnBvb24iLCJ4bGVmdGhhcnBvb251cCIsIm92ZXJyaWdodGhhcnBvb24iLCJ4cmlnaHRoYXJwb29udXAiLCJ4TGVmdGFycm93IiwieExlZnRyaWdodGFycm93IiwieGhvb2tsZWZ0YXJyb3ciLCJ4aG9va3JpZ2h0YXJyb3ciLCJ4bWFwc3RvIiwieHJpZ2h0aGFycG9vbmRvd24iLCJ4bGVmdGhhcnBvb25kb3duIiwieHJpZ2h0bGVmdGhhcnBvb25zIiwieGxlZnRyaWdodGhhcnBvb25zIiwieHR3b2hlYWRsZWZ0YXJyb3ciLCJ4dHdvaGVhZHJpZ2h0YXJyb3ciLCJ4bG9uZ2VxdWFsIiwieHRvZnJvbSIsInhyaWdodGxlZnRhcnJvd3MiLCJ4cmlnaHRlcXVpbGlicml1bSIsInhsZWZ0ZXF1aWxpYnJpdW0iLCJrYXRleEltYWdlc0RhdGEiLCJvdmVybGluZXNlZ21lbnQiLCJ1bmRlcmxpbmVzZWdtZW50IiwiZ3JvdXBMZW5ndGgiLCJzdHJldGNoeSIsInBhZCIsImltZyIsInRvdGFsSGVpZ2h0Iiwic3Ryb2tlLXdpZHRoIiwiX2J1aWxkU3ZnU3Bhbl8iLCJ2aWV3Qm94V2lkdGgiLCJ2aWV3Qm94SGVpZ2h0IiwiX2hlaWdodCIsIm51bUNoYXJzIiwiYmFzZSIsImltZ0luZGV4IiwibWluV2lkdGgiLCJ3aWR0aENsYXNzZXMiLCJhbGlnbnMiLCJzcGFucyIsInBhdGhzIiwiX21pbldpZHRoIiwiX3ZpZXdCb3hIZWlnaHQiLCJfaGVpZ2h0MiIsIm51bVN2Z0NoaWxkcmVuIiwiX3BhdGgiLCJfc3ZnTm9kZSIsIl9zcGFuIiwiYnVpbGRTdmdTcGFuXyIsImFjY2VudF9odG1sQnVpbGRlciIsImdycCIsInN1cFN1Ykdyb3VwIiwic3VwU3ViIiwiYXNzZXJ0U3BhbiIsImlzU2hpZnR5IiwiYmFzZUNoYXIiLCJhY2NlbnRCb2R5IiwiY2xlYXJhbmNlIiwiaXNTdHJldGNoeSIsImFjY2VudCIsImFjY2VudEZ1bGwiLCJhY2NlbnRXcmFwIiwiYWNjZW50X21hdGhtbEJ1aWxkZXIiLCJhY2NlbnROb2RlIiwiTk9OX1NUUkVUQ0hZX0FDQ0VOVF9SRUdFWCIsImZ1bmNOYW1lIiwiaW5uZXJHcm91cCIsImtlcm4iLCJhcnJvd19wYWRkZWROb2RlIiwib3B0QXJncyIsImJlbG93IiwibG93ZXJHcm91cCIsIm5ld09wdGlvbnMiLCJ1cHBlckdyb3VwIiwiYXJyb3dCb2R5IiwiYXJyb3dTaGlmdCIsInVwcGVyU2hpZnQiLCJsb3dlclNoaWZ0IiwiYXJyb3dOb2RlIiwidXBwZXJOb2RlIiwibG93ZXJOb2RlIiwiX2xvd2VyTm9kZSIsImNvbG9yX2h0bWxCdWlsZGVyIiwiY29sb3JfbWF0aG1sQnVpbGRlciIsImJyZWFrT25Ub2tlblRleHQiLCJndWxsZXQiLCJzZXQiLCJwYXJzZUV4cHJlc3Npb24iLCJuZXdSb3ciLCJuZXdMaW5lIiwibWFyZ2luVG9wIiwiZGVsaW1pdGVyX2dldE1ldHJpY3MiLCJkZWxpbWl0ZXJfc3R5bGVXcmFwIiwiZGVsaW0iLCJ0b1N0eWxlIiwiZGVsaW1TaXplTXVsdGlwbGllciIsImNlbnRlclNwYW4iLCJkZWxpbWl0ZXJfbWFrZUxhcmdlRGVsaW0iLCJjZW50ZXIiLCJkZWxpbWl0ZXJfbWF0aHJtU2l6ZSIsImRlbGltaXRlcl9tYWtlSW5uZXIiLCJzaXplQ2xhc3MiLCJsYXAiLCJkZWxpbWl0ZXJfbWFrZVN0YWNrZWREZWxpbSIsImhlaWdodFRvdGFsIiwibWlkZGxlIiwidG9wTWV0cmljcyIsInRvcEhlaWdodFRvdGFsIiwicmVwZWF0TWV0cmljcyIsInJlcGVhdEhlaWdodFRvdGFsIiwiYm90dG9tTWV0cmljcyIsImJvdHRvbUhlaWdodFRvdGFsIiwibWlkZGxlSGVpZ2h0VG90YWwiLCJtaWRkbGVGYWN0b3IiLCJtaWRkbGVNZXRyaWNzIiwibWluSGVpZ2h0IiwiY2VpbCIsInJlYWxIZWlnaHRUb3RhbCIsInNoaWZ0T2ZFeHRyYUVsZW1lbnQiLCJpbm5lcnMiLCJkZWxpbWl0ZXJfc3FydFN2ZyIsInNxcnROYW1lIiwiZXh0cmFWaW5pY3VsdW0iLCJoTGluZVBhZCIsInNxcnRNYWluIiwic3FydFNpemUxIiwic3FydFNpemUyIiwic3FydFNpemUzIiwic3FydFNpemU0Iiwic3FydFRhbGwiLCJzcXJ0UGF0aCIsInBhdGhOb2RlIiwic3RhY2tMYXJnZURlbGltaXRlcnMiLCJzdGFja0Fsd2F5c0RlbGltaXRlcnMiLCJzdGFja05ldmVyRGVsaW1pdGVycyIsInNpemVUb01heEhlaWdodCIsInN0YWNrTmV2ZXJEZWxpbWl0ZXJTZXF1ZW5jZSIsInN0YWNrQWx3YXlzRGVsaW1pdGVyU2VxdWVuY2UiLCJzdGFja0xhcmdlRGVsaW1pdGVyU2VxdWVuY2UiLCJkZWxpbVR5cGVUb0ZvbnQiLCJ0cmF2ZXJzZVNlcXVlbmNlIiwic2VxdWVuY2UiLCJoZWlnaHREZXB0aCIsImRlbGltaXRlcl9tYWtlQ3VzdG9tU2l6ZWREZWxpbSIsImRlbGltVHlwZSIsImRlbGltaXRlcl9tYWtlU21hbGxEZWxpbSIsImRlbGltaXRlciIsImFkdmFuY2VXaWR0aCIsInNwYW5IZWlnaHQiLCJ0ZXhIZWlnaHQiLCJydWxlV2lkdGgiLCJkZWxpbWl0ZXJFeHRlbmQiLCJtYXhEaXN0RnJvbUF4aXMiLCJkZWxpbWl0ZXJTaXplcyIsIlxcYmlnbCIsIm1jbGFzcyIsIlxcQmlnbCIsIlxcYmlnZ2wiLCJcXEJpZ2dsIiwiXFxiaWdyIiwiXFxCaWdyIiwiXFxiaWdnciIsIlxcQmlnZ3IiLCJcXGJpZ20iLCJcXEJpZ20iLCJcXGJpZ2dtIiwiXFxCaWdnbSIsIlxcYmlnIiwiXFxCaWciLCJcXGJpZ2ciLCJcXEJpZ2ciLCJkZWxpbWl0ZXJzIiwiY2hlY2tEZWxpbWl0ZXIiLCJzeW1EZWxpbSIsImFzc2VydFBhcnNlZCIsImxlZnRyaWdodERlcHRoIiwiZXhwZWN0IiwicGFyc2VGdW5jdGlvbiIsInJpZ2h0Q29sb3IiLCJsZWZ0RGVsaW0iLCJyaWdodERlbGltIiwiaW5uZXJIZWlnaHQiLCJpbm5lckRlcHRoIiwiaGFkTWlkZGxlIiwiaXNNaWRkbGUiLCJjb2xvck9wdGlvbnMiLCJsZWZ0Tm9kZSIsInJpZ2h0Tm9kZSIsIm1pZGRsZURlbGltIiwibWlkZGxlTm9kZSIsImVuY2xvc2VfaHRtbEJ1aWxkZXIiLCJpbWdTaGlmdCIsImlzU2luZ2xlQ2hhciIsInZlcnRQYWQiLCJydWxlVGhpY2tuZXNzIiwiYm9yZGVyU3R5bGUiLCJib3JkZXJXaWR0aCIsImJhY2tncm91bmRDb2xvciIsImVuY2xvc2VfbWF0aG1sQnVpbGRlciIsInRoayIsIl9yZWYzIiwiX3JlZjQiLCJfZW52aXJvbm1lbnRzIiwiZGVmaW5lRW52aXJvbm1lbnQiLCJnZXRITGluZXMiLCJobGluZUluZm8iLCJjb25zdW1lU3BhY2VzIiwibnh0IiwiZmV0Y2giLCJjb25zdW1lIiwicGFyc2VBcnJheSIsImhza2lwQmVmb3JlQW5kQWZ0ZXIiLCJhZGRKb3QiLCJhcnJheXN0cmV0Y2giLCJjb2xTZXBhcmF0aW9uVHlwZSIsImJlZ2luR3JvdXAiLCJleHBhbmRNYWNyb0FzVGV4dCIsInJvd0dhcHMiLCJoTGluZXNCZWZvcmVSb3ciLCJlbmRHcm91cCIsIm5leHRUb2tlbiIsImNyIiwiZENlbGxTdHlsZSIsImVudk5hbWUiLCJhcnJheV9odG1sQnVpbGRlciIsIm5yIiwiaGxpbmVzIiwiYXJyYXljb2xzZXAiLCJiYXNlbGluZXNraXAiLCJqb3QiLCJhcnJheXNraXAiLCJhcnN0cnV0SGVpZ2h0IiwiYXJzdHJ1dERlcHRoIiwic2V0SExpbmVQb3MiLCJobGluZXNJbkdhcCIsImlzRGFzaGVkIiwiaW5yb3ciLCJvdXRyb3ciLCJlbHQiLCJyb3dHYXAiLCJnYXAiLCJjb2xTZXAiLCJjb2xEZXNjck51bSIsImNvbERlc2NyaXB0aW9ucyIsImNvbERlc2NyIiwiZmlyc3RTZXBhcmF0b3IiLCJsaW5lVHlwZSIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJSaWdodFN0eWxlIiwibWFyZ2luIiwic2Vwd2lkdGgiLCJwcmVnYXAiLCJwb3N0Z2FwIiwidkxpc3RFbGVtcyIsImhsaW5lIiwibGluZVNoaWZ0IiwiYWxpZ25NYXAiLCJhcnJheV9tYXRobWxCdWlsZGVyIiwibWVuY2xvc2UiLCJjb2x1bW5MaW5lcyIsInByZXZUeXBlV2FzQWxpZ24iLCJpU3RhcnQiLCJpRW5kIiwiX2NvbHMiLCJyb3dMaW5lcyIsImFycmF5X2FsaWduZWRIYW5kbGVyIiwibnVtTWF0aHMiLCJudW1Db2xzIiwiZW1wdHlHcm91cCIsIm9yZGdyb3VwIiwiYXJnMCIsImlzQWxpZ25lZCIsIl9pMyIsImN1ck1hdGhzIiwiX2k0IiwibmRlIiwiY2EiLCJtYXRyaXgiLCJwbWF0cml4IiwiYm1hdHJpeCIsIkJtYXRyaXgiLCJ2bWF0cml4IiwiVm1hdHJpeCIsInNyY19lbnZpcm9ubWVudHMiLCJuYW1lR3JvdXAiLCJlbnYiLCJfcGFyc2VyJHBhcnNlQXJndW1lbnQiLCJwYXJzZUFyZ3VtZW50cyIsIl9hcmdzIiwiZW5kTmFtZVRva2VuIiwibWNsYXNzX21ha2VTcGFuIiwibWNsYXNzX2h0bWxCdWlsZGVyIiwibWNsYXNzX21hdGhtbEJ1aWxkZXIiLCJsc3BhY2UiLCJyc3BhY2UiLCJiaW5yZWxDbGFzcyIsImF0b20iLCJiYXNlQXJnIiwic2hpZnRlZEFyZyIsImJhc2VPcCIsImxpbWl0cyIsImFsd2F5c0hhbmRsZVN1cFN1YiIsInBhcmVudElzU3VwU3ViIiwic3VwcHJlc3NCYXNlU2hpZnQiLCJzdXBzdWIiLCJmb250X2h0bWxCdWlsZGVyIiwiZm9udF9tYXRobWxCdWlsZGVyIiwiZm9udEFsaWFzZXMiLCJcXEJiYiIsIlxcYm9sZCIsIlxcZnJhayIsIlxcYm0iLCJmdW5jIiwiZ2VuZnJhY19hZGp1c3RTdHlsZSIsIm9yaWdpbmFsU3R5bGUiLCJnZW5mcmFjX2h0bWxCdWlsZGVyIiwibnN0eWxlIiwiZHN0eWxlIiwibnVtZXJtIiwibnVtZXIiLCJjb250aW51ZWQiLCJoU3RydXQiLCJkU3RydXQiLCJydWxlU3BhY2luZyIsIm51bVNoaWZ0IiwiZGVub21TaGlmdCIsImZyYWMiLCJkZWxpbVNpemUiLCJkZW5vbW0iLCJkZW5vbSIsImhhc0JhckxpbmUiLCJiYXJTaXplIiwibWlkU2hpZnQiLCJjYW5kaWRhdGVDbGVhcmFuY2UiLCJnZW5mcmFjX21hdGhtbEJ1aWxkZXIiLCJpc0Rpc3BsYXkiLCJ3aXRoRGVsaW1zIiwibGVmdE9wIiwicmlnaHRPcCIsInJlcGxhY2VXaXRoIiwic3R5bEFycmF5IiwiZGVsaW1Gcm9tVmFsdWUiLCJkZWxpbVN0cmluZyIsImJhck5vZGUiLCJpc0JsYW5rIiwic3R5bCIsInRleHRPcmQiLCJfcmVmNSIsImFzc2VydCIsImhvcml6QnJhY2VfaHRtbEJ1aWxkZXIiLCJicmFjZUJvZHkiLCJpc092ZXIiLCJ2U3BhbiIsImNvbW1hbmQiLCJmb3JtYXRVbnN1cHBvcnRlZENtZCIsIm1hdGhtbCIsImluY2x1ZGVncmFwaGljc19zaXplRGF0YSIsInRvdGFsaGVpZ2h0Iiwia2V5VmFsIiwibWF0aEZ1bmN0aW9uIiwibXVVbml0IiwiZGltZW5zaW9uIiwiYWxpZ25tZW50IiwiZml4Iiwib3V0ZXJNb2RlIiwic3dpdGNoTW9kZSIsIm1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlIiwiYXNzZW1ibGVTdXBTdWJfYXNzZW1ibGVTdXBTdWIiLCJzdXBHcm91cCIsInN1Ykdyb3VwIiwiYmFzZVNoaWZ0IiwiZmluYWxHcm91cCIsIl9ib3R0b20iLCJub1N1Y2Nlc3NvciIsIm9wX2h0bWxCdWlsZGVyIiwiaGFzTGltaXRzIiwibGFyZ2UiLCJzdGFzaCIsIm92YWwiLCJvcF9tYXRobWxCdWlsZGVyIiwic2luZ2xlQ2hhckJpZ09wcyIsIuKIjyIsIuKIkCIsIuKIkSIsIuKLgCIsIuKLgSIsIuKLgiIsIuKLgyIsIuKogCIsIuKogSIsIuKogiIsIuKohCIsIuKohiIsImZOYW1lIiwic2luZ2xlQ2hhckludGVncmFscyIsIuKIqyIsIuKIrCIsIuKIrSIsIuKIriIsIuKIryIsIuKIsCIsIm9wZXJhdG9ybmFtZV9odG1sQnVpbGRlciIsImNoaWxkVGV4dCIsInNpemluZ0dyb3VwIiwiaXNBbGxTdHJpbmciLCJzZW1pc2ltcGxlIiwiYW1vdW50IiwiYm9yZGVyVG9wV2lkdGgiLCJzaXplRnVuY3MiLCJzbWFzaEhlaWdodCIsInNtYXNoRGVwdGgiLCJ0YkFyZyIsInNtYXNoZWROb2RlIiwidGhldGEiLCJwaGkiLCJsaW5lQ2xlYXJhbmNlIiwibWluRGVsaW1pdGVySGVpZ2h0IiwiX2RlbGltaXRlciRzcXJ0SW1hZ2UiLCJkZWxpbURlcHRoIiwicGFkZGluZ0xlZnQiLCJyb290bSIsInRvU2hpZnQiLCJyb290Vkxpc3QiLCJyb290Vkxpc3RXcmFwIiwic3R5bGluZ19zdHlsZU1hcCIsIm5ld1N0eWxlIiwiYnVpbGRlckRlbGVnYXRlIiwic3Vwc3ViX2h0bWxCdWlsZGVyRGVsZWdhdGUiLCJzdXBtIiwic3VibSIsIm1pblN1cFNoaWZ0IiwidmFsdWVCYXNlIiwidmFsdWVTdXAiLCJ2YWx1ZVN1YiIsInN1cFNoaWZ0Iiwic3ViU2hpZnQiLCJfbmV3T3B0aW9ucyIsImlzT2lpbnQiLCJtYXhXaWR0aCIsInBzaSIsInZsaXN0RWxlbSIsIl92bGlzdEVsZW0iLCJpc0JyYWNlIiwiaG9yaXpCcmFjZSIsIl9iYXNlMiIsIl9iYXNlIiwiZGVmYXVsdFZhcmlhbnQiLCJtaSIsIm1uIiwibXRleHQiLCJjc3NTcGFjZSIsIlxcbm9icmVhayIsIlxcYWxsb3dicmVhayIsInJlZ3VsYXJTcGFjZSIsIiAiLCJcXCAiLCJ+IiwiXFxzcGFjZSIsIlxcbm9icmVha3NwYWNlIiwib3JkIiwidGFnX3BhZCIsInBhZE5vZGUiLCJ0ZXh0Rm9udEZhbWlsaWVzIiwiXFx0ZXh0IiwiXFx0ZXh0cm0iLCJcXHRleHRzZiIsIlxcdGV4dHR0IiwiXFx0ZXh0bm9ybWFsIiwidGV4dEZvbnRXZWlnaHRzIiwiXFx0ZXh0YmYiLCJcXHRleHRtZCIsInRleHRGb250U2hhcGVzIiwiXFx0ZXh0aXQiLCJcXHRleHR1cCIsIm9wdGlvbnNXaXRoRm9udCIsIm1ha2VWZXJiIiwic3RhciIsInNyY19mdW5jdGlvbnMiLCJjb250cm9sV29yZFdoaXRlc3BhY2VSZWdleCIsImNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya3NFbmRSZWdleCIsImNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyIsInRva2VuUmVnZXhTdHJpbmciLCJMZXhlcl9MZXhlciIsIkxleGVyIiwidG9rZW5SZWdleCIsImNhdGNvZGVzIiwiJSIsInNldENhdGNvZGUiLCJsZXgiLCJubEluZGV4IiwiY29udHJvbE1hdGNoIiwiTmFtZXNwYWNlX05hbWVzcGFjZSIsIk5hbWVzcGFjZSIsImJ1aWx0aW5zIiwiZ2xvYmFsTWFjcm9zIiwidW5kZWZTdGFjayIsInVuZGVmcyIsInVuZGVmIiwiaGFzIiwiYnVpbHRpbk1hY3JvcyIsImRlZmluZU1hY3JvIiwidG9rZW5zIiwiY29uc3VtZUFyZ3MiLCJmdXR1cmUiLCJkaWdpdFRvTnVtYmVyIiwiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkMiLCJEIiwiRSIsImYiLCJGIiwicG9wVG9rZW4iLCJkaWdpdCIsIm1hY3Jvc19kZWYiLCJtYWNyb3NfbmV3Y29tbWFuZCIsImV4aXN0c09LIiwibm9uZXhpc3RzT0siLCJleGlzdHMiLCJpc0RlZmluZWQiLCJhcmdUZXh0IiwiZXhwYW5kTmV4dFRva2VuIiwiZG90c0J5VG9rZW4iLCIsIiwiXFxub3QiLCIrIiwiPSIsIi0iLCIqIiwiOiIsIlxcRE9UU0IiLCJcXGNvcHJvZCIsIlxcYmlndmVlIiwiXFxiaWd3ZWRnZSIsIlxcYmlndXBsdXMiLCJcXGJpZ2NhcCIsIlxcYmlnY3VwIiwiXFxwcm9kIiwiXFxzdW0iLCJcXGJpZ290aW1lcyIsIlxcYmlnb3BsdXMiLCJcXGJpZ29kb3QiLCJcXGJpZ3NxY3VwIiwiXFxBbmQiLCJcXGxvbmdyaWdodGFycm93IiwiXFxMb25ncmlnaHRhcnJvdyIsIlxcbG9uZ2xlZnRhcnJvdyIsIlxcTG9uZ2xlZnRhcnJvdyIsIlxcbG9uZ2xlZnRyaWdodGFycm93IiwiXFxMb25nbGVmdHJpZ2h0YXJyb3ciLCJcXG1hcHN0byIsIlxcbG9uZ21hcHN0byIsIlxcaG9va3JpZ2h0YXJyb3ciLCJcXGRvdGVxIiwiXFxtYXRoYmluIiwiXFxtYXRocmVsIiwiXFxyZWxiYXIiLCJcXFJlbGJhciIsIlxceHJpZ2h0YXJyb3ciLCJcXHhsZWZ0YXJyb3ciLCJcXERPVFNJIiwiXFxpbnQiLCJcXG9pbnQiLCJcXGlpbnQiLCJcXGlpaW50IiwiXFxpaWlpbnQiLCJcXGlkb3RzaW50IiwiXFxET1RTWCIsInRoZWRvdHMiLCJleHBhbmRBZnRlckZ1dHVyZSIsInNwYWNlQWZ0ZXJEb3RzIiwiKSIsIl0iLCJcXHJicmFjayIsIlxcfSIsIlxccmJyYWNlIiwiXFxyYW5nbGUiLCJcXHJjZWlsIiwiXFxyZmxvb3IiLCJcXHJncm91cCIsIlxccm1vdXN0YWNoZSIsIlxccmlnaHQiLCI7IiwiLiIsImxhdGV4UmFpc2VBIiwiaW1wbGljaXRDb21tYW5kcyIsIlxccmVsYXgiLCJeIiwiXFxsaW1pdHMiLCJcXG5vbGltaXRzIiwiTWFjcm9FeHBhbmRlcl9NYWNyb0V4cGFuZGVyIiwiTWFjcm9FeHBhbmRlciIsImV4cGFuc2lvbkNvdW50IiwiZmVlZCIsInB1c2hUb2tlbiIsInB1c2hUb2tlbnMiLCJfdGhpcyRzdGFjayIsInN0YXJ0T2ZBcmciLCJ0b2siLCJleHBhbmRPbmNlIiwidG9wVG9rZW4iLCJleHBhbnNpb24iLCJfZ2V0RXhwYW5zaW9uIiwiX3Rva2VucyIsImV4cGFuZGVkIiwiZXhwYW5kTWFjcm8iLCJvbGRTdGFja0xlbmd0aCIsInN0cmlwcGVkIiwiYm9keUxleGVyIiwidW5pY29kZUFjY2VudHMiLCLMgSIsIsyAIiwizIgiLCLMgyIsIsyEIiwizIYiLCLMjCIsIsyCIiwizIciLCLMiiIsIsyLIiwidW5pY29kZVN5bWJvbHMiLCLDoSIsIsOgIiwiw6QiLCLHnyIsIsOjIiwixIEiLCLEgyIsIuG6ryIsIuG6sSIsIuG6tSIsIseOIiwiw6IiLCLhuqUiLCLhuqciLCLhuqsiLCLIpyIsIsehIiwix7siLCLhuIMiLCLEhyIsIsSNIiwixIkiLCLEiyIsIsSPIiwi4biLIiwiw6kiLCLDqCIsIsOrIiwi4bq9IiwixJMiLCLhuJciLCLhuJUiLCLElSIsIsSbIiwiw6oiLCLhur8iLCLhu4EiLCLhu4UiLCLElyIsIuG4nyIsIse1Iiwi4bihIiwixJ8iLCLHpyIsIsSdIiwixKEiLCLhuKciLCLInyIsIsSlIiwi4bijIiwi4bivIiwixKkiLCLEqyIsIsStIiwix5AiLCLHsCIsIsS1Iiwi4bixIiwix6kiLCLEuiIsIsS+Iiwi4bi/Iiwi4bmBIiwixYQiLCLHuSIsIsOxIiwixYgiLCLhuYUiLCLDsyIsIsOyIiwiw7YiLCLIqyIsIsO1Iiwi4bmNIiwi4bmPIiwiyK0iLCLFjSIsIuG5kyIsIuG5kSIsIsWPIiwix5IiLCLDtCIsIuG7kSIsIuG7kyIsIuG7lyIsIsivIiwiyLEiLCLFkSIsIuG5lSIsIuG5lyIsIsWVIiwixZkiLCLhuZkiLCLFmyIsIuG5pSIsIsWhIiwi4bmnIiwixZ0iLCLhuaEiLCLhupciLCLFpSIsIuG5qyIsIsO6Iiwiw7kiLCLDvCIsIseYIiwix5wiLCLHliIsIseaIiwixakiLCLhubkiLCLFqyIsIuG5uyIsIsWtIiwix5QiLCLDuyIsIsWvIiwixbEiLCLhub0iLCLhuoMiLCLhuoEiLCLhuoUiLCLFtSIsIuG6hyIsIuG6mCIsIuG6jSIsIuG6iyIsIsO9Iiwi4buzIiwiw78iLCLhu7kiLCLIsyIsIsW3Iiwi4bqPIiwi4bqZIiwixboiLCLFviIsIuG6kSIsIsW8Iiwiw4EiLCLDgCIsIsOEIiwix54iLCLDgyIsIsSAIiwixIIiLCLhuq4iLCLhurAiLCLhurQiLCLHjSIsIsOCIiwi4bqkIiwi4bqmIiwi4bqqIiwiyKYiLCLHoCIsIse6Iiwi4biCIiwixIYiLCLEjCIsIsSIIiwixIoiLCLEjiIsIuG4iiIsIsOJIiwiw4giLCLDiyIsIuG6vCIsIsSSIiwi4biWIiwi4biUIiwixJQiLCLEmiIsIsOKIiwi4bq+Iiwi4buAIiwi4buEIiwixJYiLCLhuJ4iLCLHtCIsIuG4oCIsIsSeIiwix6YiLCLEnCIsIsSgIiwi4bimIiwiyJ4iLCLEpCIsIuG4oiIsIsONIiwiw4wiLCLDjyIsIuG4riIsIsSoIiwixKoiLCLErCIsIsePIiwiw44iLCLEsCIsIsS0Iiwi4biwIiwix6giLCLEuSIsIsS9Iiwi4bi+Iiwi4bmAIiwixYMiLCLHuCIsIsORIiwixYciLCLhuYQiLCLDkyIsIsOSIiwiw5YiLCLIqiIsIsOVIiwi4bmMIiwi4bmOIiwiyKwiLCLFjCIsIuG5kiIsIuG5kCIsIsWOIiwix5EiLCLDlCIsIuG7kCIsIuG7kiIsIuG7liIsIsiuIiwiyLAiLCLFkCIsIuG5lCIsIuG5liIsIsWUIiwixZgiLCLhuZgiLCLFmiIsIuG5pCIsIsWgIiwi4bmmIiwixZwiLCLhuaAiLCLFpCIsIuG5qiIsIsOaIiwiw5kiLCLDnCIsIseXIiwix5siLCLHlSIsIseZIiwixagiLCLhubgiLCLFqiIsIuG5uiIsIsWsIiwix5MiLCLDmyIsIsWuIiwixbAiLCLhubwiLCLhuoIiLCLhuoAiLCLhuoQiLCLFtCIsIuG6hiIsIuG6jCIsIuG6iiIsIsOdIiwi4buyIiwixbgiLCLhu7giLCLIsiIsIsW2Iiwi4bqOIiwixbkiLCLFvSIsIuG6kCIsIsW7IiwizqwiLCLhvbAiLCLhvrEiLCLhvrAiLCLOrSIsIuG9siIsIs6uIiwi4b20Iiwizq8iLCLhvbYiLCLPiiIsIs6QIiwi4b+SIiwi4b+RIiwi4b+QIiwiz4wiLCLhvbgiLCLPjSIsIuG9uiIsIs+LIiwizrAiLCLhv6IiLCLhv6EiLCLhv6AiLCLPjiIsIuG9vCIsIs6OIiwi4b+qIiwizqsiLCLhv6kiLCLhv6giLCLOjyIsIuG/uiIsIlBhcnNlcl9QYXJzZXIiLCJicmVha09uSW5maXgiLCJlbmRPZkV4cHJlc3Npb24iLCJwYXJzZUF0b20iLCJmb3JtTGlnYXR1cmVzIiwiaGFuZGxlSW5maXhOb2RlcyIsIm92ZXJJbmRleCIsIm51bWVyTm9kZSIsImRlbm9tTm9kZSIsIm51bWVyQm9keSIsImRlbm9tQm9keSIsImNhbGxGdW5jdGlvbiIsImhhbmRsZVN1cFN1YnNjcmlwdCIsInN5bWJvbFRva2VuIiwicGFyc2VHcm91cCIsIlNVUFNVQl9HUkVFRElORVNTIiwidGV4dG9yZEFycmF5Iiwic3VwZXJzY3JpcHQiLCJzdWJzY3JpcHQiLCJvcE5vZGUiLCJfbGltaXRzIiwicHJpbWUiLCJwcmltZXMiLCJmdW5jRGF0YSIsIl90aGlzJHBhcnNlQXJndW1lbnRzIiwidG90YWxBcmdzIiwiYmFzZUdyZWVkaW5lc3MiLCJhcmdUeXBlIiwiaXNPcHRpb25hbCIsInBhcnNlR3JvdXBPZlR5cGUiLCJwYXJzZUNvbG9yR3JvdXAiLCJwYXJzZVNpemVHcm91cCIsInBhcnNlVXJsR3JvdXAiLCJwYXJzZVN0cmluZ0dyb3VwIiwiZ3JvdXBCZWdpbiIsImdyb3VwRW5kIiwiYmVnaW5Ub2tlbiIsImZpcnN0VG9rZW4iLCJuZXN0ZWQiLCJsYXN0VG9rZW4iLCJwYXJzZVJlZ2V4R3JvdXAiLCJlbmRPZkdyb3VwIiwicGFyc2VTeW1ib2wiLCJudWNsZXVzIiwiWyIsInsiLCJcXGJlZ2luZ3JvdXAiLCJzcmNfcGFyc2VUcmVlIiwidG9QYXJzZSIsImthdGV4X3JlbmRlciIsImJhc2VOb2RlIiwia2F0ZXhfcmVuZGVyVG9Eb21UcmVlIiwiY29tcGF0TW9kZSIsImthdGV4X3JlbmRlckVycm9yIiwia2F0ZXhOb2RlIiwibWF0aE1MTm9kZSIsIl9odG1sTm9kZSIsImJ1aWxkVHJlZV9idWlsZFRyZWUiLCJrYXRleF8wIiwicmVuZGVyVG9TdHJpbmciLCJfX3BhcnNlIiwiX19yZW5kZXJUb0RvbVRyZWUiLCJfX3JlbmRlclRvSFRNTFRyZWUiLCJidWlsZFRyZWVfYnVpbGRIVE1MVHJlZSIsIl9fc2V0Rm9udE1ldHJpY3MiLCJfX2RlZmluZVN5bWJvbCIsIl9fZGVmaW5lTWFjcm8iLCJfX2RvbVRyZWUiLCJoYXNPd24iLCJ0b1N0ciIsImdPUEQiLCJhcnIiLCJpc1BsYWluT2JqZWN0IiwiaGFzT3duQ29uc3RydWN0b3IiLCJoYXNJc1Byb3RvdHlwZU9mIiwic2V0UHJvcGVydHkiLCJuZXdWYWx1ZSIsImdldFByb3BlcnR5IiwiY29weSIsImNvcHlJc0FycmF5IiwiY2xvbmUiLCJkZWVwIiwiVk1lc3NhZ2UiLCJWTWVzc2FnZVByb3RvdHlwZSIsInBhcnNlT3JpZ2luIiwicnVsZUlkIiwiZmF0YWwiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENsZWFyVGltZW91dCIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsImN1cnJlbnRRdWV1ZSIsInF1ZXVlIiwiZHJhaW5pbmciLCJxdWV1ZUluZGV4IiwiY2xlYW5VcE5leHRUaWNrIiwiZHJhaW5RdWV1ZSIsInRpbWVvdXQiLCJtYXJrZXIiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwiYXJyYXkiLCJvbiIsImFkZExpc3RlbmVyIiwib25jZSIsIm9mZiIsInJlbW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZW1pdCIsInBlcmZvcm1hbmNlIiwicGVyZm9ybWFuY2VOb3ciLCJtb3pOb3ciLCJtc05vdyIsIm9Ob3ciLCJ3ZWJraXROb3ciLCJEYXRlIiwiZ2V0VGltZSIsInN0YXJ0VGltZSIsIm5leHRUaWNrIiwiYnJvd3NlciIsImFyZ3YiLCJ2ZXJzaW9ucyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsInVtYXNrIiwiaHJ0aW1lIiwicHJldmlvdXNUaW1lc3RhbXAiLCJjbG9ja3RpbWUiLCJzZWNvbmRzIiwibmFub3NlY29uZHMiLCJwbGF0Zm9ybSIsInJlbGVhc2UiLCJ1cHRpbWUiLCJub3JtYWxpemVBcnJheSIsImFsbG93QWJvdmVSb290IiwidXAiLCJzcGxpdFBhdGhSZSIsInNwbGl0UGF0aCIsInJlc29sdmUiLCJyZXNvbHZlZFBhdGgiLCJyZXNvbHZlZEFic29sdXRlIiwiaXNQYXRoQWJzb2x1dGUiLCJpc0Fic29sdXRlIiwidHJhaWxpbmdTbGFzaCIsImV4dG5hbWUiLCJiYXNlbmFtZSIsImV4dCIsImRpcm5hbWUiLCJzZXAiLCJyZWxhdGl2ZSIsImZyb21QYXJ0cyIsInRvUGFydHMiLCJzYW1lUGFydHNMZW5ndGgiLCJvdXRwdXRQYXJ0cyIsInhzIiwibnBhdGgiLCJuRmlsZU5hbWUiLCJpc0J1ZmZlciIsIlZGaWxlIiwiYnVmZmVyIiwiaGlzdG9yeSIsImFzc2VydFBhcnQiLCJwYXJ0IiwiYXNzZXJ0Tm9uRW1wdHkiLCJhc3NlcnRQYXRoIiwiZW5jb2RpbmciLCJzdGVtIiwiZmlsZVBhdGgiLCJmYWlsIiwiaW52b2tlZCIsImRvbmUiLCJ0aGVuIiwidHJvdWdoIiwiZm5zIiwibWlkZGxld2FyZSIsInVzZSIsImdldFByb3RvdHlwZU9mIiwidW5pZmllZCIsImF0dGFjaGVycyIsInRyYW5zZm9ybWVycyIsImZyb3plbiIsImZyZWV6ZUluZGV4IiwicHJvY2Vzc29yIiwiYXNzZXJ0VW5mcm96ZW4iLCJmcmVlemUiLCJhZGRQbHVnaW4iLCJhZGRMaXN0IiwiYWRkUHJlc2V0IiwicGx1Z2lucyIsInBsdWdpbiIsInBsYWluIiwidmZpbGUiLCJhc3NlcnRQYXJzZXIiLCJuZXdhYmxlIiwiYXNzZXJ0Q29tcGlsZXIiLCJhc3NlcnROb2RlIiwiY29tcGlsZSIsInJ1blN5bmMiLCJjb21wbGV0ZSIsImJhaWwiLCJhc3NlcnREb25lIiwicHJvY2Vzc1N5bmMiLCJ0cmFuc2Zvcm1lciIsImNiIiwiUHJvbWlzZSIsImV4ZWN1dG9yIiwicmVqZWN0IiwicGlwZWxpbmUiLCJhc3luY05hbWUiLCJmYXRhbGl0aWVzIiwiZW1pdFBhcnNlRXJyb3JzIiwicmVwbGFjZXIiLCJsZXZlbCIsImVycm9ycyIsImRlc2NyaXB0aW9uIiwibm90ZSIsImVuY29kZWRDaGFyIiwicGFyc2U1IiwiUGFyc2VyNSIsInRhZ05hbWVzIiwiYmxvY2tPckNhcHRpb24iLCJpbmZlcldoaXRlU3BhY2UiLCJjb2xsZWN0VGV4dCIsImJyZWFrQmVmb3JlIiwiYnJlYWtBZnRlciIsImlubmVyVGV4dENvbGxlY3Rpb24iLCJ6ZXJvV2lkdGhTcGFjZSIsImFsbSIsImx0ciIsInJ0bCIsImxyZSIsInJsZSIsInBkZiIsImxybyIsInJsbyIsImxyaSIsInJsaSIsImZzaSIsInBkaSIsInRhYkNoYXIiLCJzcGFjZUNoYXIiLCJub3RSZW5kZXJlZCIsImZpbmRBZnRlciIsImNvbGxlY3RFbGVtZW50IiwiY29sbGVjdFByZVRleHQiLCJsaW5lU3RhcnQiLCJuZXh0TGluZSIsInRyaW1BbmRjb2xsYXBzZVNwYWNlc0FuZFRhYnMiLCJyZW1vdmVCaWRpQ29udHJvbENoYXJhY3RlcnMiLCJpc0JpZGlDb250cm9sQ2hhcmFjdGVyIiwic3BhY2VJbmRleCIsImthdGV4IiwiaW5saW5lIiwicGFyc2VIdG1sIiwiaW5jbHVkZVdoaXRlU3BhY2UiLCJhZnRlciIsImlzVGV4dCIsImlzQ29tbWVudCIsIm9wdGlvbkdyb3VwIiwiZGF0YUxpc3RJdGVtIiwibWVudUNvbnRlbnQiLCJydWJ5IiwidGFibGVDb250YWluZXIiLCJ0YWJsZVJvdyIsInRhYmxlQ2VsbCIsImNvbmZ1c2luZ1BhcmFncmFwaFBhcmVudCIsImNsZWFyUGFyYWdyYXBoU2libGluZyIsIm9taXNzaW9uIiwiaGVhZE9yQ29sZ3JvdXBPckNhcHRpb24iLCJsaSIsImR0IiwicnQiLCJydWJ5RWxlbWVudCIsInJwIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJtZW51aXRlbSIsImNvbGdyb3VwIiwiY2FwdGlvbiIsInRoZWFkIiwidGJvZHkiLCJ0Zm9vdCIsInRyIiwidGQiLCJjZWxscyIsInRoIiwid2hpdGVTcGFjZUxlZnQiLCJiZWZvcmUiLCJ1bmlxdWVIZWFkTWV0YWRhdGEiLCJ0YWJsZUNvbnRhaW5lcnMiLCJwbGFjZSIsImFscGhhYmV0aWNhbCIsImRlY2ltYWwiLCJlc2NhcGVPbmx5IiwidXNlTmFtZWRSZWZlcmVuY2VzIiwiY2hhcmFjdGVycyIsImVudGl0aWVzIiwiY29uc3RydWN0IiwiZGVmYXVsdEVzY2FwZXMiLCJ0b0V4cHJlc3Npb24iLCJzdXJyb2dhdGVQYWlyIiwiYm1wIiwib21pdCIsIm9taXRPcHRpb25hbFNlbWljb2xvbnMiLCJ0b0hleFJlZmVyZW5jZSIsIm5hbWVkIiwibnVtZXJpYyIsInNob3J0ZXN0IiwidXNlU2hvcnRlc3RSZWZlcmVuY2VzIiwibGVnYWN5IiwiYWxwaGFudW1lcmljYWwiLCJ0b05hbWVkIiwidG9EZWNpbWFsUmVmZXJlbmNlIiwiaGV4YWRlY2ltYWwiLCJpc0xpdGVyYWwiLCJ1bnF1b3RlZCIsInVucXVvdGVkU2FmZSIsInNpbmdsZVF1b3RlZCIsImRvdWJsZVF1b3RlZCIsInNpbmdsZSIsInRpZ2h0IiwicXVvdGF0aW9uTWFyayIsImFwb3N0cm9waGUiLCJjbG9zZUVtcHR5IiwibGVzc1RoYW4iLCJ0aWdodENsb3NlIiwic2xhc2giLCJncmVhdGVyVGhhbiIsImVxdWFsc1RvIiwiY29uc3RhbnRzIiwic2FmZSIsImFsdGVybmF0aXZlIiwidGlnaHRMaXN0cyIsImNvbGxhcHNlRW1wdHkiLCJjY291bnQiLCJhdHRyaWJ1dGVWYWx1ZSIsInRpZ2h0RG9jdHlwZSIsInB1YiIsInN5cyIsInNtYXJ0IiwicXVvdGVTbWFydCIsImFsbG93UGFyc2VFcnJvcnMiLCJhbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnMiLCJvbWl0T3B0aW9uYWxUYWdzIiwicHJlZmVyVW5xdW90ZWQiLCJ0aWdodEF0dHJpYnV0ZXMiLCJ0aWdodENvbW1hU2VwYXJhdGVkTGlzdHMiLCJ0aWdodFNlbGZDbG9zaW5nIiwiY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXMiLCJjbG9zZVNlbGZDbG9zaW5nIiwiY2xvc2VFbXB0eUVsZW1lbnRzIiwidG9IVE1MIiwiY3RvciIsInN1cGVyQ3RvciIsInN1cGVyXyIsIlRlbXBDdG9yIiwiU3VwZXIiLCJPZiIsIkZyb20iLCJwYXJhbWV0ZXJzIiwidG9Qb3NpdGlvbiIsIm9mZnNldFRvUG9zaXRpb25GYWN0b3J5IiwidG9PZmZzZXQiLCJwb3NpdGlvblRvT2Zmc2V0RmFjdG9yeSIsInNlbWljb2xvbiIsImVudGl0eSIsImluZGVudCIsImVudGl0eUNoYXJhY3RlcnMiLCJuYW1lZEVudGl0eSIsInRlcm1pbmF0ZWQiLCJmb2xsb3dpbmciLCJ3YXJuaW5nIiwiYWRkaXRpb25hbCIsIm5vblRlcm1pbmF0ZWQiLCJoYW5kbGVUZXh0IiwiaGFuZGxlUmVmZXJlbmNlIiwiaGFuZGxlV2FybmluZyIsInRleHRDb250ZXh0IiwicmVmZXJlbmNlQ29udGV4dCIsIndhcm5pbmdDb250ZXh0IiwiYW1wZXJzYW5kIiwiZm9ybUZlZWQiLCJ1cHBlcmNhc2VYIiwibG93ZXJjYXNlWCIsImhleGEiLCJkZWNpIiwiZGVjb2RlRW50aXR5IiwibmFtZWRVbmtub3duIiwibmFtZWROb3RUZXJtaW5hdGVkIiwibmFtZWRFbXB0eSIsIm51bWVyaWNOb3RUZXJtaW5hdGVkIiwiYmFzZXMiLCJudW1lcmljUHJvaGliaXRlZCIsInJlcGxhY2VtZW50Q2hhcmFjdGVyIiwibnVtZXJpY0Rpc2FsbG93ZWQiLCJkaXNhbGxvd2VkIiwibnVtZXJpY0VtcHR5IiwiZmx1c2giLCJkZWNvZGVyIiwib2Zmc2V0cyIsIm1hdGNoZWQiLCJ2YWx1ZUxlbmd0aCIsInRva2VuaXplcnMiLCJvbmx5QXRTdGFydCIsImF0U3RhcnQiLCJub3RJbkxpc3QiLCJpbkxpc3QiLCJub3RJbkJsb2NrIiwiaW5CbG9jayIsIm5vdEluTGluayIsImluTGluayIsImVvZiIsImNvbWJpbmVkIiwiaW5kZW50YXRpb24iLCJnZXRPZmZzZXQiLCJ2YWxpZGF0ZUVhdCIsInJlc2V0IiwibWVyZ2VhYmxlIiwibWVyZ2VUZXh0IiwibWVyZ2VCbG9ja3F1b3RlIiwiZXhpdFN0YXJ0IiwiZXNjYXBlcyIsImZvb3Rub3RlcyIsInBlZGFudGljIiwiZm9yY2UiLCJoYXJkIiwic29mdCIsImxpbmVCcmVha3NFeHByZXNzaW9uIiwidG9rZW5pemVCbG9jayIsInJlbW92ZVBvc2l0aW9uIiwiYmxhbmtRdWV1ZSIsInN1YnZhbHVlUXVldWUiLCJjb250ZW50UXVldWUiLCJjb2RlSW5kZW50IiwiZmVuY2VDb3VudCIsImZsYWciLCJleGRlbnRlZENvbnRlbnQiLCJleGRlbnRlZENsb3NpbmciLCJ0aWxkZSIsImdyYXZlQWNjZW50IiwiZGVjb2RlIiwidW5lc2NhcGUiLCJpbnRlcnJ1cHRvcnMiLCJpbnRlcnJ1cHRvciIsInJlc3QiLCJuZXh0SW5kZXgiLCJzdGFydEluZGV4IiwicHJlZml4ZWQiLCJleGl0IiwiY3VycmVudExpbmUiLCJpbmRlbnRzIiwiaW50ZXJydXB0IiwiZW50ZXJCbG9jayIsIm1heEZlbmNlQ291bnQiLCJtYXJrZXJDb3VudCIsImFzdGVyaXNrIiwidW5kZXJzY29yZSIsIm1heENvdW50Iiwic3RvcHMiLCJzcGFjZVNpemUiLCJtYXhpbXVtIiwicGFkZGluZyIsIm1pbkluZGVudCIsImV4Y2xhbWF0aW9uTWFyayIsImdldEluZGVudCIsImN1cnJlbnRNYXJrZXIiLCJwcmV2RW1wdHkiLCJhbGxMaW5lcyIsImVtcHR5TGluZXMiLCJpdGVtIiwiZW50ZXJUb3AiLCJleGl0QmxvY2txdW90ZSIsImluZGVudGVkIiwiaW50ZXJ1cHRvcnMiLCJwbHVzU2lnbiIsInJpZ2h0UGFyZW50aGVzaXMiLCJ0cmFpbCIsImVudGVyTGlzdCIsImxvb3NlTGlzdEl0ZW1FeHByZXNzaW9uIiwidGFza0l0ZW1FeHByZXNzaW9uIiwiYnVsbGV0RXhwcmVzc2lvbiIsInBlZGFudGljQnVsbGV0RXhwcmVzc2lvbiIsImluaXRpYWxJbmRlbnRFeHByZXNzaW9uIiwidGFzayIsInBlZGFudGljTGlzdEl0ZW0iLCJub3JtYWxMaXN0SXRlbSIsImJ1bGxldCIsInRyaW1tZWRMaW5lcyIsIiQyIiwiJDMiLCIkNCIsInJlbW92ZUluZGVudCIsIm1heEluZGVudCIsImVxdWFsc1RvRGVwdGgiLCJkYXNoRGVwdGgiLCJvcGVuVGFnIiwiY2xvc2VUYWciLCJlbGVtZW50T3BlbkV4cHJlc3Npb24iLCJzZXF1ZW5jZXMiLCJyYXdPcGVuRXhwcmVzc2lvbiIsInJhd0Nsb3NlRXhwcmVzc2lvbiIsImNvbW1lbnRPcGVuRXhwcmVzc2lvbiIsImNvbW1lbnRDbG9zZUV4cHJlc3Npb24iLCJpbnN0cnVjdGlvbk9wZW5FeHByZXNzaW9uIiwiaW5zdHJ1Y3Rpb25DbG9zZUV4cHJlc3Npb24iLCJkaXJlY3RpdmVPcGVuRXhwcmVzc2lvbiIsImRpcmVjdGl2ZUNsb3NlRXhwcmVzc2lvbiIsImNkYXRhT3BlbkV4cHJlc3Npb24iLCJjZGF0YUNsb3NlRXhwcmVzc2lvbiIsImVsZW1lbnRDbG9zZUV4cHJlc3Npb24iLCJvdGhlckVsZW1lbnRPcGVuRXhwcmVzc2lvbiIsIm9wZW5DbG9zZVRhZyIsImNvbGxhcHNlV2hpdGVTcGFjZSIsImxlZnRTcXVhcmVCcmFja2V0IiwicmlnaHRTcXVhcmVCcmFja2V0IiwiY2FyZXQiLCJjb2xvbiIsIkVYUFJFU1NJT05fSU5JVElBTF9UQUIiLCJzdWJxdWV1ZSIsImJlZm9yZVVSTCIsImJlZm9yZVRpdGxlIiwiaXNFbmNsb3NlZFVSTENoYXJhY3RlciIsImlzVW5jbG9zZWRVUkxDaGFyYWN0ZXIiLCJsZWZ0UGFyZW50aGVzaXMiLCJhbGlnbm1lbnRzIiwiaGFzRGFzaCIsInByZWFtYmxlIiwibGluZUNvdW50IiwicGlwZUluZGV4IiwibWluUm93cyIsIm1pbkNvbHVtbnMiLCJ0cmltVHJhaWxpbmdMaW5lcyIsImxvY2F0ZSIsImF1dG9MaW5rIiwiYXRTaWduIiwibWFpbHRvIiwibWFpbHRvTGVuZ3RoIiwiaGFzQXRDaGFyYWN0ZXIiLCJlbnRlckxpbmsiLCJwcm90b2NvbHMiLCJwcm90b2NvbHNMZW5ndGgiLCJwYXJlbkNvdW50IiwibmV4dENoYXJhY3RlciIsImlubGluZUhUTUwiLCJxdWVzdGlvbk1hcmsiLCJodG1sTGlua09wZW5FeHByZXNzaW9uIiwiaHRtbExpbmtDbG9zZUV4cHJlc3Npb24iLCJjbG9zZWQiLCJoYXNNYXJrZXIiLCJpc0ltYWdlIiwic2hvcnRjdXQiLCJjb2xsYXBzZWQiLCJmdWxsIiwiYnJhY2tldGVkIiwiaW50cm8iLCJzdHJpa2V0aHJvdWdoIiwib3BlbmluZ0ZlbmNlRW5kIiwiY2xvc2luZ0ZlbmNlU3RhcnQiLCJjbG9zaW5nRmVuY2VFbmQiLCJmb3VuZCIsImhhcmRCcmVhayIsIm1pbkJyZWFrTGVuZ3RoIiwic2V0T3B0aW9ucyIsInZmaWxlTG9jYXRpb24iLCJ0b2dnbGUiLCJpbmRlbnRlZENvZGUiLCJmZW5jZWRDb2RlIiwiYXR4SGVhZGluZyIsInJlcXVpcmUkJDkiLCJzZXRleHRIZWFkaW5nIiwicmVxdWlyZSQkMTAiLCJyZXF1aXJlJCQxMSIsInJlcXVpcmUkJDEyIiwicmVxdWlyZSQkMTMiLCJyZXF1aXJlJCQxNCIsInJlcXVpcmUkJDE2IiwicmVxdWlyZSQkMTciLCJyZXF1aXJlJCQxOCIsInJlcXVpcmUkJDE5IiwicmVxdWlyZSQkMjAiLCJyZXF1aXJlJCQyMiIsInJlcXVpcmUkJDIzIiwiZGVsZXRpb24iLCJyZXF1aXJlJCQyNCIsInJlcXVpcmUkJDI1IiwicmVxdWlyZSQkMjYiLCJyZXF1aXJlJCQyNyIsInRva2VuaXplRmFjdG9yeSIsIkxvY2FsIiwidW5oZXJpdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImFycjIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJpdGVyIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2FyciIsIl9uIiwiX2QiLCJfZSIsIl9zIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsImVzY2FwZVJlZ0V4cCIsIkNfTkVXTElORSIsIkNfRkVOQ0UiLCJhdmFpbGFibGVCbG9ja3MiLCJjdXN0b21CbG9ja3MiLCJrZWVwIiwiX2tlZXAiLCJibG9ja1R5cGUiLCJibG9ja1RpdGxlIiwibGluZXNUb0VhdCIsImxpbmVUb0VhdCIsImNvbnRlbnRTdHJpbmciLCJzdHJpbmdUb0VhdCIsInBvdGVudGlhbEJsb2NrIiwidGl0bGVBbGxvd2VkIiwiYmxvY2tDaGlsZHJlbiIsInRpdGxlTm9kZSIsImRldGFpbHMiLCJibG9ja0hlYWRpbmciLCJibG9ja0JvZHkiLCJtYXhJbnQiLCJ0TWluIiwidE1heCIsImRhbXAiLCJpbml0aWFsQmlhcyIsImluaXRpYWxOIiwicmVnZXhOb25BU0NJSSIsInJlZ2V4U2VwYXJhdG9ycyIsIm5vdC1iYXNpYyIsImludmFsaWQtaW5wdXQiLCJiYXNlTWludXNUTWluIiwic3RyaW5nRnJvbUNoYXJDb2RlIiwiZGlnaXRUb0Jhc2ljIiwiYWRhcHQiLCJkZWx0YSIsIm51bVBvaW50cyIsImZpcnN0VGltZSIsInRvQVNDSUkiLCJlbmNvZGVkIiwibWFwRG9tYWluIiwiaGFuZGxlZENQQ291bnQiLCJiYXNpY0xlbmd0aCIsImN1cnJlbnRWYWx1ZSIsImlucHV0TGVuZ3RoIiwiaGFuZGxlZENQQ291bnRQbHVzT25lIiwiYmFzZU1pbnVzVCIsInFNaW51c1QiLCJjb3VudGVyIiwidWNzMmRlY29kZSIsInJldkxvb2t1cCIsIkFyciIsIlVpbnQ4QXJyYXkiLCJpbml0ZWQiLCJpbml0IiwiZW5jb2RlQ2h1bmsiLCJ1aW50OCIsImZyb21CeXRlQXJyYXkiLCJleHRyYUJ5dGVzIiwibGVuMiIsInJlYWQiLCJpc0xFIiwibUxlbiIsIm5CeXRlcyIsImVMZW4iLCJlTWF4IiwiZUJpYXMiLCJuQml0cyIsIk5hTiIsImFicyIsIkxOMiIsImtNYXhMZW5ndGgiLCJCdWZmZXIiLCJUWVBFRF9BUlJBWV9TVVBQT1JUIiwiY3JlYXRlQnVmZmVyIiwidGhhdCIsImVuY29kaW5nT3JPZmZzZXQiLCJhbGxvY1Vuc2FmZSIsIkFycmF5QnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJmcm9tQXJyYXlMaWtlIiwiZnJvbUFycmF5QnVmZmVyIiwiaXNFbmNvZGluZyIsImFjdHVhbCIsImZyb21TdHJpbmciLCJpbnRlcm5hbElzQnVmZmVyIiwiZnJvbU9iamVjdCIsImFzc2VydFNpemUiLCJfaXNCdWZmZXIiLCJpc1ZpZXciLCJsb3dlcmVkQ2FzZSIsInV0ZjhUb0J5dGVzIiwiYmFzZTY0VG9CeXRlcyIsInN3YXAiLCJiaWRpcmVjdGlvbmFsSW5kZXhPZiIsImFycmF5SW5kZXhPZiIsImluZGV4U2l6ZSIsImFyckxlbmd0aCIsInZhbExlbmd0aCIsImJ1ZiIsInJlYWRVSW50MTZCRSIsImZvdW5kSW5kZXgiLCJoZXhXcml0ZSIsInJlbWFpbmluZyIsInN0ckxlbiIsInBhcnNlZCIsInV0ZjhXcml0ZSIsImJsaXRCdWZmZXIiLCJhc2NpaVdyaXRlIiwiYnl0ZUFycmF5IiwiYXNjaWlUb0J5dGVzIiwibGF0aW4xV3JpdGUiLCJiYXNlNjRXcml0ZSIsInVjczJXcml0ZSIsInVuaXRzIiwidXRmMTZsZVRvQnl0ZXMiLCJiYXNlNjRTbGljZSIsImJhc2U2NC5mcm9tQnl0ZUFycmF5IiwidXRmOFNsaWNlIiwic2Vjb25kQnl0ZSIsInRoaXJkQnl0ZSIsImZvdXJ0aEJ5dGUiLCJ0ZW1wQ29kZVBvaW50IiwiZmlyc3RCeXRlIiwiYnl0ZXNQZXJTZXF1ZW5jZSIsIk1BWF9BUkdVTUVOVFNfTEVOR1RIIiwiZGVjb2RlQ29kZVBvaW50c0FycmF5IiwicG9vbFNpemUiLCJfYXVnbWVudCIsImFsbG9jIiwiYWxsb2NVbnNhZmVTbG93IiwiaXNGYXN0QnVmZmVyIiwicmVhZEZsb2F0TEUiLCJpc1Nsb3dCdWZmZXIiLCJjb21wYXJlIiwic3dhcDE2Iiwic3dhcDMyIiwic3dhcDY0IiwiaGV4U2xpY2UiLCJhc2NpaVNsaWNlIiwibGF0aW4xU2xpY2UiLCJ1dGYxNmxlU2xpY2UiLCJlcXVhbHMiLCJpbnNwZWN0IiwidGhpc1N0YXJ0IiwidGhpc0VuZCIsInRoaXNDb3B5IiwidGFyZ2V0Q29weSIsImlzRmluaXRlIiwidG9KU09OIiwidG9IZXgiLCJieXRlcyIsImNoZWNrT2Zmc2V0IiwiY2hlY2tJbnQiLCJvYmplY3RXcml0ZVVJbnQxNiIsImxpdHRsZUVuZGlhbiIsIm9iamVjdFdyaXRlVUludDMyIiwiY2hlY2tJRUVFNzU0Iiwid3JpdGVGbG9hdCIsIm5vQXNzZXJ0IiwiaWVlZTc1NC53cml0ZSIsIndyaXRlRG91YmxlIiwibmV3QnVmIiwic3ViYXJyYXkiLCJzbGljZUxlbiIsInJlYWRVSW50TEUiLCJtdWwiLCJyZWFkVUludEJFIiwicmVhZFVJbnQ4IiwicmVhZFVJbnQxNkxFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEludExFIiwicmVhZEludEJFIiwicmVhZEludDgiLCJyZWFkSW50MTZMRSIsInJlYWRJbnQxNkJFIiwicmVhZEludDMyTEUiLCJyZWFkSW50MzJCRSIsImllZWU3NTQucmVhZCIsInJlYWRGbG9hdEJFIiwicmVhZERvdWJsZUxFIiwicmVhZERvdWJsZUJFIiwid3JpdGVVSW50TEUiLCJ3cml0ZVVJbnRCRSIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkxFIiwid3JpdGVVSW50MTZCRSIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQzMkJFIiwid3JpdGVJbnRMRSIsImxpbWl0Iiwid3JpdGVJbnRCRSIsIndyaXRlSW50OCIsIndyaXRlSW50MTZMRSIsIndyaXRlSW50MTZCRSIsIndyaXRlSW50MzJMRSIsIndyaXRlSW50MzJCRSIsIndyaXRlRmxvYXRMRSIsIndyaXRlRmxvYXRCRSIsIndyaXRlRG91YmxlTEUiLCJ3cml0ZURvdWJsZUJFIiwidGFyZ2V0U3RhcnQiLCJJTlZBTElEX0JBU0U2NF9SRSIsImxlYWRTdXJyb2dhdGUiLCJiNjQiLCJwbGFjZUhvbGRlcnMiLCJMIiwiYmFzZTY0LnRvQnl0ZUFycmF5Iiwic3RyaW5ndHJpbSIsImJhc2U2NGNsZWFuIiwiZHN0IiwiaXNOdWxsIiwiaXNTdHJpbmciLCJpc09iamVjdCIsInN0cmluZ2lmeVByaW1pdGl2ZSIsInFzIiwiZXEiLCJyZWdleHAiLCJtYXhLZXlzIiwia3N0ciIsInZzdHIiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ1cmxQYXJzZSIsInJlc29sdmVPYmplY3QiLCJVcmwiLCJzbGFzaGVzIiwiYXV0aCIsInBvcnQiLCJob3N0bmFtZSIsImhhc2giLCJxdWVyeSIsInBhdGhuYW1lIiwicHJvdG9jb2xQYXR0ZXJuIiwicG9ydFBhdHRlcm4iLCJzaW1wbGVQYXRoUGF0dGVybiIsInVud2lzZSIsImF1dG9Fc2NhcGUiLCJub25Ib3N0Q2hhcnMiLCJob3N0RW5kaW5nQ2hhcnMiLCJob3N0bmFtZU1heExlbiIsImhvc3RuYW1lUGFydFBhdHRlcm4iLCJob3N0bmFtZVBhcnRTdGFydCIsInVuc2FmZVByb3RvY29sIiwiamF2YXNjcmlwdCIsImphdmFzY3JpcHQ6IiwiaG9zdGxlc3NQcm90b2NvbCIsInNsYXNoZWRQcm90b2NvbCIsImh0dHAiLCJodHRwcyIsImZ0cCIsImdvcGhlciIsImh0dHA6IiwiaHR0cHM6IiwiZnRwOiIsImdvcGhlcjoiLCJmaWxlOiIsInBhcnNlUXVlcnlTdHJpbmciLCJzbGFzaGVzRGVub3RlSG9zdCIsInF1ZXJ5SW5kZXgiLCJzcGxpdHRlciIsInVTcGxpdCIsInNpbXBsZVBhdGgiLCJxc1BhcnNlIiwiaGVjIiwibG93ZXJQcm90byIsImhvc3RFbmQiLCJwYXJzZUhvc3QiLCJpcHY2SG9zdG5hbWUiLCJob3N0cGFydHMiLCJuZXdwYXJ0IiwidmFsaWRQYXJ0cyIsIm5vdEhvc3QiLCJiaXQiLCJhZSIsImVzYyIsInFtIiwia3MiLCJfdHlwZW9mIiwicmVsUGF0aCIsInRrZXlzIiwidGsiLCJ0a2V5IiwicmtleXMiLCJyayIsInJrZXkiLCJhdXRoSW5Ib3N0IiwiaXNTb3VyY2VBYnMiLCJpc1JlbEFicyIsIm11c3RFbmRBYnMiLCJyZW1vdmVBbGxEb3RzIiwic3JjUGF0aCIsInBzeWNob3RpYyIsImhhc1RyYWlsaW5nU2xhc2giLCJfcmVxdWlyZSIsIlVSTFNlYXJjaFBhcmFtcyIsImlmcmFtZXMiLCJlYXRlblZhbHVlIiwic3BlY2lhbENoYXJzIiwicHJvdmlkZXIiLCJkZXRlY3RQcm92aWRlciIsImZpbmFsVXJsIiwiZHJvcHBlZFF1ZXJ5UGFyYW1ldGVycyIsImlnbm9yZWQiLCJfcnVsZSIsInJlbW92ZUZpbGVOYW1lIiwicmVtb3ZlQWZ0ZXIiLCJhcHBlbmQiLCJjb21wdXRlRmluYWxVcmwiLCJ0aHVtYm5haWwiLCJ0aHVtYm5haWxVUkwiLCJ0aHVtYm5haWxDb25maWciLCJjb21wdXRlVGh1bWJuYWlsIiwiYWxsb3dmdWxsc2NyZWVuIiwiZnJhbWVib3JkZXIiLCJpZnJhbWUiLCJmbmMiLCJyZW1hcmsiLCJsaW5lSW5wdXQiLCJ0ZXh0SW5wdXQiLCJtdWx0aUNob2ljZSIsImluZm9ybWF0aW9uIiwiYXR0ZW50aW9uIiwicXVlc3Rpb24iLCJnb29kIiwic2VjcmV0IiwiYmFkIiwid3d3LnlvdXR1YmUuY29tIiwicmVoeXBlS2F0ZXgiLCJyZWh5cGVTdHJpbmdpZnkiXSwibWFwcGluZ3MiOiJnQ0FBQSxNQUlBLFdBR0ksSUFGQSxJQUFJQSxLQUVLQyxFQUFJLEVBQUdBLEVBQUlDLFVBQVVDLE9BQVFGLElBQUssQ0FDdkMsSUFBSUcsRUFBU0YsVUFBVUQsR0FFdkIsSUFBSyxJQUFJSSxLQUFPRCxFQUNSRSxFQUFlQyxLQUFLSCxFQUFRQyxLQUM1QkwsRUFBT0ssR0FBT0QsRUFBT0MsSUFLakMsT0FBT0wsR0FmUE0sRUFBaUJFLE9BQU9DLFVBQVVILGVDTXRDLElBQUlJLEVBQXdCRixPQUFPRSxzQkFDL0JKLEVBQWlCRSxPQUFPQyxVQUFVSCxl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QUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sS0FBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxF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QUFJbUssR0FDL0JDLGVBQ0VDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEdBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxLQUFPLEtBQU8sRUFBRyxLQUM1QkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLEtBQU8sRUFBRyxFQUFHLFNBQ3hCQyxLQUFRLEVBQUcsR0FBSyxFQUFHLEVBQUcsU0FDdEJDLEtBQVEsRUFBRyxLQUFPLEVBQUcsRUFBRyxTQUN4QkMsS0FBUSxFQUFHLEdBQUssRUFBRyxFQUFHLFNBQ3RCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsR0FDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxHQUMzQkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsR0FDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxHQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxNQUFRLEtBQU8sRUFBRyxFQUFHLEdBQzlCQyxNQUFTLE1BQVEsS0FBTyxFQUFHLEVBQUcsR0FDOUJDLE1BQVMsTUFBUSxLQUFPLEVBQUcsRUFBRyxHQUM5QkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE1BQVEsS0FBTyxFQUFHLEVBQUcsR0FDOUJDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE9BQVUsS0FBTyxLQUFPLEVBQUcsRUFBRyxPQUM5QkMsT0FBVSxLQUFPLEtBQU8sRUFBRyxFQUFHLE9BQzlCQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsSUFDekJDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsTUFBUSxLQUFPLEVBQUcsRUFBRyxRQUM5QkMsTUFBUyxNQUFRLEtBQU8sRUFBRyxFQUFHLFFBQzlCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN6QkMsTUFBUyxFQUFHLEtBQU8sRUFBRyxFQUFHLFFBQ3pCQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxRQUMvQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN6QkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUM1QkMsT0FBVSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzVCQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FFcENDLHVCQUNFQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDL0J6USxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLE9BQVMsT0FBUyxNQUFRLE9BQVMsUUFDMUNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDM0NDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLE9BQy9CQyxJQUFPLEVBQUcsT0FBUyxLQUFPLE9BQVMsUUFDbkNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3JDQyxJQUFPLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDM0NDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxTQUV2Q2lQLG1CQUNFQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CdEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekIxUixJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQmtRLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxPQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQjdRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQjhRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxPQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE9BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxPQUFVLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDNUJDLE9BQVUsRUFBRyxPQUFTLEVBQUcsRUFBRyxPQUM1QkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzVCQyxPQUFVLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDNUJDLE9BQVUsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUU5QkMsYUFDRXRELElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCc0QsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsSUFBTSxFQUFHLEVBQUcsTUFDNUJDLElBQU8sT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM1QnZELElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLElBQU0sRUFBRyxFQUFHLE1BQ3RCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUN6QnRCLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I2QyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I1QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM2QyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I1QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE9BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QjZDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUN6QjVDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCNEMsSUFBTyxJQUFNLE9BQVMsT0FBUyxFQUFHLE1BQ2xDM0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLE1BQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDN1EsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCOFEsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQm9CLEtBQVEsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzFCQyxLQUFRLElBQU0sSUFBTSxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsSUFBTSxPQUFTLEVBQUcsRUFBRyxNQUM3QkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsRUFBRyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDOVQsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCK1QsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCcFUsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCcVUsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDakMzRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQjJELE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDakNsVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JtVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQmhWLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ2lWLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNqQ2hWLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ2lWLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNqQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsTUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCN1QsTUFBUyxPQUFTLElBQU0sRUFBRyxFQUFHLE1BQzlCOFQsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQzlULE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQytULE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzNCOVQsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzNCK1QsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNsQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCalUsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCa1UsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQzNCalUsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCRyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JFLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMzQjZULE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3ZDN1QsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDOFQsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakMxVCxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakMyVCxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDNVIsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDNlIsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JqUSxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ1csTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDc1AsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDblAsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDb1AsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLElBQU0sRUFBRyxFQUFHLFFBQ3hCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsT0FBVSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzVCQyxPQUFVLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDNUJDLE9BQVUsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUM1QkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUVwQ0MsbUJBQ0V6TSxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnNELElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0UsSUFBTyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsSUFBTSxPQUFTLEVBQUcsUUFDNUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CdEIsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CYyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I2QyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDN0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLElBQU8sSUFBTSxJQUFNLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsUUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEtBQU8sRUFBRyxRQUM5QkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLElBQ3RDQyxLQUFRLE9BQVMsT0FBUyxLQUFPLEVBQUcsUUFDcENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxNQUFRLEVBQUcsUUFDckM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsS0FBTyxFQUFHLFFBQ3BDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEtBQU8sRUFBRyxRQUNwQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsS0FBUSxJQUFNLE9BQVMsT0FBUyxFQUFHLFFBQ25Dd0ksS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdkksS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJFLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2hDRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxNQUN0Q0MsS0FBUSxFQUFHLE9BQVMsS0FBTyxFQUFHLFFBQzlCRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2hDQyxLQUFRLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDOUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxNQUN0QzlULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQytULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ3FVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDL0JDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUVuQ2tHLGVBQ0UzTSxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnNELElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0UsSUFBTyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsSUFBTSxPQUFTLEVBQUcsUUFDNUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CdEIsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CYyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNwQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUI2QyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLElBQU8sSUFBTSxJQUFNLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsUUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLEtBQy9CQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsS0FDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsTUFBUSxFQUFHLFFBQy9CQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsS0FDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLEtBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsS0FBUSxJQUFNLE9BQVMsT0FBUyxFQUFHLFFBQ25Dd0ksS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdkksS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJFLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxLQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0QzlULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQytULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ3FVLEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxNQUFTLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQzlVLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUU3QmliLGdCQUNFQyxJQUFPLEVBQUcsRUFBRyxFQUFHLEVBQUcsS0FDbkI3TSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QnNELElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLElBQzVCQyxJQUFPLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUJ2RCxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxJQUFNLEVBQUcsRUFBRyxJQUN0QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDekJ0QixJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJjLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CNkMsSUFBTyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQzdCNUMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDNkMsSUFBTyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQzdCNUMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCNkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCdlUsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLEtBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsS0FBTyxFQUFHLEtBQzdCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJrUSxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDekI1QyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QjRDLElBQU8sSUFBTSxPQUFTLE9BQVMsRUFBRyxJQUNsQzNDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzdRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQjhRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJvQixLQUFRLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLElBQzFCQyxLQUFRLElBQU0sT0FBUyxFQUFHLEVBQUcsSUFDN0I0SSxLQUFRLEVBQUcsRUFBRyxFQUFHLEVBQUcsS0FDcEJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzVJLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzBJLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ3pJLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM5VCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUIrVCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJwVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJxVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxHQUNqQzNELE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCMkQsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDc0csTUFBUyxFQUFHLElBQU0sRUFBRyxFQUFHLE9BQ3hCckcsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzNCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDakNsVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JtVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3ZDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQmhWLE9BQVUsT0FBUyxPQUFTLEVBQUcs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LE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsR0FDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxHQUMvQkMsTUFBUyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQy9CQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxRQUMvQkMsTUFBUyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQy9CQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IxUyxNQUFTLEtBQU8sSUFBTSxFQUFHLEVBQUcsTUFDNUIyUyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDbEM1UixPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbEM2UixPQUFV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UUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnFRLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxPQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDMUJDLEtBQVEsT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNyQzdRLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQzhRLEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENnRCxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ2tJLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE9BQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsT0FDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxNQUNoQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLE9BQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FFN0JDLGVBQ0VoaEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLEtBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNxUSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDZ0QsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsSUFBTSxPQUFTLFFBQ25DQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDdENrSSxLQUFRLEVBQUcsT0FBUyxNQUFRLE9BQVMsT0FDckNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLE9BQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxPQUM1Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE1BQVEsT0FBUyxRQUNyQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN2Q0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBRW5DRSxnQkFDRWpoQixJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsS0FDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxPQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ3FRLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0QzdRLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQzhRLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENnRCxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxJQUFNLE9BQVMsUUFDbkNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxPQUN0Q2tJLEtBQVEsRUFBRyxPQUFTLE1BQVEsT0FBUyxPQUNyQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsT0FDNUNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLE9BQzVDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsTUFBUSxPQUFTLFFBQ3JDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3ZDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFFbkNHLGtCQUNFdlEsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJzRCxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxJQUFNLEVBQUcsRUFBRyxLQUM1QkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLFNBQzVCdkQsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsSUFBTSxFQUFHLEVBQUcsS0FDdEJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLEtBQ3pCdEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsS0FDbEMzQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsS0FDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI4USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdUIsS0FBUSxJQUFNLE9BQVMsRUFBRyxFQUFHLEtBQzdCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQm1NLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQmpNLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMxQlEsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCRyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM5VCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUIrVCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkcsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQnFVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IyRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUU3QmdLLG9CQUNFelEsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JzRCxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sT0FBUyxJQUFNLE9BQVMsRUFBRyxJQUNsQ0MsSUFBTyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsSUFBTSxPQUFTLEVBQUcsSUFDNUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxLQUFPLE9BQVMsRUFBRyxFQUFHLFFBQzdCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLElBQy9CdEIsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CYyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sS0FBTyxPQUFTLE9BQVMsRUFBRyxRQUNuQ0MsS0FBUSxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I2QyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sS0FBTyxPQUFTLE9BQVMsRUFBRyxRQUNuQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQy9CQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsSUFDOUI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsSUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsSUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENDLEtBQVEsT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNyQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsS0FBUSxJQUFNLE9BQVMsT0FBUyxFQUFHLElBQ25DQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkUsS0FBUSxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCUSxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENHLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0QzlULEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxJQUMvQitULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ3FVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLEdBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUVuQ2lLLHFCQUNFMVEsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJzRCxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxJQUFNLEVBQUcsRUFBRyxJQUM1QkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzVCdkQsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsSUFBTSxFQUFHLEVBQUcsSUFDdEJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxLQUFPLE9BQVMsRUFBRyxFQUFHLFFBQzdCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLElBQ3pCdEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sS0FBTyxPQUFTLEVBQUcsRUFBRyxRQUM3QkMsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzFCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sS0FBTyxPQUFTLEVBQUcsRUFBRyxRQUM3QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE9BQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDN0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsSUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsSUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI4USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdUIsS0FBUSxJQUFNLE9BQVMsRUFBRyxFQUFHLElBQzdCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkUsS0FBUSxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCUSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJHLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzlULEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQitULEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQnFVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLEdBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IyRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUU3QmtLLGtCQUNFdGhCLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxNQUFRLEVBQUcsUUFDMUJDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sT0FBUyxHQUFLLE9BQVMsRUFBRyxTQUNqQ0MsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxTQUMzQkMsSUFBTyxFQUFHLEdBQUssTUFBUSxFQUFHLE9BQzFCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxTQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsS0FDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE1BQVEsRUFBRyxRQUMxQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBRTdCOGYsaUJBQ0V4USxJQUFPLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUJDLElBQU8sT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM1Qk0sSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzVCSyxJQUFPLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUI2QyxJQUFPLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUI1QyxJQUFPLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUI4QyxLQUFRLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDN0JFLEtBQVEsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM3QjdTLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnNmLE9BQVUsTUFBUyxLQUFPLEVBQUcsRUFBRyxRQUNoQzFKLE1BQVMsS0FBTyxHQUFLLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxLQUFPLEdBQUssRUFBRyxFQUFHLFFBQzNCWSxNQUFTLEtBQU8sR0FBSyxFQUFHLEVBQUcsUUFDM0JFLE1BQVMsS0FBTyxHQUFLLEVBQUcsRUFBRyxRQUMzQjRJLE1BQVMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM5QkMsTUFBUyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzlCQyxNQUFTLE9BQVMsSUFBTSxFQUFHLEVBQUcsU0FDOUJoSSxNQUFTLE9BQVMsSUFBTSxFQUFHLEVBQUcsR0FDOUI3VCxPQUFVLE9BQVMsS0FBTyxFQUFHLEVBQUcsUUFDaENFLE9BQVUsT0FBUyxLQUFPLEVBQUcsRUFBRyxRQUNoQ2lVLE1BQVMsT0FBUyxLQUFPLE9BQVMsRUFBRyxRQUNyQzJILE1BQVMsS0FBTyxLQUFPLE9BQVMsRUFBRyxRQUNuQ0MsTUFBUyxLQUFPLEtBQU8sT0FBUyxFQUFHLFFBQ25DQyxNQUFTLE9BQVMsS0FBTyxPQUFTLEVBQUcsUUFDckNDLE1BQVMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM5QkMsTUFBUyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzlCQyxNQUFTLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDOUJDLE1BQVMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM5QmxHLE1BQVMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM5QkMsTUFBUyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzlCQyxNQUFTLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDOUJDLE1BQVMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM5QmdHLE9BQVUsTUFBUyxLQUFPLEVBQUcsRUFBRyxRQUNoQ3JGLE9BQVUsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUMvQkMsT0FBVSxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQy9CcUYsT0FBVSxPQUFTLElBQU0sRUFBRyxFQUFHLFNBQy9CQyxPQUFVLE9BQVMsSUFBTSxFQUFHLEVBQUcsU0FDL0JDLE9BQVUsT0FBUyxJQUFNLEVBQUcsRUFBRyxTQUMvQkMsT0FBVSxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQy9CQyxPQUFVLE9BQVMsSUFBTSxFQUFHLEVBQUcsU0FFakNDLGlCQUNFMVIsSUFBTyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCQyxJQUFPLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUJNLElBQU8sT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM1QkssSUFBTyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCNkMsSUFBTyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCNUMsSUFBTyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCOEMsS0FBUSxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzdCRSxLQUFRLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDN0I3UyxLQUFRLEVBQUcsSUFBTSxFQUFHLEVBQUcsR0FDdkJDLEtBQVEsRUFBRyxJQUFNLEVBQUcsRUFBRyxHQUN2QkMsS0FBUSxFQUFHLElBQU0sRUFBRyxFQUFHLEdBQ3ZCQyxLQUFRLEVBQUcsSUFBTSxFQUFHLEVBQUcsR0FDdkJ1ZixNQUFTLE9BQVMsS0FBTSxFQUFHLEVBQUcsU0FDOUJDLE1BQVMsT0FBUyxLQUFNLEVBQUcsRUFBRyxTQUM5QkMsTUFBUyxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQzlCaEksTUFBUyxPQUFTLEtBQU0sRUFBRyxFQUFHLEdBQzlCTSxNQUFTLE9BQVMsS0FBTSxPQUFTLEVBQUcsUUFDcEMySCxNQUFTLEtBQU8sS0FBTSxPQUFTLEVBQUcsUUFDbENDLE1BQVMsS0FBTyxLQUFNLE9BQVMsRUFBRyxRQUNsQ0MsTUFBUyxPQUFTLEtBQU0sT0FBUyxFQUFHLFFBQ3BDQyxNQUFTLE9BQVMsS0FBTSxFQUFHLEVBQUcsU0FDOUJDLE1BQVMsT0FBUyxLQUFNLEVBQUcsRUFBRyxTQUM5QkMsTUFBUyxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQzlCQyxNQUFTLE9BQVMsS0FBTSxFQUFHLEVBQUcsU0FDOUJsRyxNQUFTLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJDLE1BQVMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM5QkMsTUFBUyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzlCQyxNQUFTLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJXLE9BQVUsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUMvQkMsT0FBVSxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQy9CcUYsT0FBVSxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQy9CQyxPQUFVLE9BQVMsS0FBTSxFQUFHLEVBQUcsU0FDL0JDLE9BQVUsT0FBUyxLQUFNLEVBQUcsRUFBRyxTQUMvQkMsT0FBVSxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQy9CQyxPQUFVLE9BQVMsS0FBTSxFQUFHLEVBQUcsVUFFakNFLGlCQUNFM1IsSUFBTyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCQyxJQUFPLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUJNLElBQU8sT0FBUyxLQUFNLEVBQUcsRUFBRyxTQUM1QkssSUFBTyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCNkMsSUFBTyxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQzVCNUMsSUFBTyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCOEMsS0FBUSxPQUFTLEtBQU0sRUFBRyxFQUFHLEtBQzdCRSxLQUFRLE9BQVMsS0FBTSxFQUFHLEVBQUcsS0FDN0I3UyxLQUFRLEVBQUcsSUFBTSxFQUFHLEVBQUcsU0FDdkJDLEtBQVEsRUFBRyxJQUFNLEVBQUcsRUFBRyxTQUN2QkMsS0FBUSxFQUFHLElBQU0sRUFBRyxFQUFHLFNBQ3ZCQyxLQUFRLEVBQUcsSUFBTSxFQUFHLEVBQUcsU0FDdkJ5WCxNQUFTLE9BQVMsS0FBTSxFQUFHLEVBQUcsR0FDOUJxQyxNQUFTLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJDLE1BQVMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM5QkMsTUFBUyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzlCQyxNQUFTLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJXLE9BQVUsT0FBUyxLQUFNLEVBQUcsRUFBRyxLQUMvQkMsT0FBVSxPQUFTLEtBQU0sRUFBRyxFQUFHLE1BRWpDNEYsaUJBQ0U1UixJQUFPLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUJDLElBQU8sUUFBUyxLQUFNLEVBQUcsRUFBRyxRQUM1Qk0sSUFBTyxRQUFTLEtBQU0sRUFBRyxFQUFHLFNBQzVCSyxJQUFPLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUI2QyxJQUFPLFFBQVMsS0FBTSxFQUFHLEVBQUcsU0FDNUI1QyxJQUFPLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUI4QyxLQUFRLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDN0JFLEtBQVEsUUFBUyxLQUFNLEVBQUcsRUFBRyxRQUM3QjdTLEtBQVEsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN4QkMsS0FBUSxFQUFHLEtBQU8sRUFBRyxFQUFHLFFBQ3hCQyxLQUFRLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDeEJDLEtBQVEsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN4QnlYLE1BQVMsUUFBUyxLQUFNLEVBQUcsRUFBRyxHQUM5QnFDLE1BQVMsUUFBUyxLQUFNLEVBQUcsRUFBRyxRQUM5QkMsTUFBUyxRQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzlCQyxNQUFTLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJDLE1BQVMsUUFBUyxLQUFNLEVBQUcsRUFBRyxRQUM5QnlHLE1BQVMsT0FBUyxNQUFPLEVBQUcsRUFBRyxNQUMvQkMsTUFBUyxLQUFPLEdBQUssRUFBRyxFQUFHLE1BQzNCQyxNQUFTLE9BQVMsTUFBTyxFQUFHLEVBQUcsTUFDL0JDLE1BQVMsT0FBUyxNQUFPLEVBQUcsRUFBRyxNQUMvQkMsTUFBUyxLQUFPLEdBQUssRUFBRyxFQUFHLE1BQzNCQyxNQUFTLE9BQVMsTUFBTyxFQUFHLEVBQUcsTUFDL0JDLE1BQVMsT0FBUyxNQUFPLEVBQUcsRUFBRyxRQUMvQkMsT0FBVSxNQUFTLEtBQU8sRUFBRyxFQUFHLFFBQ2hDQyxNQUFTLE9BQVMsTUFBTyxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsT0FBUyxNQUFPLEVBQUcsRUFBRyxRQUMvQkMsT0FBVSxNQUFTLEtBQU8sRUFBRyxFQUFHLFFBQ2hDQyxNQUFTLE9BQVMsTUFBTyxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsS0FBTyxHQUFLLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzlCQyxNQUFTLE9BQVMsRUFBRyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxHQUFLLEVBQUcsRUFBRyxRQUN2QkMsTUFBUyxLQUFPLEdBQUssRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJDLE1BQVMsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLEtBQU8sRUFBRyxFQUFHLFNBQy9CakgsT0FBVSxRQUFTLEtBQU0sRUFBRyxFQUFHLFFBQy9CQyxPQUFVLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDL0JpSCxRQUFXLE9BQVMsS0FBTyxFQUFHLEVBQUcsU0FDakNDLFFBQVcsT0FBUyxLQUFPLEVBQUcsRUFBRyxTQUNqQ0MsT0FBVSxFQUFHLElBQU0sRUFBRyxFQUFHLEtBQ3pCQyxPQUFVLEVBQUcsSUFBTSxFQUFHLEVBQUcsS0FDekJDLE9BQVUsRUFBRyxJQUFNLEVBQUcsRUFBRyxLQUN6QkMsT0FBVSxFQUFHLElBQU0sRUFBRyxFQUFHLE1BRTNCQyxzQkFDRTlHLElBQU8sRUFBRyxFQUFHLEVBQUcsRUFBRyxNQUNuQjdNLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCc0QsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQnZELElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLElBQU8sT0FBUyxLQUFPLEVBQUcsRUFBRyxNQUM3QkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxJQUFPLEVBQUcsS0FBTyxFQUFHLEVBQUcsTUFDdkJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQnRCLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDL0I2QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM1QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM2QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM1QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmtRLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQjZDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQjVDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCNEMsSUFBTyxPQUFTLEVBQUcsRUFBRyxFQUFHLE1BQ3pCOFAsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCelMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDN1EsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCOFEsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQm9CLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQjJQLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQi9HLEtBQVEsRUFBRyxFQUFHLEVBQUcsRUFBRyxNQUNwQnpJLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkUsS0FBUSxPQUFTLEVBQUcsRUFBRyxFQUFHLE1BQzFCUSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJHLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcs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QUFZLDZCQUN4QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxZQUFhLDZCQWV6QixJQUFJNkYs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QVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWcnFELElBQVEsS0FFUkMsSUFBUSxLQUVSRixJQUFRLEtBRVJ1cUQsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVY1cUQsSUFBUSxLQUVSNnFELElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxNQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWM29DLElBQVEsS0FFUjRvQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxL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